Ja/Materials for models: Difference between revisions

From Valve Developer Community
< Ja
Jump to navigation Jump to search
m (tag fix)
m (fix)
Line 3: Line 3:
original English version: [[Materials for models]]
original English version: [[Materials for models]]


=概�?=
=概要=
ソースエンジンのマテリアルの構成要素は以下です。元ファイル(.TGAファイルと.TXTファイル)、マテリアル定義ファイル(.VMT)、そしてVtexから出力される.VTFファイル(エンジンで表示されるもの)です。


ソースエンジン�?�マテリアル�?�構�?�?素�?�以下�?��?�。元ファイル(.TGAファイル�?�.TXTファイル)�?マテリアル定義ファイル(.VMT)�?�??�?��?�Vtex�?�ら出力�?�れる.VTFファイル(エンジン�?�表示�?�れるも�?�)�?��?�。
==元になるTGA画像==
元となる.TGAの作成には好きなアプリケーションを使うことができます。大多数は必要に応じてPhotoshop、Painter、ZbrushやDeep Paintを選びます。.VTFに変換するレイヤーを統合してサイズを縮小したバージョンの別に、レイヤー構造を持ったフルサイズのバージョンも保管すべきです。


==元�?��?�るTGA画�?==
==VMTによるマテリアル定義==
 
ソースエンジンのマテリアルはそれぞれ.VMTファイルを必要とします。.VMTファイルは光源モデル(lighting model)、ベースとなるテクスチャ画像(base texture)、そして追加して使用するチャンネル:スペキュラー(光沢)、自己照明、法線マッピング(normal mapping)、透明度(transparency)、透光性(translucency)、プロキシシェーダなどを定義します。ここにHL2から例となる.VMTを示します:
元�?��?�る.TGA�?�作�?�?��?�好�??�?�アプリケーションを使�?��?��?��?��?��??�?��?�。大多数�?�必�?�?�応�?��?�Photoshop�?Painter�?ZbrushやDeep Paintを�?��?��?��?�。.VTF�?�変�?��?�るレイヤーを統�?��?��?�サイズを縮�?�?��?��?ージョン�?�別�?��?レイヤー構造を�?�?��?�フルサイズ�?��?ージョンも�?管�?��?��??�?��?�。
 
==VMT�?�よるマテリアル定義==
 
ソースエンジン�?�マテリアル�?��??れ�?�れ.VMTファイルを必�?�?��?��?��?�。.VMTファイル�?�光�?モデル(lighting model)�?ベース�?��?�るテクス�?ャ画�?(base texture)�?�??�?��?�追加�?��?�使用�?�る�?ャン�?ル:スペキュラー(光沢)�?自己照明�?法線マッピング(normal mapping)�?�?明度(transparency)�?�?光性(translucency)�?プロキシシェーダ�?��?�を定義�?��?��?�。�?��?��?�HL2�?�ら例�?��?�る.VMTを示�?��?��?�:


<pre>
<pre>
Line 27: Line 24:
}
}
</pre>
</pre>
 
この例はポリゴンモデルに適用するマテリアルで、"<code >VertexLitGenric</code >"マテリアルを使用しています。basetexture、別名diffuseマップは"<code >$baseTexture</code >" <code >"Models/Combine_soldier/Combine_elite"</code >で、環境マップ(environment map)<code >"$envmap"</code > <code >"env_cubemap"</code >で定義されています。<code >env_cubemap</code >はマップ内に配置されたエンティティを指し、cubemapエンティティが正しく配置されていればこのキャラクタの光沢反射は常にマップの周りのものを反映します。代わりにカスタムcubemapを使うこともできます。
�?��?�例�?��?リゴンモデル�?��?�用�?�るマテリアル�?��?"<code>VertexLitGenric</code>"マテリアルを使用�?��?��?��?��?�。basetexture�?別�??diffuseマップ�?�"<code>$baseTexture</code>" <code>"Models/Combine_soldier/Combine_elite"</code>�?��?環境マップ(environment map)�?�<code>"$envmap"</code> <code>"env_cubemap"</code>�?�定義�?�れ�?��?��?��?�。<code>env_cubemap</code>�?�マップ内�?��?置�?�れ�?�エンティティを指�?��?cubemapエンティティ�?�正�?��??�?置�?�れ�?��?�れ�?��?��?�キャラクタ�?�光沢�??射�?�常�?�マップ�?�周り�?�も�?�を�??映�?��?��?�。代�?り�?�カスタムcubemapを使�?��?��?�も�?��??�?��?�。
<br />
 
