Homeworld Remastered Collection

Homeworld Remastered Collection

Not enough ratings
日本人MOD製作者向けガイド⑦
By dengun
HWRMの日本人MOD製作者向けのガイドとなります。
ワークショップで公開中のA-test Template MODを利用していきます。
⑦ではHODファイルの解説と作成についてです。
   
Award
Favorite
Favorited
Unfavorite
HODファイルの仕組みについて
ユニットを自作する上で欠かせないのはHODファイルの作成です。
このファイルにはユニットの3Dデータ、テクスチャ、各種座標などが一まとめにされています。

公式では3DSMAXという総合CGソフトと連携する形でHODファイルを作成してるようです。
また、ブレンダーの方でも同様のブラグインがあるとか無いとか・・・・
残念ながらここではそれらに関してはノータッチです。
旧HW2用ツールの改良版
CFHodEd
を使用していきます。

では、DIOのドローンキャリアーを読み込ませて、例に見て行きましょう。
左側にはメニュータブ、右側がユニットディスプレイです。
メニュータブの項目を簡単に説明します。
--------------------------------------------------------------
Textures
テクスチャになります。ddsかTGAが読み込み可能です。
使用するテクスチャは全部ここに入れる事になります。
使用する名前には注意が必要で、必ず他のユニットと違う名前を使用してください。
同じ名前を使用するとテクスチャが他のユニットと混ざる場合があります。

Materials
ユニットにテクスチャを貼り付けるセットです。
用途の違う複数枚のテクスチャを重ねる事になります。
STファイルというのをロードする事でワンタッチでセットの準備が可能になります。
後は用途ごとにテクスチャを指定すれば完成です。
自分は使用していませんが、ここではバッジを貼り付ける、
エンジンのONOFFで光の加減変更などの特別な事も設定するようです。

ship Meshes
3Dユニットデータです。
船本体、タレットなどなど、ここでOBJファイルを読み込ませます。
その際にMaterialsを指定する事でユニットにテクスチャを貼り付ける事が可能になります。

Goblins
自分は使用していませんが、ユニットに細かな凹凸を付ける3Dデータなどが入ってるようです。
プレイヤーの設定次第で表示されたりするのかもしれません。

Joints
座標系データです。
ここでは様々な座標を管理する事になっています。
ユニットのタレット、管制灯、エンジンノズル、キャプチャー、リペア、エトセトラ・・・。
基本的にはテンプレートに沿って追加していく必要があります。
また、名前にも法則性があるので注意が必要になってきます。

NavLights
ここでは管制灯や発光などを設定する事が出来ます。
Jointsの座標を関連つけて使用します。
上手く、扱えればユニット自身を照らし出して良い演出ができるかもしれません。

Dockpaths
ユニットのドッキングに関する項目です。
細かく設定する事で、生産発進や着艦などを自在に演出できます。

Markers
Jointsとはまた違うタイプの座標系です。
eventsファイルなどでよく使われる座標などを管理しています。
代表的なのは、ダメージ表現、撃沈表現などです。
マーカーのセットされている位置から炎を出したり、爆発させたりという感じですね。
他にも武装に連動させてエフェクトを挿入するマーカーとしても使えます。
使えこなせれば便利です。

Collsion Meshes
ユニットの当たり判定を設定してるファイルのようです。
小さいユニットには設定されていませんが、キャピタル級には使用されているようです。
もしも射撃を受ける時に不具合があるようなら、
判定ボックスを狭める調整が必要になると思います。

Engine Shapes
小型ユニットが出す航跡の断面となる3Dデータを管理しているようです。
これが無いと航跡は発生しません。

Engine Glows
キャピタルユニットのエンジンからでるアフターバーナーです。
基本的には出力の違いに応じて3種類の3Dデータを使用しています。
自分は使用していませんが、Materialsと連動させる項目があるようです。

Engine Burns
小型ユニットが出す航跡のゆらぎパターンを設定してるようです。
お好みで調整していいと思います。

