本日は MRTK と Blender の利用手順枠です。
MRTK ChannelMap Maker アドオンを使ってMRTKのチャンネルマップを作成する手順を記事にします。
その2は書き出した画像ファイルを Unity 上の MRTKStandard シェーダに設定する手順です。
前回記事の続きです。
bluebirdofoz.hatenablog.com
3Dモデルの出力
変換後の blend ファイルから3Dモデルをファイル出力します。
今回は fbx 形式で出力を行います。[エクスポート] -> [FBX (.fbx)] を選択します。
ファイル出力のウィンドウが開きます。
出力先のディレクトリとファイル名を指定して[FBXをエクスポート]を実行します。
Unity へ取り込むモデルの場合、[!実験的機能!トランスフォーム適用]のチェックを入れておくと、Blender でのトランスフォームと Unity でのトランスフォームが一致します。
これで Unity に取り込むための3Dモデルと、画像ファイルの準備が整いました。
Unity への取り込み
Unity への取り込みを行います。
MRTKStandard シェーダとテクスチャコンバイナ(Texture Combiner)を利用するため、MRTK の Foundation と Tools パッケージのインポートが必要です。
github.com
先ほど出力した3Dモデルと画像ファイルを Unity プロジェクトに取り込みます。
マテリアル編集による質感の変化を確認するため、シーンに3Dモデルを配置して[Scene]画面で表示します。
MRTKStandardシェーダを設定する
3Dモデルのマテリアル情報を編集するため、マテリアルデータを作成します。
fbx ファイルを選択して[Inspector]ビューを開き、[Materials]タブから[Extract Materials..]を実行します。
ファイル選択のダイアログが開くので、マテリアルデータを出力するフォルダを選んで[フォルダーの選択]をクリックします。
これでマテリアルデータが出力されました。
出力したマテリアルには、デフォルトでは[Unity/Standard]シェーダが設定されています。
[Shader]から[Mixed Reality Toolkits/Standard]シェーダに切り替えます。
これで[Mixed Reality Toolkits/Standard]シェーダのマテリアルを設定できました。
チャンネルマップを作成して設定する
次にチャンネルマップを作成して質感設定を反映します。
テクスチャコンバイナ(Texture Combiner)を利用すると、4つのテクスチャをを1つのチャンネルマップに変換できます。
メニューから [Mixed Reality Toolkit] -> [Utilities] -> [Texture Combiner] を選択して起動します。
テクスチャコンバイナのウィンドウが開きます。
マップ毎にテクスチャを設定します。以下の設定項目があります。
Metallic/Occlusion/Emission/Smoothness Map - 各種プロパティの情報を持つテクスチャを指定します。 Input Channel - プロパティの情報がテクスチャのRGBAいづれの情報として保持されているか指定します。 今回は全て白黒(R:0~1,G:0~1,B:0~1)のテクスチャを指定しているので[Red]を参照させています。 Metallic/Occlusion/Emission/Smoothness Uniform - 各種プロパティのテクスチャを指定しない場合のデフォルト値です。 -0.01を指定している時は推奨のデフォルト値が使用されます。
MRTK ChannelMap Makerアドオンで作成した各種テクスチャを以下の対応で設定します。
なお、必ずしも全てのマップを設定する必要はありません。
TextureName_metallic.png -> Metallic Map TextureName_occlusion.png -> Occlusion Map TextureName_emission.png -> Emission Map TextureName_smoothness.png -> Smoothness Map
全てのテクスチャは白黒(R:0~1,G:0~1,B:0~1)で情報を出力しています。
このため、全ての[Input Channel]は[Red/Blue/Green]のいづれかに設定してください。
設定後、[TextureFormat]で出力形式を指定し、[Save Channel Map]で出力を行います。
これでチャンネルマップが出力されます。
先ほど作成したマテリアルの[Channel Map]のチェックを入れて、作成したチャンネルマップを指定します。
するとチャンネルマップに基づいた質感の描画が行われます。
シーンを再生してワールド内で想定通りの質感となるか確認します。
これでBlender 内で作成した質感設定を Unity 内の MRTKStandard で再構成することができました。
Emission(発光)を利用する際は以下の手順を参考にしてください。
Unityで改めてカラー情報を設定する必要があるため、Blenderから発光色は引き継げず、発光箇所のみの引継ぎとなります。
bluebirdofoz.hatenablog.com
Unity内で再構成したレンダリング結果