UnityのAnimation Riggingの使い方とサンプルの作成

今回はUnityのAnimation Riggingについて見ていきたいと思います。

Animation RiggingはUnity2019.1以降で使用できます。

Animation Riggingを使うとUnity内でアニメーションリギングが出来ます(そのままですね・・・)。

リギングはアニメーションを作る為の仕組みを作る事でこの仕組みによってアニメーションを行うということになります。

UnityではスクリプトからIKを使って人型キャラクターの手や足の位置や角度を操作し、動かすことが出来ましたが、このAnimation Riggingを使うとスクリプトから操作せず自分でRigを設定しアニメーションをさせることが出来ます。

今回はAnimation Riggingの個々のコンポーネントの詳細を見ていきます。

スポンサーリンク

Animation Riggingのインポート

Animation Riggingは現在はまだプレビューパッケージ(試用版)なので、Package Managerを使ってインポートする必要があります。

UnityメニューのWindow→Package Managerを選択します。

Package Managerウインドウが開くので、メニューのAdvancedを押し、Show preview packagesを選択し、プレビュー版のパッケージも表示するようにします。

Animation Riggingを選択し、右下のInstallボタンを押してインストールします。

Animation Riggingをインポートする

Package ManagerのAnimation RiggingのサンプルもSamplesのImport in projectボタンを押すとインポートできます。

UnityのAnimationRiggingのサンプルのインポート

今回紹介する機能はサンプルに全てあるので実行して確認すると理解が早まるかもしれません。

Animation Riggingで使用するコンポーネント

Animation Riggingで使用するコンポーネントを個々に見ていきましょう。

Rig Builder

Rig BuilderコンポーネントはAdd ComponentのAnimation Rigging→Set up→Rig Builderから取り付けられます。

Rig BuilderはAnimatorコンポーネントを持つゲームオブジェクトに取り付けAnimatorコンポーネントと共存してRigを構築するコンポーネントです。

Rig BuilderのRig LayersにはRigコンポーネントを設定します。

UnityのAnimationRiggingのRig Builderコンポーネント

エフェクターの設定

ヒエラルキー上のゲームオブジェクトにRig Builderコンポーネントを取り付けると、そのゲームオブジェクトの子要素のゲームオブジェクトを選択した時にシーンビューでエフェクター(シーンビューでIKやHintを確認する為の形状)の設定が出来るようになります。

+ボタンを押すと詳細を設定出来ます。

UnityのAnimationRiggingのエフェクター設定

UnityのAnimationRiggingのエフェクターの設定をしてシーンビューで変化を確認出来る

名前の横のチェックを外すとエフェクターが非表示になります。

Shapeでエフェクターの形を設定
Colorで色
Sizeでサイズ
Positionで位置のオフセット
Rotationで回転のオフセット

を設定出来ます。

UnityのAnimationRiggingのエフェクターを設定したサンプル

Rig

Rigコンポーネントは取り付けたゲームオブジェクトの子要素に設定したリグのウエイトを設定出来ます。

UnityのAnimationRiggingのRigコンポーネント

Rigはスケルトンルート(ボーンのルート)と同じ階層のゲームオブジェクトに取り付けます。

例えばスタンダードアセットのEthanのスケルトンルートはEthanSkeletonという名前になっているのでRigコンポーネントを取り付けるゲームオブジェクトは

同じ階層にCreate Emptyで空のゲームオブジェクトを作成し名前をRig(名前は自由に設定)に変更し、Add ComponentのAnimation Rigging→Set up→Rigから取ります。

以下のような階層になります。

UnityのAnimationRiggingのRigコンポーネントを取り付けるゲームオブジェクトの階層位置

Rigコンポーネントを取り付けたゲームオブジェクトをRig BuilderコンポーネントのRig Layersにドラッグ&ドロップし設定します。

Rigゲームオブジェクトの子要素のゲームオブジェクトに設定したIKの設定がRigコンポーネントのウエイトで操作されます。

Bone Renderer

