Let's open the AtomsRobot.ma file and the robot head, duplicate the robot head creating multiple expression.Then select the the meshes and the original head and create a maya blend shape deformer.ファイルを開いてロボットのヘッドを複製した後、メッシュを編集して複数の表情を作成しましょう。
次に、メッシュと元のヘッドを選択してブレンドシェイプデフォーマを作成します。
Exporting meshes
You need to export the blend shapes target. If you use the variation builder, Atoms automatically exports the blend shapes data inside the meshes.
If you want export them manually, open the atoms mesh exporter from the atoms menu: AtomsMeshをエクスポートする
Blend Shape Targetをエクスポートする必要があります。Variation Builderを使用すると、Atomsは、自動的にメッシュ内のブレンドシェイプデータをエクスポートします。
それらを手動でエクスポートしたい場合は、Atoms MenuからAtoms Mesh Exporterを開きます。Atoms > Export > Mesh exporter
Set the output path, then turn on the "export skin weight option". Inside the skeleton path filed, pick the atomsRobot.atomsskel from the AtomsMaya/data folder. Then select the robot Hips joint and press the refresh button. Finally turn on the "export blend shapes" option, select the mesh you want export and press the "Export" button. This tool automatically writes points, normals, id and name of each target inside the mesh file.
出力パスを設定した後、「Export Skin Weight」オプションをオンにします。
Skeleton Path File内で、AtomsMaya / dataフォルダーからatomsRobot.atomsskelを選択します。次に、ロボットのHipsジョイントを選択してRefreshボタンを押します。最後に、「Export Blend Shapes」オプションをオンにし、エクスポートしたいメッシュを選択して 「Export」ボタンを押します。このツールは、メッシュファイル内に各ターゲットのポイント、法線、ID、名前を自動的に書き込みます。
注意 |
---|
ターゲットメッシュをシーンから削除しないでください。ブレンドシェイプは、エクスポートされません。 |
注意 | |||||
---|---|---|---|---|---|
メッシュの内容を確認したい場合は、ファイルをpythonまたはc ++でMapMetadataとして開くと、ブレンドシェイプデータは "BlendShapes"キー内に格納されます。
|
Importing meshes
Meshをインポートする
新しいシーンを作成して、Robot Variation Tableをインポートします。Atoms メニューからAtoms > Variations > Import variation json. Set the robot.json file form the Variation jsonを実行します。
AtomsMaya \ data \ variations folder. This will load into the scene the robot variation table.Open the variation manager from the atoms menu: variationフォルダーからrobot.jsonファイルを選択します。これにより、ロボットのバリエーションテーブルがシーンにロードされます。
Atoms MenuからVariation Managerを開きます:
Atoms > Variations > Agents Variation Manager. Select the atomsRobot from the column on the left and then go inside the Geometry tab. Replace the robot1_head path with the mesh you exported. Now press ctrl+s or from the widget menu execute File > Register to Atoms to save the changes.
Setting up variations
- Create and agent group node.
- Add a grid layout and set the grid size to 5,0,5
- Add a state machine module
- Add a variation module and set the variationName attriute to "Robot1"
- Change the display type to variations
- Rewind the scene
Setting targets weight
The targets weights are controlled by some double metadatas. The metadata name should have the following convention:
AgentTypeName_VariationGeometryName_TargetIndex
In our case the following metadata names are valid:
左側の列から、atomsRobotを選択して、Geometryタブの中に入ります。robot1_headパスをエクスポートしたばかりのメッシュと置き換えます。
Ctrl + Sを押すか、WidgetメニューからFile > Register to Atomsを実行して変更を保存します。
バリエーションを設定する
- Agent Groupノードを作成します。
- Grid Layoutを追加して、Grid Sizeを(5,0,5)に設定します。
- State Machineモジュールを追加します。
- Variationモジュールを追加して、VariationNameアトリビュートを "Robot1"に設定します。
- Display TypeをVariationsに変更します。
- シーンを巻き戻します。
Targets Weightを設定する
Targets Weightは、Doubleメタデータによって制御されます。メタデータ名は次の規則に従います。AgentTypeName_VariationGeometry ame_TargetIndex
今回の場合、次のメタデータ名が有効です。
- atomsRobot_robot1_head_0
- atomsRobot_robot1_head_1
- atomsRobot_robot1_head_2
- atomsRobot_robot1_head_3
The target index is the order used by the maya belnd shapes deform, so the index 0 is the first input of the the former, the index 1 the second and so on.
We can add and control these metadatas using the AddMetadata module
Target Indexは、Mayaブレンドシェイプデフォーマで使用される次数です。従って、0インデックスは最初のブレンドシェイプ、1インデックスは2番目のブレンドシェイプとなります。
AddMetadataモジュールを使用して、これらのメタデータを追加および制御できます。
- 「AddMetadata」Behaviourモジュールを追加します。
- nameアトリビュートをatomsRobot_robot1_head_0
- Set the type attribute to double
- Set the double value attribute to 1.0
- Rewind the scene
- 0に設定します。
- typeアトリビュートをDoubleに設定します。
- double valueアトリビュートを1.0に設定します。
- シーンを巻き戻します。
atomRobot_robot1_head_1,atomsRobot1、atomsRobot_robot1_head_2 etc.. metadatas. You can also add keyframes on the doubleValue attribute to animate the blend shapes.
Adding animation
To add more complex animation or animation clicles to the blend shapes we can use the blendShapesAnim module. Before start to use this moduel you should export some animation from your setup scene. So open the atomsRobot scene were you created the blendshapes. Add some keyframes on the targets weight of the maya blend shape deformer.
Now select the robot head and open the blend shapes anim exporter from the atoms menu: Atoms > 2などのメタデータを制御するために、同じエージェントグループに対して、さらにAddMetadataモジュールを追加してください。 doubleValueアトリビュートにキーフレームを追加して、ブレンドシェイプをアニメートすることも可能です。
Blend Shape Manager
ブレンドシェイプは、Blend Shape Managerモジュールを使用してより簡易的に扱うことができます。
AddMetadataモジュールをすべて削除し、 "BlendShapeManager"モジュールをエージェントグループに追加します。
BlendShapeManagerのオプションで、「Manage Blend Shapes」ボタンをクリックすると、右側のUIが表示されます。
そこから、エージェントグループに追加したいブレンドシェイプを選択することができます。ダブルクリックするか、リスト上部のボタンを使用して、ブレンドシェイプをselect/deselectすることができます。
バリエーションジオが多数存在する場合は、ツリー全体を表示するのに時間がかかる可能性があるため、「Expand」ボタンをクリックするときは注意してください。
右下隅のチェックボタンをクリックすると、ブレンドシェイプがBlendShapeManagerオプションの下に表示され、そこでアニメーション化することができます。
注意 |
---|
次のいずれかの場合、Blend Shape Manager UIは空になります。
|
アニメーションの追加
より複雑なアニメーションまたはアニメーションサイクルをブレンドシェイプに追加するには、BlendShapesAnimモジュールを使用することができます。このモジュールを使用する前に、セットアップシーンからアニメーションカーブをいくつかエクスポートする必要があります。ブレンドシェイプを作成したatomsRobotシーンを開き、ブレンドシェイプデフォーマのTarget Weightにいくつかのキーフレームを追加します。
次に、Atomsメニューからロボットのheadを選択し、ブレンドシェイプのアニメーションエクスポータを開きます。
Atoms> Export > Blend shapes anim exporter
Set the output path and the frame range, select the head mesh and press the run button.出力パスとフレーム範囲を設定し、ヘッドメッシュを選択して、Runボタンを押します。
Go back to the atoms scene and remove all the addMetadata nodes.
Add a blendShapesAnim behaviour module. Inside the anim data attribute press the Add button to add a new row.
Fill the row using atomsRobot as agent type, robot1_head as geo name, triggerAnim as metadata name, the path of the animation you exported as anim file and in the last column add loop if you want play the animation in loop.
Now the animation is activated by the triggerAnim metadata. So let's add this metadata using ad addMetadata module. Create an addMetadata module and place it before the blendShapesAnim module. Set the name attribute to triggerAnim, Change the type to double and set the doubleValue to 1.0.
Now rewind the scene and press play.
You can add multiple rows to control multiple animations at the same time.
The animation is controlled by the triggerAnim metadata. So to creates a more complex setup we can use an area trigger to drive this metadata.
First let change the agent state to 1 inside the state machine to make them walk. Inside the addMetadata module change the double value to 0 because the area trigger module will drives this value. Now create a areaTrigger module and create a plane in the scene. Connect the plane to the areaTrigger module (remember to connect also the translation/rotation/scale) and set the metadata name attribute to triggerAnim, the double value to 1.0 the blend in and out to 10 and the random delay in and out to 5. Move the area trigger before the blendShapeAnim module. Rewind the scene and press play.Atomsシーンに戻り、BlendShapeManagerモジュールを削除します。
BlendShapesAnim Behaviourモジュールを追加し、BlendShapeAnimタブの下にある「Manage Animations」ボタンをクリックします。
「+」ボタンをクリックして、新しいアニメーションを追加します。「Geo」フィールドで「robot1_head」を選択して、先ほど、エクスポートしたアニメーションファイルへのパスを設定します。Propertyをloopのままにします(どのプロパティもブレンドシェイプアニメーションを1度だけ再生することはありません)。
もちろん、複数のアニメーションを追加することが可能ですが、この例では1つのアニメーションを使用します。
チェックボタンをクリックすると、このデータが "animData"パラメータ内で変換されることが確認できます。
Playボタンを押すと、ビューポート内でブレンドシェイプがループでアニメートされていることが確認できます。
再度、「Manage Animations」ボタンをクリックして、「Enable Trigger Metadata」チェックボックスをオンにします。メタデータの名前として「triggerAnim」と入力します。
AddMetadataモジュールを作成して、BlendShapesAnimモジュールの前に配置します。 nameアトリビュートをTriggerAnimに設定します。タイプをDoubleに変更し、DoubleValueを1.0に設定します。
シーンを巻き戻して、Playを押すと、結果は以前と完全に一致します。
メタデータを駆動するために、Area Triggerを使用しましょう。
最初に、State Machine内でエージェントのStateを1に変更した後、それらを動作して下さい。 AddMetadataモジュール内で、Double valueを0に変更します(Area Triggerモジュールが、この値を駆動します)。
次に、AreaTriggerモジュールを作成して、シーン内に平面を作成します。
平面をAreaTriggerモジュールに接続し(Translation/Rotate/Scaleを接続するように注意してください)、Metadata nameアトリビュートをTriggerAnimにして、Double valueを1.0にします。Blend inとoutを10にして、Random delay inとoutを5に設定します。
Area TriggerをBlendShapeAnimモジュールの上に移動します。
シーンを巻き戻して、Playを押します。