Unityに静止形状を渡す手順
ゲームエンジンのUnityに、Shade3Dでモデリングした形状を渡す手順を記載します。
fbxで出力する手順については、他の3DCGツールに渡す場合でも同じになります。
ここでは、モーションを使用しない静止形状を対象としています。
「fbx形式でエクスポートする時に注意する点」も参照するようにしてください。
Shade3D内で行う作業
不要な形状を削除
シーンでは、不要なイメージや形状は削除しておきます。
また、複数の形状が含まれる場合は、
極力パートは使用せずにルートパートに配置するようにします。
形状は1つとし、原点が地面の接地位置となるように配置
形状は、原点が地面の接地する位置となるように配置します。
複数のポリゴンメッシュで構成されていても問題ありませんが、
「家」「本棚」「石」「電柱」などのように1つの形状が1つのfbxとなるようにします。
Shade3Dで行う作業はあくまでも「形状のモデリング」となり、配置を含めシーン自身を形作るのはUnity上で、
としたほうが効率がいいです。
形状名は半角の英字/数字を使用
ブラウザで一覧できる形状名/マスターサーフェス名/イメージ名は、
半角の英数字または「_」(アンダーバー)のみを使用します。
また、形状名/マスターサーフェス名/イメージ名は、それぞれユニークな他と同じではない名前を指定するようにします。
「ルートパート」「マスターサーフェスパート」「イメージパート」はfbxで出力されませんので、
日本語のままで問題ありません。
形状はポリゴンメッシュにする
形状は、極力ポリゴンメッシュに変換するようにします。
自由曲面でもfbxエクスポート時に自動的にポリゴンメッシュに変換されますが、
細かすぎたり無駄が多くなることもありますので、Shade3D上でポリゴンメッシュに変換し、
あらかじめ最適化(面分割時のサイズ調整、不要UVの削除など)しておいたほうがいいです。
表面材質はマスターサーフェス化する
形状に割り当てる表面材質は、必ず「マスターサーフェス」とするようにします。
これは、Unityを含む多くのツールでは形状に材質を割り当てる場合に「マテリアル」として割り当てるためです。
「マテリアル」はShade3Dでのマスターサーフェスのように、一覧することができる材質情報になります。
また、複数の形状をUnityで管理する場合は、マテリアルはUnity側で管理できるほうが圧倒的に効率がいいです。
Unity上ではマテリアルは名前で区別します。同一マテリアル名を与えることはできません。
fbxエクスポート時は、Shade3Dのマスターサーフェス名をマテリアル名として出力します。
1層以上のUVを割り当てる
ポリゴンメッシュ形状では、1層以上のUVを割り当てておきます。
FBXエクスポート時の設定
「形式」タブ
Shade3D内で、メインメニューの「ファイル」-「エクスポート」-「FBX」を選択します。
「FBXエクスポート」ダイアログボックスの「形式」タブの「座標系」グループで、
「上方向の軸」が「Y軸」、「スケール」が1.0、「FBXの単位」が「cm」となっているのを確認します。
これは初期設定のままとなります。
FBXの標準単位はセンチメートル(cm)となっており、Shade3Dの標準単位のミリメートル(mm)から座標値などは変換されて出力されます。
また、Unityの単位系はメートル(m)となります。
「ジオメトリ」タブ
「ジオメトリ」タブでは、「面の頂点の法線を出力」チェックボックスをオンにします。
これにより、面の各頂点の法線がfbxに出力されます。
この指定がないと、面のシェーディングはUnity含む他の3DCGツールに渡したときに正しく表現されません。
「表面材質」タブ
「表面材質」タブでは、「イメージをFBXファイルに埋め込み」チェックボックスをオフに、
「イメージの反転や反復をベイク」チェックボックスをオフにします。
「イメージをFBXファイルに埋め込み」を無効にする理由は、
Unity側で形状を再インポートする場合や一度シーンの作業情報をクリアした場合に、テクスチャが再読み込みされるのを防ぐためです。
形状のモデリングを修正してfbxを入れ替えたい場合に、fbxにイメージを埋め込んでいるとその都度イメージも読み込まれることになります。
形状数が多くなるとここで待たされてしまうため、テクスチャ画像についてはfbxの形状とは別に、Unityに別途インポートするようにします。
「アニメーション」タブ
モーション情報が割り当てられていないシーンの場合は、ここは初期設定のままで問題ありません。
「その他」タブ
「その他」タブでは、「オブジェクトカメラ」「メタカメラ」「形状光源」「無限遠光源」チェックボックスをオフにします。
形状のみをfbxエクスポートします。
これでfbxエクスポートすると、fbxファイルとテクスチャ画像がpng形式で出力されます。
Unityにfbxとテクスチャ画像をインポート
Unityを起動し、形状のfbxファイルとテクスチャ画像をインポートします。
ここではUnity 5.6.1を使用しました。
テクスチャ画像をインポート
Projectウィンドウで「Assets」フォルダに「images」フォルダを作成し、
Shade3Dでfbxエクスポート時に出力されたpng画像をドラッグしてインポートします。
複数選択して、まとめてドラッグすることができます。
先に画像をインポートすることで、fbxファイル(形状とマテリアル)をインポート時に、
すでにUnityのプロジェクトに存在するテクスチャは自動でマテリアルに割り当てられます。
法線マップをインポートした場合
法線マップをProjectにインポートした場合は、Inspectorウィンドウの「Texture Type」を「Normal map」とし、
「Create from grayscale」チェックボックスがオフになっているのを確認後、「Apply」ボタンを押します。
これで、読み込んだテクスチャは法線マップ用の凸凹として使用できるようになります。
fbxをインポート
「Assets」フォルダに戻り、Projectウィンドウにfbxをドラッグしてインポートします。
形状と「Materials」フォルダが配置されました。
マテリアル名を変更
fbxを読み込んだ直後は、イメージ名がマテリアル名となっています。
これをShade3Dでのマスターサーフェス名がマテリアル名となるように変更します。
Inspectorウィンドウで、「Material Naming」を「From Model’s Material」にして「Apply」ボタンを押します。
不要なマテリアルを削除
Materialsフォルダを開き、テクスチャ名となっている不要なマテリアルを削除します。
これで、各マテリアルのMetallic/Smoothnessなどを調整し、シーンに形状をドラッグすると以下のように配置されました。