関数
addBlendshapeInputs(base_shape_geo, shapes, channel_names)
ブレンドシェイプ入力をシェイプに追加します。
これは、必須となるDetailアトリビュート(blendshape_shapenames
とblendshape_channels
)をベースシェイプのジオメトリ上にセットアップします。
base_shape_geo
ベースシェイプ用の変更可能なhou.Geometry。
shapes
ブレンドシェイプ入力として追加するhou.AgentShapeシーケンス。 これらのシェイプをシェイプライブラリに追加するには、hou.AgentShapeLibrary.addShape()を別々にコールしてください。
channel_names
各シェイプで使用するチャンネル名を指定したstr
シーケンス。
このシーケンスサイズがshapes
リストと同じでない場合は、hou.InvalidSizeを引き起こします。
addInBetweenShapes(primary_shape_geo, shapes, weights)
中間シェイプをブレンドシェイプ入力に追加します。
これは、必須となるDetailアトリビュート(blendshape_shapenames
とblendshape_inbetweenweights
)をプライマリシェイプのジオメトリ上にセットアップします。
primary_shape_geo
プライマリシェイプ用の変更可能なhou.Geometry。
shapes
中間シェイプとして追加するhou.AgentShapeシーケンス。 これらのシェイプをシェイプライブラリに追加するには、hou.AgentShapeLibrary.addShape()を別々にコールしてください。
weights
それぞれの中間シェイプが適用されるウェイトを指定したfloat
シーケンス。
このシーケンスサイズがshapes
リストと同じでない場合は、hou.InvalidSizeを引き起こします。
computeLocalTransforms(rig, xforms)
→ tuple
of hou.Matrix4
指定したリグを使って、トランスフォームをワールド空間からローカル空間に変換します。
rig
トランスフォーム階層を指定したhou.AgentRig。
xforms
リグ内の各ジョイントのワールド空間のトランスフォームを含んだhou.Matrix4シーケンス。 このシーケンス長がhou.AgentRig.transformCount()と同じでない場合はhou.InvalidSizeを引き起こします。
computeWorldTransforms(rig, xforms)
→ tuple
of hou.Matrix4
指定したリグを使って、トランスフォームをローカル空間からワールド空間に変換します。
rig
トランスフォーム階層を指定したhou.AgentRig。
xforms
リグ内の各ジョイントのローカル空間のトランスフォームを含んだhou.Matrix4シーケンス。 このシーケンス長がhou.AgentRig.transformCount()と同じでない場合はhou.InvalidSizeを引き起こします。
computeRotationLimits(rig, clips, transform, parent_transform)
→ dict
of str
to values
用意したクリップのモーション範囲に基づいて、指定したジョイントの回転制限を計算します。
戻り値は、以下のキーを含んだ辞書です:
-
anchor_pos
: コーンのアンカー位置を含んだhou.Vector3。 -
rotation
: コーンの向きを含んだhou.Vector3。 -
child_rotation
: 子の向きを含んだhou.Vector3。 -
twist_limits
: Twist軸の回転制限を含んだhou.Vector2。 -
up_limits
: Up軸の回転制限を含んだhou.Vector2。 -
out_limits
: Out軸の回転制限を含んだhou.Vector2。
rig
clips
hou.AgentClipのリスト。
transform
エージェントのリグのトランスフォームのインデックス。
parent_transform
エージェントのリグの親トランスフォームのインデックス。
findAgentDefinitions(geometry, group = "")
→ tuple
of hou.AgentDefinition
ジオメトリ内の固有のエージェント定義のリストを返します。
これは、以下のコードと等価ですが、それよりも非常に高速です。
definitions = set() for prim in geometry.globPrims(group): if prim.type() == hou.primType.Agent: definitions.add(prim.definition()) return definitions
geometry
group
検査するプリミティブをフィルタリングするためのオプションのグループ文字列。 このパターン形式は、SOPノードのgroupパラメータで使用する形式と同じです。
findShapeDeformer(name)
→ hou.AgentShapeDeformer
指定した名前のシェイプデフォーマを検索します。 そのようなシェイプデフォーマがなければ、Noneを返します。
replaceAgentDefinitions(geometry, new_definition_map, group = "")
ジオメトリ内のエージェント定義を新しいバージョンに置換します。 これは、ジオメトリ内の各エージェント定義を修正する時に便利な関数です。特にhou.crowds.findAgentDefinitions()を使用する時にも便利です。
例:
defns = hou.crowds.findAgentDefinitions(geo, group) new_defn_map = {} for defn in defns: new_defn = defn.freeze() new_defn_map[defn] = new_defn # クリップを新しいエージェント定義に追加します。 new_defn.addClip(...) # グループ内のすべてのエージェントを、それぞれの新しいエージェント定義に切り換えます。 hou.crowds.replaceAgentDefinitions(geo, new_defn_map, group)
geometry
編集可能なhou.Geometry。
new_definition_map
各hou.AgentDefinitionを置換するhou.AgentDefinitionにマッピングした辞書。
group
編集するプリミティブをフィルタリングするためのオプションのグループ文字列。 このパターン形式は、SOPノードのgroupパラメータで使用する形式と同じです。
setBlendshapeDeformerParms(base_shape_geo, attribs="P", point_id_attrib="id", prim_id_attrib="")
ブレンドシェイプデフォーマのパラメータを指定するためのアトリビュートをベースシェイプのジオメトリに追加します。
これは、以下のDetailアトリビュートを作成します: blendshape_attribs
, blendshape_ptidattr
, blendshape_primidattr
。
attribs
デフォーマによってブレンドされるアトリビュートのリストまたはパターンを指定します。
point_id_attrib
異なるブレンドシェイプ入力間でポイントをマッチングさせるために使用するPointアトリビュートの名前を指定します。
prim_id_attrib
異なるブレンドシェイプ入力間でポイントをマッチングさせるために使用するPrimitiveアトリビュートの名前を指定します。
shapeDeformers()
→ tuple
of hou.AgentShapeDeformer
利用可能なシェイプデフォーマのリストを返します。