« XPressoタグの入出力ポートは? | トップページ | 検索ワードに… »

C4D XPresso:前回の「2個の円の接線ノード」に外周のスプラインを追加してみた。

「外周のスプライン」て何だ!
最近、気の利いた言葉が出てこなくてね…

Circle_04

水色線の事です。
接線だけだと、何に使えば良いんだか…使えない事はないんだろうけど…

ノードはスプラインの入力を追加したのみです。

Circle_05

スプラインのタイプやポイント数は気にしないでください。
強制的に閉じたベジェに変更します。
セグメントの調整はしていないので、セグメント無しでお願いします。
ポイント数の最大は7個。

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

このスプラインの形を見たら、なんだかやってみたくなるのが…

Circle_06

こんな感じだね…
もちろん、これで終わりではない。

動かしたいよね…

動かす数値は…
車(円柱)は「回転z」
ベルト(スイープNURBS)はテクスチャタグの「オフセットy」

何を基準に動かすと簡単か?

車(円柱)はベルトの上を転がっているわけだ。ベルトの上を移動しているわけだ。
両方とも移動量は同じだけど、半径が違うから回転数が違うわけだ。

移動量と半径と回転数の式は…

移動量 = 半径×2×π×回転数(360°で1回転)
回転数 = 移動量÷(半径×2×π)

1回転は…
度数では360
ラジアンでは2π

移動量と角度のと半径の関係は
度数 = 移動量×360÷(半径×2π)
  = 移動量×180÷(半径×π)

移動量とラジアンと半径だと…
ラジアン = 移動量×2π÷(半径×2π)
  = 移動量÷半径

度数で計算したら最終的にラジアンに変換しないといけないので、はじめからラジアンで計算します。
このラジアンの数値を、そのまま角度zに入力するといいわけだ…

で、ベルトのテクスチャタグのオフセットyは…
スプラインの長さが100%だから…
オフセットy = 移動量÷スプラインの長さ
と、なるわけだね。

ラジアン値とオフセット値に秒数(実数)を掛けると完成です。
移動量は秒速になります。

XPressoは…

Circle_11_2

半径や秒速は外部から入力するようにしました。
先ほどのラジアンの計算式をそのまま入れると逆回転してしまったので、「反対の数」を間に入れました。

Circle_12

車(円柱)の位置と半径を調整するXPressoです。
外から半径を入力されたらベルトの半径分を引いた値を円柱の半径にしています。

Circle_13

ベルトのスプラインですね。
「XY円の接線」ノードの出力ポートに何も繋がないと計算されなかったのでダミーで繋いであります。
下方のテクスチャは、オブジェクトの先頭に取り付けたテクスチャタグに新たにマテリアルを指定したとき、自動的にベルトと車(円柱)のテクスチャを変えるためです。

このXPressoに数値を流し込む為のXPressoをオブジェクトの先頭につけます。

Circle_14

半径と秒速は、そのまま流し込むようにしました。
車(円柱)の位置は、グローバルで入力してもらって、ローカルに変換してz値を0.0にすることによってオブジェクトの先頭の軸のz0.0に来るようにしました。

Circle_15

最後に、オブジェクトに数値を流し込むXPressoです。

Circle_16

半径をコントロールするユーザデータです。

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

複数組み合わせてみたくなったので、組み合わせてみました。

Circle_07

動きの同調は…
軸を共有している車(円柱)の半径比×速度

「赤のグループ」→「オレンジのグループ」→「緑のグループ」→「青のグループ」と伝えていきます。

赤のグループとオレンジのグループが共有している軸の車(円柱)の半径と速度を考えてみよう。

小さい半径と大きい半径の回転角度は同じなので、転がる距離が違います。
小さい半径から大きい半径は速度が上がり、逆だと速度が下がります。

「出力速度」 = 「受け半径」÷「送り半径」×「入力速度」だと…
「青の速度」 = 「オレンジの半径」÷「赤の半径」×「赤の速度」
この送り手と受け手を繰り返していくと、全部が同調します。

Circle_17

半径の調整は一箇所で、まとめてユーザデータで…

Circle_09

下のアニメーションは、分かりづらいのですが、回転とベルトは同期しています。

Circle_08

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

では、円柱をプーリーに置き換えてみました。
もちろん、ユーザデータで半径を調整できます。

Circle_10

スピードの調整はできますが、回転はタイムラインの時間換算なので変速アニメーションには適していません。

このファイルは、「CircleTangent_05.ZIP」です。

さて、最後に「XY円の接線」ノードの出力にダミーを付けなくてもいいように出力を全て削除しました。

Circle_18

ファイルは、「CircleTangent_06.ZIP」です。

この「村人とC4D」ブログの文章はメタメタで、分かりづらいので真面目に読まなくても良いですけど…
ファイルだけは、ダウンロードしてください。

|

« XPressoタグの入出力ポートは? | トップページ | 検索ワードに… »