3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【UE4】Control Rig試し中⑥/ぷちコン15進捗 - 2021/03/16

Last updated at Posted at 2021-03-16

株式会社ヒストリアさん主催の第15回UE4ぷちコンの作業進捗。
Control Rigの続き⑥。

イマココ

ゲームパッドの入力ベクトルの長さを正規化できたので、スティック入力に応じて走れるようにした。これまでに作ってきた地面に対する足のIKリグももちろん使用している。
20210316_1140_TiltRun.gif

初見の人には「なんか普通じゃん?」「これ、特別なことしているの?」と思ってもらえたら成功である。プログラムっぽいカクカクした動きを消して、自然な動きに見せたかったので。

さらに、いわゆるAim Offsetに相当するControl Rigを作った。
下のGIFアニメからは分かりにくいかもしれないが、体の動きより先に、頭が行き先を向くように調整してある。
20210316_2052_AimRig.gif

アクタ側 (Player Pawn)

  • スティックを入れた方向に Add Force している。
    • 一応、地面に沿った方向の成分に限定しているので、上り坂と下り坂で加速が違う予定。
      • 上り坂=スティックの加速 - 重力 ⇒ 加速:小
      • 下り坂=スティックの加速 + 重力 ⇒ 加速:大
      • (ちょっとまだ、思った動きと違うので、調査中)
  • キャラの向きは速度ベクトルの方向に向けている(Get Vectorノードを使用)
    • これでスティック入力より少し遅れて体の向きが変わるようになる。
      • 一般に加速度運動では速度の変化はゆっくり遅れてくるので。
    • 今はまだ、加速度が強いので(Add Forceに強い値を入れているので)、入力に対する反応が敏感すぎる。これは今後の課題。

Animation Blueprint側

20210316_2055_AnimGraph.png

  • Blendspace 2D で待機・歩き・走りと、-180度~+180度までの移動アニメーションをブレンド
  • 次が、地面 VS 足IKのControl Rig
  • その次が、Aim Offset相当のControl Rigを繋いでいる。

つまり、Control Rigノードは数珠繋ぎが可能! ということである。

ちなみに、前述の「体の動きより先に、頭が行き先を向く」は、DirectionDegrees * 1.2の部分である。(「ちょっとオーバーに動かす」とコメントがあるところ)
「何秒かけて指定方向を向く」的な処理はしていない。
ゲームプログラミングって、意外とこういうトンチでシンプルに解決できたりするから面白い。

Aim Offset 相当の Control Rig

そもそも普通の(アニメーションの) Aim Offset を使わなかった理由は:

  • Aim Offset だと、動きが小さい。首と頭くらいしか動かない。
    • spine_01からheadまでを順番に全部ねじりたかったから。
    • いちいち、右・中央・左の3つのアニメーションシーケンスアセットを自作して、試行錯誤するのが面倒に思えたから。
    • ビバ!プロシージャル!
  • あと、そもそもControl Rigでやってみたかったから、というのが一番の理由か。

20210316_2117_AimRigGraph.png

上の画像がAim Offsetっぽい動きをするControl Rigのグラフ。
比較的小さく組めたので、まるっと全部掲載。

  • リグControlは「Rig_Aim」一個だけ。これを回せば、背骨一式~首~頭が連動して回転するようにした。
    • Anim Blueprintが操作する変数も1つ。AimDirection。これはAimするためのRotation値。
  • 上のBranchノードにつながっているIs Interactingは、リグをマウスなどで動かしているときにTrueが返ってくる。
    • ここでは、マウス操作をしていない時は、Anim Blueprint が操作していると判断するようなロジックになっている。
  • spine_01からheadまでの一連のボーンを取得するために、Item Chainを初めて使った。(For Each Itemにつながっているやつ)
    • Childrenで親から子を検索した場合、spine_03から先が首・右肩・左肩と三方向に分かれているため、余計な(両腕の)ボーンが取得されてしまう。
    • Get Parentsで子(head)から親をたどっていった場合、pelvisとrootも拾ってしまう。
    • Item Chainだと、始点・終点となるボーンが指定出来て便利。
  • Propagate Transformノードの存在を知った。
    • Set TransformSet RotationなどにあるPropagate to Childrenと同様の機能のようだ。
    • ここ数日は、ボーン1個1個を操作するたびにPropagate to Childrenが動いてたら、きっと重かろうと思って、できる限りPropagate to ChildrenはFalseで組むようにしている。
    • 最後に一発Propagate Transformで済むなら、それに越したことはない。
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?