4Dキャラクタの「揺れもの」の表現で「ジョイント(ボーン)チェーン」に対してダイナミクスを設定するという手法は、いろいろなソフトで使われています。MMDの「物理演算」とか、最近だとUnityのダイナミックボーンとかが有名ですね。4Dにはジョイントチェーンに対して使えるダイナミクスが複数あるのですが、設定の手軽さから〈IKダイナミクス〉が選ばれることが多いようです。〈IKダイナミクス〉は設定でコントロールできる「幅」がかなり狭く、どうやっても「いい感じ」に揺らすことができないケースが結構あるのです。ジョイントチェーンを揺らす別な手段としては〈スプラインダイナミクス〉もあります。こちらは設定がやや複雑で最初のハードルは高いのですが、〈IKダイナミクス〉よりもパラメータが多く、表現の幅は格段に広くなります。Studioでしか使えません(そもそも高度なキャラクタ機能の多くはStudio限定ではありますが)。この記事では、2つの「ジョイントチェーンのダイナミクス」を比較、検証してみたいと思います。先に結論から言うと「ちゃんと揺らしたいならスプラインダイナミクスがおすすめ」です。このポニーテールを動かしますサンプルファイルサンプルファイルはこちらになります(解凍するとc4dファイルが3つ入っています):20190113_joint_dyn_samples.zip始めに説明するキャラクタのポニーテールを揺らすセットアップのサンプルファイルは「20190113_ponytail_dynamics.c4d」になります。1つのファイルに全パターンの設定が含まれていて、それぞれの設定を〈テイク〉で切り替えるようになっています。ファイルを開いたら説明に対応するテイクに切り替えつつご覧ください。前述のように〈スプラインダイナミクス〉はStudio限定の機能なので、他のエディションでは〈IKダイナミクス〉のほうしか動きません。ファイルの設定はテイクで切り替えるほかの2つのファイルは後述の〈IKダイナミクス〉と〈スプラインダイナミクス〉でそれぞれ〈衝突判定〉のテストで使っているファイルです。IKダイナミクスの例まず〈IKダイナミクス〉のほうから紹介します。〈IKダイナミクス〉は普通の〈IKタグ〉にある〈ダイナミクス〉オプションです。基本的には、動かすジョイントチェーンに〈IKタグ〉を設定して(〈ゴール〉はなし)、〈ダイナミクス〉の〈有効に〉スイッチをオンにするだけです。今回のポニーテールのようなものは、キャラクタ本体にめりこまないよう〈衝突判定〉を有効にし、〈衝突対象〉のオブジェクトをリストに登録します。この例ではダミーのポリゴンオブジェクト(キャラクタの上半身のピンク色のパーツ)をそのまま該当するジョイントの子として配置しています。〈スキン〉で変形するオブジェクトを〈衝突対象〉にすると〈X優先順位〉の関係で少しややこしいことになるので今回は避けました。〈衝突判定〉の〈半径〉をポニーテールのオブジェクトの太さに合わせて「2cm」としました。〈IKダイナミクス〉のセットアップなお、〈IKダイナミクス〉を「揺れもの」に使う場合、通常は〈位置〉は固定して〈角度〉のみ動かします。回転するのは〈IKタグ〉が設定されているジョイントの「次のジョイントから」になります。最初の〈ボーン〉は動きません。他のパラメータはデフォルトのままで、とりあえず動かしたのがテイク「IK_dyn_default」です。結果を見ると、ジョイントチェーンに対する〈重力〉の影響が強すぎて、真下に向かって下がりっぱなしですね。動作も全体的にガチャガチャしていて、一部で〈衝突判定〉が失敗してキャラクタ本体を突き抜けています。https://hk3d.jp/wp/wp-content/uploads/2019/01/ponytail_dynamics_02_IK_dyn_default_1.mp4チェーンが真下に下がりすぎで、ガチャガチャしているとりあえず〈重力〉を「-0.5cm」まで小さくしたのがテイク「IK_dyn_tuned_1」です。〈IKダイナミクス〉の〈重力〉のデフォルトは「-9.81cm」となっていて、何か意味ありげな数値なのですが、物理的に正確というわけではないようです。考えると「-9.81m/s」じゃなく「-9.81cm」ですし。