You may or may not be familiar with state machines. You will find plenty of explanations on the internet about what they are and how they work, especially in the gaming field.
To put it in simple words, state machines are a way for defining a number of animation states (walk, idle, run, etc) and how you can transition from one state to another. To make things even simpler, you might think of a state machine as a graph having nodes (the states) and connected to each other (connections are the transitions).
The Atoms UI has a state machine editor where you can define state machines to be used in Atoms. For a full list of actions please check the quick help at the bottom right of the GUI.
For creating animation states right click on the viewport and select "add animation state" or click the "Add state" button.
You create connections by right clicking on a node and dragging.
The Inspector
The inspector is where you set up your state and transition clips.
In case you're setting up an animation state, you have to give it an id which will later be used by several Atoms Behaviour Modules such as the State machine (a unique id is given set as default by the editor). Each state in the same state machine must have a different id.
You can assign more than one clip to each animation state or transition.
There are three different merge modes:
- Exclusive : only the exclusive clip will be played. This mode has the highest priority. If you have an exclusive clip all the other clips will be ignored. If you have more than one exlusive clip only the first one will be used.
- Merge : all merge clips will be merged together. This has higher priority over the random mode. Having only a merge clip is like setting its mode to exclusive.
- Random : one of the random clips in the list will be played. At the end of each clip another random clip is used. From Atoms 2.1.0, you can control the random probability of each clip with agent metadatas. Specify the metadata name inside the tag field, then add a metadata with that name on your simulation agents. The metadata value represents the weight used by the random function.
ユーザーは、ステートマシンに精通していなくても問題はありません。ユーザーは、それらが何であるか、そして、それらがどのように機能するかについてのインターネット上の多くの説明を確認することができるでしょう。特に、ゲーム分野などで。
つまり、ステートマシンは、多数のアニメーションステート(walk、idle、runなど)と、あるステートから別のステートに移行する方法を定義することができます。容易に進めるためには、ステートマシンはノード(State)を保有し、互いに接続されたグラフ(接続はトランジション)と考えることができます。
Atoms UIには、Atomsで使用されるステートマシンを定義できるState Machine Editorがあります。アクションの全リストについては、GUIの右下にあるクイックヘルプを確認してください。
アニメーションステートを作成する場合は、ビューポートを右クリックして「Add Animation State」を選択するか、「Add State」ボタンをクリックします。
接続を作成するには、ノードを右クリックしてドラッグします。
Inspector
Inspectorは、StateとTransition Clipを設定する場所です。
アニメーションステートを設定している場合は、ステートマシンなどのいくつかのAtoms Behaviour モジュールによって使用されるIDをそれに指定する必要があります(固有のIDはエディターによってデフォルトで設定されています)。同じステートマシン内の各ステートは、異なるIDを保有する必要があります。
各アニメーションステート、またはトランジションに複数のクリップを割り当てることができます。
3つの異なるMergeモードがあります。
- Exclusive:Exclusive Clipのみが再生されます。こちらのモードが最優先です。Exclusive Clipがある場合、他のすべてのクリップは無視されます。複数のExclusive Clipがある場合は、最初のクリップだけが使用されます。
- Merge:すべてのMerge Clipがマージされます。これは、Randomモードよりも優先されます。Merge Clipのみを保有することは、そのモードをExclusiveに設定することに似ています。
- Random:リスト内のRandom Clipの1つが再生されます。各クリップの終わりには、別のランダムなクリップが使用されます。 Atoms 2.1.0から、Agentメタデータを使用して、各クリップのランダム確率を制御することができます。Tag Field内にメタデータ名を指定してから、その名前のメタデータをSimulation Agentに追加します。メタデータ値は、ランダム関数によって使用される量を表します。
最後に、7つの異なるモーションモードもあります。
Straight,TurnLeft, TurnRight, TurnUp, TurnDown, BankLeft, BankRight.Only clips with the same motion mode will be merged together, randomized or will exclude each other.
At each frame your agent direction changes and the angle described by the agent direction at the current frame and the direction at the previous frame will be used by the blending system.
For instance, when setting a TurnLeft clip with angle value to 1 and blend to 2, our agent will start blending the Straight clip with the TurnLeft clip when the mentioned angle will be between from 1 to 3 degrees (3 is simply the angle value plus the blend value). When the angle will be more than 3 the TurnLeft clip will be played.
The angle and blend values are in degrees.
The max turn angle field is limits the angle variation (degrees) at each frame.
This random loop option(on by default). When an agent enters the given state and the state has all clips in random mode:
- Off: a random clip will be picked and it will be used in a loop.
- On: a random clip will be picked at random every time playing clip ends.
注意 |
---|
Whenever a one shot clip (non-loopabe clip) is used inside a state, the transition will be triggered as soon as the animation of that clip ends. |
Transitions
When connecting two animation states you can select the transition and assign a transition clip within the inspector.
A light blue dot will appear on your transition in the editor as soon as you assign a clip to a it.
The transition UI is similar to the state UI, the only difference is that you can specify a blend in and out frame value for the transition itself.
If you don't specify a transition clip between two states and in your simulation you pass from one of those to the other, Atoms will do a straight blend between them.
If two states do not have a transition you won't be able to pass from one to the other.
注意 |
---|
Please always give a name to your transitions or they won't be evaluated by Atoms. |
同じモーションモードのクリップだけがマージやランダム化され、互いに排除します。
各フレームでユーザーのエージェントの方向が変化し、現在のフレームのエージェントの方向と前フレームの方向によって表される角度が、ブレンディングシステムによって使用されます。例えば、Angle値を1にして2にブレンドするTurnLeft Clipを設定すると、上記の角度が1〜2度の間になると、私たちのエージェントはStraight ClipとTurnLeft Clipのブレンドを開始します。角度が2以上になると、TurnLeftクリップが再生されます。
角度とブレンドの値の単位は度です。
Max Turn Angleフィールドは、各フレームでの角度の変化(度)を制限します。
このRandom Loopオプション(デフォルトはオン)エージェントが特定のステートに入り、そのステートにすべてのクリップがランダムモードで含まれている場合:
- オフ:ランダムなクリップが選択され、ループ内で使用されます。
- オン:クリップの再生が終了するたびに、ランダムクリップがランダムに選択されます。
注意 |
---|
One Shot Clip(Non loopabe Clip)がステート内で使用されている場合は、常に、そのクリップのアニメーションが終了すると同時にトランジションがトリガーされます。 |
Transitions
2つのアニメーションステートを接続する場合は、Transitionを選択してInspector内でTransition Clipを割り当てることができます。
それをクリップに割り当てるとすぐに、エディタのTransitionに水色のドットが表示されます。
Transition UIは、State UIに似ています。しかし、唯一の違いは、Transition自体にブレンドインフレームとアウトフレームの値を指定できる点です。
2つのステート間のTransition Clipを指定せず、シミュレーションでステートの一方から他方へ引き渡すと、Atomsはそれらのステート間でストレートブレンドを行います。
2つのステートにTransitionが存在しない場合は、一方から他方へ移行することはできません。
注意 |
---|
常に、ユーザーのTransitionに名前を付けてください。名前を付与しない場合、Atomsによって評価されないため注意してください。 |
Preview
プレビューウィジェットには、選択したステートのアニメーションが表示されます。
下部には、アニメーションを再生/スクラブするためのコントロールと、ジョイントサイズを変更するためのコントロールがあります。
アニメーションを表示する前に、ユーザーはUI上部のドロップダウンリストから、有効なエージェントタイプを選択する必要があります。
2つのステート間のTransition(接続)を選択すると、プレビューにそのアニメーションが表示されます。
フットの下に表示される黄色い円は、それぞれのFootdown Stateを示しています。
ビューポートを右クリックすると、以下のオプションを含むメニューが表示されます。
- Draw grid:ビューポート表示のグリッドを有効/無効にします。
- Draw Joint Axis:ディスプレイのジョイント軸を有効/無効にします。
- Lock Camera:カメラのロックを有効/無効にします。
- Reset Camera:カメラの移動/回転をリセットします。
- Test Loop:アニメーションクリップのループを有効または無効にします。
ナビゲーションコントロール
- Alt +左クリックしてドラッグ:カメラを回転
- Alt +中クリックでドラッグ:カメラをパン
- Alt +右クリックしてドラッグ:ズームカメラ