Maya ではデータ型を柔軟に取り扱うことができます。2 つの異なるデータ型の間で代入または算術演算を実行すると、必要に応じてデータ型が変換され、構文エラーは報告されません。
ここでは、異なるデータ型の間で生じる変換について説明します。データ型の変換の詳細を理解しておけば、予期せぬアトリビュート値や変数値が発生した場合の原因の解明に役立ちます。
プログラミングの経験がない場合は、データ型を変換しないようにしてください。予期せぬアトリビュート値や変数値が発生して混乱を招く可能性があります。
浮動小数点型のアトリビュートまたは変数にベクトルを代入すると、次の式に従って、ベクトルが浮動小数点数に変換されます。
整数型のアトリビュートまたは変数に浮動小数点数を代入すると、浮動小数点数の小数部分が切り捨てられます。
整数型のアトリビュートまたは変数にベクトルを代入すると、前出の平方根の式に従って、ベクトルが整数に変換されます。演算結果の小数部分は切り捨てられます。
エクスプレッションの中で異なるデータ型に算術演算子を適用した場合に、データ型がどのように変換されるかを次の表に示します。
演算 | 演算結果のデータ型 |
---|---|
int 演算子 float | float |
int 演算子 vector | vector |
vector 演算子 float | vector |
$velocity というベクトル変数に浮動小数点数 0.5 を掛けます。
$race = $velocity * 0.5;
このエクスプレッションの実行時に $velocity が <<2,3,0>> であった場合、$race 変数には演算結果のベクトル <<1,1.5,0>> が代入されます。
たとえば、Ball.scaleY = 1/3; という文では、小数点のない 1 と 3 が整数として扱われます。このエクスプレッションでは整数 1 が整数 3 で割られます。結果は整数で商は 0、余りは 1 になります。余りは Maya により切り捨てられます。
Ball.scaleY は浮動小数点型のアトリビュートであるため、除算結果の整数 0 は浮動小数点数 0 (同じ値)に変換され、Ball.scaleY に代入されます。
1/3 の意図通りの演算結果を得るには、Ball.scaleY = 1.0/3.0; と入力する必要があります。
1.0 と 3.0 は小数点があるため浮動小数点数として取り扱われ、1.0/3.0 = 0.33333333333 という結果が得られます。