次に法線マップ(normal map)"<code >$bumpmap</code >" <code >"models/combine_soldier/combine_elite_normal"</code >と定義されています。次の行の<code >"$normalmapalphaenvmapmask" 1</code >ではレンダリングの際にモデルの一部分だけがenv_cubemapを反射するように光沢にたいしてマスクの指定をしています。この場合normal mapの画像のアルファチャンネルをマスクにするように定義しています。<code >"$basealphaenvmapmask 1"</code >を使ってとbasetextureのアルファチャンネルを、<code >"$envmapmask"</code > <code >models/modelname/mymask"</code >コマンドで別のマスク用ファイルを指定することもできます。このモデルでは<code >"$envmapcontrast" 1</code >によって環境マスクが掛け算され、よりコントラストの高い反射を作り出しています。
 
<br />
次�?�法線マップ(normal map)�?�"<code>$bumpmap</code>" <code>"models/combine_soldier/combine_elite_normal"</code>�?�定義�?�れ�?��?��?��?�。次�?�行�?�<code>"$normalmapalphaenvmapmask" 1</code>�?��?�レンダリング�?�際�?�モデル�?�一部分�?��?��?�env_cubemapを�??射�?�るよ�?��?�光沢�?��?��?��?��?�マスク�?�指定を�?��?��?��?��?�。�?��?�場�?�normal map�?�画�?�?�アルファ�?ャン�?ルをマスク�?��?�るよ�?��?�定義�?��?��?��?��?�。<code>"$basealphaenvmapmask 1"</code>を使�?��?��?�basetexture�?�アルファ�?ャン�?ルを�?<code>"$envmapmask"</code> <code>models/modelname/mymask"</code>コマンド�?�別�?�マスク用ファイルを指定�?�る�?��?�も�?��??�?��?�。�?��?�モデル�?��?�<code>"$envmapcontrast" 1</code>�?�よ�?��?�環境マスク�?�掛�?�算�?�れ�?よりコントラスト�?�高�?��??射を作り出�?��?��?��?��?�。
モデルに適用するマテリアルは、これがStudioMDLで作られたポリゴンモデルであるということをレンダラーに示すために<code >"$model" 1</code >コマンドを含む必要があります。最後の行<code >"$selfillum" 1</code >は、basematerialのアルファチャンネルが自己照明を行う部分で、アルファチャンネルで指定された部分はモデルの中で発光して描画されます。
 
 
モデル�?��?�用�?�るマテリアル�?��?�?�れ�?�StudioMDL�?�作られ�?��?リゴンモデル�?��?�る�?��?��?��?��?�をレンダラー�?�示�?��?��?�?�<code>"$model" 1</code>コマンドを�?�む必�?�?��?�り�?��?�。最後�?�行<code>"$selfillum" 1</code>�?��?basematerial�?�アルファ�?ャン�?ル�?�自己照明を行�?�部分�?��?アルファ�?ャン�?ル�?�指定�?�れ�?�部分�?�モデル�?�中�?�発光�?��?��??画�?�れ�?��?�。


==プロキシシェーダ==
==プロキシシェーダ==
ソースエンジンのマテリアルシステムで一番強力な要素はプロキシシェーダシステムです。プロキシシェーダで何が可能になるかという例はsdkに含まれるshaderzooマップを参照してください。詳細なドキュメンテーションはマテリアルドキュメントにあります。


