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

今回はレイアウトの状態によるノードの挙動の変化についての説明です。
LWのノードは自由度が高く、サーフェイスからモーションまで多くの要素をノードでコントロール可能です。
しかし、全てのノードが全ての場面で使えるわけではありません。

例えば、シーンに適当なアイテムを追加し、モーションパネルのモディファイヤからNodal Motionプラグインを追加します。
これはノードによって位置、回転、スケールをコントロールできるプラグインですが、ここでノードエディターの左側のリストを確認すると……
181218_001.jpg
サーフェイスのノードエディターと比較すれば一目瞭然、モーション側には一部のレイトレースノードとマテリアルカテゴリが表示されていません。
これは各ノードプラグインのプログラム内で表示を制限しているためです。
例えばマテリアルノードですが、モーションにはマテリアルタイプの接続が存在しません。
マテリアルは同タイプ同士でしか接続できないため、使えないものを表示しても邪魔ということで非表示設定にされているのだと思われます。
ただ、この設定は任意のためサードパーティー製のプラグインの中には使えない場所でも表示される場合があります。

一方のレイトレースノードですが、RayCastGeometryだけが表示されています。
こちらも使用できないノードを非表示設定にしているわけですが、非表示にしている理由が異なります。
LW2015以降、レイアウトにはレンダリングを行うために
・サーフェイスプレビュー(色・質感設定パネルなどにあるの球のレンダリング)
・VPR
・本レンダリング
の3つの方法があります。
このレンダラーが動作している状態はレンダリングセッションと呼ばれ、Nodal Motionで表示されなかった
2つのレイトレースノードはレンダリングセッション中しか動作しません。
実際には各種マテリアルノードなども内部でレイトレースを使用していますが、処理の中で現在レンダリングセッションかをチェックし、レイトレースが使用できない場合はダミーのデータを返したり処理をスキップしています。

仮にNodal Motionでレイトレースノードが使えたとしても、作業中のOpenGLビューとレンダリングでモーションが変わってしまい実用的ではありません。
しかし、Unityなどのゲームエンジンでもレイキャストを使用してオブジェクトの接触をチェックするなどレンダリング以外の目的でも便利に使用できるため、LWでも新たにレンダリングセッション以外でも使用できるレイキャスト機能としてRayCastGeometryノードが提供されています。
リファレンスのRayCastGeometry使用例でも自動で地形の凹凸に沿って球を動かすための判定に使用しています。
通常のRayCastノードとRayCastGeometryノードの使い分けですが、基本使用できる場面ではRayCastノードを優先すべきです。
リファレンスの注意書きにもありますがRayCastGeometryノードはゲームエンジンのようにリアルタイムでレイキャストを行っているようなものなので処理が重いという欠点があります。
一方RayCastノードはレンダリングセッションでしか動作しない代わりに、レンダリング用に事前処理を済ませたシーン情報を使用するため非常に高速です。

コメント

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