MRが楽しい

MRやVRについて学習したことを書き残す

Blender2.8で頂点カラーをテクスチャにベイクする

本日は Blender2.8 の技術調査枠です。
Blender2.8で頂点カラーをテクスチャにベイクする手順についてです。
f:id:bluebirdofoz:20191017092557j:plain

頂点カラーを利用する3Dモデルの問題

以下のような頂点カラーで色付けされた3Dモデルのポリゴン数を削減するとします。
f:id:bluebirdofoz:20191017092609j:plain

そのまま[ポリゴン数削減モディファイア]を利用すると、頂点が減ってしまうため、同時に色情報が失われてしまいます。
以下は三角面数を 480 から凡そ半分の 240 まで削減したケースの結果です。見た目が大きく変わるのが分かります。
f:id:bluebirdofoz:20191017092620j:plain

こういった場合、頂点カラーをテクスチャとしてベイクすると見た目の情報を保ったままポリゴン削減することができます。

頂点カラーをテクスチャにベイクする

下準備として、マテリアル設定でレンダリング時に頂点カラーの情報が出力されるようにしておく必要があります。
以下の記事の「頂点カラーを表示する(レンダリング表示)」の手順を参考に、頂点カラーを出力するマテリアルを設定します。
f:id:bluebirdofoz:20191017092636j:plain

まずはベイク先のテクスチャを用意します。
3DモデルのUV展開を行い、[UVエディター]の[新規]ボタンからテクスチャを作成します。
f:id:bluebirdofoz:20191017092645j:plain

ここで出力するテクスチャの名前とサイズを指定します。
[名前][幅][高さ]を設定したら[OK]ボタンをクリックします。
f:id:bluebirdofoz:20191017092655j:plain

ベイク先のテクスチャが準備できたのでオブジェクトモードに戻り、ベイク対象のオブジェクトを選択します。
[レンダー]タブから[ベイク]パネルを開きます。[レンダーエンジン]に[Cycles]を選択します。
f:id:bluebirdofoz:20191017092704j:plain

[Cycles]だと[ベイク]パネルが表示されるので、これを開きます。
必要なのは頂点カラーの色情報のみなので[ベイクタイプ]に[ディフューズ]を選択します。
また照明に影響されない元の色情報が欲しいので[影響]は[カラー]のみを選択します。
f:id:bluebirdofoz:20191017092714j:plain

最後にベイク先の画像ファイルを指定します。
[シェーダーエディター]の画面を開きます。
f:id:bluebirdofoz:20191017092725j:plain

[シェーダーエディター]のメニューから[追加]->[テクスチャ]->[画像テクスチャ]を選択して追加します。
f:id:bluebirdofoz:20191017092736j:plain

追加された[画像テクスチャ]ノードのプルダウンを選択して、先ほど作成した画像を参照させます。
f:id:bluebirdofoz:20191017092746j:plain

これで画像を参照した[画像テクスチャ]ノードが作成できました。
この[画像テクスチャ]ノードを選択した状態で、[ベイク]ボタンをクリックしてベイクを実行します。
f:id:bluebirdofoz:20191017092757j:plain

ベイクの実行が完了すると、頂点カラーがテクスチャにベイクされます。
f:id:bluebirdofoz:20191017092806j:plain

[UVエディター]のメニューから[画像]->[名前を付けて保存]で作成したベイク画像を画像ファイルとして出力します。
f:id:bluebirdofoz:20191017092816j:plain

これで頂点カラーをテクスチャにベイクして出力することができました。

ベイク画像をテクスチャとして利用する

ベイク画像をテクスチャとして利用するため、再び新規マテリアルで設定を行います。
[画像テクスチャ]ノードを追加し、[開く]ボタンから先ほど出力した画像ファイルを指定して読み込みます。
f:id:bluebirdofoz:20191017092826j:plain

先ほどの画像を指定した[画像テクスチャ]ノードを[プリンシプルBSDF]ノードの[ベースカラー]に接続します。
これでテクスチャの色情報が入力されるようになります。
f:id:bluebirdofoz:20191017092835j:plain

この状態で[ポリゴン数削減モディファイア]を適用してみます。
同じく三角面数を 480 から 240 まで削減してみました。
色情報はテクスチャで保持されているため、見た目の色情報を維持したままポリゴンの削減を行えました。
f:id:bluebirdofoz:20191017092844j:plain