-------------------------------------------------------------
最初は分かりづらい部分もあるかと思いますが、
とりあえずは作りながら覚えていくしかないです。
A-testMODのユニットだけでなく、HWRMのユニットも見ると参考になると思います。
まず、作成を始めるならば段階を踏んで実証しながらがオススメです。
簡単なファイター。
武装をいくつか搭載したフリゲート。
ドッキングなどを備えたキャリアーなどを順に作っていくのが個人的にオススメです。

HODファイル製作の注意点
現状で配布されているCFHodEdですが、いくつか問題点があるようです。

①新規作成が不能?
HODファイルを新規作成を何度か試みましたが、
座標系の不具合で保存したファイルがエラーで読み込めませんでした。
これを回避する為には、
既にあるHODファイルを置き換える形で製作すると良いようです。
適当にインターセプターあたりの構成が少ないHODファイルを使うと良いでしょう。
内容のテクスチャやOBJファイルなども一度消去して置き換えていくといいです。


②ノーマルマップの表示不可能
平面ポリゴンに凹凸を表現するノーマルマップテクスチャですが、
CFHodEdではプレビュー表示する事が出来ません。


③バグ多し
バグでアプリケーションが落ちる場合があります。
小まめなセーブが必要です。
また、セーブしたファイルがエラーを吐く場合もあります。
基本的にユニット製作では3ファイルぐらいの順番保存をオススメします。


④STファイル入手困難
Materialsで使用するSTファイルは入手困難なので自作しましょう。
次の項目で説明します。


------------------------------------------------------------------------------
目に付いた不具合がある場合は書き足していくかもしれません。

STファイルの製作
Materialsで使用するSTファイルですが、自分は2種類使用しています。
メインの高画質モデルに使用する4テクスチャ用のSTファイルと、
遠景の低画質モデルに使用するノーマルマップを除いた3テクスチャ用のSTファイルです。
$diffuse=基本となるメインテクスチャ
$glow=質感を決めるテクスチャ色によって、反射、発光、光沢が調整できるようです。
$team=チームカラーを決めるテクスチャです。
$normal=凹凸表現が可能になるテクスチャです。

注意、STファイルの名前は必ずshipでなければいけません。
2種のSTファイルを使用するならフォルダで選別しておきましょう。

STファイルの制作方法ですが、
まずテキストファイルを開いて以下の文をコピペしてください。
// Modified by CnlPepper to implement bright specular reflections static Texture $diffuse static Texture $glow static Texture $normal static Texture $team simple base(Texture $diffuse, Texture $glow, Texture $normal, Colour $teambase, Colour $teamstripe, Colour $fogColour, Colour $addColour, Colour $shadowColour) { setCap depthBufferCap true setCap gouraudCap true setCap cullCap true setCap texture0Cap true setCap texture1Cap true setCap texture2Cap true setCap texture3Cap true setCap lightingCap true setCap fragmentProgramCap true setCap separateSpecularCap true setCap colourMaterialCap true setCap blendCap true srcBlend srcAlphaBlend destBlend invSrcAlphaBlend fillMode solidFill cullMode backCull material ambient 1 1 1 1 material diffuse 1 1 1 1 material specular 1 1 1 1 material shininess 96 96 96 96 setVertexColour 1 1 1 1 textureBind 0 $diffuse textureBind 1 $glow textureBind 2 $normal textureBind 3 $team setFragmentProgram shipFragmentProgram setProgramVarLocal fragmentProgram 0x0 0.5 0.5 0.5 0.5 // glow colour multiplier setProgramVarLocal fragmentProgram 0x1 $teambase setProgramVarLocal fragmentProgram 0x2 $teamstripe setProgramVarLocal fragmentProgram 0x3 $fogColour } simple additive(Texture $diffuse, Texture $glow, Colour $teambase, Colour $teamstripe, Colour $fogColour, Colour $addColour, Colour $shadowColour) { setCap depthBufferCap true setCap gouraudCap true setCap blendCap true setCap cullCap true srcBlend srcAlphaBlend destBlend oneBlend fillMode solidFill cullMode backCull material ambient 1 1 1 1 material diffuse 1 1 1 1 material specular 1 1 1 1 material shininess 96 96 96 96 setVertexColour $addColour setFragmentProgram additiveFragmentProgram setProgramVarLocal fragmentProgram 0x0 $addColour } compound ship() { addPass base addPass additive 0 }
完了したらshipにリネームし、拡張子をSTに変更すれば
4テクスチャ用STファイルの完成です。


