class cymel.core.datatypes.transformation.Transformation

Inheritance diagram of Transformation
class cymel.core.datatypes.transformation.Transformation(val=None, **kwargs)

ベースクラス: object

トランスフォーメーション情報クラス。

Maya の matrix データ型アトリビュートには、 マトリックスの値そのものの他に、 トランスフォーメーション情報をストアすることができる。 本クラスではそれに対応し、 プラグがデータを持っていれば、 このオブジェクトを直接 get することができる (持っている情報に応じて MatrixTransformation 、あるいは None が得られる)。 また、このオブジェクトをプラグに直接 set することもできる。

さらに、本クラスは、 トランスフォーメーション要素をマトリックスに合成したり、 マトリックスからトランスフォーメーション要素に分解したり する機能を備える。 操作は、通常の python オブジェクトの属性アクセスを通して 自動的に行われる。 matrix や quaternion といった属性の他に、 トランスフォーメーション要素としては、 transform ノードの アトリビュートとそっくり同じ名前で対応した属性を備えている。

各属性はロング名とショート名のどちらででもアクセス可能で、 以下のものがある。 それぞれ、ロング名に続くカッコはショート名と値の型を表す。

  • 基本トランスフォーメーション要素属性

    これらによってマトリックスを合成したり、 マトリックスからこれらの値に分解することができる。

    rotate と quaternion は同じ要素(rotate)を示すが、 どちらの手段(形式)でもセットやゲットが可能。

  • トランスフォーメーション修飾属性

    基本トランスフォーメーション要素の働きを修飾する補助属性。

    マトリックスからこれらの値に直接分解することはできず、 分解・合成するための補助属性という位置づけである。

    rotateOrder は rotate (EulerRotation) の order と同じものだが、任意の rotateOrder を設定して、 そのオーダーの rotate を得る目的で使うことができる。

    jointOrient と rotateAxis のタイプが Quaternion なのは、Maya のトランスフォーメーションマトリックスアトリビュートの 仕様に準じているためである。

    inverseScale のショート名 is は、文字列にしないと python の is と衝突してしまうので、代わりに is_ を使用することもできる。

  • マトリックス属性

    合成されたマトリックス値。

各属性値は、自由に参照したり、セットしたりすることができるが、 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 に変換される。

  • TransformationMatrix と乗算できる。

  • シーケンスとして評価すると matrix データ型アトリビュートへの setAttr コマンドの形式になる。

Methods:

asPosition([at])

指定した基準位置を得る。

clear(name)

トランスフォーメーション修飾属性をクリアする。

fromSetAttrCmds(lines)

setAttr コマンドの MEL 文字列リストから生成する。

getSetAttrCmds()

setAttr コマンドの MEL 文字列リストを得る。

hasValue(name)

デフォルト値ではない修飾属性の値を持っているかどうか。

isEquivalent(v[, tol])

各属性値がほぼ同値かどうか。

Methods Details:

asPosition(at=2)

指定した基準位置を得る。

パラメータ:

at (int) --

どのアトリビュートに相当する位置を得るか。

  • 0 だと原点(ゼロ)。

  • 1 だと translate の位置(属性値そのもの)。

  • 2 だと rotatePivot の位置。

  • 3 だと scalePivot の位置。

  • 4 以上だと matrix の位置。

clear(name)

トランスフォーメーション修飾属性をクリアする。

パラメータ:

name (str) -- トランスフォーメーション修飾属性名。

classmethod fromSetAttrCmds(lines)

setAttr コマンドの MEL 文字列リストから生成する。

getSetAttrCmds()

setAttr コマンドの MEL 文字列リストを得る。

コマンド構文のアトリビュート名の部分は "%s" となる。

戻り値の型:

list

hasValue(name)

デフォルト値ではない修飾属性の値を持っているかどうか。

パラメータ:

name (str) -- トランスフォーメーション修飾属性名。

戻り値の型:

bool

isEquivalent(v, tol=1e-10)

各属性値がほぼ同値かどうか。

パラメータ:
戻り値の型:

bool