【不定期連載】Lightwave3Dノード入門その1

皆さんノードって使ってますか?
特にLW2018ではサーフェイス設定が実質ノードオンリーとなったり、モーション、ディスプレース、ライトとあらゆる要素をノードエディタでコントロールできるようになったため、活用することでより多彩な表現が可能となります。

が、その一方で公式のドキュメントに説明不足な面もありとっつきにくいのも事実。
なのでその不足分を補えればとノードの使い方について説明していきたいというのが連載の趣旨となります。
元々仕事辞めた空き時間に電子書籍とかやってみたい程度のノリで書いていたもので、すぐに今の仕事が決まったためストックもあまりないのですが少しでも役に立てば幸いです。

ただ、内容にはプラグインを作る過程で独自に調査したものも含まれるため、間違いがあったらそこはご容赦を。

第一回目はノード接続タイプの説明です。
この辺りは公式のリファレンスでも説明されているので復習ですね。

ノードのインプット、アウトプットには名称だけでなく色つきのコネクタがセットになっています。
この色が接続タイプを表しています。

181103_001.jpg
・カラー 小数x3
おなじみの色データです。
それぞれがR、G、Bに対応した3つの小数が並んだデータです。
スライダーなどでは0~255の整数で設定しますが、ノードに限らずLW内部では0.0~1.0で扱われます。
1.0を超える値も使用することができ、その場合はHDRカラーであることを意味します。

181103_002.jpg
・ベクトル 小数x3
x、y、zといった3つの小数の集まりを表すデータです。
形式としてはカラーと全く同じものですが、ベクトルが表現できる値は多数あるため、わかりやすくするためにカラーと分けたものと思います。
ベクトルは3DCGでは多々使われる表現のため、ノードでも様々な使用方があります。
基本的な所では座標を表すXYZ、回転のHPB、スケールのXYZはベクトルの接続タイプで渡されます。
他にもレイトレースを行うノードではレイを飛ばす方向もベクトル、ポリゴンの法線もベクトルで指定する必要があるなどベクトルまみれです。

181103_003.jpg
・スカラー 小数x1
1つの小数値を扱います。
これもベクトル同様に使用頻度は高く、ウェイトマップや角度、距離、パーセンテージの項目はこのスカラーでやり取りします。

181103_004.jpg
・整数 整数x1
1つの整数値を扱います。
ノードによってはポップアップの選択項目やフラグのON/OFFをインプット接続で制御できるものがあるため、そんな場合に使ったりします。

・関数 小数x1
黄色のFunctionという接続名です。
こちらもスカラー同様に1つの小数を扱いますが、特殊な動作をする接続タイプでスカラーなどと接続しても動作しません。
関数接続はノード内部で計算中の値を関数入力から関数ノードの出力へと逆流させ、値を受け取った関数ノードでその値を加工し、加工後の値を関数ノード出力から関数入力へ送り返すという往復した動作を行います。
(例)
181103_005.jpg
関数未接続のBricks2Dノード。

181103_006.jpg
Gain関数ノードで加工したもの。
Bricks2Dを始めプロシージャルテクスチャ系のノードは生成した模様のグレースケール値を返します。
それを受け取ったGainではプレビュー部に表示されているような変換を行います。
グラフは横軸が0.0~1.0で値はBricks2Dから受け取ったもの。
縦軸も0.0~1.0でResultが返す値。
これを意識してBricks2Dの接続前後を見てみると、接続前の黒->白のグラデーションになっている部分がGainのグラフの通り黒->白->黒となっているのがわかります。

ノードの内部処理にさらに処理を割り込ませることができる関数接続ですが、欠点としてはノードから受け取れる値が分かりにくいことです。
ひとまず単純な関数グラフを作ってノードのFunctionを接続、その変化からどんな値を出しているのかチェックしてみるといいでしょう。

・マテリアル
白いコネクタのマテリアル接続はサーフェイスの質感を受け渡しますが、LW2015とLW2018では扱う値が異なります。
LW2015では
・拡散色
・スペキュラ色
・鏡面反射色
・透過色
・透明度
とレンダリング画像を構成するための各要素のシェーディング計算後の色と透明度の要素をまとめたものです。

標準ノードを使用してマテリアルから各要素を取り出したり、逆に各要素を組み合わせてマテリアルを作成することもできます。
181103_007.jpg

レンダラーが刷新されたLW2018ではマテリアルの内容は全く異なり、カメラから放出されたレイがポリゴンなどにヒットした際にその位置の質感を計算するための計算式とパラメータを登録します。
質感が鏡やガラスならそこからさらにレイを放出、またポリゴンにヒットしたらそこの計算式とパラメータを登録……
と繰り返して最後に登録された計算をまとめて行うようです。
そのため、前述のLW2015にはあったマテリアル内の要素を分解するノードは無くなっています。

・カスタム
マテリアル同様白いコネクタの接続で、ノード本体をプラグインなどで自作した場合にカスタム接続を作成することができます。
これはその名の通りプラグイン製作者が自由に定義できるデータで、文字列やポリゴンメッシュの受け渡しも可能です。

実用性は別として手続き型のモデリングプラグインも作れるかもしれません。
これも関数同様に同じ定義同士の入出力を繋がないと機能しません。

今回はここまで。
次回は各ノード接続が扱う値とLW内の単位の説明です。

コメント

タイトルとURLをコピーしました