カラー値

> 基本的なデータ値 >カラー値

 

   

値とコレクション - クイック ナビゲーション

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 範囲との変換を行うことなく浮動小数点カラーを表現できます。この値は、3ds Max 6 で mental ray シェーダのカラー パラメータをサポートするために導入されました。

メソッド

copy <color>

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

例:

newClr = copy oldClr

新しい値は入力カラー値のコピーを含み、入力カラー値から独立した値になります。

random <from_color> <to_color>

与えられたカラー間でランダムにカラーを返します。結果のアルファ コンポーネントは常に 255 です。

composite <color1> <color2>

color1 のアルファ値を利用して、 color2 から color1 を合成します。この関数は次の関数と同じです。

例:

color1 + color2*((255. - color1.alpha)/255.)

3D ノイズ関数

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