MRが楽しい

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

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

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

サンプルモデル

以下のような3つのオブジェクトとそれぞれに同様の3つのマテリアル設定を持つモデルをサンプルとして用意しました。
f:id:bluebirdofoz:20191012033151j:plain
f:id:bluebirdofoz:20191012033200j:plain
f:id:bluebirdofoz:20191012033210j:plain

利用スクリプト

以下のオブジェクトの結合と、類似マテリアルの結合を行うスクリプトを用意しました。
マテリアルの類似判定は[Blenderレンダラー]における[マテリアル]タブ内の設定のみ考慮します。
・ModelMerge.py

実行結果

プロジェクトにスクリプトを読み込み、[スクリプト実行]を行います。
f:id:bluebirdofoz:20191012033230j:plain

処理が完了すると、以下のようにオブジェクトが1つに結合されます。
かつ、類似マテリアルも結合されて必要最低限のマテリアル数になっています。
f:id:bluebirdofoz:20191012033239j:plain

CUIでの実行

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

Blender2.8への移植

スクリプトはマテリアルの判定が[Blenderレンダラー]に依存しているため、Blender2.8への移植はできません。
Blender2.8用スクリプトにまとめた上で公開予定でしたが、本スクリプトは移植が厳しいため、Blender2.79向けのまま記事にしました。

次はベイクを利用して更にマテリアルを1つに統合する例です。
bluebirdofoz.hatenablog.com