ソースエンジン�?�マテリアルシステム�?�一番強力�?��?素�?�プロキシシェーダシステム�?��?�。プロキシシェーダ�?�何�?��?�能�?��?�る�?��?��?��?�例�?�sdk�?��?��?�れるshaderzooマップを�?�照�?��?��??�?��?��?�。詳細�?�ドキュメンテーション�?�マテリアルドキュメント�?��?�り�?��?�。
==VTEXテクスチャ変換==
 
Vtexは.TGAファイルをソースエンジンのテクスチャ形式(.VTF)に変換するアプリケーションです。Vtexを使う一番簡単な方法はvtex.exeへのショートカットをデスクトップに作り、.TGAをそのショートカットにドラッグすることです。これで.TGAファイルと同じ名前の.VTFファイルがmaterialsディレクトリに作られます。TGAファイルをVtexにドラッグして開くと、TGAと同じディレクトリに.TXTファイルが作られ、ここにVtex用のコマンドを書き込んで圧縮状態を変更することができます。
==VTEXテクス�?ャ変�?�==
 
Vtex�?�.TGAファイルをソースエンジン�?�テクス�?ャ形�?(.VTF)�?�変�?��?�るアプリケーション�?��?�。Vtexを使�?�一番簡�?��?�方法�?�vtex.exe�?��?�ショートカットをデスクトップ�?�作り�?.TGAを�??�?�ショートカット�?�ドラッグ�?�る�?��?��?��?�。�?�れ�?�.TGAファイル�?��?��?��??�?�?�.VTFファイル�?�materialsディレクトリ�?�作られ�?��?�。TGAファイルをVtex�?�ドラッグ�?��?�開�??�?��?TGA�?��?��?�ディレクトリ�?�.TXTファイル�?�作られ�?�?��?��?�Vtex用�?�コマンドを書�??込ん�?�圧縮状態を変更�?�る�?��?��?��?��??�?��?�。
 
手早�??マテリアルを作�?�?�る�?��?��?Vtex�?�ショートカット�?�プロパティ�?�"-shader VertexLitGeneric"をオプション�?�追加�?��?��??�?��?��?�。�?�れ�?�他�?�シェーダタイプを指定�?��?�も動�??�?��?�。テクス�?ャ画�?を�?��?�変更�?��?�ショートカット�?�ドラッグ�?�る�?��?通常�?�よ�?��?�.VTFを作�?��?�後�?指定�?��?�シェーダ�?�basetexture�?�設定�?�れ�?�.VMTファイルを自動作�?�?��?��?�。
 
=�?ェッカーボードテクス�?ャ=
 
UV座標�?�レイアウトを始�?る時�?��?ェッカーボードテクス�?ャを使�?��?��?�よ�?�方法�?��?�。歪�?��?筋�?継�?�目�?��?��?��?�直�?��?��??箇所を�?��?�や�??見�?��?�る�?��?��?��?��??�?��?�。�?��?��?�?ェッカーボードテクス�?ャ�?�モデル�?��?�部分�?�テクス�?ャ密度を測るよ�?�方法�?�も�?�り�?��?�。UVを定義�?�る際�?��?��?顔�?�他�?�部分より密度�?�必�?�?��?��?��?全体�?��?��?��?�モデル全体�?�一環�?��?�密度を目指�?��?��?��?��?�り�?��?�。XSI�?�デフォルト�?�noicon.picもよ�?��?�択�?��?��?��?SDK�?��?��?�れる�?ェッカーボードテクス�?ャを使�?��?��?�も�?��??�?��?�。


=XSI�?��?�テクス�?ャ�?��?�用=
手早くマテリアルを作成するには、Vtexのショートカットのプロパティで"-shader VertexLitGeneric"をオプションに追加してください。これは他のシェーダタイプを指定しても動きます。テクスチャ画像をこの変更したショートカットにドラッグすると、通常のように.VTFを作った後、指定したシェーダとbasetextureが設定された.VMTファイルを自動作成します。