Bone RendererコンポーネントはAdd ComponentのAnimation Rigging→Set up→Bone Rendererから取り付けられます。

Bone Rendererコンポーネントはスケルトン(ボーン)をシーンビューで視覚的に確認出来たり、シーンビュー上で選択して操作をすることが出来るようになるコンポーネントです。

おそらくAnimatorコンポーネントが取り付けられているゲームオブジェクトに取り付けます。

Bone Sizeにチェックを入れ数値を変更すると表示されるボーンのサイズを変更する事が出来ます。

Shapeは表示するボーンの形状を設定します。

Colorは表示するボーンの色を設定します。

Tripod Sizeにチェックを入れるとボーンの方向軸が表示され、数値でその長さを指定出来ます。

Transformsには表示するボーンを設定します。

試しにスタンダードアセットのEthanにBone Rendererコンポーネントを取り付けBone RendererのTransformsにボーンを設定してみます。

EthanのEthanSpineとEthanの左足のボーン3つ、と右足のボーン3つを設定します。

UnityのAnimationRiggingのBone Rendererのサンプル設定

シーンビューでは以下のようにボーンが表示されました。

UnityのAnimationRiggingのBone Rendererサンプル設定でシーンビューを表示

Rig Transform

Add ComponentのAnimation Rigging→Set up→Rig Transformから取り付けられます。

IKの制約によって動くリグの親のゲームオブジェクトに取り付け、親のゲームオブジェクトを操作することによって子要素のIKの要素も動かすことが出来ます。

リグの制約コンポーネント

リグの制約をする為のコンポーネントがあらかじめ用意されているのでそれぞれ見ていきましょう。

制約コンポーネントはインスペクタのAdd ComponentからAnimation Riggingにあります。

Blend Constraint

Blend Constraintは2つのゲームオブジェクトの位置と回転をブレンドして別のゲームオブジェクトに適用する時に便利です。

UnityのAnimationRiggingのBlend Constraint

Weightはウエイト。
Constrained Objectはブレンドの結果を適用するゲームオブジェクトを設定します。
SourceObjectsにはブレンドをする二つのゲームオブジェクトを設定します。
Maintain Offsetは元の位置や回転を維持するかどうかです。

Noneは維持しない
Position and Rotationは元の位置と回転を維持
Positionは位置だけ元の位置
Rotationは回転だけ元の回転

です。

Blend A | B Positionにチェックを入れスライダーを変更するとどちらに位置のウエイトを寄せるか設定出来ます。0なら完全にA、1なら完全にB。
Blend A | B Rotationにチェックを入れスライダーを変更するとどちらに回転のウエイトを寄せるか設定出来ます。0なら完全にA、1なら完全にB。

Blend Constraintを作成する時は、

空のゲームオブジェクトでBlendTestを作成し、AnimatorコンポーネントとRig Builderコンポーネントを取り付けます。

BlendeTestの子要素に空のゲームオブジェクトでModelを作成し、その子要素にブレンドする2つのゲームオブジェクト(CubeAとCubeB)を作成し、ブレンド結果を作用させるもうひとつのゲームオブジェクト(BlendObj)を作成します。

Animatorコンポーネントを持つBlendTestの子要素に空のゲームオブジェクトでRigを作成し、Rigコンポーネントを取り付けます。

BlendTestのRig BuilderコンポーネントのRig LayersにRigゲームオブジェクトのRigコンポーネントを設定します。

その子要素に空のゲームオブジェクトでBlendを作成し、インスペクタのAdd ComponentからAnimation Rigging→Blend Constraintを取り付けます。

UnityのAnimationRiggingのBlend Constraintのサンプル階層

Constrained ObjectにBlendObj、SourceObjectsのSourceAにCubeA、SourceBにCubeBを設定します。

Unityのプレイボタンを押して実行するとCubeAとCubeBの位置と回転をブレンドした結果がBlendObjの位置と回転に反映されます。

Rig BuilderコンポーネントとRigコンポーネントを取り付けるゲームオブジェクトやその階層等は基本的にこのやり方になります。

