Colorpicker UI コントロール

colorpicker コントロールを使用して、3ds Max カラー選択見本をロールアウト上に配置します。ユーザは、カラー見本をクリックして、カラー セレクタダイアログ ボックスを表示できます。このダイアログ ボックスからカラーをドラッグしたり、逆にダイアログ ボックスにカラーをドラッグすることもできます。

構文は次のようになります。

colorpicker <name> [ <caption> ] [color:<color>] [alpha:<boolean>] [fieldWidth:<number>] [height:<number>] [modal:<boolean>] [title:<string>] [toolTip:<string>] \
[colorContext:{#none | #sceneSurface | #sceneLight | #data | #sRGB | #ui}] \
[notifyAfterAccept:<boolean>]

colorpicker 項目の位置合わせの既定値は、#left です。

例:

   rollout change_wirecolor "Object Color Changer"
   (
     colorpicker theColor "Wireframe color:" color:[0,0,255] modal:false
     on theColor changed new_col do selection.wirecolor = new_col
   )
   createDialog change_wirecolor

この例では、カラー ピッカーが modal 以外に設定されています。つまり、カラー値を変更すると選択されているすべてのオブジェクトのワイヤフレーム カラーが即座にまた相互作用的に変更されます。modal:true に設定すると、ビューポートでフィードバックしたり[OK]ボタンを使って結果を割り当てたりすることなく、カラーを調整することができます。

パラメータ:

color:

見本の初期カラーです。既定値は青です。

title:

[カラー セレクタ](Color Selector)ダイアログ ボックスに表示されるタイトルです。既定値は、「選択カラー」です。

fieldWidth:

見本のピクセル単位の幅です。既定値は 40 です。

height:

見本のピクセル単位の高さです。既定値は 16 です。

modal:

既定でカラー ピッカーは、3ds Max にキー ストロークを渡さないようにするモーダルとして宣言されます。キーワード引数 modal:false に設定した場合、カラー ピッカーによりショートカットが使用可能になります。

alpha:

true に設定した場合、カラー見本をクリックすると alpha のサポートしたカラー ピッカーが表示されます。既定は "" です。falseカラー見本が #point4#acolor パラメータと結びついている場合、このパラメータは自動的に true に設定されます。3ds Max 6 以降で使用可能です。

toolTip:

カラーピッカーのツールチップに使用するテキストを提供します。指定しない場合、ツールチップは表示されません。3ds Max 2017 以降で使用可能です。

colorContext

colorContext の既定値は #none です。colorContext は、カラー ピッカーのカラー コンテキストを指定します。オプションの意味は次のとおりです。

#none - このカラー/テクスチャのコンテキストは指定されていません。

#sceneSurface - このカラー/テクスチャのコンテキストは、サーフェスのカラーを定義するシーンで使用されます。エネルギー保存の法則が適用され、リニア RGB 値を 0.0 から 1.0 の範囲になるように効果的に制限します。

#sceneLight - このカラー/テクスチャのコンテキストは、ライトのカラーを定義するシーンで使用されます。エネルギー保存の法則は適用されず、RGB に指定した任意の値が有効になります。

#data - このカラー/テクスチャのコンテキストは、法線や吸収係数などの純粋なデータとして使用されます。

#sRGB, #ui - このカラー/テクスチャのコンテキストは、sRGB (IEC 61966-2-1)で定義されている UI で使用されます。オペレーティング システムの ICM 変換をモニタするための暗黙的な sRGB 以外に、追加の変換は行われません。

例:

rollout test "test"
(
    colorpicker cp1 "cp1" notifyAfterAccept:true title:"colorContext #none"
    colorpicker cp2 "cp2" title:"colorContext #none"
    colorpicker cp3 "cp3" colorContext:#sceneSurface title:"colorContext #sceneSurface" 
    colorpicker cp4 "cp4" colorContext:#sceneLight  title:"colorContext #sceneLight"
    colorpicker cp5 "cp5" colorContext:#data  title:"colorContext #data"
    colorpicker cp6 "cp6" colorContext:#ui title:"colorContext #ui"
    on cp1 changed val do format "cp1 changed value: %\n" val
    on cp2 changed val do format "cp2 changed value: %\n" val
    on cp3 changed val do format "cp3 changed value: %\n" val
    on cp4 changed val do format "cp4 changed value: %\n" val
    on cp5 changed val do format "cp5 changed value: %\n" val
    on cp6 changed val do format "cp6 changed value: %\n" val
)
createdialog test 
test.cp1.color = orange 
test.cp2.color = orange 
test.cp3.color = orange 
test.cp4.color = orange 
test.cp5.color = orange 
test.cp6.color = orange 

いずれの場合も、スクリプトを使用してカラーを変更してもハンドラは呼び出されないことに注意してください。

6 つのカラー ピッカーの視覚的な違いに注目してください。最初の 4 つは、カラーにカラー補正を適用します。

カラー セレクタを開く場合、異なる colorContext に対してフロート スピナーの異なるクランプが適用されることに注意してください。

notifyAfterAccept:<bool>

true として指定すると、変更されたハンドラは、カラー ピッカーが閉じられていて、ユーザが[キャンセル]ではなく[OK]をクリックしたときにのみ、1 回呼び出されます。指定しない、または false として指定すると、ユーザがカラー ピッカーでインタラクティブに変更を行うときに、変更されたハンドラが呼び出されます。

プロパティ

<colorpicker>.color Color

現在の見本カラー

<colorpicker>.alpha Boolean

true に設定した場合、カラー見本をクリックすると alpha のサポートしたカラー ピッカーが表示されます。(以前は、3ds Max 6 ではコンストラクション パラメータとしてのみ利用可能でした)。

イベント

on <colorpicker> changed <arg> do <expr>

この見本に対して開いている[カラー セレクタ](Color Selector)ダイアログ ボックス内の新規のカラーを選択するか、新規のカラーをドロップしたときに呼び出されます。<arg> 引数には新しいカラーが含まれます。