MRが楽しい

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

Blender2.79のpythonスクリプトで3Dモデルのオブジェクトとマテリアルの結合を自動化する その2

本日は Blender2.79 の技術調査枠です。
Blender2.79 の Python スクリプトで3Dモデルのオブジェクトとマテリアルの結合を自動化します。

今回はマテリアルの結合にテクスチャベイクと頂点カラーベイクを利用してみます。
f:id:bluebirdofoz:20191204091338j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

サンプルモデル

前回と同じく3つのオブジェクトとそれぞれに同様の3つのマテリアル設定を持つモデルをサンプルとして利用します。
f:id:bluebirdofoz:20191204091349j:plain
f:id:bluebirdofoz:20191204091402j:plain
f:id:bluebirdofoz:20191204091411j:plain

テクスチャベイクを利用した結合

オブジェクトの結合と、テクスチャベイクを利用したマテリアルの結合を行うスクリプトを用意しました。
結合したオブジェクトのUV展開を実施し、マテリアルのベースカラーを全てテクスチャに落とし込みます。

スクリプト

・ModelTextureMerge.py

実行結果

処理が完了すると、オブジェクトが1つに結合されます。
マテリアルも1つのテクスチャマテリアルに統合されます。
f:id:bluebirdofoz:20191204091501j:plain
カラーを確認するため、シェーディングを[マテリアル]に変更して環境照明を設定しています。

頂点カラーベイクを利用した結合

オブジェクトの結合と、テクスチャベイクを利用したマテリアルの結合を行うスクリプトを用意しました。
結合したオブジェクトのマテリアルのベースカラーを全て頂点カラーに焼き込みます。
頂点ごとに色を焼き込むため、色の解像度を保つには頂点の細分化が必要です。

スクリプト

・ModelVertexColorMerge.py

実行結果

処理が完了すると、オブジェクトが1つに結合されます。
マテリアルも1つの頂点カラー表示のマテリアルに統合されます。
f:id:bluebirdofoz:20191204091519j:plain
カラーを確認するため、シェーディングを[マテリアル]に変更して環境照明を設定しています。

CUIでの実行

本記事のスクリプトは以下の記事と合わせて利用すると、処理をCUIから実行することも可能です。
bluebirdofoz.hatenablog.com

Blender2.8への移植

スクリプトはベイクの処理が[Blenderレンダラー]に依存しているため、Blender2.8への移植はできません。
(ただしテクスチャベイクに関してのみレンダラーが変わるものの類似の書き換えは可能です)
Blender2.8用スクリプトにまとめた上で公開予定でしたが、本スクリプトは移植が厳しいため、Blender2.79向けのまま記事にしました。