これを実行すると以下のようになります。

UnityのAnimationRiggingのBlend Constraintのサンプル

真ん中のオブジェクトがブレンドされたゲームオブジェクトです。

ChainIKConstraint

ChainIKConstraintは、ゲームオブジェクトの元と先のゲームオブジェクトを指定し、ターゲットのゲームオブジェクトの位置に応じてチェーンのように繋がれた位置と角度に制限します。

UnityのAnimationRiggingのChanIKConstraint

Weightはウエイト
Rootに根本のゲームオブジェクトを設定します。
Tipに先のゲームオブジェクトを設定します。
TargetにはTipに設定したゲームオブジェクトが追いかけるターゲットを設定します。
SettingsのMaintain Target Offsetはターゲットに依存するかどうかの設定でBlend Constraintとほぼ同じなので省略します。
Chain Rotation Weightはチェーン全体の回転のウエイトを設定します。1の場合はチェーンは完全にターゲットの回転になります。
Tip Rotation WeightはTipの回転のウエイトです。1の場合は完全にTipの回転がターゲットの回転になります。
Max Iterationsは許容範囲を満たさない時に満たすような結果を求める最大回数。
ToleranceはTargetとTipの許容する距離を指定します。

ChainIKConstraintを使用する時の階層やコンポーネントの取り付けはBlend Constraintとほとんど同じですが、チェーンにするゲームオブジェクトをRootからTipにかけて順番に子要素に入れていきます。

ChainIKConstraintのサンプルの階層は以下のようにしました。

UnityのAnimationRiggingのChainIKConstraintのサンプルの階層

ChanIKTestにはAnimator、Rig Builderを取り付け、Bone Rendererも取り付けてチェーンに使うゲームオブジェクトのCubeを全てTransformsに登録します。

Rigの子要素のChainIKConstraintは空のゲームオブジェクトで作成し、ChainIKConstraintコンポーネントを取り付けます。

ChanIKTestのRig BuilderのRig LayersにRigゲームオブジェクトのRigコンポーネントを設定します。

RootにはCube、TipにはCubeの一番下の子要素であるCube(4)を設定します。

Targetも空のゲームオブジェクトで作成し、ChainIKConstraintコンポーネントのTargetに設定します。

Unityのプレイボタンを押して確認すると以下のようにTargetゲームオブジェクトを動かすとTipに設定したゲームオブジェクトがターゲットの位置や回転に作用されて動き、それに伴ってチェーンとして繋がれている他のゲームオブジェクトの位置や回転も変わります。

Unityのプレイボタンを押してTargetゲームオブジェクトの位置や回転を変更すると以下のようになります。

UnityのAnimationRiggingのサンプル

Damped Transform

Damped TransformはSource Objectに指定したゲームオブジェクトの位置と回転にConstrained Objectに指定したゲームオブジェクトが影響を受けますが、位置や回転は指定した減衰値によって変換値が減衰されます。

UnityのAnimationRiggingのDamped Transformの設定

Weightはウエイト
Constrained ObjectはSource Objectによって制約されるゲームオブジェクト
Source Objectは制約をするゲームオブジェクト
Settingsの

Damp Positionは位置の減衰値
Damp Rotationは回転の減衰値

Maintain Aimはチェックを入れるとConstrained ObjectがSource Objectの方を常に見るようになります。

Damped Transformを使用する際の階層は以下のような感じになります。

UnityのAnimationRiggingのDamped Transformのサンプルの階層

CubeのゲームオブジェクトはChainIKConstraintのサンプルをコピーして使いました。

Rigの子要素に空のゲームオブジェクトでDampedTransformを作成し、Damped Transformコンポーネントを取り付けました。

Cube(1)はCubeの動きによって制約をつけたいので、Constrained ObjectにCube(1)、Source ObjectにCubeを設定します。

UnityのAnimationRiggingのDamped Transformのインスペクタ

その他のゲームオブジェクトの制約も親の要素によって子が影響を受けるようにしたいので、DampedTransformをCtrl+Dキーで複製し、Cube(2)はCube(1)の影響、Cube(3)はCube(2)の影響を受けるようにとSource Objectを設定します。

Unityのプレイボタンを押してCubeゲームオブジェクトを移動させるとその子要素のゲームオブジェクトは親のゲームオブジェクトの動きによって制約を受けているので以下のような動きをします。

UnityのAnimationRiggingのDamped Transforrmのサンプル

Multi Aim Constraint

Multi Aim Constraintsは複数のゲームオブジェクトの方向を向かせる時に使用します。

UnityのAnimationRiggingのMultiAimConstraintの設定

Weightはウエイト
Constrained Objectは制約を受けるゲームオブジェクト
Aim Axisは回転するローカル軸を指定
Source ObjectsにはConstrained Objectに指定したゲームオブジェクトが見るゲームオブジェクトを複数設定出来ます。
Settingsの
Maintain Offsetは維持するオフセットをXYZで指定します。
Constrained Axesは制約する軸にチェックを入れます。
Min Limitは軸の回転の最小値
Max Limitは軸の回転の最大値

です。

Multi Aim Constraintを使用する際の階層は以下のような感じになります。

UnityのAnimationRiggingのMultiAimConstraintのサンプルの階層

Unityのプレイボタンを押して確認してみます。

上のようになりました。

Source Objectsに指定しているゲームオブジェクトが全て1だとその平均値を取るようです。

キャラクターのボーンをConstrained Objectに指定して、Source Objectsにキャラクターが見るゲームオブジェクトを設定し、途中でSource Objectsのウエイトを変更して別のオブジェクトを見るというような機能も作成出来そうですね。

Multi Parent Constraint

Multi Parent Constraintを使用するとConstrained Objectに指定したゲームオブジェクトをSource Objectsで指定したゲームオブジェクトの子であるかのように制約出来ます。

UnityのAnimationRiggingのMultiParentConstraintの設定

Weightはウエイト
Constrained Objectは制約されるゲームオブジェクトを指定します。
Source Objectsは制約するゲームオブジェクト群を指定します。
Settingsの
Maintain Offsetは維持する項目を設定します。
Constrained Position Axesは制約をするPositionのXYZの軸を設定します。
Constrained Position Axesは制約をするRotationのXYZの軸を設定します。

Multi Parent Constraintを使用する際の階層は以下のような感じになります。

UnityのAnimationRiggingのMultiParentConstraintのサンプルの階層

MultiParentConstraintゲームオブジェクトにMultiParentConstraintコンポーネントを取り付け、SourceゲームオブジェクトをSource GameObjectsに設定し、Model子要素のCube2をConstrained Objectに設定しました。

これでModel子要素のCube2はSourceゲームオブジェクトの子要素にあるかのように位置や回転が決定されます。

またMulti Parent ConstraintはTransformのScaleによる影響を受けません。

Unityのプレイボタンを押してSourceゲームオブジェクトを動かすと子要素にあるかのようにCube2が動きます。

UnityのAnimationRiggingのMultiParentConstraintのサンプル

Multi Position Constraint

Multi Position ConstraintはConstrained Objectに設定したゲームオブジェクトがSource Objectsに設定したゲームオブジェクトに制約されます。

UnityのAnimationRiggingのMultiPositionConstraint

Weightはウエイト
Constrained Objectは制約されるゲームオブジェクト
Constrained Axesは制約されるXYZの軸の指定
Source Objectsは制約するゲームオブジェクト
Settingsの
Maintain Position Offsetは位置を維持するかどうか
Offsetでオフセット値を指定

です。

Multi Position Constraintのサンプルは最初にインストールしたサンプルを試してみてください。

Multi Rotation Constraint

Multi Rotation ConstraintはConstrained Objectに設定したゲームオブジェクトがSource Objectsに設定したゲームオブジェクトに制約されます。

UnityのAnimationRiggingのMultiRotationConstraintの設定

Weightはウエイト
Constrained Objectは制約されるゲームオブジェクトを設定します。
Constrained Axesは制約されるXYZの軸を指定します。
Source Objectsには制約するゲームオブジェクトを設定します。
Settingsの
Maintain Rotation Offsetは回転を維持するかどうか
Offsetは回転のオフセット値

です。

Multi Referential Constraint

Multi Referential ConstraintはReference Objectsに登録したゲームオブジェクトをDrivingで設定したゲームオブジェクトで制約をします。

UnityのAnimationRiggingのMultiReferentialConstraintの設定

Weightはウエイト
DrivingはReference Objectsに登録したゲームオブジェクトの中から他のオブジェクトを制約するゲームオブジェクトを選択します。
Reference Objectsは制約をするゲームオブジェクトを登録します。

Drivingに指定したゲームオブジェクトの動きに応じてReference Objectsに登録したゲームオブジェクトが動きます。

他のゲームオブジェクトはコントロール出来なくなります。

Override Transform

Override TransformはConstrained Objectに設定したゲームオブジェクトのTransformをOverride Transformに設定したゲームオブジェクトで上書きします。

UnityのAnimationRiggingのOverrideTransformの設定

Weightはウエイト
Constrained Objectには制約をされるゲームオブジェクト
Source Objectsの
Override Sourceには制約をするゲームオブジェクト
Override Positionは上書きする位置を指定しますが、Override Sourceにゲームオブジェクトが設定されている場合は無視されます。
Override Rotationは上書きする回転を指定しますが、Override Sourceにゲームオブジェクトが設定されている場合は無視されます。
Settingsの
SpaceはConstrained ObjectのTransformの上書き設定で、

WorldはConstrained Objectのグローバル値がOverride Sourceのローカル値で制約され、
LocalはConstrained Objectのローカル値がOverride Sourceのローカル値で制約され、
PivotはConstrained ObjectはOverride Sourceのゲームオブジェクトを中心点としてConstrained Objectを制約する?(位置や回転は元のままで制約を受ける?)

試しにスタンダードアセットのEthanをヒエラルキー上に配置し、名前をOverrideTransformTestと変え、子要素にRigとその子要素にOverrideTransformとOverrideSourceを作成しサンプルを作ってみました。

UnityのAnimationRiggingのOverrideTransformのサンプルの階層

OverrideTransformにOverride Transformコンポーネントを取り付け、Override SourceにOverrideSourceゲームオブジェクトを設定し、Constrained ObjectにOverrideTransformTest(Ethan)のボーンのEthanSpine2を設定し試してみます。

UnityのAnimationRiggingのOverrideTransformのサンプル

Twist Collection

Twist CollectionはSourceに設定したゲームオブジェクトの動きでNodesに設定したゲームオブジェクトをねじれさせます。

UnityのAnimationRiggingのTwistCollectionの設定

Weightはウエイト
Sourceはねじれを起こさせるゲームオブジェクトを設定
Twist Axisはねじれさせる軸を設定
Twist Nodesはねじれるゲームオブジェクトを設定し、横のスライダーで個々のウエイトを設定します。

Twist Collectionを使用する際の階層は以下のような感じになります。

UnityのAnimationRiggingのTwistCollectionのサンプルの階層

TwistCollectionにはTwist Collectionコンポーネントを取り付け、SourceにCube、NodesにCube(1)、Cube(2)を設定します。

その他の設定は他のRigの設定と同じです。

Unityのプレイボタンを押して試してみると以下のようにCubeの回転によってCube(1)、Cube(2)が個々のウエイトに従ってねじれているのがわかります。

UnityのAnimationRiggingのTwistCollectionのサンプル

Two Bone IK

Two Bone IKを使用すると二つのボーンのFKをIKとHintで制御できるようにします。

UnityのAnimationRiggingの2BoneIKConstraintの設定

Weightはウエイト
Rootは二つのボーンのルートとなるゲームオブジェクトを設定
Midは二つのボーンの間のゲームオブジェクトを設定
Tipは二つのボーンの先のゲームオブジェクトを設定
Source Objectsの

