starthome-logo 無料ゲーム
starthome-logo

【チャリ走VR】キャラクターアニメーションの制御方法


※本記事はCyber Agent 公式エンジニアブログの中からVRに関連する技術記事を寄稿いただいております。


本投稿では、今年2月21日にリリースされたPlayStationRVR専用ソフト「チャリ走VR」で利用されているキャラクターアニメーションの制御方法についてお話しさせて頂きます。


bikerider-vr_tyarisovr-1024x591


BikeRiderVR_Download


アニメーション制御


チャリ走VRにおいて、アニメーションは酔いの軽減をしている役割もあったりと、実は見た目以外の役にも立っています。


本章ではアニメーションの種類とその利用方法を紹介していきます。


キャラクターとチャリのアニメーションはそれぞれが別々に動作していますが、共にアニメーションブループリント内のアニムグラフでキャラクターブループリントの変数の値に基いたアニメーションをブレンドすることによって動作を表現しています。


共通変数


キャラクターおよびチャリのアニメーションブループリント内のイベントグラフでは、キャラクターブループリントによって変更された変数の値を取得することでアニメーションのブレンドウェイト値を制御しています。


bikerider-vr_animation_commonvar


ハンドル


共通変数のPlayXとPlayYはハンドルに関わるアニメーションの制御を行います。下図のブループリントは、HMDの左右の傾きとコントローラの入力値に応じてPlayXとPlayYの値が変更されるようになっている例です。


bikerider-vr_animation_playerhandle-1024x244


ジャンプ


ジャンプのアニメーションに関してですが、実はゲームプレイヤーにジャンプアニメーションは付いておらず、NPCのみがアニメーションを再生するようになっています。従って下図のブレンドウェイト値の変更はNPC限定の処理となっています。


bikerider-vr_animation_commonjump-1024x336


着地


ジャンプのアニメーションと同様に着地のアニメーションもNPC限定の処理になります。ここで登場している「PlayFrame」という変数は全てのアニメーション再生で利用されており、アニメーションを再生するフレームを指しています。


この変数で再生フレームを指定しているため、キャラクターとチャリのアニメーションを連動させることができています。


ただ再生するだけですと、タイミングによってはキャラクターの足とペダルの位置がずれてしまうといった不具合が発生します。


bikerider-vr_animation_commonland-1024x421


坂道


ステージには坂道がところどころに設置されていますが、チャリを回転させる動作を省いた場合は坂道であっても下図のように走ってしまいます。


bikerider-vr_animation_rotation-1024x564


地面の傾きを考慮してチャリを回転させてあげることで違和感のない走りが実現できます。


bikerider-vr_animation_rotation2-1024x566


ただ回転させるだけですとどうしても違和感を感じてしまうので、タイムラインを使って徐々に素早く回転させることで違和感の低減に効果がありました。


ただし、ゲームプレイヤーのチャリを回転させると視点が勝手に動かされてしまい、酔いの誘発に繋がるので回転処理はNPCのみが実行します。


bikerider-vr_animation_slopingroad-1024x460


キャラクターの制御


ハンドル


共通変数の章で紹介していた変数「PlayX」と「PlayY」の値は下図のブレンドスペースに効いてきます。後から気付きましたが「X軸範囲」はマイナスにも設定できたので座標(0,0)を初期値にしておけば良かったです(遅)。


bikerider-vr_animation_bicycleblendspace-1024x636


右方向に移動する時は「PlayX」の値を加算します。


bikerider-vr_animation_bicycleblendspace2-1024x636


左方向に移動する時は「PlayX」の値を減算します。


bikerider-vr_animation_bicycleblendspace3-1024x637


立ち漕ぎにするには「PlayY」の値を加算すれば良いです。


bikerider-vr_animation_bicycleblendspace4


ギミック設置


ギミック設置のアニメーションはNPC限定の動作ですが、状況によっては立ち漕ぎと座り漕ぎの両方で設置動作をすることがあります。


立ち漕ぎ時のギミック設置と座り漕ぎ時のギミック設置動作をそれぞれ制御しても良かったのですが、「ギミック設置をする時はこのアニメーションをした時だ!」とユーザにとって分かりやすいルールを決めたかったことに加え、処理の複雑さの回避とアニメーション作成コストを考えると1つにした方が良いという結論に至りました。


bikerider


ジャンプ


ジャンプ動作は走っている時であればいつ実行されてもキレイに遷移させなければなりません。


ジャンプ動作の流れとしては、座り漕ぎ(立ち漕ぎ)をしている時にジャンプ前の溜めをして、その後ジャンプを開始します。


ここで問題になったのがジャンプ前の溜めの動作をどうやって実現するか?でした。


ジャンプ前の溜めは足の回転動作が無いため、普通にブレンドすると足が動いてしまい違和感がありました。


そこで足の回転動作を止めるために、0.2秒で溜めアニメーションの1フレーム目のモーションをするだけの30フレームアニメーションへブレンドした後、ジャンプ前のアニメーションを再生すると自然に見える一連のジャンプ動作を表現できました。


bikerider-vr_animation_jump-1024x273


着地


着地アニメーションに関してもジャンプと同じ方法で表現することができています。


bikerider-vr_animation_land-1024x273


チャリの制御


基本的にはチャリのアニメーション方法はキャラクターのアニメーション方法と同じです。ここではキャラクターと異なる動作部分のみを紹介します。


車輪の回転


右折や左折をするために車輪を左右に回転する処理はアニメーションが代わりに実行してくれるので、あと一つ考える必要があるのは車輪を回す処理についてです。


この処理は「Convert Spacesノード」を利用することで解決します。


このノードにより、ローカル空間とコンポーネント空間のポーズ変換が可能なので「ボーンをトランスフォーム(修正)する」ノードに値を渡して車輪の回転を実現します。


bikerider-vr_animation_wheel-1024x226


この時、「F_Wheel」のZ値に20.0と入力してみるとプレビューウィンドウのチャリの車輪が右に回転します。Y値を編集すると前方、後方に車輪が回転しますが分かりにくいのでZ値を例に説明いたしました。


bikerider-vr_animation_wheel2


死亡時のチャリ


ゲームプレイヤーが死亡するとなぜかチャリが崩壊するのですが、これはアニメーションではなく物理アセットの修正で実現しています。


下図では既にいくつかコンストレイントを削除していますが、残りの2つも削除してしまいましょう。


bikerider-vr_animation_constraint-1024x597


コンストレイントの削除はデリートキーを押すだけです。


bikerider-vr_animation_constraint2-1024x597


これで縛られるものがなくなったチャリは物理挙動時に崩壊します。


bikerider-vr_animation_constraint3-1024x597


まとめ


今回はキャラクターとチャリのアニメーション制御方法について紹介させて頂きました。


実際にはペダルやチェーンにも別々の動作が仕込まれていますが、実装内容としてはキャラクターやチャリとほぼ変わらないため今回は省かせて頂きました。


ゲームに合ったアニメーションを作成するために様々な試行錯誤をするのは当たり前であり、根気の必要な作業であるため苦労しましたがアプローチを変えてみて試すことは重要だと思いました。


Copyright ©2017 VR Inside All Rights Reserved.

    Loading...
    アクセスランキング
    game_banner
    Starthome

    StartHomeカテゴリー

    Copyright 2024
    ©KINGSOFT JAPAN INC. ALL RIGHTS RESERVED.