blender3d.org -- Blender Material Nodes
今までの Blender の Material システムは、シェーディング用の変数の決められたセットと、これら変数上の、テクスチャマッピング用に利用可能な、限られた「チャネル」のセットがその役を担っていました。
ただし、ひとめでこれら設定が分かり、ほとんどの基本的な Material の機能がすばやく設定できるという、明らかな利点がありました。
現在のほとんどの3D統合環境では「シェーダエディタ」の類を持っており、通常、ノードもしくはツリーの形で実装されています。その基本シェーダコンポーネントのおかげで、Material の作成において高いレベルの自由度がありますが、その一方、非常に煩雑な作業となることもあります。多数のノードの所為でシェーダのネットワークの形成が複雑になり、理解しにくくなります。
二つの世界の最もいいところを組み合わせ、なおかつ Blender と互換性を保ちつつ移住できるようにするため、ハイブリッド版が Blender に実装されました。
ノードの実装については、こちらをごらん下さい。
Material の階層化
元々のリクエストは、複数の Material の結合もしくはレイヤ化したり、シェーディングパスを使用したり、ある Material を他の上に置いたり、Texture チャネル数の限界を回避できる方法について考えるものでした。
シンプルなレイヤエディタがそのために作成されましたが、あまり満足のいくものではありませんでした。次の段階はこれの実行でしたが、今回はノードが使用されています。
もし Blender ノードを初めて使用する場合は、ノード UI ページの編集情報の概要をチェックしてみて下さい。
まず、ノード編集をするには、二つのステップが必要です。
1) スクリーンに Node Editor Window の作業スペースを作成する。
2) ButtonsWindow を開き、MaterialButtons にする。
例えば、アクティブ Object が Material をまだ持っていなかったと仮定すると、下の画像では以下のようなステップになります。
- Material のない Object
- "Add New" を押す(もしくはその左側の小さなメニューボタンを使用)
- "Nodes"(もしくは "Use Nodes")を押す
- 新しい Material をそのノードとリンクする
以下の状態も作成しました。
- Object へリンクするのに使用されるベース Material(1)。
- このベース Material に、二つのノード(Node)とリンク一つを伴う、ノードツリー(NodeTree)を一つ追加。
- この Material ノードを新しい Material(2)へリンク。
これは現在、Blender の Material が三つの方法で使用できるようになったことを意味します。
1) 従来の、Object へリンク可能な、固定の設定用ブロックとして。
2) ノードツリーのベースとして。この場合、browse メニューは "N" でその Material を示します。
3) あるノードツリー内部の1つのノードとして。
いくつかの Material の設定は、シェーディングシステムの一部ではありませんが、その(Object の)形状がどうレンダリングパイプラインに使用されているのかを決定しています。これらの設定は、ノードやレイヤ毎に個別に設定することはできません。
これらの設定や Material の閲覧・リンクを行うボタンは、新しい "Links and Pipeline" パネルにあります。ここでは、"Halo" のような設定や、この Material のある Face をレイトレース(RayShade)やシャドウバッファ(ShadowBuf)の計算に含めるかどうかを決定します。
私たちが作成したこの状態は現在、あたかも単一の Material が使用されていたように動作するようになりました。ただし、'render pipe line' の設定がそのベース Material に格納されている場合と、ノード Material にすべてのシェーディング情報が格納されている場合は除きます。
また、Material ノードの Input 値が変更された場合、Material 本体とシンクロしているのに気がつくと思います。Input ソケットが使用されている時のみ、これらの値が上書きされます。
多層 Material
二つの Material を作成し、簡単にミックスしてみましょう。
[wiki]
-Material ノードを選択。
-[Shift]+[D]で複製。
-新しいノード内のメニューボタンを使用し、新しい Material を割り当てる(メニューの "Add new")。
-Material ノードを選択して MaterialButtons 内の設定を変更する。これにより、両方のノードに違いができます。
-[Shift]+[A]を押し、"Color Ops" → "Mix" と選択し、Mix ノードを追加。
-適切なラインを作成し、実際に動作するようにする。(一つめの画像)
[/wiki]
この状況で、もう編集を必要としなくなった場合は、ノードのヘッダのボタンを使用して未使用の Input とボタンを隠し、Mix ノードを最小化することにより、すっきりとした表示にできます。(二つめの画像)
Output
Output ノードは、ネットワークのどこにでも使用でき、リンクされた場所での Material のプレビューレンダリングを提供します。最初に追加された Output がレンダリングの出力として使用され、赤い球のアイコンがこれを示します。
Material
Material ノードは従来の Material のように、完全なシェーディング(Lamp をすべて表示)を行います。すべての計算(影(Shadow)、Ambient Occlusion、その他)が Material ノード毎に発生することに注意して下さい。
現在、Material は4つの Input のみが使用可能で、拡張される候補に上がっています。
Texture
Texture ノードは動作に Vector(テクスチャ座標)が Input として必要で、通常、Geometory ノードを Input として使用します。
Geometry
ツリー内のすべての Material ノードは常に同じテクスチャ座標を使用します。これらは例えば、Texture ノードの Input としてこのノードからアクセスできます。
Group
もしノードをグループ化([Ctrl]+[G])すると、このグループは Blender ライブラリ内の新しいノードツリーとなり、後で "Group Node" でリンクすることにより、好きなところから再利用できます。詳細はこちらをご覧下さい。
Mix
Mix ノードは常に最初(一番上)の Color Input の「通過関門」として働き、二つめの Input が、与えられた演算においてその結果に影響するレベルを、"Fac" 値を使用して決定します。"Fac" が0の場合、演算は起こりません。
RGB Curves
このノードは新しい UI、"Curve" を表示します。これを全体的な明るさ(Brightness)や、RGB チャネル毎の調整に使用できます。詳細はCurves UIをご覧下さい。
Normal
Normal ノードは、固定の法線、もしくはこの Normal との内積(Dot product)を計算するのに使用します。シェーディングに使用した場合、この Normal は「カメラ空間」の物になります。
Mapping
Mapping ノードは Vector や Color のクリッピング(clamp)/移動(translate)/回転(rotate)/拡大縮小(scale)を行うことができます。
Vector Curves
このノードは RGB ノードと似た方法で演算しますが、値が1:1のマッピングになるよう正規化され、-1 から 1の範囲にクリッピングされます。詳細は Curves widgetをご覧下さい。
Color Ramp
このノードは一つの値を Ramp を使用し、RGB カラーや Alpha に変換します。この Ramp の編集は、従来の Blender UI の Ramp のように動作します([Ctrl]+クリックで新しいキーポジションが追加されます)。
RGB to BW
Color から(単一の)値へのシンプルなコンバータです。
Value
単一の値を生成します。
RGB
単一の Color を生成します。
現在のシステムはまだ少し評価が必要でしょう…。
[wiki]
-Material ノード内のレイトレースミラー(RayMirror)と透明度(Transp)はまだあまりちゃんと処理されていません。これはノードツリーの使用により、単一の Material のプロパティの取得を不可能にしているためです(この点について、Face についても反映されている?)。
-ノードツリーのある他の Material を映す従来の Material を持つ動作は何なのか。((訳注:原文はWhat does work is having a regular material that mirrors another material with a nodetree.)) この件についてまだ作業が必要です。
-ノードとして完全な Material を持てるように非常によく動作していますが、影やレイトレースの結果が必要なノードが複数ある時、レンダリングが非常に遅くなる可能性があります。これは内部レンダリングループコアを、より「パスを考慮する」物に書き直すことで解決できます。つまり、Blender がノードの実行を始める前に、要求されている AO レンダリング、影、レイトレースの結果を事前に計算できるということです。
-ノードはどこにでも好きなようにミックスできる、高いレベルの自由度を実現しているため、ディフューズのみ、もしくはスペキュラのみなどのような、独立したパスの抽出が簡単にはできません。これはより研究を重ねる必要があります。
-もっとノードタイプを、特に低レベルのシェーダ(Diffuse ノードや Shadow ノードなど)が追加可能です。これにはあらかじめバランスのいい設計が必要ですが、これに対し何か貢献して下さるなら大歓迎です。
-実際にシェーダのフルカスタマイズとプログラミングが可能な、Python ノードを作成するための予備試験が終わっています。更にまだ作業が必要です。
[/wiki]
Last update: Jul 13 2006.
This section is maintained by Ton Roosendaal.
blender3d.org -- Blender Material Nodes
Blender Material ノード
今までの Blender の Material システムは、シェーディング用の変数の決められたセットと、これら変数上の、テクスチャマッピング用に利用可能な、限られた「チャネル」のセットがその役を担っていました。
ただし、ひとめでこれら設定が分かり、ほとんどの基本的な Material の機能がすばやく設定できるという、明らかな利点がありました。
現在のほとんどの3D統合環境では「シェーダエディタ」の類を持っており、通常、ノードもしくはツリーの形で実装されています。その基本シェーダコンポーネントのおかげで、Material の作成において高いレベルの自由度がありますが、その一方、非常に煩雑な作業となることもあります。多数のノードの所為でシェーダのネットワークの形成が複雑になり、理解しにくくなります。
二つの世界の最もいいところを組み合わせ、なおかつ Blender と互換性を保ちつつ移住できるようにするため、ハイブリッド版が Blender に実装されました。
ノードの実装については、こちらをごらん下さい。
Material の階層化
元々のリクエストは、複数の Material の結合もしくはレイヤ化したり、シェーディングパスを使用したり、ある Material を他の上に置いたり、Texture チャネル数の限界を回避できる方法について考えるものでした。
シンプルなレイヤエディタがそのために作成されましたが、あまり満足のいくものではありませんでした。次の段階はこれの実行でしたが、今回はノードが使用されています。
サンプル
カーペイント、Matt Ebb氏作 (MPEG4、500KB / XviD AVI、650KB / .blend ファイル) |
氷、Andy Goralczyk氏作 (MPEG4、200KB / .blend ファイル) |
くもりガラス、Claas Kuhnen氏作 (.blend ファイル) |
トーンシェーダ、Claas Kuhnen氏作 |
使用方法
もし Blender ノードを初めて使用する場合は、ノード UI ページの編集情報の概要をチェックしてみて下さい。
まず、ノード編集をするには、二つのステップが必要です。
1) スクリーンに Node Editor Window の作業スペースを作成する。
2) ButtonsWindow を開き、MaterialButtons にする。
例えば、アクティブ Object が Material をまだ持っていなかったと仮定すると、下の画像では以下のようなステップになります。
- Material のない Object
- "Add New" を押す(もしくはその左側の小さなメニューボタンを使用)
- "Nodes"(もしくは "Use Nodes")を押す
- 新しい Material をそのノードとリンクする
"Add New" を押す(もしくはその左側の小さなメニューボタンを使用) | "Nodes"(もしくは "Use Nodes")を押す |
赤い "Add New" ボタンを押し、新しい Material からノードへリンク |
以下の状態も作成しました。
- Object へリンクするのに使用されるベース Material(1)。
- このベース Material に、二つのノード(Node)とリンク一つを伴う、ノードツリー(NodeTree)を一つ追加。
- この Material ノードを新しい Material(2)へリンク。
これは現在、Blender の Material が三つの方法で使用できるようになったことを意味します。
1) 従来の、Object へリンク可能な、固定の設定用ブロックとして。
2) ノードツリーのベースとして。この場合、browse メニューは "N" でその Material を示します。
3) あるノードツリー内部の1つのノードとして。
いくつかの Material の設定は、シェーディングシステムの一部ではありませんが、その(Object の)形状がどうレンダリングパイプラインに使用されているのかを決定しています。これらの設定は、ノードやレイヤ毎に個別に設定することはできません。
これらの設定や Material の閲覧・リンクを行うボタンは、新しい "Links and Pipeline" パネルにあります。ここでは、"Halo" のような設定や、この Material のある Face をレイトレース(RayShade)やシャドウバッファ(ShadowBuf)の計算に含めるかどうかを決定します。
私たちが作成したこの状態は現在、あたかも単一の Material が使用されていたように動作するようになりました。ただし、'render pipe line' の設定がそのベース Material に格納されている場合と、ノード Material にすべてのシェーディング情報が格納されている場合は除きます。
また、Material ノードの Input 値が変更された場合、Material 本体とシンクロしているのに気がつくと思います。Input ソケットが使用されている時のみ、これらの値が上書きされます。
多層 Material
二つの Material を作成し、簡単にミックスしてみましょう。
[wiki]
-Material ノードを選択。
-[Shift]+[D]で複製。
-新しいノード内のメニューボタンを使用し、新しい Material を割り当てる(メニューの "Add new")。
-Material ノードを選択して MaterialButtons 内の設定を変更する。これにより、両方のノードに違いができます。
-[Shift]+[A]を押し、"Color Ops" → "Mix" と選択し、Mix ノードを追加。
-適切なラインを作成し、実際に動作するようにする。(一つめの画像)
[/wiki]
この状況で、もう編集を必要としなくなった場合は、ノードのヘッダのボタンを使用して未使用の Input とボタンを隠し、Mix ノードを最小化することにより、すっきりとした表示にできます。(二つめの画像)
ノードの種類
Output
Output ノードは、ネットワークのどこにでも使用でき、リンクされた場所での Material のプレビューレンダリングを提供します。最初に追加された Output がレンダリングの出力として使用され、赤い球のアイコンがこれを示します。
Material
Material ノードは従来の Material のように、完全なシェーディング(Lamp をすべて表示)を行います。すべての計算(影(Shadow)、Ambient Occlusion、その他)が Material ノード毎に発生することに注意して下さい。
現在、Material は4つの Input のみが使用可能で、拡張される候補に上がっています。
Texture
Texture ノードは動作に Vector(テクスチャ座標)が Input として必要で、通常、Geometory ノードを Input として使用します。
Geometry
ツリー内のすべての Material ノードは常に同じテクスチャ座標を使用します。これらは例えば、Texture ノードの Input としてこのノードからアクセスできます。
Group
もしノードをグループ化([Ctrl]+[G])すると、このグループは Blender ライブラリ内の新しいノードツリーとなり、後で "Group Node" でリンクすることにより、好きなところから再利用できます。詳細はこちらをご覧下さい。
Mix
Mix ノードは常に最初(一番上)の Color Input の「通過関門」として働き、二つめの Input が、与えられた演算においてその結果に影響するレベルを、"Fac" 値を使用して決定します。"Fac" が0の場合、演算は起こりません。
RGB Curves
このノードは新しい UI、"Curve" を表示します。これを全体的な明るさ(Brightness)や、RGB チャネル毎の調整に使用できます。詳細はCurves UIをご覧下さい。
Normal
Normal ノードは、固定の法線、もしくはこの Normal との内積(Dot product)を計算するのに使用します。シェーディングに使用した場合、この Normal は「カメラ空間」の物になります。
Mapping
Mapping ノードは Vector や Color のクリッピング(clamp)/移動(translate)/回転(rotate)/拡大縮小(scale)を行うことができます。
Vector Curves
このノードは RGB ノードと似た方法で演算しますが、値が1:1のマッピングになるよう正規化され、-1 から 1の範囲にクリッピングされます。詳細は Curves widgetをご覧下さい。
Color Ramp
このノードは一つの値を Ramp を使用し、RGB カラーや Alpha に変換します。この Ramp の編集は、従来の Blender UI の Ramp のように動作します([Ctrl]+クリックで新しいキーポジションが追加されます)。
RGB to BW
Color から(単一の)値へのシンプルなコンバータです。
Value
単一の値を生成します。
RGB
単一の Color を生成します。
次のステップ
現在のシステムはまだ少し評価が必要でしょう…。
[wiki]
-Material ノード内のレイトレースミラー(RayMirror)と透明度(Transp)はまだあまりちゃんと処理されていません。これはノードツリーの使用により、単一の Material のプロパティの取得を不可能にしているためです(この点について、Face についても反映されている?)。
-ノードツリーのある他の Material を映す従来の Material を持つ動作は何なのか。((訳注:原文はWhat does work is having a regular material that mirrors another material with a nodetree.)) この件についてまだ作業が必要です。
-ノードとして完全な Material を持てるように非常によく動作していますが、影やレイトレースの結果が必要なノードが複数ある時、レンダリングが非常に遅くなる可能性があります。これは内部レンダリングループコアを、より「パスを考慮する」物に書き直すことで解決できます。つまり、Blender がノードの実行を始める前に、要求されている AO レンダリング、影、レイトレースの結果を事前に計算できるということです。
-ノードはどこにでも好きなようにミックスできる、高いレベルの自由度を実現しているため、ディフューズのみ、もしくはスペキュラのみなどのような、独立したパスの抽出が簡単にはできません。これはより研究を重ねる必要があります。
-もっとノードタイプを、特に低レベルのシェーダ(Diffuse ノードや Shadow ノードなど)が追加可能です。これにはあらかじめバランスのいい設計が必要ですが、これに対し何か貢献して下さるなら大歓迎です。
-実際にシェーダのフルカスタマイズとプログラミングが可能な、Python ノードを作成するための予備試験が終わっています。更にまだ作業が必要です。
[/wiki]
Last update: Jul 13 2006.
This section is maintained by Ton Roosendaal.
blender3d.org -- Blender Material Nodes
投票数:19
平均点:10.00
Blender2.42 Blender ノードUI |
Blender機能別 |
Blender2.42 Curve UI コントロール |
ログイン
クイックリンク
2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki