Inheritance |
|
詳細は、パックプリミティブを参照してください。
パックプリミティブの内容を設定するには、hou.Prim.setIntrinsicValueメソッドを使います:
prim = myGeometry.createPacked("PackedDisk") prim.setIntrinsicValue("unexpandedfilename", "defgeo.bgeo")
設定可能な“Intrinsic(組み込み)アトリビュート”の利用可能リストを取得する:
-
ジオメトリのスプレッドシートで欲しいタイプのパックプリミティブを見て、Intrinsic(組み込み)アトリビュートの表示を有効にします。
または
-
Houdiniのコマンドラインで、
ginfo -IP
とタイプすれば、すべてのパックプリミティブタイプのすべてのIntrinsic(組み込み)アトリビュートのリストを見ることができます。
メソッド ¶
transform()
→ hou.Matrix3
このプリミティブに関連したローカルの3×3トランスフォームを返します。 トランスフォームには、ローカルのポイントトランスフォームやプリミティブ内の任意のトランスフォーム(例えば、Alembicファイル内のトランスフォーム)を含んでいません。
fullTransform()
→ hou.Matrix4
このプリミティブのジオメトリの完全な4×4トランスフォームを返します。 これには、ポイント用の移動、プリミティブ内の任意のトランスフォーム(例えば、Alembicファイル内のトランスフォーム)を含んでいます。
setTransform(m4)
このプリミティブのローカルトランスフォームを設定します。 これは、ローカルの3×3トランスフォーム と ポイントの移動を設定します。 これは、プリミティブ内のどのトランスフォーム(例えば、Alembicファイル内のトランスフォーム)にも影響を与えません。
このジオメトリが修正不可なら、hou.GeometryPermissionErrorを引き起こします。
m4
完全なトランスフォームを含んだhou.Matrix4オブジェクト。
vertex(index)
self.vertices()[index]
のショートカット。おそらく、このメソッドをコールする必要はありません。
このメソッドは、最後からインデックスを指定するためのマイナスのインデックスをサポートしています。まさにself.vertices()[index]
のようなものです。
また、Pythonのインデックス操作のように、インデックスが範囲外の時は、IndexErrorを引き起こします。
Methods from hou.Prim ¶
attribValue(name_or_attrib)
→ int
, float
, str
, tuple
or dict
特定のアトリビュートに対するこのプリミティブ内に格納された値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。
hou.Attribオブジェクトを使用してアトリビュート値を調べる方が、名前を使用して調べるよりも若干高速です。 ループ内でアトリビュート値を調べる時は、そのループ外でhou.Attribオブジェクトを調べて、それをこのメソッドに渡してください。
すべてのプリミティブのアトリビュート値を調べる時は、hou.Geometry.primFloatAttribValuesまたはhou.Geometry.primFloatAttribValuesAsStringをコールする方が、 ジオメトリ内のプリミティブ毎にこのメソッドをコールするよりも高速です。
この名前のアトリビュートが存在しなかった場合は、hou.OperationFailedを引き起こします。
floatAttribValue(attrib)
→ float
特定の浮動小数点アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。
この名前のアトリビュートが存在しない、またはアトリビュートのサイズが1のfloatでなかった場合は、hou.OperationFailedを引き起こします。
ほとんどの場合では、アトリビュート値にアクセスするには、単にhou.Prim.attribValueを使用すればいいです。 Houdiniは、内部的にこのメソッドを使用してattribValueを実装しています。
floatListAttribValue(name_or_attrib)
→ tuple
of float
特定の浮動小数点アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 戻り値は、floatのタプルです。
アトリビュートのサイズが1の時にこのメソッドをコールするのは有効です。 この場合では、1つのエレメントを持ったタプルが返されます。
hou.Prim.attribValueも参照してください。
intAttribValue(name_or_attrib)
→ int
サイズが1の特定の整数アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 詳細は、hou.Point.floatAttribValueを参照してください。
intListAttribValue(name_or_attrib)
→ tuple
of int
特定の整数アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 戻り値は、intのタプルです。詳細は、hou.Prim.floatListAttribValueを参照してください。
stringAttribValue(name_or_attrib)
→ str
特定の文字列アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 詳細は、hou.Prim.floatAttribValueを参照してください。
stringListAttribValue(name_or_attrib)
→ tuple
of str
特定の文字列アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 戻り値は、文字列のタプルです。
アトリビュートのサイズが1の時にこのメソッドをコールするのは有効です。 この場合では、1つのエレメントを持ったタプルが返されます。
hou.Prim.attribValueも参照してください。
dictAttribValue(name_or_attrib)
→ dict
特定の辞書アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 詳細は、hou.Prim.floatAttribValueを参照してください。
dictListAttribValue(name_or_attrib)
→ tuple
of str
特定の辞書アトリビュートのプリミティブアトリビュート値を返します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができます。 戻り値は、辞書のタプルです。
アトリビュートのサイズが1の時でも、このメソッドをコールすることができます。 この場合、1つのエレメントが含まれたタプルが返されます。 詳細は、hou.Prim.floatAttribValueを参照してください。
setAttribValue(name_or_attrib, attrib_value)
このプリミティブにアトリビュート値を保存します。 このアトリビュートは、名前またはhou.Attribオブジェクトで指定することができ、ジオメトリ内の既存プリミティブアトリビュートでなければなりません。 通常では、Python定義のSOPのコードからこのメソッドをコールします。
この名前のアトリビュートが存在しなかったり、そのアトリビュートのデータタイプが渡された値と一致しなかった場合は、hou.OperationFailedを引き起こします。 アトリビュートのサイズが2以上であれば、そのアトリビュート値は、int/floatのシーケンスでなければならず、そのシーケンスのサイズはアトリビュートのサイズと同じでなければなりません。
このジオメトリが修正不可なら、hou.GeometryPermissionErrorを引き起こします。
# "Cd"という名前のサイズが3のfloatプリミティブアトリビュートを作成し、プリミティブ毎に固有のカラーを割り当てます。 # このコードは、Python SOP内から動作しますが、Pythonシェルからは動作しません。 geo = hou.pwd().geometry() color_attrib = geo.addAttrib(hou.attribType.Prim, "Cd", (1.0, 1.0, 1.0)) num_prims = len(geo.prims()) color = hou.Color() for prim in geo.prims(): fraction = float(prim.number()) / num_prims # プリミティブ毎に、彩度と明度が同じで色相を別にします。 # アトリビュートにRGB値を保存します。 color.setHSV((fraction * 255, 1, 1)) prim.setAttribValue(color_attrib, color.rgb())
attribType()
→ hou.attribType列挙値
hou.attribType.Prim列挙値を返します。 ポイント、プリミティブ、頂点、ジオメトリは、アトリビュートを照会するのに同じメソッドをサポートしていて、このメソッドはその内の1つです。
以下も参照してください:
intrinsicValueDict()
→ dict
of str
to value
Intrinsic名とその値をマッピングした辞書を返します。
intrinsicValue(intrinsic_name)
→ int
, float
, str
, or tuple
よく計算されるプリミティブの“Intrinsic(組み込み)”の値(例えば、bounds
, measuredarea
, vertexcount
など)を取得します。
measuredarea
といったほとんどのIntrinsic値は計算任せですが、一部の値はhou.Prim.setIntrinsicValueを使って書き込み可能です。
例えば、球プリミティブは、その定義の一部であるトランスフォームマトリックスを持っています。
Geometry Spreadsheetを使うことで、ユーザインターフェースからそれらの値を閲覧することもできます。
指定したIntrinsic名が存在しなかった場合はhou.OperationFailedを引き起こします。 hou.Prim.intrinsicNamesを使うことで、利用可能なIntrinsic名のリストを取得することができます。 プリミティブのタイプが異なれば、利用可能なIntrinsic値も異なります。
bounds
やpackedbounds
などの境界ボックス系Intrinsic値は、(xmin, xmax, ymin, ymax, zmin, zmax)の順番で返されます。
intrinsicNames()
→ tuple
of str
このプリミティブで利用可能なIntrinsic名を表現した文字列のタプルを返します。 プリミティブのタイプが異なれば、利用可能なIntrinsic名も異なります。 hou.Prim.intrinsicValue/hou.Prim.setIntrinsicValueを使用することで、その値を取得したり設定することができます。
setIntrinsicValue(intrinsic_name, value)
一部の“Intrinsic”値は変更可能です。 例えば、トランスフォームを表現した9個のfloatタプルをhou.Prim.setIntrinsicValueに渡すことで、球プリミティブの内部サイズと回転(トランスフォーム)を変更することができます。 Intrinsicが書き込み不可、渡した値が正しくない、指定したIntrinsic名が存在しない場合は、hou.OperationFailedを引き起こします。
intrinsicReadOnly(intrinsic_name)
→ bool
Intrinsic(組み込み)アトリビュートが読み取り専用かどうか返し、そうでないなら、hou.Prim.setIntrinsicValueで修正することができます。
intrinsicSize(intrinsic_name)
→ int
Intrinsic値のタプルサイズを返します。
positionAtInterior(u, v, w=0.0)
→ hou.Vector3
正規化した(つまり0から1)u,v,w値を指定すると、パラメトリック位置でのプリミティブの内部位置を返します。
外周沿いの位置を照会するには、hou.Face.positionAtを使用してください。
attribValueAtInterior(attrib_or_name, u, v, w=0.0)
→ int
, float
, str
or tuple
プリミティブの内部での正規化したu,v,wのパラメトリック位置でのアトリビュート値を返します。
そのアトリビュートがポイントや頂点のアトリビュートでなかった場合は、hou.OperationFailedを引き起こします。 プリミティブアトリビュート値が必要であれば、これはサーフェスに渡って変化しないので、hou.Prim.attribValueを使用してください。
外周沿いのアトリビュートを照会するには、hou.Face.attribValueAtを使用してください。
number()
→ int
このプリミティブの番号を返します。 プリミティブ番号は0から始まって順々に番号が振られていて、hou.Geometry.primsで返されるプリミティブは、その番号で並んでいます。
type()
→ hou.primType列挙値
このプリミティブのタイプ(例えば、ポリゴン、NURBSカーブ、メタボールなど)を含んだhou.primType値を返します。
vertices()
→ generator of hou.Vertex
このプリミティブ内に含まれている頂点のシーケンスを返します。
そのプリミティブがフェース(例えば、ポリゴンやNURBSカーブ)なら、その結果は、そのフェース内の頂点の順番に相当します。 そのプリミティブがサーフェス(例えば、NURBSメッシュ)なら、そのプリミティブは頂点の2D配列を持ち、このメソッドは、その2D配列内のすべての頂点を列で並べて返します。
2D頂点配列とシーケンシャル頂点インデックス間の関係性、サーフェス内の頂点にアクセスする方法に関する詳細は、hou.Surface.vertexを参照してください。
numVertices()
→ int
len(self.vertices())
のショートカット。おそらく、このメソッドをコールする必要はありません。
points()
→ list of hou.Point
各頂点をループさせずにプリミティブのすべてのポイントを取得するショートカット。
boundingBox()
→ hou.BoundingBox
このプリミティブを囲むのに十分な大きさのサイズと位置の軸平行の3D境界ボックスを返します。
nearestToPosition(pos3)
位置を含んだ3つのfloatのシーケンスを指定すると、その位置に一番近いこのプリミティブ上の位置を検索します。 このプリミティブ上のu値、このプリミティブ上のv値、このプリミティブまでの距離を含んだタプルを返します。
Note
返されるUVは実際の座標なので、VEXのxyzdistに合うように単位座標に切り替えるには、primuvConvertを使用してください。
primuvConvert(uv, mode, tol)
2DのUV座標を指定すると、別の座標系でその位置が計算されます。
tol
引数はオプションです。
指定可能な有効なモードはprimuvconvert VEX関数を参照してください。
primuConvert(u, mode, tol)
1DのU座標を指定すると、別の座標系でその位置が計算されます。
tol
引数はオプションです。
指定可能な有効なモードはprimuvconvert VEX関数を参照してください。