比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

Let's open the AtomsRobot.hip file and duplicate the robot head, then edit the mesh to create multiple facial expressions.

Then select the meshes and the original head and create a blend shape deformer.

Image Removed

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: Atoms > Export > Mesh exporter

Set the output path, then turn on the "export skin weight option". Inside the skeleton path file, 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 to export and press the "Export" button. This tool automatically writes points, normals, id and name of each target inside the mesh file.

注意If you want to inspect the mesh content, open the file as a MapMetadata in python or c++, the blend shapes data are stored inside the "blendShapes" key

AtomsRobot.hipファイルを開き、ロボットヘッドを複製してから、メッシュを編集して複数の表情を作成しましょう。

次に、メッシュと元のヘッドを選択して、ブレンドシェイプデフォーマを作成します。

Image Added


メッシュをエクスポートする

ブレンドシェイプターゲットをエクスポートする必要があります。Variation Builderを使用すると、Atomsは自動的にメッシュ内のブレンドシェイプデータをエクスポートします。
それらを手動でエクスポートしたい場合は、AtomsメニューからAtoms Mesh Exporterを開きます。Atoms > Export > Mesh exporter


出力パスを設定してから、「Export Skin Weight」オプションをオンにします。
Skeleton Path File内で、AtomsMaya / Dataフォルダーから、atomsRobot.atomsskelを選択します。次に、ロボットのHipsジョイントを選択して、「Refresh」ボタンを押します。最後に「Export Blend Shapes」オプションをオンにし、エクスポートしたいメッシュを選択して「Export」ボタンを押します。このツールは、Mesh File内に各ターゲットのポイント、法線、ID、名前を自動的に書き込みます。


注意

メッシュの内容を調べたい場合は、ファイルをpythonまたはc ++でMapMetadataとして開くと、ブレンドシェイプデータは "BlendShapes"キー内に格納されていることが確認でできます。

コード ブロック
languagepy
import AtomsCore
mesh_file = "robot1_head_blend.geos"
ark = AtomsCore.Archive()
if ark.readFromFile(mesh_file):
    mesh = AtomsCore.MapMetadata()
    mesh.deserialise(ark)
    for geo in mesh.keys(): #iterate over each geo
        targets_data = mesh[geo]["blendShapes"]
        for i in range(len(targets_data)):
            target = targets_data[i]
            points = target["P"].value()
            normals = target["N"].value()
            id = target["id"].value()
            name = target["name"].value()
            print id, name





Importing meshes
Create a new scene and import the robot variation table. From the atoms menu execute Atoms
メッシュのインポート

新しいシーンを作成して、ロボットバリエーションテーブルをインポートします。AtomsメニューからAtoms > Variations > Import variation json. Select the robot.json file from the Variation jsonを実行します。

AtomsHoudini \ 16.0.671 \ data \ variations folder. This will load the robot variation table into the scene.Open the variation manager from the atoms menu: variationフォルダーからrobot.jsonファイルを選択します。これにより、ロボットのバリエーションテーブルがシーンにロードされます。


Atomsメニューから、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 just exported. Now press ctrl+s or from the widget menu execute File > Register to Atoms to save the changes.

Image Removed

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 attribute to "Robot1"
  • Change the display type to variations
  • Rewind the scene

Image Removed

Setting targets weight

The target weights are controlled by double metadatas. The metadata name should follow this convention:

AgentTypeName_VariationGeometryName_TargetIndex

In our case the following metadata names are valid:

左側の列から、atomsRobotを選択して、Geometryタブの中に入ります。

robot1_headパスをエクスポートしたばかりのメッシュと置き換えます。
Ctrl + Sを押すか、WigetメニューからFile > Register to Atomsを実行して変更を保存します。


Image Added


バリエーションを設定する
  • エージェントグループノードを作成します。
  • Grid Layoutを追加して、Grid Sizeを5,0,5に設定します。
  • State Machineモジュールを追加します。
  • Variationモジュールを追加して、VariationNameアトリビュートを "Robot1"に設定します。
  • Display TypeをVariationに変更します。
  • シーンを巻き戻します。

Image Added


ターゲットウェイトの設定

ターゲットウェイトは、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 Houdini blend shape deformer, so the 0 index is the first blend shape, the 1 index is the second one and so on.

