Vector3を使用することで、3D空間の位置または長さを持つ3D方向を表現することができます。
hou.Vector2とhou.Vector4も参照してください。
メソッド ¶
__init__(values=(0.0, 0.0, 0.0))
        
floatのシーケンスからVector3を返します。このメソッドをパラメータなしでコールすると、 その結果のベクトルには(0.0, 0.0, 0.0)の値が格納されます。
hou.Vector4からVector3を構築することもできます。 その結果には、Vector4の最初の3つの値が入ります。
valuesが3つのエレメント長でなかった場合はInvalidSizeを、
    valuesがfloatのシーケンスでなかった場合は、TypeErrorを引き起こします。
__getitem__(index)
  → float
        
指定したインデックスでのfloatコンポーネントを返します。このメソッドは、ベクトルをシーケンスの挙動 (つまり、例えばベクトルのエレメントに対してfor loopを使用したり、ベクトルをfloatのタプルに変換したりすることができます。)にします。 そして、ベクトルのインデックスには大括弧を使用することができます。
>>> v = hou.Vector3((1.0, 2.0, 3.0)) >>> v[-1] 3.0
__setitem__(index, value)
        
このメソッドは、大括弧を使用することで、ベクトルに値を設定することができます。
>>> v = hou.Vector3((1.5, 2.5, 3.5)) >>> v[1] = 0.5 >>> print v [1.5, 0.5, 3.5]
setTo(sequence)
        
このベクトルの内容をfloatのシーケンスに設定します。
valuesが3つのエレメント長でなかった場合はInvalidSizeを、
    valuesがfloatまたはintのシーケンスでなかった場合は、TypeErrorを引き起こします。
__len__()
  → int
        
3を返します。このメソッドは、Vector3に対してlen()をコールすることができます。
__add__(vector3)
  → hou.Vector3
        
2つのベクトルを加算して、その2つベクトル内のそれぞれのコンポーネントの合計が各コンポーネントである新しいベクトルを返します。
    このメソッドは、v1 + v2と記述することができます。v1とv2はVector3オブジェクトです。
このメソッドは、hou.Vector3(self[0] + vector3[0], self[1] + vector3[1], self[2] + vector3[2])と等価です。
__sub__(vector3)
  → hou.Vector3
        
他のベクトルからベクトルを減算して、最初のベクトルの各コンポーネントから2番目のベクトルのそれに該当するコンポーネントを減算した新しいベクトルを返します。
    このメソッドは、v1 - v2と記述することができます。v1とv2はVector3オブジェクトです。
このメソッドは、hou.Vector3(self[0] - vector3[0], self[1] - vector3[1], self[2] - vector3[2])と等価です。
__neg__()
  → hou.Vector3
        
このベクトルのコンポーネントのマイナス値を含んだベクトルを返します。
    このメソッドは、-vと記述することができます。vはVector3オブジェクトです。
このメソッドは、hou.Vector3(-self[0], -self[1], -self[2])と等価です。
__mul__(scalar_or_matrix3_or_matrix4)
  → hou.Vector3
        
このベクトルをスカラーまたはマトリックスと乗算して、新しいベクトルを返します。
    このメソッドは、v * sまたはv * mと記述することができます。
    vはベクトル、sはfloatのスカラー、mはhou.Matrix3またはhou.Matrix4です。
パラメータがfloatスカラーsの時、このメソッドは、hou.Vector3(self[0] * s, self[1] * s, self[2] * s)と等価です。
Vector3をMatrix4で乗算するには、Vector3を4番目のコンポーネントが1.0のVector4に変換します。 その効果は、そのベクトルが位置として扱われるので、トランスフォームマトリックスに移動コンポーネントが含まれていれば、その戻り値が移動します。 ベクトルをトランスフォームさせたい(例えば、回転以外の移動を無視して適用したい)なら、その該当するhou.Vector4を4番目のコンポーネントを0に設定した状態でトランスフォームさせる必要があります:
# Z軸を180度回転させ、X方向に1移動させるトランスフォームマトリックスを構築します。 >>> matrix = hou.hmath.buildRotateAboutAxis((0, 0, 1), 180) * hou.hmath.buildTranslate((1, 0, 0)) >>> position = hou.Vector3(0.0, 1.0, 0.0) # (0,1,0)のポイントを(0,-1,0)に回転させて、(1,-1,0)に移動させます。 >>> position * matrix <hou.Vector3 [1, -1, 0]> # (0,1,0)ベクトルを(0,-1,0)に回転させ、移動量を無視します。 >>> vector = hou.Vector4(tuple(position) + (0.0,)) >>> vector <hou.Vector4 [0, 1, 0, 0]> >>> vector * matrix <hou.Vector4 [0, -1, 0, 0]> >>> hou.Vector3(vector * matrix) <hou.Vector3 [0, -1, 0]> # 関数で上記のことをラップすることができます: >>> def transformAsVector(vector3): ... return hou.Vector3(hou.Vector4(tuple(vector3) + (0.0,)) * matrix) >>> transformAsVector(position) <hou.Vector3 [0, -1, 0]> # Vector4の最後のコンポーネントを1に変更して、再度ポイントとしてトランスフォームさせています。 >>> vector[-1] = 1.0 >>> vector <hou.Vector4 [0, 1, 0, 1]> >>> vector * matrix <hou.Vector4 [1, -1, 0, 1]>
hou.Matrix4も参照してください。
__rmul__(scalar)
  → hou.Vector3
        
