class cymel.core.datatypes.transformation.Transformation¶
- class cymel.core.datatypes.transformation.Transformation(val=None, **kwargs)¶
ベースクラス:
object
トランスフォーメーション情報クラス。
Maya の matrix データ型アトリビュートには、 マトリックスの値そのものの他に、 トランスフォーメーション情報をストアすることができる。 本クラスではそれに対応し、 プラグがデータを持っていれば、 このオブジェクトを直接
get
することができる (持っている情報に応じてMatrix
やTransformation
、あるいは None が得られる)。 また、このオブジェクトをプラグに直接set
することもできる。さらに、本クラスは、 トランスフォーメーション要素をマトリックスに合成したり、 マトリックスからトランスフォーメーション要素に分解したり する機能を備える。 操作は、通常の python オブジェクトの属性アクセスを通して 自動的に行われる。 matrix や quaternion といった属性の他に、 トランスフォーメーション要素としては、 transform ノードの アトリビュートとそっくり同じ名前で対応した属性を備えている。
各属性はロング名とショート名のどちらででもアクセス可能で、 以下のものがある。 それぞれ、ロング名に続くカッコはショート名と値の型を表す。
基本トランスフォーメーション要素属性
これらによってマトリックスを合成したり、 マトリックスからこれらの値に分解することができる。
translate (t) (
Vector
)rotate (r) (
EulerRotation
)quaternion (q) (
Quaternion
)shear (sh) (
Vector
)scale (s) (
Vector
)
rotate と quaternion は同じ要素(rotate)を示すが、 どちらの手段(形式)でもセットやゲットが可能。
トランスフォーメーション修飾属性
基本トランスフォーメーション要素の働きを修飾する補助属性。
マトリックスからこれらの値に直接分解することはできず、 分解・合成するための補助属性という位置づけである。
rotateOrder (ro) (
int
)segmentScaleCompensate (ssc) (
bool
)inverseScale (is) (
Vector
)jointOrient (jo) (
Quaternion
)rotateAxis (ra) (
Quaternion
)rotatePivot (rp) (
Vector
)rotatePivotTranslate (rpt) (
Vector
)scalePivot (sp) (
Vector
)scalePivotTranslate (spt) (
Vector
)
rotateOrder は rotate (
EulerRotation
) の order と同じものだが、任意の rotateOrder を設定して、 そのオーダーの rotate を得る目的で使うことができる。jointOrient と rotateAxis のタイプが
Quaternion
なのは、Maya のトランスフォーメーションマトリックスアトリビュートの 仕様に準じているためである。inverseScale のショート名
is
は、文字列にしないと python のis
と衝突してしまうので、代わりにis_
を使用することもできる。マトリックス属性
合成されたマトリックス値。
matrix (m) (
Matrix
)
各属性値は、自由に参照したり、セットしたりすることができるが、
immutable
でラップされた変更不可な値となっている。 つまり、それ自身を変更するメソッドを使用することはできない。 たとえばr
をリオーダーするにはEulerRotation.reorderIt
を呼ぶとエラーになるのでEulerRotation.reorder
で得たものを セットし直すかro
をセットする。基本トランスフォーメーション要素属性か トランスフォーメーション修飾属性をセットすると、 マトリックス属性がクリアされ、 その後、マトリックス値を読み取ろうとする際に合成の計算がされる。
マトリックス属性をセットすると、 基本トランスフォーメーション要素属性がクリアされ、 その後、要素の値を読み取ろうとする際に分解の計算がされる。
例えば、目的に応じて以下のようにマトリックスを分解できる。
ピボットや jointOrient などの設定に応じて マトリックスを分解するには、 それらを一通りセットしてから m をセットし、 t, r(q), sh, s の値を得る。
マトリックスを変えずに、一部の修飾属性を変更するには、 m をゲットして退避しておき、 変更する修飾属性をセットし、 m をセットし直し、 t, r(q), sh, s の値を得る。
さらに、以下のような機能を備えている。
コンストラクタの引数には以下を0から1個指定できる。
コンストラクタのキーワード引数に、 ロング名やショート名で属性値を指定できる。
属性値をセットする際は、本来の型に合わせなくても、
Plug
からget
した値を そのままセットすることができる。 例えば、rotateAxis 属性の型はQuaternion
だが Radians の 3値のlist
をセットしても、 適切に Quaternion に変換される。Transformation
かMatrix
と乗算できる。シーケンスとして評価すると matrix データ型アトリビュートへの setAttr コマンドの形式になる。
Methods:
asPosition
([at])指定した基準位置を得る。
clear
(name)トランスフォーメーション修飾属性をクリアする。
fromSetAttrCmds
(lines)setAttr コマンドの MEL 文字列リストから生成する。
setAttr コマンドの MEL 文字列リストを得る。
hasValue
(name)デフォルト値ではない修飾属性の値を持っているかどうか。
isEquivalent
(v[, tol])各属性値がほぼ同値かどうか。
Methods Details:
- asPosition(at=2)¶
指定した基準位置を得る。
- パラメータ:
at (int) --
どのアトリビュートに相当する位置を得るか。
0 だと原点(ゼロ)。
1 だと translate の位置(属性値そのもの)。
2 だと rotatePivot の位置。
3 だと scalePivot の位置。
4 以上だと matrix の位置。
- isEquivalent(v, tol=1e-10)¶
各属性値がほぼ同値かどうか。
- パラメータ:
v -- 比較する値。
Transformation
かMatrix
を指定可能。tol (float) -- 許容誤差。
- 戻り値の型: