MAXScript にカラーが表示される場所(ワイヤカラー、ライト カラーなど)は、すべて Color クラスのインスタンスで表されます。Point3 値を使用してカラーを指定することもできます。
リテラル
red green blue white black orange yellow brown gray
定義済み MAXScript グローバル値。
コンストラクタ:
color <r> <g> <b> [ <a> ]
r、g、b、およびオプションのアルファは、通常、0 ~ 255 の範囲の浮動小数点です。
<point3> as color
x を r として、y を g として、z を b として解釈します。アルファは、不透明(255)とみなされます。
プロパティ
<color>.red or .r: Float
<color>.green or .g: Float
<color>.blue or .b: Float
<color>.alpha or .a: Float
カラー コンポーネントのプロパティ
<color>.hue or .h: Float
<color>.saturation or .s: Float
<color>.value or .v: Float
派生プロパティ
演算子
<color> == <color>
<color> != <color>
<color> + <color_or_number>
<color> - <color_or_number>
<color> * <color_or_number>
<color> / <color_or_number>
チャネルごとの演算です。数字は R、G、B、A チャネルで均等に動作します。
-<color>
単項マイナス
カラー演算に関する重要な注意:
加算と減算は、次のように R、G、B、A チャネルに対して均等に実行されます。
aColor = color 1 1 1 (color111) aColor + aColor (color 2 2 2 510)
この高いアルファ値が生じるのは、MAXScript では 255 のアルファ値は出力されませんが、変数 aColor の値は内部的に(color 1 1 1 255)であるためです。このため、R、G、B チャネルと同じように、255 のアルファ チャネルが 255 に加算されて、512 のアルファが生成されます。
3ds Max 2 で実装された当初のカラー値には、浮動小数点コンポーネントを使用できますが、その時点では MAXScript が浮動小数点カラー ビットマップをサポートしていなかったため、主に 8 ビット/チャネルの RGBA 値に使用することが想定されていました。カラー値を出力するとき、または他の値をカラーに変換するときには、内部変換が実行されます。
カラー値を出力するとき、または他の値をカラーに変換するときには、内部変換が実行されます。
aColor = color 1 1 1 aColor * aColor (color 0.00392157 0.00392157 0.00392157) aColor * [1,1,1] (color 0.00392157 0.00392157 0.00392157) aColor = color 128 128 128 aColor * aColor (color 64.251 64.251 64.251)
カラー値の乗算の結果がこのようになるのは、実際のコンポーネント値が通常は 0 から 1 の範囲の浮動小数点値であるためです。
0 ~ 1 から 0 ~ 255 へのスケーリングは、値を出力するとき、または他の値タイプに変換するときに、元のカラー値に対して MAXScript が実行する処理です。
128 のグレー値に 128 のグレー値を乗算すると、実際には光った白色である 128*128 = 16384 にはならず、以下のようになります。
(128/255.0 * 128/255.0)*255 または(.501961*.501961)*255
これは、もっと暗いグレー シェード(color 64.251 64.251 64.251)です。
このため、(color 1 1 1 255)を 0 ~ 1 の範囲のコンポーネントに変換した場合も、同じように(1.0/255*1.0/255)*255 = 0.00392157 の RGB コンポーネントが生成されますが、255 のアルファは 1.0 に変換された後、255 に戻されます。
このため、カラー値は浮動小数点カラー コンポーネント を使用した ハイ ダイナミック レンジ イメージ の計算にはあまり適していません。
この種の演算用に、MAXScript は Point4 値を提供しています。これを使用すると、明示的に 0 ~ 255 範囲との変換を行うことなく浮動小数点カラーを表現できます。
メソッド
copy <color>
カラー値の新しいコピーを作成します。
例:
newClr = copy oldClr
新しい値は入力カラー値のコピーを含み、入力カラー値から独立した値になります。
random <from_color> <to_color>
与えられたカラー間でランダムにカラーを返します。結果のアルファ コンポーネントは常に 255 です。
composite <color1> <color2>
color1
のアルファ値を利用して、color2
から color1
を合成します。この関数は次の関数と同じです。
例:
color1 + color2*((255. - color1.alpha)/255.)
noise3 <color>
noise4 <color> <phase_float>
turbulence <color> <frequency_float>
fractalNoise <color> <H_float> <lacunarity_float> <octaves_float>
ノイズ関数の詳細は、「Point3 値」を参照してください。
カラー(r、g、b、a)のコンポーネント値は、通常 0.0 ~ 255.0 の範囲です。ただし、この範囲外の値も使用できます。}3ds Max で範囲外のカラー値が使用されると、3ds Max はその値を 0.0 ~ 255.0 の範囲に収めるようにします。
以下のスクリプトでは、リテラル、コンストラクタ、プロパティ、演算子、およびカラー クラスの使い方を示します。
スクリプト:
-- color test bed magenta=color 255 255 0 255-- create colors using constructors aqua = [0, 255, 255] as color aqua.v /= 2.-- reduce "strength" of aqua color aqua aqua.alpha=128-- set aqua to 50% opacity aqua lightGray=white/4-- create light gray color by dividing -- each component of white by 4 composite aqua lightGray-- composite light gray over aqua random black white-- generate a random color
出力:
(color 255 255 0)-- result of line 2. Note that if -- alpha=255 it is not displayed (color 0 255 255)-- result of line 3 127.5-- result of line 4 - value property of aqua (color 0 127.5 127.5)-- result of line 5 - color of aqua 128-- result of line 6 - alpha property of aqua (color 0 127.5 127.5 128)-- result of line 7 - color of aqua (color 63.75 63.75 63.75 63.75)-- result of line 8 - each component divided by 4 (color 31.75 159.25 159.25 159.75)-- result of line 10 (color 249.607 27.8243 140.23)-- result of line 11