上記の画像のようにDCCで書き出したスケルタルメッシュをエンジン上で"_01"~"_03"を一定速度でZ軸に繰り返し回転アニメーションをつけたBPを作りたいのですが、どうしたらいいでしょうか?
可能であれば、指定ジョイントの増減、個々に軸の指定、速度と回転する向きは調整できると他のアセットでも流用できるようにしたいと思っております。
上記の画像のようにDCCで書き出したスケルタルメッシュをエンジン上で"_01"~"_03"を一定速度でZ軸に繰り返し回転アニメーションをつけたBPを作りたいのですが、どうしたらいいでしょうか?
可能であれば、指定ジョイントの増減、個々に軸の指定、速度と回転する向きは調整できると他のアセットでも流用できるようにしたいと思っております。
AnimBPとControlRigを使うとよいでしょう
ボーン(ジョイント)の数が増減するのであれば、ControlRigで組むのが良いと思います
AnimBPからBPの変数を参照することで、BP側から速度等をコントロールすることも可能になります
解答ありがとうございます!
モーション周りに疎いところがあるため可能でしたら具体的なやり方を教えていただけますでしょうか。
実例を作ってみました
※ BPの基本的な操作と、ControlRigそのものの扱い方は割愛します
このSkeletalMeshからControlRigを作成します
ForLoopとIntToNameを使用し、動かしたいBoneのSuffixを生成します
それを指定のPrefixと合体し、Bone名として扱います
回転値については変数とし、外から渡す形にします
各変数は適宜InstanceEditable(インスタンス編集可能)に指定してください
AnimBPのセットアップをします
AnimBPからControlRigへ変数を渡すように設定します
回転値はEventGraph側で計算します
BP側に回転速度としてRPMを持たせたので、1フレーム分の差分を計算し、加算して反映します
上記のような構成であれば、求める要件に対応できるでしょう
ControlRigは特定のスケルトンアセットに依存しないので、複数のスケルトン間で使いまわしが可能です
対象のBoneが増えても、RotatorCountを変更して対応できます
回転を逆にする場合は、回転値の差分計算をマイナスにすればよいです
丁寧にありがとうございます!
少々、躓いてしまったところがあるのすがABPを組んでいる時に"Get Current RPM"が出てこないのですが、どうすればだせるようになるでしょうか。
解説通りに組んだ後、BPではスケルタルメッシュを入れて、作成したABPを読み込む。そしてイベントノードで再生させるということでよろいいでしょうか。
BPのユーザー関数です
必要に応じて任意のものを作成してください
すみません。どうやってもっていくのかもよく理解できていないため、お手数をおかけしますが教えていただけないでしょうか。
GetCurrentRPMはActor側(BP)に作ったユーザー定義関数です
Actorが持つ変数RPMを他のBPに渡すために作成しています
作成方法についてわからない場合は公式チュートリアル等を参照してください
なるほどPureにするとそうなるのですね!
無事に作ることができました!ありがとうございます!!