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

今回は各ノード間を通る値の話です。
まだまだ基礎の話が続きますが、ノード単体の挙動の前に各ノード間のデータの流れを知ることが重要と考えています。
逆にここを覚えればNewtekのフォーラムで公開されている優れたプリセット群を読み解いてアレンジしたりとできることの幅が広がるはずです。

前回の接続タイプ説明では整数や小数とだけ記載しましたが、実際のノード設定パネル上では距離や角度、パーセントと様々な単位が混在しています。
これらの各単位がそれぞれスカラー値でどう扱われるかが以下になります。

パーセント 100% = 1.0
距離 1.0m = 1.0
角度 約57.295°= 1.0

例えば、0.5の値をパーセント入力に接続すると50%に、距離なら50cmになります。
特殊なのが角度で、中途半端な値になっていますがこれはLW内部ではラジアンと呼ばれる角度単位に変換されるためです。
ラジアンについての詳細は省きますが、90°でπ/2、180°でπ、360°で2πという値となります。
度からラジアンへの変換は度に180/πを掛けます。
逆の変換はラジアンへπ/180を掛けるので、57.295*3.1415926/180.0でだいたい1.0となります。

実際に出てくる値を確認するのに楽な方法はサーフェイスノードを使ってレンダリング画像に出力してみることです。
181206_001.jpg
181206_002.jpg
DiffuseShadingのRGBにそれぞれ100%、1.0m、57.295°を接続してレンダリングしてみます。
角度が変換されたBlueの部分には多少の計算誤差は出てしまいますが、ちゃんとRGB1.0の白として出力されています。
LW2018の場合はレンダーバッファを作成してそちらに接続すれば同じことができます。
サーフェイスノードの設定で思い通りの結果にならない場合は途中のノードをこの方法で出力して値を確認しながら組み立てるとやりやすくなると思います。

次は異なるタイプ同士の接続について。
ノードエディターを操作していると、整数を小数に接続したり、3つの値をもつベクターを1つの値しか持たないスカラーに接続したり、あるいはその逆もできてしまいます。
前者は1つの値同士なので何となく結果も予想できますが、後者はどうなのかといった疑問が出てきます。

異なるタイプ同士を接続した場合は、LW内部で適切な値に変換されるようになっています。
接続線にグラデーションがかかりますが、あそこで変換されているイメージです。
しかし、ファンクションやマテリアルといった特殊な挙動や数値データ以外の接続タイプではエラーメッセージが表示されて接続できないものもあります。

これらの情報はリファレンスに表として記載されているのでそちらを参照するのがわかりやすいでしょう。
LW2015ならLW2015ReferencesJ.pdfの1785ページにあります。
大体は予想した通りのシンプルな変換になっていると思いますが、ひとつだけ注意点があります。
それはカラーとベクターの3要素のタイプを整数やスカラーの1要素に接続した場合、カラーとベクターとでは挙動が異なる事です。
ベクターから1要素に接続した場合はXやHといった先頭の要素だけ渡されます。
しかし、カラーの変換をリファレンスで見ると「CCIR601 輝度の値」と書かれています。
これは映像信号の規格に基づいて色から輝度を算出してその値を渡します。
輝度を求める式は
輝度Y = 0.299*R + 0.587*G + 0.114*B
となっており、単純な平均ではないことがわかります。
そのため、カラーをスカラーに変換して使いたい場合はToolカテゴリにあるColor Scalarノードを挟むことをお勧めします。
Color Scalarノードは平均値や最大値、赤のみなど様々な方法で色を変換できるので思い通りの処理ができます。

コメント

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