PPGLayout.AddColor operator

導入

v4.0

詳細

このメソッドはPPGLayout.AddItemに似ていますが、レイアウトにカラーウィジェットを追加する場合に役立ちます。Colorウィジェットには、siControlRGBA と siControlRGB の 2 つがあります。このコントロールでは、単一のパラメータではなく、カラーの各「チャンネル」ごとに個別のパラメータを読み書きします。

CustomPropertyの RGBA カラーコントロールを作成するには、まず最初に siDouble または siFloat パラメータをコントロールに 4 つ追加します(例:"MyR"、"MyG"、"MyB"、"MyA")。命名方式は重要ではありませんが、パラメータは連続している必要があります。値は正規化形式で格納されるため、このパラメータの UI Range は 0~1 である必要があります。ただし、通常のカラースペース外のカラーに対応させる場合は、さらに広い実際の Range を使用できます(Parameter.SuggestedMaxおよびParameter.Maxを参照)。

siDouble パラメータのデフォルトコントロールは siControlNumber ですが、このメソッドを呼び出して1 番目のパラメータの名前(例:"MyR")を指定することで、代わりにカラーウィジェットを表示できます。オブジェクトモデルからカラー値を読み取るには、単純に 4 つのパラメータの値を参照します。たとえば、"MyG"にはカラーの正規化された緑のコンポーネントが含まれます。

注:Shader では、カラーはネイティブの「強力な」型として直接サポートされます。したがって、siDoubleやsiFloat の複数パラメータではなく、単一のパラメータ"Color"が使用されます。

スクリプト 構文

oReturn = PPGLayout.AddColor( RedComponentParamName, [Label], [Alpha] );

戻り値

PPGItem

パラメータ

パラメータ タイプ 詳細
RedComponentParamName String カラーの Redコンポーネントを表すParameterのスクリプト名。Redコンポーネントの後に続くパラメータが自動的に使用されるため、Green、Blue、および Alpha(オプション)の各パラメータの名前を指定する必要はありません。
Label String カラーウィジェットの左側に表示されるテキストを指定します。指定しない場合には、パラメータの名前(SIObject.Nameを参照)または赤コンポーネントのパラメータのParameter.ScriptNameが代わりに表示されます。
アルファ Boolean カラーにアルファチャンネルを含めるかどうかを指定します。この引数によって、siControlRGBA または siControlRBG が作成されるかどうかが決まります。

デフォルト値: false

JScript の例

/*
        Proxy Parameters are an useful way to centralize parameters from
        different objects on the same property, or even to build a simplified
        version of a property page.
        This example demonstrates creation of a custom property set
        that only shows a few items of the Shader that it controls,
        but maintains a pleasing layout.
*/
NewScene( null, false ) ;
var oSphere = ActiveSceneRoot.AddGeometry( "Sphere", "MeshSurface" ) ;
oSphere.AddMaterial( "Phong"  );
var oPhongShader = oSphere.Material.Shaders(0) ;
// This is a Boolean for enabling diffuse
var oDiffuseEnable = oPhongShader.Parameters( "diffuse_inuse" ) ;
// These are CompoundParameters, each with R,G,B sub-parameters
var oAmbientParam = oPhongShader.Parameters( "ambient" ) ;
var oDiffuseParam = oPhongShader.Parameters( "diffuse" ) ;
var oCustomProperty = oSphere.AddProperty("CustomProperty",false,"Proxies");
// We specify a name to avoid having a long one like "sphere_Material_Phong_diffuse_inuse"
oCustomProperty.AddProxyParameter( oDiffuseEnable, "Enable", "Enable" );
oCustomProperty.AddProxyParameter( oDiffuseParam.Parameters("red"), "Diffuse", "Diffuse" );
oCustomProperty.AddProxyParameter( oDiffuseParam.Parameters("green"));
oCustomProperty.AddProxyParameter( oDiffuseParam.Parameters("blue"));
oCustomProperty.AddProxyParameter( oAmbientParam.Parameters("red"), "Ambient", "Ambient" );
oCustomProperty.AddProxyParameter( oAmbientParam.Parameters("green"));
oCustomProperty.AddProxyParameter( oAmbientParam.Parameters("blue"));
// If we inspect the object now we would see 6 separate sliders,
// each controlling a different component of the colors
// We can create a custom layout to clean up the display
var oLayout = oCustomProperty.PPGLayout
oLayout.AddGroup( "Phong Diffuse" )
        oLayout.AddItem( "Enable" ) ;
        // Just for fun, show the ambient before the diffuse, which
        // is the opposite of the normal Phong Property Page
        oLayout.AddColor( "Ambient", "Ambient", false ) ;
        oLayout.AddColor( "Diffuse", "Diffuse", false ) ;
oLayout.EndGroup() ;
oLayout.Logic = Enable_OnChanged.toString() ;
oLayout.Language = "JScript" ;
// Show both dialogs.  You will see that both items
// are identical.
InspectObj ( oCustomProperty, null, null, siLock ) ;
InspectObj ( oPhongShader, null, null, siLock ) ;
function Enable_OnChanged()
{
        // A little Property Page event code to properly
        // grey out the color controls if the Disable checkbox is
        // clicked
        bEnable = PPG.Enable.Value ;
        // To disable the color control we just disable the proxy
        // parameter representing the "red" component
        PPG.Ambient.Enable( bEnable ) ;
        PPG.Diffuse.Enable( bEnable ) ; 
}

関連項目

PPGLayout.AddItem PPGItem.Label Parameter.ScriptName siPPGControlType