各Pointオブジェクトは、Geometryオブジェクト内に存在し、3次元的な位置が格納されています。 ポイントはプリミティブ(例えば、ポリゴン)間で共有され、ポイントとプリミティブのセットが3D形状を表現しています。
各ポイントには、指定した名前のアトリビュートで任意の値を格納することができます。
メソッド ¶
ポイントデータ ¶
number()
→ int
このポイントの番号を返します。 ポイント番号は0から始まって順々に番号が振られていて、hou.Geometry.pointsで返されるポイントは、その番号で並んでいます。
vertices()
→ tuple
of hou.Vertex
このポイントを参照している頂点のタプルを返します。
これは、プリミティブの頂点を介して検索する必要があるので、その負荷は、それらのプリミティブ内の頂点の合計数に比例します。
position()
→ hou.Vector3
このポイントの位置を、(X, Y, Z)の値を含んだhou.Vector3として返します。
hou.Matrix4を使ってVector3
をトランスフォームさせることができます:
xform = hou.node("/obj/geo1").worldTransform() # Matrix4 new_pos = point.position() * xform
このメソッドは、ポイントのP
アトリビュートにアクセスするためのショートカットです。
しかし、point.attribValue("P")
はVector3
オブジェクトではなく3タプルのfloatを返すので等価ではありません:
point.position() # これは以下と同じです。 hou.Vector3(point.attribValue("P"))
setPosition(position)
ポイントの位置を変更します。通常では、Python定義のSOPのコードからこのメソッドをコールします。
position
は、hou.Vector3、長さが3または4のfloatのタプルのようなfloatのシーケンスです。
4番目の座標はウェイトに相当し、通常は1です。
ウェイトは、通常ではNURBSのカーブとシーケンスで使用されます。そのシーケンスのサイズが3なら、そのウェイトは変わりません。
このメソッドは、P
アトリビュートに対してhou.Point.setAttribValueをコールするためのショートカットです。
point.setPosition((x, y, z)) # これは以下と同じです。 point.setAttribValue("P", (x, y, z))
ジオメトリが修正不可なら、hou.GeometryPermissionErrorを引き起こします。
position
の長さが3でも4でもなかった場合はhou.InvalidSizeを引き起こします。
weight()
→ float
このポイントのウェイトを返します。 ポイントウェイトは、HoudiniのGeometry Spreadsheetにポジションの4番目のコンポーネントとして表示されます。 ポイントウェイトはNURBSで使用されます。
通常では、そのウェイトは1.0です。
このメソッドは、Pw
アトリビュートが存在していなくてもポイントのPw
アトリビュートへのアクセスが機能するようにするための代替メソッドです。
point.weight() # これは以下と同じです。 point.attribValue("Pw") # "Pw"アトリビュートが存在すればその値を返し、存在しなければ1.0を返します。
以下のようにポジションとウェイトの両方を含んだhou.Vector4を構築することができます:
hou.Vector4(tuple(point.position()) + (point.weight(),))
hou.Point.positionも参照してください。
setWeight(weight)
ポイントのウェイトを変更します。通常では、Python定義のSOPのコードからこのメソッドをコールします。
このメソッドは、Pw
アトリビュートに対してhou.Point.setAttribValueをコールするための代替メソッドで、そのPw
アトリビュートが存在しなければ、そのアトリビュートを作成します。
ポイントのウェイトに関する詳細は、hou.Point.weightを参照してください。 hou.Point.setPositionも参照してください。
アトリビュート ¶
attribType()
→ hou.attribType enum value
常にhou.attribType.Point
を返します。
これは、入力オブジェクトがhou.Prim, hou.Point, hou.Vertexのどれかに応じて動作する汎用コードを記述したい場合にのみ役立ちます。
どのオブジェクトにもattribType()
メソッドが用意されていて、指定したオブジェクトの正しいattribType
値を返します。
attribValue(name_or_attrib)
→ int
, float
, str
, tuple
or dict
特定のアトリビュートに対して、このポイントに格納されている値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。
hou.Attribオブジェクトを使用してアトリビュート値を調べる方が、名前を使用して調べるよりも若干高速です。 ループ内でアトリビュート値を調べる時は、そのループ外でhou.Attribオブジェクトを調べて、それをこのメソッドに渡してください。
ポイントポジションアトリビュートの名前はP
で、サイズは4つのfloatです。
このアトリビュートは常に存在します。
すべてのポイントのアトリビュート値を調べる時は、 hou.Geometry.pointFloatAttribValuesまたはhou.Geometry.pointFloatAttribValuesAsStringをコールする方が、 ジオメトリ内のポイント毎にこのメソッドをコールするよりも高速です。
この名前のアトリビュートが存在しなかった場合は、hou.OperationFailedを引き起こします。
# 2つのSOP(color SOPに接続されたBox SOP)を含んだオブジェクトを作成します。 geo_node = hou.node("/obj").createNode("geo") box = geo_node.createNode("box") color = geo_node.createNode("color") color.setFirstInput(box) # color SOPのジオメトリを取得し、その1番目のポイントを取得し、そのCdアトリビュートの値を出力します。 geo = color.geometry() point = geo.iterPoints()[0] print point.attribValue("Cd") # Cdアトリビュートを検索して、アトリビュートオブジェクトによってアトリビュート値にアクセスする方法を説明しています。 cd_attribute = geo.findPointAttrib("Cd") print point.attribValue(cd_attribute)
setAttribValue(name_or_attrib, attrib_value)
このポイントにアトリビュート値を保存します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができ、ジオメトリ内の既存ポイントアトリビュートでなければなりません。 通常では、Python定義のSOPのコードからこのメソッドをコールします。
この名前のアトリビュートが存在しなかったり、そのアトリビュートのデータタイプが渡された値と一致しなかった場合は、hou.OperationFailedを引き起こします。 アトリビュートのサイズが2以上であれば、そのアトリビュート値は、int/floatのシーケンスでなければならず、そのシーケンスのサイズはアトリビュートのサイズと同じでなければなりません。
このジオメトリが修正不可なら、hou.GeometryPermissionErrorを引き起こします。
サンプルは、hou.Geometry.addAttribを参照してください。
以下も参照してください:
floatAttribValue(name_or_attrib)
→ float
特定の浮動小数点アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。
この名前のアトリビュートが存在しない、またはアトリビュートのサイズが1のfloatでなかった場合は、hou.OperationFailedを引き起こします。
ほとんどの場合では、アトリビュート値にアクセスするには、単にhou.Point.attribValueを使用すればいいです。 Houdiniは、内部的にこのメソッドを使用してattribValueを実装しています。
floatListAttribValue(name_or_attrib)
→ tuple
of float
特定の浮動小数点アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。 戻り値は、floatのタプルです。
アトリビュートのサイズが1の時にこのメソッドをコールするのは有効です。 この場合では、1つのエレメントを持ったタプルが返されます。
hou.Point.attribValueも参照してください。
intAttribValue(name_or_attrib)
→ int
サイズが1の特定の整数アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。 詳細は、hou.Point.floatAttribValueを参照してください。
intListAttribValue(name_or_attrib)
→ tuple
of int
特定の整数アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。 戻り値は、intのタプルです。詳細は、hou.Point.floatListAttribValueを参照してください。
stringAttribValue(name_or_attrib)
→ str
特定の文字列アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。 詳細は、hou.Point.floatAttribValueを参照してください。
stringListAttribValue(name_or_attrib)
→ tuple
of str
特定の文字列アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前やhou.Attribオブジェクトで指定することができます。 戻り値は、文字列のタプルです。
アトリビュートのサイズが1の時にこのメソッドをコールするのは有効です。 この場合では、1つのエレメントを持ったタプルが返されます。 詳細は、hou.Point.floatAttribValueを参照してください。
dictAttribValue(name_or_attrib)
→ dict
特定の辞書アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 詳細は、hou.Point.floatAttribValueを参照してください。
dictListAttribValue(name_or_attrib)
→ tuple
of str
特定の辞書アトリビュートのポイントアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 戻り値は、辞書のタプルです。
アトリビュートのサイズが1の時にこのメソッドをコールするのは有効です。 この場合では、1つのエレメントを持ったタプルが返されます。 詳細は、hou.Point.floatAttribValueを参照してください。