TargetにはIKのターゲットとなるゲームオブジェクトを設定
HintにはIKHintに使用するゲームオブジェクトを設定

Settingsの

Maintain Target Offsetは維持をする位置や回転の設定
Target Position Weightはターゲットの位置のウエイト
Target Rotation Weightはターゲットの回転のウエイト
Hint WeightはIKHintのウエイト

です。

FKをIKとHintで制御する為に、例えば足であればボーンの足の付け根をRoot、膝をMid、足元をTipに設定し、Targetに足元のボーン、Hintに膝のボーンを設定する事で足元のボーンを動かす事で連動して足の付け根までのボーンが動くようになります。

Two Bone IKをEthanの両足に設定してみると以下のような階層になります。

UnityのAnimationRiggingのサンプルの階層

スタンダードアセットのEthanをヒエラルキー上にドラッグ&ドロップし、名前を2BoneIKConstraintにし、Rig Builderコンポーネントを取り付けて、Animatorに適当なAnimatorControllerを取り付けて、HumanoidIdleアニメーションクリップを再生するようにしておきます。

2BoneIKConstraintを選択した状態で右クリックからCreate Emptyを選択し、名前をRigとし、Rigコンポーネントを取り付けます。

2BoneIKConstraintに取り付けたRig BuilderのRig LayersにRigゲームオブジェクトのRigコンポーネントを設定します。

Rigの子要素に空のゲームオブジェクトでRightFootとLeftFootを作成し、それぞれにTwo Bone IK Constraintを取り付けます。

それぞれの子要素にも空のゲームオブジェクトを作成し、RightKneeHint、RightFootIK、LeftKneeHint、LeftFootIKとします。

これらをIKのTargetやHintに使用します。

RightFootゲームオブジェクトのインスペクタは先ほど紹介した画像のようになります。

Unityのプレイボタンを押してRightKneeHintやRightFootIKを動かしてみると、以下のようにEthanの足が足元のIKに従って連動して動きます。

Animation Riggingを使ったサンプルを作成する

Animation Riggingの機能を使ってサンプルを作ってみます。

Cubeを繋いで鎖を作成しアニメーションを作成する

まずはCubeをChainIKConstraintを使って鎖状の制約を加えて鎖を作成し、左右に振られるアニメーションを作成してみます。

ヒエラルキー上で右クリックからCreate Emptyを選択し、名前をChainとします。

その子要素にCreate Emptyを選択し、名前をModelとします。

その子要素に右クリックから3D Object→Cubeを選択し名前をChainRootとします。

ChainRootの子要素にもCubeを階層上に配置し、間のCubeはChain、最後のCubeをChainTipとします。

UnityのAnimationRiggingのサンプルの鎖のモデルの階層

ChainRootを選択した状態で右クリックからCreate Emptyを選択し、名前をRigとしRigコンポーネントを取り付けます。

Rigを選択した状態でCreate Emptyを選択し、名前をConstraintにします。

Constraintには制約のコンポーネントを取り付けて先ほど作成したモデルの動きを制約します。

ConstraintにはインスペクタのAdd ComponentからAnimation Rigging→Chain IK Constraint、Animation Rigging→Mulit Aim Constraintを選択し取り付けます。

Constraintを選択した状態でCtrl+Dキーを押して複製し、名前をTargetとします。

TargetはモデルのChainTipが追いかける対象のゲームオブジェクトとして使います。

UnityのAnimationRiggingの鎖のサンプルの階層

ChainゲームオブジェクトのインスペクタのAdd ComponentからAnimation Rigging→Set Up→Rig Builder、Animation Rigging→Set Up→Bone Rendererコンポーネントを取り付けます。

Rig BuilderのRig LayersにはRigゲームオブジェクトに取り付けたRigコンポーネントを設定します。

Bone RendererのTransformsにはChainRoot、間のChainゲームオブジェクト群、ChainTipを設定し、シーンビューでボーンが確認出来るようにします。

