Inheritance |
|
その一方で、hou.Surfaceは頂点の2次元グリッドを格納しており、NURBSサーフェス、Bezierサーフェス、四角形メッシュになることができます。
メソッド ¶
addVertex(point)
→ hou.Vertex
このフェース内に新しく頂点を作成し、その頂点を頂点リストの最後に追加します。 通常では、Python定義のSOPのコードから、このメソッドをコールします。
point
は、その新しい頂点が参照するhou.Pointオブジェクトです。
ポイントと頂点との関係に関する詳細は、hou.Vertexを参照してください。
このジオメトリが修正不可なら、hou.GeometryPermissionErrorを引き起こします。
# これらの配列は、ポイントの位置とそれらのポイントで構成されたポリゴンセットを定義します。 # ポイントの位置には、浮動小数点値も指定することができます。 point_positions = ((0,0,0), (1,0,0), (1,1,0), (0,1,0)) poly_point_indices = ((0,1,2), (2,3,0)) geo = hou.pwd().geometry() # ポイントをすべて作成します。 points = [] for position in point_positions: points.append(geo.createPoint()) points[-1].setPosition(position) # 次にポリゴンを作成し、それらのポイントを参照した頂点を追加します。 for point_indices in poly_point_indices: poly = geo.createPolygon() for point_index in point_indices: poly.addVertex(points[point_index])
以下も参照:
vertex(index)
self.vertices()[index]
のショートカット。おそらく、このメソッドをコールする必要はありません。
このメソッドは、最後からインデックスを指定するためのマイナスのインデックスをサポートしています。まさにself.vertices()[index]
のようなものです。
また、Pythonのインデックス操作のように、インデックスが範囲外の時は、IndexErrorを引き起こします。
isClosed() -> bool
最初と最後の頂点が繋がっているかどうか返します。
開いたフェースは、最初と最後の頂点が繋がっていないので、複数セグメントのラインやカーブを形成します。 閉じたフェースは、非常に薄いサーフェスを形成します。
setIsClosed(on)
フェースを開くか閉じるか設定します。詳細は、hou.Face.isClosedを参照してください。 通常では、Python定義のSOPのコードから、このメソッドをコールします。
このメソッドは、Bezierカーブに対してhou.OperationFailedを引き起こすことに注意してください。 詳細は、hou.Geometry.createBezierCurveを参照してください。
このジオメトリが修正不可なら、hou.GeometryPermissionErrorを引き起こします。
closed() -> bool
このメソッドは廃止されました。代わりにhou.isClosedを使用してください。
positionAt(u)
→ hou.Vector3
正規化された(つまり0から1)u値を指定すると、そのパラメータ位置でのカーブの位置を返します。
attribValueAt(attrib_or_name, u, du=0)
→ int
, float
, str
or tuple
正規化されたuパラメータ位置でのカーブ上のアトリビュート値を返します。 duが0の場合、補間されたアトリビュート値を返します。 そうでない場合、アトリビュート値の微分を返します。
アトリビュートがPoint/Vertexアトリビュートでなかった場合は、hou.OperationFailedを引き起こします。 Primitiveアトリビュート値が必要であれば、この関数ではサーフェス上のどこでも変化しないので、hou.Prim.attribValueを使用してください。
arcLength(u_start, u_stop, divs=10)
->float
正規化された(つまり、0から1)u_startとu_stopの値を渡すと、カーブの円弧の長さが返されます。 divsは、スパンあたりの分割数を意味しています。 この分割数を上げると、計算精度が良くなります。
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関数を参照してください。