UE4 特定のボーン(Transform)に対して「位置」「回転」「スケール」を変更する(Transform(Modify)Bone)
特定のボーン(Transform)の「位置」「回転」「スケール」をブループリントから変更する方法です。
下のようなものを見つけたのでどうやって実装するのか気になりました。
調べてみるとこんなページが
・Blueprintで特定BoneのTransformを変更したい
https://answers.unrealengine.com/questions/121347/blueprint%E3%81%A6%E7%89%B9%E5%AE%9Abone%E3%81%AEtransform%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%81%84.html
・スケルタル制御
https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/index.html
上記公式ページを見る感じだと
「Transform (Modify) Bone」ノードを使うと行けそうですね。
公式ページはここに。
・ボーンのトランスフォーム
https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/TransformBone/index.html
「Transform (Modify) Bone」ノードを使ってみます。

「位置」「回転」「スケール」と全部いけそうですが、
今回はとりあえずボーンのスケールだけいじってみることにしました。
「Transform (Modify) Bone」ノードの詳細を開いて
スケールを変更したいTransformを設定します。

今回は頭を大きくしたいので「head」を選択しました。
それと、どうもスケールがアニメーションやステートで上書きされているようなので
「Transform (Modify) Bone」の値を加算するように
「Scale Mode」を「Add to Exisiting」に変更してみました。
ここらへんは挙動がなんとなくしかわからないのでいろいろ試してみないとですね。
設定したノードを繋ぐとこんな感じになります。

するとプレビューにも設定した値が反映されました。

わりといい感じなのではないでしょうか。
頭があさっての方向を向いてるのは「Look At」の制御もはいってるためですね。
スクリーンショットを撮った時ははいちゃってました。
さて、これを実行するとちゃんとゲームでも反映されました。

こんな感じですね。
人型キャラクターを制御する場合、「Look At」であったり、
今回のように「アニメーションの結果をプログラムでいじる」
といったことがどうしても必要になるので、知っておいた方がよさそうですね。
下のようなものを見つけたのでどうやって実装するのか気になりました。
UE4でマネキンの頭身を変えようとして結構四苦八苦してた。
— 自戒 (@yukinojo24) 2016年10月22日
アニメーションブループリントでやるのになかなか行き着かなかったorz#UE4Study pic.twitter.com/PKdrz2NZXC
調べてみるとこんなページが
・Blueprintで特定BoneのTransformを変更したい
https://answers.unrealengine.com/questions/121347/blueprint%E3%81%A6%E7%89%B9%E5%AE%9Abone%E3%81%AEtransform%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%81%84.html
とあったのでアニメーションブループリントを調べてみることに。ボーン単位でのトランスフォームはアニメーションブループリント内で可能です。
スケルタル制御 https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/index.html
通常のブループリントでのボーン単位のコントロールは無理だと思います。
・スケルタル制御
https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/index.html
上記公式ページを見る感じだと
「Transform (Modify) Bone」ノードを使うと行けそうですね。
公式ページはここに。
・ボーンのトランスフォーム
https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/TransformBone/index.html
「Transform (Modify) Bone」ノードを使ってみます。

「位置」「回転」「スケール」と全部いけそうですが、
今回はとりあえずボーンのスケールだけいじってみることにしました。
「Transform (Modify) Bone」ノードの詳細を開いて
スケールを変更したいTransformを設定します。

今回は頭を大きくしたいので「head」を選択しました。
それと、どうもスケールがアニメーションやステートで上書きされているようなので
「Transform (Modify) Bone」の値を加算するように
「Scale Mode」を「Add to Exisiting」に変更してみました。
ここらへんは挙動がなんとなくしかわからないのでいろいろ試してみないとですね。
設定したノードを繋ぐとこんな感じになります。

するとプレビューにも設定した値が反映されました。

わりといい感じなのではないでしょうか。
頭があさっての方向を向いてるのは「Look At」の制御もはいってるためですね。
スクリーンショットを撮った時ははいちゃってました。
さて、これを実行するとちゃんとゲームでも反映されました。

こんな感じですね。
人型キャラクターを制御する場合、「Look At」であったり、
今回のように「アニメーションの結果をプログラムでいじる」
といったことがどうしても必要になるので、知っておいた方がよさそうですね。
| UE4 | 11:26 | comments:0 | trackbacks:0 | TOP↑