« グループ内のオブジェクトをXPressoでスプラインに沿わせてみる。 | トップページ | 連なったものを「きっちり」スプラインに沿わせる為に使うC.O.F.F.E.E.ノードを作ってみた… »

連なったものをスプラインに沿わせるには…

artist sideのC4Dコミュニティで質問されていた列車のように、連なったものをスプラインに沿わせると言う事は…

Play_the_spline_54

こんな感じの物を、今までのレベルでスプラインに沿わせてみる。

では、今までのレベルであわせてみよう。

玉の半径は10
パイプの長さは100

と、言う事は…
玉の中心からパイプの中心は60
ちなみに、玉から玉までの距離が120
と、言う事だ…

Play_the_spline_63

スプライン上でのオブジェクトのピッチは、ピッチ60÷スプラインの長さになる。

Play_the_spline_55

早速、沿わせてみました。
これでも良いという人もいるだろう。場合によっては、良いだろう。

今回のスプラインへの沿わせ方は、「スプライン」ノードではなく「スプラインに沿う」エクスプレッションです。「接線方向に向く」もONです。
グループのユーザデータ「スプライン上の位置」で緑の玉の位置を制御しています。
後は、グループ内のオブジェクトの「スプラインに沿う」エクスプレッションの「スプライン上の位置」をオブジェクトのピッチを60でXPressoで調整しています。

Play_the_spline_56

「グループ」オブジェクトを「階層」ノードに渡し、子オブジェクトを1個づつ捜査します。
それを「オブジェクトインデックス」ノードで子オブジェクトと対になるインデックス番号を吐き出します。
吐き出されたオブジェクトから「タグ」ノードを使って「スプラインに沿う」エクスプレッションタグを抽出。
抽出された「スプラインに沿う」エクスプレッションタグの「スプライン上の位置」に、
インデックス番号 × (ピッチ60 ÷ スプラインの長さ) + ユーザデータ「スプライン上の位置」
を入力します。

注)「タグ」ノードの前の「A1」ノードは不要です。

ここまでのファイル9.5は、「SplineArrange_03.ZIP」です。

Play_the_spline_57

全体的にずれているのですが、この3箇所が極端にずれています。
カーブがきつくなると確実にずれてしまいます。

Play_the_spline_62_2

これを改善するには…
赤いパイプの「スプラインに沿う」エクスプレッションを削除し、玉の子オブジェクトにし位置関係を下のようにします。

Play_the_spline_51

玉の「スプラインに沿う」エクスプレッションの「接線方向に向く」をOFFにしてください。
その代わりに、ターゲットエクスプレッションを取り付け、次の玉をターゲットにします。

Play_the_spline_59

XPressonのオブジェクトのピッチを120に変更します。

Play_the_spline_58

結果は…

Play_the_spline_60

先ほどより、改善されました。

Play_the_spline_61

カーブのきつい所では、めり込んでしまいました。
今のレベルでは、ここまでが限界でしょう。
急なカーブを作らないと言うのも方法の一つだろう。

今のファイル9.5は、「SplineArrange_04.ZIP」です。

|

« グループ内のオブジェクトをXPressoでスプラインに沿わせてみる。 | トップページ | 連なったものを「きっちり」スプラインに沿わせる為に使うC.O.F.F.E.E.ノードを作ってみた… »