このベクトルをスカラーで乗算して、新しいベクトルを返します。
    このメソッドは、s * vと記述することができます。vがベクトルでsがfloatスカラーです。
    hou.Vector3.__mul__も参照してください。これはv * sと記述することができます。
>>> v = hou.Vector3(1, 2, 3) >>> v * 2 <hou.Vector3 [2, 4, 6]> >>> 2 * v <hou.Vector3 [2, 4, 6]>
__div__(scalar)
  → hou.Vector3
        
このベクトルをfolatスカラーで除算して、新しいベクトルを返します。
    このメソッドは、v / sと記述することができます。vがベクトルでsがfloatスカラーです。
このメソッドは、hou.Vector3(self[0] / scalar, self[1] / scalar, self[2] / scalar)と等価です。
length()
  → float
        
このベクトルを方向ベクトルとして解釈し、その長さを返します。
    その結果は、math.sqrt(self[0]**2 + self[1]**2 + self[2]**2)と同じです。
lengthSquared()
  → float
        
このベクトルを方向ベクトルとして解釈し、その長さの2乗を返します。
    その結果は、self[0]**2 + self[1]**2 + self[2]**2と同じです。
normalized()
  → hou.Vector3
        
このベクトルを方向ベクトルとして解釈し、同じ方向を持つ長さが1のベクトルを返します。
ベクトルの長さが0(または、ほぼ0)なら、その結果は元のベクトルになります。
非ゼロ長のベクトルに関しては、このメソッドはself * (1.0/self.length())と等価です。
multiplyAsDir(matrix4)
  → hou.Vector3
        
このベクトルを方向として解釈し、matrix4によって回転とスケール(移動を含まない)がトランスフォームされた方向を返します。
distanceTo(vector3)
  → float
        
このベクトルと引数を3Dポジションとして解釈し、それらの距離を返します。戻り値は(self - vector3).length()と等価です。
dot(vector3)
  → float
        
このベクトルとパラメータのベクトルとの内積を返します。
    この値は、self[0]*vector3[0] + self[1]*vector3[1] + self[2]*vector3[2]と等価です。
    また、これはself.length() * vector3.length() * math.cos(hou.hmath.degToRad(self.angleTo(vector3)))と等価です。
Wikipediaの内積のページ を参照してください。
cross(vector3)
  → hou.Vector3
        
このベクトルと他のベクトルとの外積を返します。
    戻り値は、両方のベクトルに垂直なベクトルで、右手ルールで定義された方向を向きます。
    その長さは、self.length() * vector3.length() * math.sin(hou.hmath.degToRad(self.angleTo(vector3)))です。
Wikipediaの外積のページ を参照してください。
angleTo(vector3)
  → float
        
このVector3とそのパラメータを方向として解釈し、それらの原点を同じ位置に配置した時のその2つのベクトル間のなす角(度)を返します。
matrixToRotateTo(vector3)
  → hou.Matrix4
        
このベクトルをvector3まで回転させるマトリックスを返し、2つのベクトルに垂直な軸を基準に回転させます。
    2つのベクトルが同じ方向であれば、単位行列を返します。
almostEqual(vector3, tolerance=0.00001)
  → bool
        
廃止されました。代わりにVector3.isAlmostEqualを使用してください。
isAlmostEqual(vector3, tolerance=0.00001)
  → bool
        
このベクトルが他のベクトルと許容値の範囲内で同じかどうか返します。 このベクトルの各コンポーネント間と他のベクトルのそれに該当するコンポーネントとの差が許容値の範囲内にあるかどうか調べます。
smoothRotation(reference, rotate_order="xyz")
  → hou.Vector3
        
referenceに最も近い値を持っていると同時にこのベクトルと同じ向きを表現しているオイラー回転(単位は度)を返します。
reference
オイラー角のhou.Vector3(単位は度)。通常では、これは前のサンプル/フレームからの回転です。
rotate_order
座標軸を基準に実行する回転の順番を決定するための、文字x,y,zの順列を含んだ文字列。
ocio_transform(src_space, dest_space)
  → hou.Vector3
        
Open Color IOを使用することで、ソースのカラー空間をターゲットのカラー空間に変換することができます。
x()
  → float
        
ベクトルの1番目のコンポーネントを返します。これはv[0]と等価です。
y()
  → float
        
ベクトルの2番目のコンポーネントを返します。これはv[1]と等価です。
z()
  → float
        
ベクトルの3番目のコンポーネントを返します。これはv[2]と等価です。
distanceToSegment(point1, point2)
  → float
        
このベクトルから、point1とpoint2で定義された線分までの距離を計算します。
point1
        
線分の始点となるhou.Vector3。
point2
        
線分の終点となるhou.Vector3。
distance2ToSegment(point1, point2)
  → float
        
このベクトルから、point1とpoint2で定義された線分までの距離の2乗を計算します。
point1
        
線分の始点となるhou.Vector3。
point2
        
線分の終点となるhou.Vector3。
pointOnSegment(point1, point2)
  → hou.Vector3
        
大元のベクトルを、point1とpoint2で定義された線分上に投影します。戻り値のポイントは、その線分上に乗っています。
point1
        
線分の始点となるhou.Vector3。
point2
        
線分の終点となるhou.Vector3。