EulerAngles 値

EulerAngles クラスは、各軸において度単位の回転角度を使用する 3 次元空間での方向の表示を提供します。

角度は 360 度より大きくなるため、複数の回転を指定する必要があります。

回転は右回りのルールに従います。

コンストラクタ:

eulerAngles <x_degrees> <y_degrees> <z_degrees>
<quat> as eulerAngles
<angleAxis> as eulerAngles
<matrix3> as eulerAngles

eulerAngle として回転コンポーネントを抽出します。

演算子

<eulerAngles> == <eulerAngles>
<eulerAngles> != <eulerAngles>
<eulerAngles> as <class>

eulerAngles は、Matrix3、Quaternion、angleAxis の各値に変換できます。

プロパティ

<eulerAngles>.x: Float
<eulerAngles>.y: Float
<eulerAngles>.z: Float

浮動小数点の角度単位における各主軸における回転です。

メソッド

copy <eulerAngles>

eulerAngles 値の新しいコピーを作成します。

新しい値には eulerAngles の入力値のコピーが入っています。新しい値は、入力 eulerAngles 値から独立しています。

例:

    newEulerAngles = copy oldEulerAngles
random <eulerAngles> <eulerAngles>

eulerAngles 間のランダム回転ですが、quat Slerp を使用するので、複数の回転角を失います。

quatToEuler <quat> order:<eulertype_integer>
eulerToQuat <eulerAngle> order:<eulertype_integer>

Quat とオイラー角度の値を変換します。オプションの順序パラメータには、角度の適用順序を指定します。指定しない場合は、XYZ の順序が使用されます。値には次のいずれかを使用できます。

1 - XYZ
2 - XZY
3 - YZX
4 - YXZ
5 - ZXY
6 - ZYX
7 - XYX
8 - YZY
9 - ZXZ
quatToEuler2 <quat>

[キー入力変換](Transform Type-In)ダイアログ ボックスに表示された、特定の Quaternion のオイラー値を返します。

3ds Max 2008 以降 で使用可能です。

従来、Avguard 機能拡張として提供されていた機能です。

quatArrayToEulerArray <quat array>

Quat 配列からのスムーズ オイラー値の配列を返します。

3ds Max 2008 以降 で使用可能です。

従来、Avguard 機能拡張として提供されていた機能です。

一連の quat 値を eulerAngle 値に変換するとき、eulerAngle 値で符号反転が発生する可能性があります。これは、さまざまな eulerAngle 値によって 1 つの quat 値を表現できるためです。この符号反転は、eulerAngles/quat 比を基準に検出できます。eulerAngles/quat 比は、Quaternion 空間での角度差に対する eulerAngles 空間での角度差を表します。この比率が eulerAngles 変換に対する 2 つの quat 間の回転 PI より大きい場合、このメソッドは、eulerAngles 変換に対する 2 つの quat 間の eulerAngles/quat 角度比を浮動小数点で返します。反転の実際の検出は、変換中の回転の量に依存します。回転の量が少ないほど、検出が正確になります。

以下のメソッドは、3ds Max 2012 より前のバージョンでは正しく機能しないことに注意してください。

<float>GetEulerQuatAngleRatio <quat1> <quat2> <array1> <array2>
<float>GetEulerQuatAngleRatio <quat1> <quat2> <eulerAngle1> <eulerAngle2>
<float>GetEulerQuatAngleRatio <quat1> <quat2> &<var1> &<var2>  

関数は eulerAngles/Quat 比を Float として返します。

最初の 2 つの引数は、入力として使用される Quat です。1 番目の quat は以前の回転で、2 番目の quat は現在の回転です。

3 番目と 4 番目の引数は、以前と現在の変換された回転角度です。これらは出力として使用されます。

1 番目のサインでは、結果のオイラー角度の .x、.y、.z コンポーネントは、配列要素 1、2、3 に格納されます。

2 番目のサインでは、渡される引数 <eulerAngle1><eulerAngle2> は、変換後の値に変更されます。

3 番目のサインでは、引数 3 と 4 として渡される EulerAngle が参照で書き戻されます。

<float>GetEulerMatAngleRatio <mat1> <mat2> <array1> <array2>
<float>GetEulerMatAngleRatio <mat1> <mat1> <eulerAngle1> <eulerAngle2>  
<float>GetEulerMatAngleRatio <mat1> <mat1> &<var1> &<var2>

このメソッドは getEulerQuatAngleRatio() メソッドと同等ですが、入力として Quat 値ではなく matrix3 値を使用します。

最初の 2 つの引数は、以前と現在の方向を記述する matrix3 の入力です。

3 番目と 4 番目の引数は、変換された以前と現在のオイラー角度です。

1 番目のサインでは、.x、.y、.z コンポーネントは、配列の 1 番目、2 番目、3 番目の要素に格納されます。

2 番目のサインでは、渡された <eulerAngle1> および <eulerAngle2> を変更して出力のオイラー角度が格納されます。

3 番目のサインでは、eulerAngle が 3 番目と 4 番目の参照渡し引数に書き込まれます。

例:

    q1 = (quat 0.412759 0.00141638 -0.113167 0.903782)
    q2 = (quat -0.150577 -0.378993 0.176638 0.895818)
    a1 = #(0,0,0)
    a2 = #(0,0,0)
    getEulerQuatAngleRatio q1 q2 a1 a2
    -->0.583444
    a1;a2
    -->#(-48.5478, 5.21315, 11.922)
    -->#(11.509, 47.0722, -17.2825)

    a1 = #()
    a2 = #()
    getEulerQuatAngleRatio q1 q2 a1 a2
    -->0.583444
    a1;a2
    -->#(-48.5478, 5.21315, 11.922)
    -->#(11.509, 47.0722, -17.2825)

    a1 = eulerAngles 0 0 0
    a2 = eulerAngles 0 0 0
    getEulerQuatAngleRatio q1 q2 a1 a2
    -->0.583444
    a1;a2
    -->(eulerAngles -48.5478 5.21315 11.922)
    -->(eulerAngles 11.509 47.0722 -17.2825)

    getEulerQuatAngleRatio q1 q2 &r1 &r2
    -->0.583444
    r1;r2
    -->(eulerAngles -48.5478 5.21315 11.922)
    -->(eulerAngles 11.509 47.0722 -17.2825)

    m1 = (quat 0.412759 0.00141638 -0.113167 0.903782) as matrix3
    m2 = (quat -0.150577 -0.378993 0.176638 0.895818) as matrix3
    a1 = #(0,0,0)
    a2 = #(0,0,0)
    GetEulerMatAngleRatio m1 m2 a1 a2
    -->0.583444
    a1;a2
    -->#(-48.5478, 5.21315, 11.922)
    -->#(11.509, 47.0722, -17.2825)

    a1 = #()
    a2 = #()
    GetEulerMatAngleRatio m1 m2 a1 a2
    -->0.583444
    a1;a2
    -->#(-48.5478, 5.21315, 11.922)
    -->#(11.509, 47.0722, -17.2825)

    a1 = eulerAngles 0 0 0
    a2 = eulerAngles 0 0 0
    GetEulerMatAngleRatio m1 m2 a1 a2
    -->0.583444
    a1;a2
    -->(eulerAngles -48.5478 5.21315 11.922)
    -->(eulerAngles 11.509 47.0722 -17.2825)

    GetEulerMatAngleRatio m1 m2 &r3 &r4
    -->0.583444
    r3;r4
    -->(eulerAngles -48.5478 5.21315 11.922)
    -->(eulerAngles 11.509 47.0722 -17.2825)