Source SDK用のテクスチャを作る1 『基礎知識』

タイトルでは「テクスチャ」としているが、正確には「マテリアル」である。Sourceエンジンのゲームのマテリアルは、基本的に.vtfと.vmtという2つの拡張子のファイルで成り立っている。

vtfとはValve Texture Formatの略で、要はゲームに適する方法で圧縮されたbmpやpngのようなもの。いわゆるテクスチャ。
vmtとはValve Material Typeの略で、マテリアルの種類や細かいパラメータをテキストとして記述する。

vtfは、vmt内で指定される事によって初めて使えるようになる。(エンジンやゲーム自体のハードコードで指定されているvtfは例外)

とりあえず最小構成のvmtファイルを見てみよう。vmtファイルはテキストエディタで開くことができる。メモ帳などのシンプルなエディタでも問題ない。
LightmappedGeneric
{
    "$basetexture" "example\texture01"
}
1行目でこのテクスチャに使うシェーダーを指定している。このLightmappedGenericは「ハンマーエディタのブラシ(ワールドジオメトリ)の表面に貼り付けてライトマップ(ライティング)を焼きこむテクスチャ」ということ。
そして$basetextureパラメータでvtfファイルの場所を指定している。"materials\"以前と拡張子(.vtf)は省略するので、これがGarry's Modのテクスチャだとすれば、"SteamApps\アカウント名\garrysmod\garrysmod\materials\example\texture01.vtf"を指定していることになる。

シェーダーやパラメータは他にも沢山あるが、とりあえず上のことだけ理解しておけば実際にゲーム内に登場させられるテクスチャのvmtを作ってみることはできる。

この日本語の解説ページにはワールドブラシのテクスチャによく使うvmtシェーダーとパラメータがまとめてある。
http://www.schuzak.jp/cs-s/tutCustomTex.html

モデルのテクスチャには基本的にVertexLitGenericシェーダーを使う。VertexLitGenericには$phongや$halflambertなどの専用パラメータがあり、やろうと思えばワールドブラシより高度な質感の表現ができる。その分凝り始めるとなかなか時間がかかる。

マテリアルプロキシという簡易的なスクリプトのような何かを使用すると、マテリアルを点滅・スクロール・フェードなどさせることができる。下のページには実用的な使用例が挙げられている。
http://www.nodraw.net/2010/01/dynamic-materials-with-proxies/

0 件のコメント:

コメントを投稿