Maya の内部計算は、センチメートル、ラジアン、秒の単位を使用して行われます。ラジアンは数学で使われる角度の単位であり、180 度を π で割った値(約 57.3 度)が 1 ラジアンです。
値が計測単位であるアトリビュートに数値を代入すると、デフォルトでは、その値は、プリファレンス(Preferences)ウィンドウの設定(Settings)カテゴリで指定された計測単位で解釈されます。デフォルトで選択される単位は、センチメートル、度および 1 秒当たり 24 フレーム / 秒です。
指定された計測単位が Maya の内部単位と異なる場合は、数値が内部単位に自動変換され、その後に代入が行われます。
プリファレンス(Preferences)ウィンドウの設定(Settings)にある角度(Angular)メニューから角度の単位として度を選択したものと仮定します。Ball というオブジェクトに次のエクスプレッションを作成しました。
Ball.rotateZ = 10;
10 は 10 度と解釈され、その後、ラジアンに変換されて Ball の回転 Z(Rotate Z)アトリビュートに代入されます。度からラジアンへの変換は、自動的に実行されます。したがって、Ball が単に 10 度回転するように見えます。
非パーティクル エクスプレッションの場合、このような自動変換によって Maya のパフォーマンスに影響が出ます。つまり、エクスプレッションの実行速度が落ちるため、アニメーションの再生や巻き戻しが遅くなったり、アニメーション時間が変化したりします。エクスプレッションを含むシーンのファイル操作(ファイルを開く、保存など)も遅くなります。
Maya のパフォーマンスを改善するには、内部単位への変換をオフにします。その場合、エクスプレッションで単位を変換する必要があります。
プリファレンス(Preferences)ウィンドウの単位タブで、リニア(Linear)単位としてミリメートル(millimeters)、角度(Angular)単位として度(degrees)を設定したと仮定します。次のエクスプレッションを作成したと仮定します。
Ball.translateX = 5;
Ball.rotateZ = 10;
エクスプレッション エディタの単位変換オプションとしてすべて(All)を選択している場合は、5 は 5 ミリメートル、10 は 10 度と解釈されます。
なし(None)を選択している場合は、5 は 5 センチメートル、10 は 10 ラジアンと解釈されます。
角度のみ(Angular Only)を選択している場合は、5 は 5 センチメートル、10 は 10 度と解釈されます。
プリファレンス(Preferences)ウィンドウの単位タブで、リニア(Linear)単位としてミリメートル(millimeters)、角度(Angular)単位として度(degrees)を設定したと仮定します。
次に、エクスプレッション エディタ(Expression Editor)で、単位変換(Convert Units)オプションとしてなし(None)を選択し、次のエクスプレッションを入力したと仮定します。
Ball.translateX = 5;
Ball.rotateZ = 10;
なしオプションを選択しているため、5 は 5 センチメートル、10 は 10 ラジアンと解釈されますが、これは意図した結果ではありません。
Ball の移動 X(Translate X)アトリビュートに 5 ミリメートルを代入するには、センチメートルに変換する必要があります。また、Ball の回転 Z(Rotate Z)アトリビュートに 10 度を代入するには、10 を該当するラジアン数に変換する必要があります。
Ball.translateX = 5.0 / 10.0;
Ball.rotateZ = 10.0 / 57.3;
1 センチメートルは 10 ミリメートルです。すなわち、1 ミリメートルは 1 センチメートルを 10 で割ったものなので、したがって、5 ミリメートルは、5 センチメートルを 10 で割った値に等しくなります。5.0 / 10.0 という演算を行うのはそのためです。
1 ラジアンは 57.3 度です。つまり、1 度は 1 ラジアンを 57.3 で割った値で、10 度は 10 ラジアンを 57.3 で割った値なので、値 10.0/57.3 を使用できます。
ラジアンへの変換をより正確に行う必要がある場合には、57.3 ではなく 57.29578 で割ります。また、次のように deg_to_rad 関数を使用することもできます。
Ball.rotateZ = deg_to_rad(10.0);
deg_to_rad 関数によって、10 度が正確なラジアン値に変換されます。詳細については、 deg_to_radを参照してください。
単位変換オプションをオフにした場合に影響を受けるのはエクスプレッションだけであり、他の Maya コマンドやオプション、表示形式などは影響を受けません。たとえば、上の例のエクスプレッションでは、移動 X アトリビュートにセンチメートルが代入され、回転 Z アトリビュートにラジアンが代入されますが、チャンネル ボックス(Channel Box)ではこれらのアトリビュート値がミリメートル単位と度単位で表示されます。プリファレンスウィンドウの設定(Settings)でどの単位が選択されたかにかかわらず、チャンネル ボックスは常に値を表示します。
パーティクルのシェイプ(Shape)ノードのエクスプレッションについては、単位変換オプションをオフにできません。この種のエクスプレッションでは異なる方式で単位変換が行われ、パフォーマンスへの影響はほとんどありません。