夜風のMixedReality

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

Blenderでライトマップをベイクする際にスペキュラーの値でベイクに失敗した話

本日はBlenderモデリング枠です。

Blenderではベイクを行うことによってレンダリング情報をテクスチャとして書き出すことができます。

今回はベイクを行う際のパラメータの設定ミスによってベイクに失敗していたので備忘録としてトラブルを残します。

〇ライトマップの作製とトラブル

筆者はHoloLensをはじめとするxRデバイスに向けたUnityアプリケーションの作成の機会が多く、xRデバイス特有の問題としてパフォーマンスの維持の面でできるだけUnlitなマテリアルを使用しています。

Unlitなマテリアルを使用することでUnityでリアルタイムのライティング処理が行われないため非常に軽量かつ高速なパフォーマンスを発揮できるほか、プリレンダリング(レンダリングに時間をかける)によって精巧なライトの計算結果を使用することでグラフィックの質も上げることができます。

redhologerbera.hatenablog.com

今回は以下のようなシーンでスペキュラーの値の設定を間違えてしまい、ライトマップが真っ黒になってしまいました。

こちらをベイクすると正しくは以下のような結果が得られます。

しかし今回正しくライトを設定しても以下のように真っ黒となるトラブルが発生しました。

こちらの原因はスペキュラーの値が0になっていたためでした。

スペキュラ(Specular)は、物体が光を受けたときにどれだけの光が反射されるかを制御しています。

 具体的には、物体の表面が滑らかであるほどスペキュラーの光は鮮明に反射され、表面が粗いほど散乱して反射されます。

 そのためラフネスと合わせて筆者は使用して鏡のような質感などを再現するものと思っていました。

 ただスペキュラーは光の反射を制御するため、その値が0だと光が一切反射されず、テクスチャは暗くなってしまいます。

このためベイクを行う際に真っ暗になってしまう場合はスペキュラーの値を0以上にすることでひかりを反射し、テクスチャとして焼きこまれるようになります。

本日は簡単でしたが以上です。

 これに気が付くまで1時間程度時間をつぶしてしまったので、備忘録として残しておきます。