Bone Rendererは特につけなくてもいいです。

Constraintに取り付けたコンポーネントの設定をします。

Chain IK ConstraintのRootにChainRootゲームオブジェクト、TipにChainTipゲームオブジェクト、TargetにTargetゲームオブジェクトを設定します。

これでChainRootからChainTipまでの階層のゲームオブジェクトが鎖で繋がれTargetゲームオブジェクトの位置を追いかけます。

Multi Aim ConstraintのConstrained ObjectにChainTipゲームオブジェクト、Source ObjectsにTargetゲームオブジェクトを設定します。

これでChainTipゲームオブジェクトはTargetゲームオブジェクトの方向を向くようになります。

UnityのAnimationRiggingの鎖のサンプルのConstraintのインスペクタの設定

鎖が左右に揺れるアニメーションの作成

次に鎖が左右に揺れるアニメーションを作成します。

Modelゲームオブジェクト以下の鎖のモデルのChainTipゲームオブジェクトはTargetゲームオブジェクトの位置を追いかけますので、それを利用してアニメーションを作成します。

Chainゲームオブジェクトを選択した状態でAnimationウインドウのCreateボタンを押します。

下の画像ではMain Cameraとなってますが、これはわたくしの場合Chainのアニメーションを作成済でボタンが表示されない為、Main Cameraを選択してサンプル画像を作成した為です。

通常ですとMain Cameraの部分がChainとなっていると思います。

UnityのAnimationRiggingの鎖のサンプルのアニメーションのCreateボタンを押す

Createボタンを押すとアニメーションクリップ保存ウインドウが開くので名前をChainAnimとします。

ChainゲームオブジェクトにはAnimatorコンポーネントが追加され、ChainAnimアニメーターコントローラーが設定されます。

またChainAnimアニメーターコントローラーのデフォルトの状態にChainAnim状態が作成され、ChainAnimアニメーションクリップが再生するように設定されます。

Animationウインドウに戻り丸い赤いボタンを押して録画モードにし、Targetゲームオブジェクトの位置を動かしてアニメーションを作成します。

UnityのAnimationRiggingの鎖のサンプルのアニメーション作成の為Animationの録画ボタンを押す

まず0:00の位置でヒエラルキー上のTargetゲームオブジェクトを選択し、鎖が真っすぐ下に垂れ下がる状態に移動させます。

UnityのAnimationRiggingの鎖サンプルのTargetの初期位置

0:05の位置で少し鎖が動いた位置にTargetを移動させます。

UnityのAnimationRiggingの鎖のサンプルのTargetの0:05の位置

0:20の位置で少し鎖がしなった状態になるようにTargetを移動させます。

UnityのAnimationRiggingの鎖のサンプルのTargetの0:20の位置

後は同じような感覚で最初の位置に戻し、反対側にも鎖が動くようにTargetを動かします。

以下のようなフレームになりました。

UnityのAnimationRiggingの鎖のサンプルのアニメーションのフレーム全体

このままだとアニメーションスピードが速いので、ChainAnimアニメーターコントローラーのChainAnim状態を選択し、インスペクタのSpeedを0.6にします。

これでアニメーションが出来ました。

鎖のサンプルの確認

鎖のサンプルが出来たので確認してみます。

UnityのAnimationRiggingの鎖のサンプル

上のように鎖が左右に揺れるアニメーションが出来ました。

アニメーションの作り方が雑なので動きがカクカクしてますが、キーフレームを細かく打って滑らかなアニメーションを作成してみてください。

アニメーションはChainAnimアニメーターコントローラーで制御されていますので、鎖のアニメーションの切り替えもChanAnimアニメーターコントローラーで行えます。

参考サイト

今回紹介したAnimation Riggingについてはマニュアルに詳細がありますので、参照してみてください。

AnimationRiggingマニュアル

Unity Blogで使い方の例も載っています。

AnimationRiggingプレビューパッケージの概要

高度な Animation Rigging:キャラクターとプロップのインタラクション – Unity Technologies Blog

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます