Porting GoldSrc content to Source
Half-Life 1エンジンからのコンテントの移植
すでにある自作のGoldsource(Half-Life 1エンジン) 用の.mdlをSource Engineに移植するのは簡潔なプロセスです。このプロセスにおいて、モデルのためのオリジナルソースコンテントを全て持っていると仮定しています。ここでは3Dアプリケーション向けファイル、テクスチャと.qcファイルのことを最低限として指しています。もし.smdファイルがあればある程度時間の節約になることもありますが、もし元となった3Dアプリケーション向けソースファイルがあればいつでも新しい.smdを再出力できます。ソースコンテントを持っていないとしても希望をなくさないでください。このドキュメントの最後には.mdlをデコンパイルしてそこから始める方法があります。
概要
大部分において、モデルの移植は頭脳がいらない"機械猿"の仕事です。このプロセスは一直線で、実行にあたって誰かがボタンを押す必要があるだけです。まず、VPROJECTが正しく設定されているかを確かめ、それから昔のテクスチャをSource Engineのマテリアルに変換します。 次に.qcファイルをSource Engineの文法にあわせて編集して、新しいコンテントをSource Engineの.mdlにコンパイルします。
Step 1. VPROJECT
まず最初にVPROJECT環境変数の設定をします。この変数は多くのSourceEngineのツールが参照していて、モデルの移植に使う3つのツールも含まれています。StudiomdlとVtexのどちらもコンパイルしたモデルやマテリアルをどこに配置すべきか知るためにVPROJECTを使っています。すでにVPROJECTの設定をしているならstep 2に移動してください。
- VPROJECT(Current Gameと対応)を設定するには、SourceSDKランチャーや
sourcesdk/bin/VConfig.exe
を使うことができます。
Step 2. 昔のテクスチャを新しいマテリアルに変換
Goldsource(Half-Life 1エンジン) では.bmpテクスチャが.mdlの中に埋め込まれていました。しかしながらSource Engineではテクスチャの元となるファイル(ディフューズマップ、光沢マップ、バンプマップなど)を.tgaファイルとして用意し、それからVtexツールを使って.tgaを.vtfに変換します。.vtfは.mdlから参照されますが、.mdlの中に埋め込まれるのではありません。 .vtfに加え、.vmtファイルというものもあります。これらはマテリアルの属性を定義するテキストファイルです。.vmtに含まれる主なものはディフューズ、光沢、バンプといった様々なテクスチャへのポインタです。他にも指定できる引数があります。詳細についてはSDKのマテリアルドキュメンテーションを参照してください。
.tgaのコンパイルを始める前に、MODディレクトリに'materialsrc'と'materials'ディレクトリを作る必要があります。例えばC:\MyMod\materialsrc
とC:\Program Files\Valve\Steam\SteamApps\SourceMods\MyMod\materials
です。'materialsrc'には元となる画像ファイル全て(ここでは.tga画像)を保管します。materialsディレクトリにはVtexが.vmtや.vtfの出力を行います。 'materialsrc'ディレクトリの中にサブディレクトリを作るときは、'materials'ディレクトリにも対応するディレクトリを作る必要があります。'materialsrc'のサブディレクトリの中の.tgaをコンパイルするとVtexは自動的に対応する'materials'ディレクトリのサブディレクトリに .vmtや.vtfを出力します。例えばC:\MyMod\materialsrc\player
とC:\Program Files\Valve\Steam\SteamApps\SourceMods\MyMod\materials\player
の両方のディレクトリを作ると、materialsrc\playerディレクトリのファイルをコンパイルすると、結果の.vmt/.vtfはmaterials\playerディレクトリに出力されます。Vtexの.mkdir引数を使っていない場合で、かつ対応するmaterials内のディレクトリが存在しないとVtexがエラーメッセージを出します。それなので問題に合わないようにVtexを使うときは対応するディレクトリを作るようにしてください。
ここでVtexでのテクスチャ作業を楽にする2つのTipを紹介します。まずVtexのショートカットを作って.vmtを自動的に生成する方法、そして2つ目は.vmtはすでにあるとして簡単に.tgaを.vtfに再コンパイルを行う方法です。 Tip #1 新しいマテリアルを作成するショートカット
- vtex.exeへのショートカットをデスクトップ上に作成します。Vtex.exeはSourceSDK\binディレクトリにあります。
- ショートカットを右クリックしてプロパティを開きます。
- "リンク先"ボックスのvtex.exeの後ろに、空白をあけてから"-mkdir -shader vertexlitgeneric"を追加します。
- OKをクリックします。
まだ変換を行ったことがないテクスチャをマテリアルに変換するのにこのショートカットを使ってください。"-mkdir"引数は自動的にmaterialsrc内のサブディレクトリに対応したディレクトリを作成します。 "-shader vertexlitgeneric"引数は変換した.vtfをディフューズテクスチャとして指す.vmtをVtexが自動的に作成するようにします。
注意: "-shader vertexlitgeneric"引数はポリゴンで作られたオブジェクトだけで使われます。スプライトやブラシのマテリアルでは使用できません。詳しくは Materials を参照してください。
Tip #2 TGAをVTFに変換する右クリックショートカット
- ウィンドウズエクスプローラを開きます。(Windows key + E).
- ツール > フォルダオプションを選択します。
- "ファイルの種類"タブを選択して、拡張子TGAのところまでスクロールします。
- TGAをクリックしてハイライト状態にします。
- パネルの下側の"詳細設定"ボタンをクリックします。
- "ファイルの種類の編集"パネルが表示されます。
- "新規"ボタンをクリックします。
- "アクション:"ボックスに"TGA to VTF"と入力します。
- 次に"参照"ボタンをクリックしてvtex.exeを選択します。(SourceSDKをインストールした場所の"bin"ディレクトリにあります。例えば <codeC:\Program Files\Valve\Steam\SteamApps\username\sourcesdk\bin)
- "アクションを実行するアプリケーション:"ボックスは以下のように表示されているはずです。"C:\Program Files\Valve\Steam\SteamApps\username\sourcesdk\bin\vtex.exe "%1""
- "DDEを使う"の横にある小さいチェックボックスをクリックします。
- "アプリケーション"ボックスには"vtex"と入力します。
- "トピック"ボックスには"System"と入力します。
- 全てのパネルでOKをクリックして変更を確定します。
これで.tgaファイルを右クリックして"TGA to VTF"オプションを選ぶだけでテクスチャを再コンパイルできます。(.vmtは作られません)以前作成したテクスチャの変更のときに便利です。 これでテクスチャを変換するときに、DOS窓で文字入力するのではなく新しいツールが使えるようになります。
- 好きな画像編集ソフトで.bmpを.tgaを変換してmaterialsrcの適切な場所に置きます。
- .tgaを先ほど作成した新しいVtexショートカットにドラッグアンドドロップします。
- モデルのテクスチャ全てに対して上の作業を行います。
注意: より詳しいマテリアルと設定についての説明は Materials ドキュメントを参照してください。
Step 3. .qcファイルの編集
昔の.qcファイルの大部分は今のStudiomdlでも動作しますが、少し文法の変更があるのでその部分を変更しないと正しくビルドが行えません。
- $modelnameはVPROJECTに連動していて、モデル出力ディレクトリをVPROJECTに'models'を追加したディレクトリと推測します。例えば
C:\Program Files\Valve\Steam\SteamApps\SourceMods\MyMod\models
が出力ディレクトリになります。ここで$modelnameを"player\myplayer.mdl"と設定すると、StudiomdlはコンパイルしたモデルをC:\Program Files\Valve\Steam\SteamApps\SourceMods\MyMod\models\player\myplayer.mdl
に書き出します。Studiomdlはディレクトリ作成は行わず、-mkdir引数もないので、コンパイルを開始する前に出力ディレクトリが既にあることを確かめてください。 - $cdtexture$cdmaterialsで置き換えます。$cdmaterialsもVPROJECT使用して、出力ディレクトリをVPROJECTに'materials'を追加したディレクトリと推測します。例えば
C:\Program Files\Valve\Steam\SteamApps\SourceMods\MyMod\materials
です。経験則として、マテリアルは適用する対象に基づいてツリー構造にするのが望ましいです。$modelnameの例と同じように、$cdmaterialsを"models\player"に設定すると、モデルはC:\Program Files\Valve\Steam\SteamApps\SourceMods\MyMod\materials\models\player
からマテリアルを検索します。.
Step 4. 衝突モデル (別名物理ボックス(Physbox))
"衝突モデル" (別名"Collision Hull"、 "Physics Hull"、"Physbox"など) は物理的にシミュレーションを行うときにモデルがどのように世界と干渉するかを定義する単純化されたメッシュです。このドキュメントは物理ボックスの作成の詳細は扱いませんが、Studiomdlが自動的に作るものでよいのか、手で作る必要があるのかを簡単に議論します。 Studiomdlは物理モデルの指定がない場合に自動で計算して作り出しますが、簡易で荒いものになります。モデルを"真空パック"するのではありません。モデルの遠い点を直接結んでしまいます。 このデモンストレーションとして十字型のオブジェクトを考えます…
このモデルは世界でプレイヤーが頻繁に目にするもので、正しくはねかえり、回転する必要があるため、正しい物理ボックスが必要だと考えています。そのため以下の赤いラインのような物理ボックスであってほしいとおもっています…
しかしながらStudiomdlに物理ボックスを作らせると、外側のパーツを直接結んだメッシュを作ります。以下のように…
これでもかまわないという場合もあります。オブジェクトが重要なものではなく、暗い隅で使われるなどです。しかしもし例となるオブジェクトが回転ドアだったりするとこの物理ボックスは受け入れることができません。詳細についてはモデリングドキュメンテーションの物理のセクションを参照してください。
Step 5. Studiomdlを実行してモデルのコンパイル
StudiomdlがVPROJECTを使うというところを除いて、コンパイルの実際のプロセスは変わっていません。以下のように.qcファイルをStudiomdlに関連付けると、ダブルクリックするだけでコンパイルできるようになり作業が少し簡単になります。この方法が気に入らない場合、以下の説明を飛ばして好きな方法でStudiomdlを実行してください。Studiomdlについての詳細はCategory:Modeling ドキュメントを参照してください。
ダブルクリックでコンパイルできるように、.qcファイルをStudiomdlに関連付けるには:
- ウィンドウズエクスプローラを開きます。(Windows key + E).
- ツール > フォルダオプションを選択します。
- "ファイルの種類"タブを選択して、拡張子QCのところまでスクロールします。もし拡張子リストにQCがなかったら、リストの下の新規ボタンから追加できます。
- 拡張子QCをクリックすると、ハイライト状態になります。
- "フォルダオプション"パネルの"拡張子'QC'の詳細"のエリアで、"プログラム:"の右にある"変更"ボタンをクリックします。
- "ファイルを開くプログラムの選択"パネルの右下の参照ボタンをクリックします。
- Sourcesdk/binにある"Studiomdl.exe"を選択し、開くをクリックします。
- "Studiomdl.exe"がハイライトされていることを確かめて、OKボタンをクリックします。
- "フォルダオプション"パネルを閉じます。
これでモデルの.qcファイルをダブルクリックするだけで、Source Engine向けモデルがコンパイルできるようになりました。
Step 6. 新しい.mdlをHalf-Life Model Viewerで確認
全てがうまくいっているか確かめるために、新しいHalf-Life Model Viewerを起動して新しいモデルを見てみましょう。HLMVは他のツールと同じようにsourcesdk/bin
にあります。SourceSDKランチャーからの起動もできます。HLMVのメニューからFile>Load Model(モデルの読み込み)を選び、自分のモデルの場所に移動して"Open"ボタンを押します。
遭遇する可能性がある問題について:
- もしモデルに黒とピンクのチェッカーボードテクスチャが張られているのなら、これは.qcが支持した場所にマテリアルが見つからなかったことを示しています。
- HLMVの"Render"タブに切り替え、"Physics Model(物理モデル)"の横にあるチェックボックスをクリックしてください。 もし物理モデルが予想したものと違って見えたら、モデリングドキュメントを見ると問題を分析する助けになるでしょう。
これでうまくいくはずです。まだ問題があるのなら、モデリングドキュメンテーションを見て、まだ何とかしないといけない問題があるか探してみてください。
P.S. 元のソースファイルを無くしてしまったんですが…
もし元のソースファイルを無くしてしまったとしても、.smdを直接読み込んで編集できます(例:Softimage|XSI向けのValve addonなど)。マテリアルに変換するためテクスチャを取り出すには、Goldsource(Half-Life 1エンジン) 用のHLMVを使ってTextureタブからテクスチャを抽出するという方法もあります。上のがすべて失敗したら、0から作り直すのも結局のところ悪くない考えでしょう。