XSI�?��?�テクス�?ャ�?�用�?��?��?�も簡�?��?��?�。マテリアル�?�複数テクス�?ャを必�?�?��?�る場�?�以外�?1�?��?�ベーステクス�?ャ�?��?�を使�?�よ�?��?��?��?��??�?��?�。モデル�?�複数�?�テクス�?ャを使�?��?��?��?�レンダリング�?��?��?�る時間�?�大�??�??影響�?�る�?��?��?��?�り�?��?�。XSI�?�モデル�?�テクス�?ャを�?�用�?�る�?��?��?モデルを�?�択�?��?所得>マテリアル>blinn(get>material>blinn)を�?��?��?次�?��?�得>テクス�?ャ>イメージを実行�?��?��?�。�??�?��?�XSI�?�画�?�?�場所を入力�?��?��?�。も�?�1�?��?�モデル�?�複数�?�テクス�?ャを設定�?��?��?�場�?��?�?��?�最�?�?�設定�?��?��?�一群�?��?リゴンを�?�択�?��?��?クラスタを作り�?�??�?�クラスタ�?�マテリアル�?�画�?を�?�用�?��?��?�。プリファレンス�?�Rendering�?�「フォーカス時�?�外部�?�編集�?�れ�?�イメージクリップを�?ロード�?"reload externally modified images on focus"を設定�?�る�?�を忘れ�?��?��?��??�?��?��?�。�?�れを設定�?��?��?��??�?�Photoshop�?�よ�?��?�外部プログラム�?�らAlt-Tab�?�戻�?��?��?��??�?�テクス�?ャ�?��?読�?�込�?��?�れ�?時間�?�節約�?��?�り�?��?�。
=チェッカーボードテクスチャ=
UV座標のレイアウトを始める時にチェッカーボードテクスチャを使うのはよい方法です。歪み、筋、継ぎ目といった直すべき箇所をすばやく見つけることができます。また、チェッカーボードテクスチャはモデルの各部分のテクスチャ密度を測るよい方法でもあります。UVを定義する際には、顔は他の部分より密度が必要ですが、全体としてはモデル全体で一環した密度を目指すことになります。XSIのデフォルトのnoicon.picもよい選択ですし、SDKに含まれるチェッカーボードテクスチャを使うこともできます。


=�?�切�?�プレビュー=
=XSIでのテクスチャの適用=
XSIでのテクスチャ適用はとても簡単です。マテリアルが複数テクスチャを必要とする場合以外、1つのベーステクスチャだけを使うようにすべきです。モデルで複数のテクスチャを使うことはレンダリングにかかる時間に大きく影響することがあります。XSIでモデルにテクスチャを適用するには、モデルを選択し、所得>マテリアル>blinn(get>material>blinn)を選び、次に取得>テクスチャ>イメージを実行します。そしてXSIに画像の場所を入力します。もし1つのモデルに複数のテクスチャを設定したい場合、まず最初に設定したい一群のポリゴンを選択して、クラスタを作り、そのクラスタにマテリアルと画像を適用します。プリファレンスのRenderingで「フォーカス時に外部で編集されたイメージクリップを再ロード」"reload externally modified images on focus"を設定するのを忘れないでください。これを設定しておくとPhotoshopのような外部プログラムからAlt-Tabで戻ったときにテクスチャが再読み込みされ、時間の節約になります。


テクス�?ャを設定�?��?�キャラクタ�?�進歩を判断�?�る�?��?�ソースエンジン�?�中�?�直接行�?��?��??�?��?マテリアル�?�進行�?��?��?�る�?�?��?vtf�?vmtを作�?�?��?mdlファイルをビルド�?��?�エンジン�?�中�?�モデルを見�?��??�?��?��?�。テクス�?ャ�?�シェーダパラメータ�?�最�?�点を探�?�作業�?�エンジン�?��?�モデルを見�?��?�ら�?��?��?��??�?��?�ん。
=適切なプレビュー=
テクスチャを設定したキャラクタの進歩を判断するのはソースエンジンの中で直接行うべきで、マテリアルが進行しすぎる前に、vtf、vmtを作成し、mdlファイルをビルドしてエンジンの中でモデルを見てください。テクスチャとシェーダパラメータの最適点を探す作業はエンジンでのモデルを見てからしかできません。