We can add and control these metadatas using the AddMetadata module

  • Add an "AddMetadata" behaviour module

  • Set the name attribute to atomsRobot

    ターゲットインデックスは、Houdiniブレンドシェイプデフォーマで使用される次数です。従って、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
    Try to add more addMetadata modules on the same agent group to control the atomsRobot
    • 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.2などのメタデータを制御するために、同じエージェントグループに対して、AddMetadataモジュールを追加してください。 DoubleValueアトリビュートにキーフレームを追加して、ブレンドシェイプをアニメートすることもできます。


    Blend
    shape manager

    Blend shapes can be handled more easily with the blend shape manager module.

    Remove all your addMetadata modules and add a "blendShapeManager" module to your agent group. In blendShapeManager attributes click on the "Manage Blend Shapes" button, the UI on the right will be prompted.

    From there you will be able to select the blend shapes you want to add to the agent group. 

    You can select/deselect blend shapes by double clicking or using the button on the top of the list. 
    Please be careful when clicking the "Expand" buttons as it could take some time to populate the entire tree if you have a lot of variation geos.

    Click on the tick button on the bottom right corner, the blend shapes will now be visible under the blendShapeManager attributes tab where you will be able to animated them.

    注意

    Please note the blend shape manager UI will look empty if either:

    • the agent group does not contain any agent.
    • there's no variation available for the agent types contained by this agent group.

    Image Removed

    Adding animation

    To add more complex animation or animation cycles to the blend shapes we can use the blendShapesAnim module. Before you can use this module, you have to export some animation curves from your setup scene. Open the atomsRobot scene where you created the blendshapes and add some keyframes on the target weights of the blend shape deformer.

    Image Removed

    Now select the robot head and open the blend shapes anim exporter from the atoms menu: Atoms
    Shape Manager

    ブレンドシェイプは、Blend Shape Managerモジュールを使用して、より簡易的に扱うことができます。

    AddMetadataモジュールをすべて削除し、「BlendShapeManager」モジュールをエージェントグループに追加します。
    BlendShapeManagerのアトリビュートで、「Manage Blend Shapes」ボタンをクリックすると、右側のUIが表示されます。


    そこから、エージェントグループに追加したい、ブレンドシェイプを選択することができます。ダブルクリックするか、リスト上部のボタンを使用して、ブレンドシェイプをSelect/Deselectすることができます。
    バリエーションジオが多数ある場合は、ツリー全体を表示するのに時間がかかる可能性があります。「Expand」ボタンをクリックする時は、注意してください。

    右下隅のチェックボタンをクリックすると、ブレンドシェイプがBlendShapeManagerのアトリビュートタブの下に表示され、そこでアニメーション化が可能となります。

    注意

    次のいずれかの場合、Blend Shape UIは空になります。

    • エージェントグループにエージェントが含まれていません。
    • 該当するエージェントグループに含まれるエージェントタイプに使用できる、バリエーションはありません。



    Image Added


    アニメーションの追加

    より複雑なアニメーションまたはアニメーションサイクルをブレンドシェイプに追加する場合は、BlendShapesAnimモジュールを使用することができます。

    このモジュールを使用する前に、セットアップシーンからアニメーションカーブをいくつかエクスポートする必要があります。ブレンドシェイプを作成した、atomsRobotシーンを開き、ブレンドシェイプデフォーマのターゲットウェイトにいくつかのキーフレームを追加します。

    Image Added


    次に、Atomsメニューからロボットのheadを選択し、ブレンドシェイプのAnim Exporterを開きます。Atoms > Export > Blend shapes anim exporter.

    Set the output path and the frame range, select the head mesh and press the run button.

    Image Removed

    Go back to the atoms scene and remove the blendShapeManager module.

    Add a blendShapesAnim behaviour module and click on the "Manage Animations" button under the blendShapeAnim tab.

    Cilck on the "+" button for adding a new animation, select the "robot1_head" in the Geo field and set the path to the animation file we just exported. Leave the property to loop (no property will just play the blend shapes animation once).
    You can of course add multiple animations, but we are going to stick with one for this example.

    Click on the tick button and you will see this data being converted inside the "animData" parameter.

    Press play and you will see the blendshapes being animated in a loop inside the viewport.

    Click on the "Manage Animations" button again and activate the "Enable Trigger Metadata" checkbox. Type "triggerAnim" as name for your metadata.

    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, the result will be exactly as before.

    Image Removed

    Let's use an area trigger to drive the metadata.

    First let's change the agent state to 1 inside the state machine to make them walk. Inside the addMetadata module change the double value to 0 (the area trigger module will drives this value). Now create an 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 above the blendShapeAnim module. Rewind the scene and press play.

    出力パスとフレーム範囲を設定し、headメッシュを選択して「Run」ボタンを押します。

    Image Added

    Atomsシーンに戻り、BlendShapeManagerモジュールを削除します。
    BlendShapesAnim Behaviourモジュールを追加し、BlendShapeAnimタブの下にある「Manage Animations」ボタンをクリックします。
    「+」ボタンをクリックして、新しいアニメーションを追加し、「Geo」フィールドで「robot1_head」を選択して、先ほどエクスポートしたアニメーションファイルへのパスを設定します。プロパティをループのままにします(どのプロパティもブレンドシェイプアニメーションを一度だけ再生することはありません)。
    もちろん、複数のアニメーションを追加することはできますが、この例では1つのアニメーションを使用します。
    チェックボタンをクリックすると、このデータが "AnimData"パラメータ内で変換されるのがわかります。


    Playボタンを押すと、ビューポート内でブレンドシェイプがループでアニメートされているのがわかります。
    再度、「Manage Animations」ボタンをクリックして、「Enable Trigger Metadata」のチェックボックスをオンにします。メタデータの名前として「triggerAnim」と入力します。AddMetadataモジュールを作成して、BlendShapesAnimモジュールの前に配置します。 NameアトリビュートをTriggerAnimに設定し、タイプをDoubleに変更し、DoubleValueを1.0に設定します。
    シーンを巻き戻して、Playを押すと、結果は以前と完全に一致します。


    Image Added

    メタデータを駆動するためにArea Triggerを使用しましょう。

    最初に、ステートマシン内でエージェントのStateを1に変更して、それらを動かしましょう。 AddMetadataモジュール内で、Double Valueを0に変更します(Area Triggerモジュールが、この値を駆動します)。
    次に、AreaTriggerモジュールを作成し、シーン内に平面を作成します。平面をAreaTriggerモジュールに接続し(Translation/Rotation/Scaleも接続することに注意してください)、Metadata NameアトリビュートをTriggerAnimに、Double Valueを1.0に、Blend InとOutを10にします。また、Random Delay InとOutを5に設定します。 AreaTriggerをBlendShapeAnimモジュールの上に移動します。シーンを巻き戻して、Playを押します。