夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRGTのEmissionMapとBlenderを使用してUnityの発光表現を行う その① EmissionMapの作成と利用

本日はMRGT枠です。

〇MRGTとは?

MixedRealityGraphicsTools(MRGT)はMicrosoftによって提供されているMixedRealityアプリケーション開発向けのツールキットであるMixedRealityToolkit(MRTK)でのパッケージの一つとして提供されているグラフィック関連のUnity向けパッケージです。(Unreal版もあります)

MRGTのコア機能としてGraphicsToolsStandardShaderがあります。

 これはUnityアプリケーション内で汎用的に使用できるシェーダーでありながらxRに特化した軽量、多機能なシェーダーとして提供されています。

 MRGTシェーダーにはEmission(発光)と呼ばれる機能がありチェックボックスで有効化することで発光表現が行えます。

 今回はこのMRGTシェーダーのEmission機能を使用したTipsを紹介します。

〇EmissionMapの機能

 MRGTv0.5以降であればEmission機能を有効化した際にEmissionMapを使用できます。

 これはマテリアルを使用しているメッシュ全体が発光するのではなく、モデルのUV(テクスチャ座標)に対して発光する場所をカスタマイズすることができます。

 EmissionMapとEmissionColorのIntensityを使用して今回はろうそくが燃えているような表現を行います。

〇EmissionMapの作成

 今回はBlenderを使用してEmissionMapを作成します。

 EmissionMapは前述のとおり発光させる場所を指定することができます。

Blenderで次のようなろうそくが燃えているというシーンを作りました。

レンダリング後が次のようになります。

ひかりが地面に広がっていることがわかります。この光情報をUnity側のMRGTシェーダーで使用します。

ベイクを行うためにUV展開を行います。

先に光を受け取る地面から作業します。 新規のマテリアルを追加し、Shadingタブからベイク情報を出力する新しいテクスチャを作成します。

ベイクを行う前にレンダープロパティからライトパス内の間接照明の値を0にします。(デフォルトで10)

これにより光がよりなじむようになります。

次に発光情報だけ取得したいためSphereを作成し球体内を真っ暗にすることでろうそくの火の明かりだけを焼き付けるようにします。

ベイクを行うことで次のようなテクスチャを取得できます。 これがろうそくの炎だけの情報を焼き付けたEmissionMapです。

〇EmissionMapの使用

作製したモデルをUnityに配置します。

 新規のマテリアルを作成しGraphicsToolsStandardシェーダーを設定します。

Emissionにチェックを入れEmissionMapをColorの隣にドラッグ&ドロップして指定します。 またColorの色を白に指定します。

床のメッシュのマテリアルとして作成したマテリアルを指定することでUnity上で次のように発光表現を再現できます。

メインのテクスチャと別に使用できるため様々な表現ができるのがEmissionMapの特徴になります。

その①では以上です。