【作業効率UP!!】cascadeurでオブジェクトに小道具を持たせる方法 1/2
こんにちはこんばんは、ezuです。
今回はオブジェクト(モデル)に小道具を持たせる方法について解説します。
この機能を使えるようになると手に追従して小道具も移動するため、武器を振るアニメーションなどを簡単に作ることが出来るようになります。
この機能をマスターすることで、このようなアニメーションを今までより簡単に作ることが出来るようになります。
jointがある場合・無い場合、小道具のメッシュが複数ある場合など様々な状況の対処法を解説します。
分かりやすく解説しますのでぜひ最後までご購読ください!
今回使用する小道具はPolyhavenというサイトと、私が簡易的に作った斧を使用しています。一緒にやる方はFBX形式でダウンロードしてください。
0.注意点
始める前に起こりそうな問題点を並べておきます。
もし何か起きた時はこちらを参考にしていただくと解決するかもしれません。
なので【1.ジョイントがある場合】から読んでください。
1.小道具が表示消えた
インポートしたはずなのにrig modeにいくと小道具が非表示になっており見当たらないことがあります。
その場合は表示させたいものをoutlinerで選択してObject properticsのBasic→visibirityがincisibleになっていると思います。これをvisibleに変えることで表示されます。
jointも非表示になってることがあるので、表示したいものは同様の手順で表示してください。
2.小道具がずれる
あれこれrig modeで設定して戻ると画像のように小道具がズレてることがあります。
なぜズレるかというとrig modeではオブジェクトがT-poseになっているからです。
直す方法はbox controller modeに移動してすべてのboxを選択し、Commands→Go to T-poseを選択することで解消されます。
メッシュが複数ある場合
メッシュが複数ある場合は特に問題ありません。jointを2つ作成し、そのうち1つを親要素として配置してください。
メッシュのスケールがおかしい時 + メッシュが複数ある場合
メッシュが1つの場合、Object properticsのTransformのLocal Scaleの値を変更すれば解決します。
このやり方に問題がもしある場合はjointを追加してjointを親要素にし、jointのLocal Scaleの値を変更しましょう。
複数ある場合同じことをするとそれぞれの大きさが変わるためメッシュ同士の位置関係がおかしくなってしまいます。
複数のメッシュのscalを変えたい場合はjointを追加し、jointの子要素にした後にjointのscaleを変更することで正しくscaleを変更することが出来ます。
メッシュのscaleの初期値がバラバラな場合はおそらくcascadeurで調整することは出来ないと思います。blenderなどのソフトを使って調整した後にcascadeurにインポートしましょう。
後の方法は同じなので省略します。
1.ジョイントがある場合
まず一番簡単な状況から解説します。rig modeで行います。
cascadeurで用意されてるオブジェクトの手には小道具専用のジョイントが用意されています。
すでに小道具にもjointがある場合、それらを親子関係にすることで小道具が追従するようになります。
親子関係にする方法はoutlinerで小道具のjointの親要素を選択し、ドラッグして手のjointの中に入れます。
上記の画像で言うと選択してる(黄色)weapon_lという名前のjointにドラッグすることで親子関係になります。
次に小道具を任意の場所に移動させます。手に持たせるならそのように位置を調整しましょう。
次に小道具に剛体を追加します。小道具のメインのjoint(上記だと一番大きいジョイント)を選択します。
ローカルモードにしてadditional point in Axisのそれぞれの項目を
Axis→Z(今回は)
Space→Local
Off set→10(任意の数でOK)
ですぐ下にあるaddを選択します。
additional point in Axisについて
何をしてるかというと、小道具の重さと小道具を動かしやすくするための設定です。
ポーズを取る時に小道具単体を動かすことがあると思いますが、それを容易にするためと、剛体(重さ)を追加することで、Auto Physics機能がよりリアルになります。(この辺りはまだ勉強中)
Axisが今回Zである理由は小道具の回転を制御しやすくするためです。
赤丸で囲われてるポイントのように横に伸びるように配置すると小道具の回転の制御を行いやすくなります。
今回はlocal軸のZ軸で行いましたが、ものによって軸が異なると思います。設定してみて「違うなぁ」となったらctrl + zで戻っていろいろな軸を試してみてください。
次に小道具の剛体、もしくは手と繋がってるポイントを選択してObject properticsのPints update settingsの設定を変更します。
デフォルトでBind with parentにチェックが入っていますが、これを外して一番下のFK on frameにチェックを入れます。
詳しい内容はまだ私には理解できていませんが、この設定を行うことでおそらく思った通りの動きになります。申し訳ない。
ここからは小道具にもよりますが、今回の場合刃先にポイントがあり、そこを中心に制御できますが、その反対の柄頭(持つ方の先?)にはポイントがありません。
これを追加することで柄頭を中心に回転などを行えるようになります。
rig modeで行います。
このポイントを選択してadditional actionsのPoint controllerのaddを選択します。
こんな感じで変なところ(赤丸の所)に追加されるので、選択してるポイントの位置をコピペして位置を調整しつつ柄頭の方にポイントを伸ばします。
注意点としてLocal modeでペーストを行うと完全に同じ位置になりません。一度Global modeにしてからペーストを行い、移動時にLocal modeにするとうまくいきます。
2.ジョイントが無い場合
ジョイントが無い場合はまずジョイントを追加する必要があります。blenderならboneの追加。cascadeurならjointを追加します。
blenderでジョイント(Bone)設定する方法
追加したらedit modeでboneの位置を調整します。
次にweightの設定をします。オブジェクトを選択した後にshiftを押しながらboneを選択します。ctrl + pでWith Automatic Weightsを選択します。
オブジェクト選択してweight modeに移動します。
取っ手部分が青色のままなので全て赤色にします。
boneを動かしてちゃんとオブジェクトも動くか確認したらFile→Export→FBXでArmatureとmeshを保存します。
cascadeurで開き、jointを動かしてちゃんとオブジェクトも動けば大丈夫です。
もし動かない場合はjoint(bone)とオブジェクトの設定がうまくいっていないのでもう一度blenderで設定する必要があります。
この後の方法は1で紹介した方法と同じなので割愛します。
cascadeurでjointを設定する方法
ダウンロードしたオブジェクトを開きます。(開く方法はさっきと同じ)
jointの追加はcommandsからjointを選択します。
刃の根本と刃先の2つjointを追加します。
同じ順番で追加すると、ジョイントの名前が根本はjoint(0)、刃先はjoint(1)とoutlinerに表示されます。
joint(1)と追加したオブジェクト(今回はweeden_handle_saber)を選択してjoint(0)の中に移動させます。
分かりやすくするために名前を変更したいときはオブジェクトプロパティのNameで変更できます。
後の方法は1で紹介した流れになります。
メッシュが斜めになっている場合
このようにメッシュが斜めになっている場合、ジョイントを追加する方法に工夫が必要になります。が、難しくありません。
mesh modeに移動し取っ手を選択して位置をコピーします。
その後ジョイントを追加しGlobal modeでペーストします。
すると角度と位置をコピーしてくれるため、後はlocal modeで位置を調整するだけで綺麗に配置することが出来ます。
後は前述した通りに行います。
まとめ
ということでcascadeurで小道具を持たせる方法について解説しました。
また続きがありますが、一旦ここいらでこの記事は終わります。
近いうちに書きますので少々お待ちください。
ではまた。