カスタム素材
ここではゲームに存在する素材以外のテキスチャーやモデル、サウンドなどを使う方法を説明します。
素材には大きく分けて3つあります。
- マテリアル
- モデル
- サウンド
どれもゲームフォルダの中にそれぞれmaterals,models,soundというフォルダがあるのでそこに入れれば使うことが出来ます。
ただし、モデルに関してはmodelsフォルダにモデルファイルmdlファイルなどが入っているだけでは、うまく使えません。そのモデルに付けるマテリアルをmaterals>modelsフォルダに入れないといけません。
通常FPSBANANAなどからダウンロードしてきたりするモデルは一緒にmaterals>modelsフォルダが入っていると思います。
自作のテキスチャの作成方法
自作モデルの作成方法
参考
- http://wiki.media.t-kougei.ac.jp/index.php/Prop_static%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9
- http://tendon.s35.xrea.com/phpBB/kb.php?mode=article&k=114
- http://l4djc.com/devwiki/index.php?title=Modeling
- http://www.geocities.jp/meisaku_asobu/CreatingCustomCharacters.html
- http://www.cveld.net/modules/xpwiki/340.html
おおまかな流れ
- 形状モデルを作り、テクスチャを貼る。
- モデルをsmd形式でexportする。
- studiomdl.exeでmdlファイル(など)に変換する。
- テクスチャをvtex.exeでvtfファイルに変換する。
変換の仕方
- SMDファイルをSDK内のゲ-ムに対応したmodelsrcディレクトリの下のどこかにエクスポ-トします。
例えば、Counter-Strike Sourceモデルの場合:
Code: C:\Program Files\Valve\Steam\SteamApps\username\sourcesdk_content\cstrike\modelsrc
usernameにはあなたのSteamのLogin名が入ります。
- .SMDファイルと同じ場所に.QCファイルを作成します。sourcesdk_content\cstrike\modelsrc ディレクトリに既にあるQCファイルを参考にすることもできます。.QCファイル内で使えるコマンドの一覧については以下の説明をご覧ください。
- SDKランチャ-パネルのCurrent Gameを正しく選択していることを確認してください。
- 自分の.QCファイルに対してstudiomdl.exeを実行します。Windowsのコマンドプロンプトを開いて、以下の様に入力してください:
Code: cd "%sourcesdk%" bin\studiomdl ..\sourcesdk_content\cstrike\modelsrc\mymodel.qc
注意: ここではコマンドを簡単にするために環境変数"sourcesdk"を使っています。この環境変数はSourceSDKのインスト-ル時に作成されます。
(訳注:.QCファイルをstudiomdel.exeに関連付けを行うと、そうすると.QCファイルをダブルクリックするだけでコンパイルできるようになります。こちらのほうがコマンドプロンプトを開かないで実行できるので楽です。)
- .QCファイルにも.SMDファイルにもエラ-がなければ、.QCファイル内の$modelnameキ-で指定した場所に.MDLファイルが作成されているはずです。
- これでSDKランチャ-からModelViewerを実行し、自分のモデルファイルを開くことができます。
モデルの作成とテクスチャ貼り付け
モデルをツールで作成する。このツールはxsi modtool、メタセコイアなどで作ることもできる。
最終的にsmdファイルを作成するためにxsi modtoolが必要になってきます。(他のソフトでも可能だがMODTOOLが一番無難)
他のモデラーで作成してobj、direct x、fbxなどの形式でimportすることもできる。テクスチャはあらかじめ貼っておいても良いし、 xsiで貼ってもよい。
smdをexportするには必ずテクスチャをポリゴンメッシュに貼り付ける必要がある。テクスチャがないと Error - Nothing to exportというエラーが出る。また、ポリゴンが多すぎても同様なエラーが出ることがある。
テクスチャは不透明なものは24bit jpegでも良いが、アルファチャンネルを含むものは32bit targaなどを用いる。大きさは512x512までで、一辺の長さは2, 4, 8, 16, 32,・・・のような2の巾乗でなくてはならない。
smdのexport
xsi mod toolにはValveSourceアドオンが付属しており、 smdをimportしたりexportしたりすることができる。 SMDとはv:Studiomodel Dataの略であるが、 StudiomodelとはHalf-Life1時代にモデリングに3D Studio Maxを使っていたころの名残であると言う。 3dsmax、mayaなどにもsmd exporterがあるが、 xsi mod toolに付属するValve純正のexporterが一番無難。
smd export property
file type
Model (.SMD) 形状のモデル。 Physbox (.SMD) 当たり判定や質量などの物理属性。 Skeletal Animation (.SMD) ボーンを動かすアニメーション。 Vertex Animation (.VTA) 頂点を動かすアニメーション。主に顔の表情のアニメーションに使う。
prop_staticはVTAは不要であり、その他のSMDは一種類のSMDファイルで代用できる。
smdからmdlを作る
smdはテキストファイルなのでこれをゲームに直接読み込める複数のバイナリファイルに変換する。この変換にstudiomdl.exeを使う。 studiomdlを使うにはqcファイルというものを書く。ちなみにqcはQuakeのプログラミングに使われていたC言語風の言語 Quake Cを意味するらしい。
xsi mod toolでmoge.smdというファイルをexportし、これからhoge/mogeというモデルを作りたい場合のqcファイルの書き方:
// .MDL $modelname hoge/moge.mdl
// モデルに使うマテリアルがあるフォルダ $cdmaterials hoge/moge
// モデルが prop_staticの場合 $staticprop
// 表面の属性を決める必要がある。 $surfaceprop "metal"
// 大きさの倍率 $scale 10.0
// .SMD $body studio "moge"
// アニメーションとか。prop_staticの場合はダミー。 $sequence idle "moge" loop fps 15
// 当たり判定。凸包なら $convex、それ以外は $concave と書く。 $collisionmodel "moge" { $concave }
v:$bodyがmodel smd、 v:$sequenceがskeletal animation smd、 v:$collisionmodelがphysbox smdに相当する。それぞれ"moge"と書かれているのはより詳しく書けば "./moge.smd"を意味する。 prop_staticに$sequenceの記述がなぜ必要かはなはだ疑問だが一応書いておく。
studiomdl.exeから作られるファイル
v:MDL Source独自のバイナリ形式のモデルフォーマット。 v:VVD (valve vertex data) Source独自の頂点データ形式。 v:VTX Mesh Strip形式。.sw.vtx (Software), .dx80.vtx (DirectX 8.0) .dx90.vtx (DirectX 9.0) and .xbox.vtx (XBox)などがある。 v:PHY 物理計算、あたり判定などに使われる。 v:ANI アニメーション。
頂点数が多いとstudiomdlに時間がかかる。 32767以上の頂点が含まれていると v:Short conversion out of range というエラーが出てビルドできない。
blenderから直接MDLをエクスポートする方法
blenderのアドオンで以下のZIPファイルを使う
http://steamreview.org/BlenderSourceTools/