[Lightwave] 2点間を曲線で繋ぐ(2) スプライン編

はじめに

前回の投稿では2点間をベジエ曲線で繋いでいましたが、Procedural GeometryにはSpline Geometryというスプラインを作成するためのノードが用意されています。このノードの使い方が少し分かってきたので、今回はこれを使って2点間を繋いでみます。

Spline Geometryノードとは

Spline Geometryノードを繋ぐと以下のように表示されます。

手前左から、始点のハンドル、始点、終点、終点のハンドルの4つのノットが表示されます。ハンドルは曲線の向きやテンションを指定するために使われます。ノットはドラッグで自由に移動できますが、残念ながらキーフレームを作成することはできません。

OutputをSkinとすることでチューブ状の形状を作成することも可能です。

Spline Geometryノードで2点間を繋ぐ

Nullオブジェクトを使ってSplineの形を制御できれば、キーフレームを作成してアニメーションすることも可能になります。

シーンに5つのNullオブジェクトを追加して、それぞれのPositionをPoint Geometryに接続します。たわみ具合を調整できるように中間にもNullを追加しました。Point Geometryの出力はSpline Geometryノードに入力します。

Nullには見やすいようにItem Shapeを設定してあります。Nullを移動することでスプラインのノット位置を調整することが可能になりました。これで、スプラインの形状をアニメーションすることができます。

Nullを減らしてみる

ハンドル用のNullを削除しました。ハンドルに相当するポイント位置は、始点と終点Nullの位置と回転から計算するようにしました。始点や終点のNullを回転することでスプラインの向きを制御できます。Nullが3つになって扱いやすくなったと思います。

Forwardベクトルは常に前方を指す単位ベクトルです(おそらく)。これを利用して手前と奥の位置を計算しています。

始点(Item Infor(2))の現在の位置からForwardベクトルをマイナスして、始点より手前側の位置を計算。ForwardベクトルにMultiplyで値をかけることで始点までの距離を調整しています。現在は1をかけているので、Multiplyノードを削除してForwardをSubノードのBに直接接続しても同じ結果になります。

終点(Item Infor(4))の現在の位置からForwardベクトルをプラスして、終点の向こう側の位置を計算。ForwardベクトルにMultiplyで値をかけることで終点からの距離を調整しています。現在は1をかけているので、Multiplyノードを削除してForwardをAddノードのBに直接接続しても同じ結果になります。

これで、始点と終点を回転することでスプラインの向きが変わるようになりました。また、Zスケールを変更することでテンションも変更することができます(分かりにくいですね。

懸念事項

Procedural Geometryは新しい機能のせいか、まだ動作が若干不安定な気がしました。保存済みのシーンファイルが読めなくなることもありました。バックアップを取ってから使ったほうが良さそうです。万が一のときはシーンファイルをテキストエディタで編集すれば、、、気をつけましょう。

ダウンロード

シーンファイル(.lws)

ファイルの読み込みでLightWaveが強制終了するかもしれません。ご注意ください

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です