SpaceClaim・Algoryx Momentumモデル

サンプル

基底ルール

Structure

  • Visible(可視)とInvisible(不可視)でコンポーネントを分ける

  • StructureのルートにRigidBody単位でVisibleコンポーネントを並べる

    • InvisibleコライダをVisibleコンポーネントに含まない

    • ホイールなど似た属性のコンポーネントはサブコンポーネントにまとめる

  • Invisibleコライダ

    • Hidden_Colliders にコンポーネントをまとめる

    • リーフコンポーネントの名前にプリフィックス Collider_ をつける

    • ソリッドの名前にプリフィックス Collider_ をつける

  • Hidden コンポーネントにシミュレーションに使わないコンポーネントをまとめる

  • シミュレーションで参照が必要な箇所は座標系オブジェクトを配置する

    • 例えば、モデル原点、重心、ジョイント接続位置、観測する位置姿勢

    • オブジェクトの名前は AGXObserverFrame に従う

root
|- Hidden                               # Component
    |- ...                              # Component
|- Hidden_Colliders                     # Component
    |- <COLLIDER_COMPONENT_GROUP_NAME>  # Component
    |- ...                              # Component
|- <RIGIDBODY_COMPONENT_GROUP_NAME>     # Component
    |- ...                              # Component
|- <RIGIDBODY_COMPONENT_NAME>           # Component
    |- ...                              # Component
<RIGIDBODY_COMPONENT_NAME>                  # Component
    |- ...                                  # Component
        |- <LEAF_RIGIDBODY_COMPONENT_NAME>  # Component
            |- <SOLID_NAME>                 # Solid
Collider_<COLLIDER_COMPONENT_NAME>          # Component
    |- ...                                  # Component
        |- Collider_<LEAF_COLLIDER_COMPONENT_NAME>   # Component
            |- Collider_<SOLID_NAME>        # Solid

Simulation Structure(Group by Rigid Bodies)

  • Ignore グループに使わない、無効にしているRigidBodyをまとめる

  • RB_Ignore RigidBodyにRigidBodyとしてまとめる必要がないリーフコンポーネントをまとめる

  • RigidBodyの名前にプリフィックス RB_ をつける( オブジェクトの命名ガイドライン )

  • RigidBodyに関連する <LEAF_RIGIDBODY_COMPONENT_NAME> コンポーネントと Collider_<LEAF_COLLIDER_COMPONENT_NAME> を含める

root
|- Ignore                   # RigidBody Group
    |- RB_Ignore            # RigidBody
    |- ...                  # RigidBody
|- <RIGIDBODY_GROUP_NAME>   # RigidBody Group
    |- ...                  # RigidBody
|- RB_<RIGIDBODY_NAME>      # RigidBody
RB_<RIGIDBODY>                              # RigidBody
|- <LEAF_RIGIDBODY_COMPONENT_NAME>          # Component
    |- <SOLID_NAME>                         # Solid
|- Collider_<LEAF_COLLIDER_COMPONENT_NAME>  # Component
    |- Collider_<SOLID_NAME>                # Solid

ボディ(ソリッド、サーフェス)

  • ソリッド単位で色を割り当てる

    • Momentumは1つのソリッドに複数の色を扱えない

  • ボディは全てソリッドにする

    • サーフェスでは適切な体積が得られず、自動質量慣性テンソル計算に影響する

    • AGXでサーフェス衝突も扱えるが、安定な衝突応答を得られない可能性がある

agxファイルへのエクスポート

  • エクスポート時の設定

    • Structureの HiddenHidden_Colliders コンポーネントをOFF(Invisible)にする

    • Simulation Structureの Ignore グループをOFF(RigidBody Disable)にする

付録: 方針

  • SpaceClaimで使う機能を限定したい(操作量、学習量、説明量を減らしたい)

  • Structureの構造を一目でわかるようにしたい(VisibleとInvisibleの存在確認)

VisibleコンポーネントとInvisibleコンポーネントを分けるか、混ぜるかの議論

  • 方針に沿った「分ける」を選定

# 分ける
|- Hidden_Collider
    |- Collider_Head
        |- Collider_Solid
|- Head
    |- Solid

# 混ぜる
|- Head
    |- Solid
    |- Collider_Head
        |- Collider_Solid

分ける

  • Good

    • Invisibleコンポーネントを探しやすい

    • agxファイルエクスポート時にまとめたInvisibleコンポーネントをOFFにすればいい

    • Structureをクリーン(後付のコライダの削除)にしやすい

  • Bad

    • パーツの移動が面倒。対となるVisible、Invisibleコンポーネントについてそれぞれ移動が必要。

    • 対となるVisibleコンポーネントとInvisibleコンポーネントをまとめたファイル分割ができない

    • Object orientedではない

    • VisibleコンポーネントとInvisibleコンポーネントの構造が重複する

    • Visible衝突のON/OFFをStructureから見分けられない

混ぜる

  • Good

    • VisibleとInvisibleコンポーネントがセットなっていてわかりやすい

    • セット単位で移動しやすい

    • セット単位でファイルの分割ができる

  • Bad

    • Invisibleコンポーネントを探しにくい。サブコンポーネントを辿る必要がある。

    • agxファイルエクスポート時にInvisibleコンポーネントを探してOFFにする作業が必要。Structureツリーを辿るかレイヤー機能を使う必要がある。

    • Structureをクリーン(後付のコライダの削除)が面倒