Cycles Blenderマテリアル生成用アドオン

こんにちは、ハブラフチャン。 しばらく前に、Shader Generatorプラグインを作成しました-Cyclesビルトインレンダーのシェーダー(マテリアル)のパラメトリック生成と編集のアイデアを実装するアドオンです。







なぜ必要なのか



プラグインを使用すると、最小限のモデリングスキルを持つユーザーは、現実的なマテリアルを自分で作成およびカスタマイズできます。 各マテリアルとテクスチャは繰り返し使用でき、シーン間で転送できます。 プリセットは保存、削除、追加できます。











仕組み



アドオンの原則は、シェーダーの生成に必要なすべてのノードのツリーを作業グループにインポートし、ユニバーサルグループ(ノードグループ)に結合することです。 マテリアルプロパティパネルの従来のコントロールを使用して、さらに編集を行うことができます。 このアプローチの利点は、Cyclesシェーダーのノードアーキテクチャを使用した経験のないユーザー向けのメソッドの直観性です。 アドオンの特徴的な機能は、JSONを介してマテリアルのユーザープリセットをハードドライブに保存するオリジナルシステムです。



シェーダーの最終形式を決定するすべてのノードを含むノードのグループは、アドオンフォルダー内の別の.blendファイルにあります。 これにより、コードの量が大幅に削減されるだけでなく、プログラミングなしで可能な限り迅速にシェーダー自体に変更や追加を加えることができます。



仕組み











材料の5つのカテゴリが事前に定義されています:金属、ガラス、半透明、石、雪



インターフェースのいくつかのスクリーンショット











受け取った資料



ここで、私がモデラーであることにはほど遠いことに注意してください。Cyclesレンダリングを最適な方法で構成する方法はまだわかりません。























Python



アドオン構造はBlenderの典型です。

ユーザーがグラフィカルインターフェイスから呼び出す演算子を実装するクラスがいくつかあります。 これらはbpy.types.Operatorからこれらのクラスを継承し、演算子記述プロパティの典型的な構造と、ほとんどの場合、埋め込み機能を実行する1つのexecuteメソッドを持っています。 いくつかのステートメントでは、invokeメソッドも呼び出されます。これは、実行前に呼び出され、ユーザーは実行前にステートメントの設定を指定できます。

アドオンのグラフィカル部分は、bpy.types.Panelを継承するMatGenPanelクラスを使用して実装されます。 演算子と同様に、プロパティは最初にBlenderの内部メカニズムのパネルの説明で宣言されます。 これには、ポーリングコンテキストチェックメソッドが続きます。これにより、特定の条件下でパネルの可視性を制限できます。 私たちの場合、そのような条件はCyclesのレンダリングモードです。

drawメソッドはGUI要素を描画します。

最後に、グローバル登録および登録解除関数は、APIヘルパーメソッドを介して、すべての宣言されたクラスをBlenderの内部空間に追加します。



最後まで読んでくれてありがとう、この記事が致命的な退屈でないことを願っています。 この資料は誰かにとって実用的である可能性があります。



アドオンはこちらからダウンロードできます: www.dropbox.com/s/96d6iod25yhmhg5/matgen_last.7z



All Articles