マテリアル�?�大�??�?��?��?�れ�??ら�?��?��?�当�?��?�ょ�?��?�?.VTFを�?��??る�?��?��?期�?�段階�?�作り�?エンジン�?�モデルをプレビュー�?��?��?�。コンソール�?�mat_showmiplevelコマンドを使�?��?ゲームプレイ�?��?��?��?�る状態�?�mipレベルを確�?��?�?��?�。大�??�?��?��?��?�よ�?�よ�?��?��?�?�る�?�も�?�れ�?��?�ん�?��?�?�れ�?��?��?�も正�?��?��?�?��?��?��?�り�?��?�ん。Mipマップ�?�大�??�?�テクス�?ャを�?�?��?�サイズ�?�縮�?�?��?��?��?��?��?��?��?��?��?�も�?�り�?��?��?�。
マテリアルの大きさはどれくらいが適当でしょうか?.VTFをできるだけ初期の段階で作り、エンジンでモデルをプレビューします。コンソールでmat_showmiplevelコマンドを使い、ゲームプレイで遭遇する状態のmipレベルを確かめます。大きいほうがよいように思えるかもしれませんが、これはいつも正しいわけではありません。Mipマップが大きいテクスチャを小さいサイズに縮小しぼかしてしまうこともありえます。

Revision as of 04:19, 29 November 2005

originally translated by RumikoHoshino, 2005/8/19
original English version: Materials for models

概要

ソースエンジンのマテリアルの構成要素は以下です。元ファイル(.TGAファイルと.TXTファイル)、マテリアル定義ファイル(.VMT)、そしてVtexから出力される.VTFファイル(エンジンで表示されるもの)です。

元になるTGA画像

元となる.TGAの作成には好きなアプリケーションを使うことができます。大多数は必要に応じてPhotoshop、Painter、ZbrushやDeep Paintを選びます。.VTFに変換するレイヤーを統合してサイズを縮小したバージョンの別に、レイヤー構造を持ったフルサイズのバージョンも保管すべきです。

VMTによるマテリアル定義

ソースエンジンのマテリアルはそれぞれ.VMTファイルを必要とします。.VMTファイルは光源モデル(lighting model)、ベースとなるテクスチャ画像(base texture)、そして追加して使用するチャンネル:スペキュラー(光沢)、自己照明、法線マッピング(normal mapping)、透明度(transparency)、透光性(translucency)、プロキシシェーダなどを定義します。ここにHL2から例となる.VMTを示します:

"VertexLitGeneric"
{
     "$baseTexture" "Models/Combine_soldier/Combine_elite"
     "$envmap" "env_cubemap"
     "$bumpmap" "models/combine_soldier/combine_elite_normal"
     "$normalmapalphaenvmapmask" 1
     "$envmapcontrast" 1
     "$model" 1
     "$selfillum" 1
}

この例はポリゴンモデルに適用するマテリアルで、"VertexLitGenric"マテリアルを使用しています。basetexture、別名diffuseマップは"$baseTexture" "Models/Combine_soldier/Combine_elite"で、環境マップ(environment map)は"$envmap" "env_cubemap"で定義されています。env_cubemapはマップ内に配置されたエンティティを指し、cubemapエンティティが正しく配置されていればこのキャラクタの光沢反射は常にマップの周りのものを反映します。代わりにカスタムcubemapを使うこともできます。
次に法線マップ(normal map)が"$bumpmap" "models/combine_soldier/combine_elite_normal"と定義されています。次の行の"$normalmapalphaenvmapmask" 1ではレンダリングの際にモデルの一部分だけがenv_cubemapを反射するように光沢にたいしてマスクの指定をしています。この場合normal mapの画像のアルファチャンネルをマスクにするように定義しています。"$basealphaenvmapmask 1"を使ってとbasetextureのアルファチャンネルを、"$envmapmask" models/modelname/mymask"コマンドで別のマスク用ファイルを指定することもできます。このモデルでは"$envmapcontrast" 1によって環境マスクが掛け算され、よりコントラストの高い反射を作り出しています。
モデルに適用するマテリアルは、これがStudioMDLで作られたポリゴンモデルであるということをレンダラーに示すために"$model" 1コマンドを含む必要があります。最後の行"$selfillum" 1は、basematerialのアルファチャンネルが自己照明を行う部分で、アルファチャンネルで指定された部分はモデルの中で発光して描画されます。