次は3テクスチャ用です。
static Texture $diffuse static Texture $glow static Texture $team simple base(Texture $diffuse, Texture $glow, Colour $teambase, Colour $teamstripe, Colour $fogColour, Colour $addColour, Colour $shadowColour) { setCap depthBufferCap true setCap gouraudCap true setCap cullCap true setCap texture0Cap true setCap lightingCap true fillMode solidFill cullMode backCull material ambient 1 1 1 1 material diffuse 1 1 1 1 material specular 1 1 1 1 material shininess 96 96 96 96 setVertexColour 1 1 1 1 textureBind 0 $diffuse // textureMode replaceMode } simple light(Texture $diffuse, Texture $glow, Colour $teambase, Colour $teamstripe, Colour $fogColour, Colour $addColour, Colour $shadowColour) { setCap depthBufferCap true setCap gouraudCap true setCap cullCap true setCap texture0Cap false setCap texture1Cap false setCap lightingCap true setCap blendCap true srcBlend destColourBlend destBlend zeroBlend fillMode solidFill cullMode backCull material ambient 1 1 1 1 material diffuse 1 1 1 1 material specular 1 1 1 1 material shininess 96 96 96 96 setVertexColour 1 1 1 1 } simple fog(Texture $diffuse, Texture $glow, Colour $teambase, Colour $teamstripe, Colour $fogColour, Colour $addColour, Colour $shadowColour) { setCap depthBufferCap true setCap gouraudCap true setCap blendCap true setCap cullCap true srcBlend srcAlphaBlend destBlend invSrcAlphaBlend fillMode solidFill cullMode backCull setVertexColour $fogColour } compound ship() { addPass base //addPass light addPass fog }
同じように処理すれば完成です。
HODファイル製作手順
基本的な製作ガイドとしての手順を紹介します。

①材料の準備。
②Texturesへ使用する全テクスチャを読み込ませる。
③MaterialsにてSTファイルを使いテクスチャの使用準備をする。
④ship Meshesにて使用する3Dモデルを準備する。
⑤Jointsで必要な武装と座標をモデルを見ながら設定する。
⑥必要な場合はNavLightsを追加する。
⑦必要な場合はDockpathsを設定する。
⑧必要な場合はMarkersを設定する。
⑨必要な場合はCollsion Meshesを設定する。
⑩ユニットの設定に応じてEngineタブの設定をする。

1から4までは順番固定です。
5以降は状況に合わせて順番を変更しても大丈夫です。
もしも3Dモデルを使用した砲塔を用意する場合などは、
Jointsで座標を作った後で3Dモデルを準備し、関連付けてから微調整が望ましいです。

--------------------------------------------------------------
①材料の準備。

製作に必要なddsファイル、objファイル、STファイルなどを
デスクトップなどに、1つのフォルダに纏めて用意しておくと便利です。
ちなみに日本語の入ったフォルダやファイルは基本的にNGです。
(海外ソフトの為エラーを引き起こす為です)


②Texturesへ使用する全テクスチャを読み込ませる。

addでテクスチャ項目を作成した後に、Importで読み込ませていきます。
名前被り回避以外のルールはありませんが、
自分は使用するテクスチャの種類とモデルの適応を分かりやすく番号管理しています。
ルール、決め事を作って管理するとやりやすいのでオススメです。


③MaterialsにてSTファイルを使いテクスチャの使用準備をする。

番号順に操作していきます。
①Material追加
②STファイルの読み込み
③テクスチャの指定

Materialにはリネームで好きな名前にする事ができます。
とりあえず、判別がつく名前をつけて置くといいです。
③のテクスチャ指定はParametersのそれぞれで指定してください。


④ship Meshesにて使用する3Dモデルを準備する。

ship Meshesでモデルの準備をします。
まず登録項目を追加してからLODにモデルを追加していきます。
ImportするとMaterialsの使用を選択できるのでモデルにあったものを関連つけましょう。
LODは0~2までの番号が振ってありますが、
これは距離によって表示されるモデルを表しています。
この距離はshipファイルの方で調整するコードがあります。

遠距離モデルはテクスチャを小さいのを使ったり、
アンテナ、武装などの部位を非表示にしてパフォーマンスを確保しています。
Parentはモデルを固定するジョイント座標です。
これは砲塔などの武装関係のモデルを設定する時に調整します。


⑤Jointsで必要な武装と座標をモデルを見ながら設定する。

ジョイントの設定にはいくつかルールがあります。
まず名前には重要な意味があって、決められた名前を使わない場合はエラーが発生します。
EngineNozzle
エンジンノズルの座標です。最後に番号を振る事で複数指定可能です。
NavLightL
ライト系の座標です。最後に番号を振る事で複数指定可能です。
これらの単発ジョイントはaddで追加した後にリネームで使用します。

複合系のジョイントはadd Templateを使用して追加していきます。
選択するとタイプを選べるようになるので必要なものを追加しましょう。



↑固定式武装の例
Weapon_OOO_Positionを中心に、
上方向に1つと進行方向に1つの座標が用意されています。
基本的にはPosition座標を中心に武器が発射されます。


↑旋回砲塔の例
通常の武装ジョイントに加え、
Weapon_OOO_Latitude
Weapon_OOO_Muzzle
が追加されています。
Position座標は砲塔の台座部分。
Muzzleは砲身の座標と考えると分かりやすいです。
砲塔、砲身モデルもこの2座標を指定しましょう。

武器系には
Slave機能
という物があります。
これは簡単に言うと武装を連動させるコードで、
連装砲や順次発射型のミサイルなどで使用します。
使い方は、使用したい武装の名前の最後にSlaveと入力する事です。
もしも複数のSlaveを連動させたい場合は最後に番号指定してください。
Slave武装の発射タイミングは、wepnファイルで調整可能です。


⑥必要な場合はNavLightsを追加する。
特に説明する部分はありません。
Jointsで設定したNavLightL座標と関連付けながら、
発光設定を自分好みに調整してください。


⑦必要な場合はDockpathsを設定する。

ドッキングに関する設定です。
Familyを指定して発進、着艦のアニメーションを作成することが出来ます。
とりあえずは見よう見まねで設定するだけで良いです。
細かく項目を弄る事でアニメーション中の命令受付や、
機体を固定したままのスライド移動なども可能です。


⑧必要な場合はMarkersを設定する。

マーカーを接地する時には青軸の先が尖っているほうを常に外側に設定しましょう。
エフェクトなどを使用する際の進行方向が青軸な為です。


⑨必要な場合はCollsion Meshesを設定する。

当たり判定のモデルはそのまま船体のモデルを流用して良いです。
黄色線のボックスはパラメーターで調整可能で、
弾丸の射撃のバラつきで不具合がある時に狭めると良いです。
ただし、ハイパースペースのエフェクトとも連動してるので、
小さくしすぎるとエフェクトからはみ出したりします。


⑩ユニットの設定に応じてEngineタブの設定をする。
Engine Glows

EngineGlowはアフターバーナー用の設定です。
1~3まで設定出来ます。数が小さい方から小さい3Dデータを読み込ませてください。
実際に表示される時の色などはshipファイルの方で調整されます。

Engine Shapes

航跡の断面となる3Dデータを読み込ませます。
あくまで断面なので目には見えません。
ただ複雑な角を持つ多角形の面を指定すると上手く機能しない場合があります。

Engine Burns

特に説明の必要はありません。
お好みでパラメーターを弄ってください。



アニメーションについて
この分野は非常に未知の部分が多いです。
しかしながら、やり方次第では魅力的な演出などもできる機能でもあります。

アニメーションは上のバー部分にある「mode」から選択可能です。
選択すると左側が専用の調整に変わります。

DIOデストロイヤーで試験的に実装されたものがあります。
ミサイル発射管を側面に展開するオープンアニメ
それを閉じるクローズアニメの項目に分かれています。
アニメーションの製作がされると自動的にmadファイルが作成されます。
そこにmadstateファイルでスイッチを制御してやる事で稼動します。
音やエフェクトをeventsファイルで追加する事も可能です。


toolsオプション
メニューバーのtoolsにはいくつかの調整項目があります。
不明な項目が多いですが、使用している分だけ解説します。

options
にはチームカラーのプレビュー調整機能があって便利です。
他には
Re-normal Meshes
Re-tangent Meshes
があります。
Re-normal Meshesは使用するとポリゴンモデルの質を変えるようです。
(感覚的には製作時に近い感覚の表示になる?)
Re-tangent Meshesは使用するとノーマルマップテクスチャを適応させる効果があるようです。
(詳しい事は不明)

10 Comments
dengun  [author] 20 May, 2016 @ 12:08pm 
@jyuraki.hakuaki
役に立っていれば幸いです~。
苦労してないといえば嘘になりますがその苦労も楽しんで作業できたと思っています。
わからない事があったらどんどん聞いてください~(^^
Cambri 20 May, 2016 @ 10:45am 
⑦まで、読み終えました!
ここまで解析するには非常に苦労されたかと思います。
情報が少ない中で丁寧でわかりやすい解説、本当にありがたいです><;
dengun  [author] 8 Apr, 2016 @ 11:24pm 
気長にやると良いですよ~。
モチべを保つ為に息抜き等もオススメです。
創作系で行き詰ったらデザイン系のゲームとかもオススメ。
応援してます~!
kemusi123 8 Apr, 2016 @ 9:11pm 
道のりはまだまだ長そうですががんばります!
やっと船っぽいデザインになりだしましたし…
目指せ宇宙戦艦です!
dengun  [author] 8 Apr, 2016 @ 8:57pm 
基本はコピペから初めて改造を試して実証確認を進めて新造がオススメですね。
新造する必要性の無い物はそのまま流用が良いです。(時間と知識がたりねえ!w)
AIは殆ど手は出せませんし、攻撃用機動用パターンプログラムも新造は諦めて改造に留めてます。
kemusi123 8 Apr, 2016 @ 6:36pm 
なかなか上手くいかないものです…
いっそ行動パターンなどは既存のものをコピーしたほうが楽そうですね
dengun  [author] 26 Mar, 2016 @ 6:14am 
いいと思いますよ。
自分もまずは飛ばす動かす優先で動いた思い出があります。
それが次へのモチベーションにもなりますしね
kemusi123 26 Mar, 2016 @ 2:42am 
いっそ┌(┌^o^)┐ホモォ...を飛ばしてみるか…

dengun  [author] 24 Mar, 2016 @ 4:21am 
自分も一番最初のモデルは同じようなものでしたw
モデリングは漠然とソフトを触るより、大まかにでも良いので下絵があると捗ります。
特に前、上、横の3視点の設計図ならなお良しですよ!
モデリングが出来たらUV展開からテクスチャの作成ですね。
kemusi123 23 Mar, 2016 @ 4:58pm 
モデリングはやはり難しいですね…
最近┌(┌^o^)┐ホモォ...見たいなのつくれました!