プロキシシェーダ

ソースエンジンのマテリアルシステムで一番強力な要素はプロキシシェーダシステムです。プロキシシェーダで何が可能になるかという例はsdkに含まれるshaderzooマップを参照してください。詳細なドキュメンテーションはマテリアルドキュメントにあります。

VTEXテクスチャ変換

Vtexは.TGAファイルをソースエンジンのテクスチャ形式(.VTF)に変換するアプリケーションです。Vtexを使う一番簡単な方法はvtex.exeへのショートカットをデスクトップに作り、.TGAをそのショートカットにドラッグすることです。これで.TGAファイルと同じ名前の.VTFファイルがmaterialsディレクトリに作られます。TGAファイルをVtexにドラッグして開くと、TGAと同じディレクトリに.TXTファイルが作られ、ここにVtex用のコマンドを書き込んで圧縮状態を変更することができます。

手早くマテリアルを作成するには、Vtexのショートカットのプロパティで"-shader VertexLitGeneric"をオプションに追加してください。これは他のシェーダタイプを指定しても動きます。テクスチャ画像をこの変更したショートカットにドラッグすると、通常のように.VTFを作った後、指定したシェーダとbasetextureが設定された.VMTファイルを自動作成します。

チェッカーボードテクスチャ

UV座標のレイアウトを始める時にチェッカーボードテクスチャを使うのはよい方法です。歪み、筋、継ぎ目といった直すべき箇所をすばやく見つけることができます。また、チェッカーボードテクスチャはモデルの各部分のテクスチャ密度を測るよい方法でもあります。UVを定義する際には、顔は他の部分より密度が必要ですが、全体としてはモデル全体で一環した密度を目指すことになります。XSIのデフォルトのnoicon.picもよい選択ですし、SDKに含まれるチェッカーボードテクスチャを使うこともできます。

XSIでのテクスチャの適用

XSIでのテクスチャ適用はとても簡単です。マテリアルが複数テクスチャを必要とする場合以外、1つのベーステクスチャだけを使うようにすべきです。モデルで複数のテクスチャを使うことはレンダリングにかかる時間に大きく影響することがあります。XSIでモデルにテクスチャを適用するには、モデルを選択し、所得>マテリアル>blinn(get>material>blinn)を選び、次に取得>テクスチャ>イメージを実行します。そしてXSIに画像の場所を入力します。もし1つのモデルに複数のテクスチャを設定したい場合、まず最初に設定したい一群のポリゴンを選択して、クラスタを作り、そのクラスタにマテリアルと画像を適用します。プリファレンスのRenderingで「フォーカス時に外部で編集されたイメージクリップを再ロード」"reload externally modified images on focus"を設定するのを忘れないでください。これを設定しておくとPhotoshopのような外部プログラムからAlt-Tabで戻ったときにテクスチャが再読み込みされ、時間の節約になります。

適切なプレビュー

テクスチャを設定したキャラクタの進歩を判断するのはソースエンジンの中で直接行うべきで、マテリアルが進行しすぎる前に、vtf、vmtを作成し、mdlファイルをビルドしてエンジンの中でモデルを見てください。テクスチャとシェーダパラメータの最適点を探す作業はエンジンでのモデルを見てからしかできません。

マテリアルの大きさはどれくらいが適当でしょうか?.VTFをできるだけ初期の段階で作り、エンジンでモデルをプレビューします。コンソールでmat_showmiplevelコマンドを使い、ゲームプレイで遭遇する状態のmipレベルを確かめます。大きいほうがよいように思えるかもしれませんが、これはいつも正しいわけではありません。Mipマップが大きいテクスチャを小さいサイズに縮小しぼかしてしまうこともありえます。