MultiOutputChannelTexmapToTexmap : textureMap
MultiOutputChannelTexmapToTexmap - superclass: textureMap; super-superclass:material - 3:1 - classID: #(-1989217540, 1153266751)
3ds Max 2011 以降で使用可能です。このテクスチャ マップは、MetaSL シェーダの出力を切り替えて、1 つ以上の出力を得るために使用されます。
コンストラクタ:
MultiOutputChannelTexmapToTexmap...
プロパティ:
<MultiOutputChannelTexmapToTexmap>.numInputs Integer default: 1 -- integer;
sourceMap に検出される入力の数が含まれます。
キュー内のジョブの数を返します。
<MultiOutputChannelTexmapToTexmap>.outputChannelIndex Integer default: 1 -- integer; Output_Channel_Index
出力チャネル インデックスを取得/設定します。
<MultiOutputChannelTexmapToTexmap>.sourceMap UndefinedClass default: undefined -- texturemap; Source_Map
ソース マップを取得/設定します。
MultiOutputChannelTexmapToTexmap インタフェース:
Interface:iMultiOutputConsumer
プロパティ:
.numInputs : integer : Read
sourceMap に検出される入力の数が含まれます。
キュー内のジョブの数を返します。
メソッド:
<bool>SetOutputToInput <index>input_index <maxObject>output_rtarg <index>output_index
2 番目の引数で指定されるシェーダの 3 番目の引数により指定されるインデックスを伴う出力を、1 番目の引数で指定される入力に設定します。
<maxObject>GetOutputRefTargetFromInput <index>input_index
インデックス付き入力のリファレンス ターゲットを返します。
<index>GetOutputIndexFromInput <index>input_index
インデックス付き入力の出力ターゲットを返します。
<bool>CanAssignOutputToInput <index>input_index <maxObject>output_rtarg <index>output_index
1 番目の引数により指定される入力を、2 番目の引数により与えられるシェーダの 3 番目の引数により指定されるインデックスを伴う出力に設定することが可能である場合には
true を、そうでない場合には false を返します。
<String by value>GetInputName <index>input_index
インデックス付き入力の名前を返します。
<String by value>GetInputLocalizedName <index>input_index
インデックス付き入力のローカライズされた名前を返します。
例:
|
複数出力の MetaSL シェーダと組み合わせてこのシェーダを使用する例を次に示します。
|
c=Illumination_Phong() --create an instance of a MetaSL shader
--> Illumination_Phong:Illumination Phong
showinterfaces c --show the interfaces of the MetaSL shader
--> Interface: IMtlRender_Compability_MtlBase
--> Properties:
--> Methods:
--> Actions:
--> Interface: IMaterialBrowseEntryInfoInterface
--> Properties:
--> Methods:
--> Actions:
--> Interface: iMultipleOutputChannels
--> Properties:
--> .numIMultipleOutputChannels : integer : Read
--> Methods:
--> <TSTR by value>getIMultipleOutputChannelLocalizedName <index>index
--> getIMultipleOutputChannelLocalizedName - no automatic redraw after invoked
--> <TSTR by value>getIMultipleOutputChannelName <index>index
--> getIMultipleOutputChannelName - no automatic redraw after invoked
--> Actions:
--> Interface: iMultiOutputConsumer
--> Properties:
--> .numInputs : integer : Read
--> Methods:
--> <bool>SetOutputToInput <index>input_index <maxObject>output_rtarg <index>output_index
--> <maxObject>GetOutputRefTargetFromInput <index>input_index
--> <index>GetOutputIndexFromInput <index>input_index
--> <bool>CanAssignOutputToInput <index>input_index <maxObject>output_rtarg <index>output_index
--> <TSTR by value>GetInputName <index>input_index
--> GetInputName - no automatic redraw after invoked
--> <TSTR by value>GetInputLocalizedName <index>input_index
--> GetInputLocalizedName - no automatic redraw after invoked
--> Actions:
--> OK
getpropnames c
--> #(#Illumination_phong_Phen, #diffuse_color, #diffuse_scalar, #specular_color, #specular_scalar, #specular_shininess, #normalPhen, #Connection_struct__0000__Illumination_phong_Phen, #diffuse_color_connected, #diffuse_color_shader, #diffuse_color_paramName, #diffuse_scalar_connected, #diffuse_scalar_shader, #diffuse_scalar_paramName, #specular_color_connected, #specular_color_shader, #specular_color_paramName, #specular_scalar_connected, #specular_scalar_shader, #specular_scalar_paramName, ...)
--Get the number of output channels of the MetaSL shader:
n_outputs = c.numIMultipleOutputChannels
--> 4
--Print the localized and internal names of the output channels of
--the MetaSL shader :
for i = 1 to n_outputs do format "% : %\n" \
(c.getIMultipleOutputChannelLocalizedName i) \
(c.getIMultipleOutputChannelName i)
--> result : result
--> sum : sum
--> diffuse : diffuse
--> specular : specular
--> OK
--Get the number of inputs of the MetaSL shader:
n_inputs = c.numInputs
--> 6
--Print the localized and internal input names of the MetaSL shader:
for i = 1 to n_inputs do
format "% : %\n" (c.GetInputLocalizedName i) (c.GetInputName i)
--> Diffuse Color : Diffuse Color
--> Diffuse Float : Diffuse Float
--> Specular Color : Specular Color
--> Specular Float : Specular Float
--> Specular Shininess : Specular Shininess
--> Normal : Normal
--> OK
--Create an instance of the MultiOuputChannelTexmapToTexmap shader,
--using the MetaSL shader as source and set the index of the output
--channel to 1:
mo = MultiOutputChannelTexmapToTexmap sourceMap:c outputChannelIndex:1
--> MultiOutputChannelTexmapToTexmap:MultiOutputChannelTexmapToTexmap
--Check the property names of the new shader:
getpropnames mo
--> #(#sourceMap, #outputChannelIndex, #numInputs)
--If the source map and index are not specified in the constructor as
--we did above, they can be assigned to the respective properties:
mo.sourcemap = c
--> Illumination_Phong:Illumination Phong
mo.outputChannelIndex = 1
--> 1
--Get the number of the inputs of the new shader:
n_inputs = mo.numInputs
--> 1
--Print the inputs' localized and internal name, ref.target and index:
for i = 1 to n_inputs do
format "% : % : % : %\n" (c.GetInputLocalizedName i) \
(c.GetInputName i) (mo.GetOutputRefTargetFromInput i) \
(mo.GetOutputIndexFromInput i)
--> Diffuse Color : Diffuse Color : Illumination_Phong:Illumination Phong : 1
--> OK
--Create a new standard material with the new map as diffuse map
--and show it in the viewport:
m = standard diffusemap:mo showInViewport:true
--> Standardmaterial:Standard
--Create a teapot with this material assigned and non-real-world UVs:
teapot material:m realWorldMapSize:off
--> $Teapot:Teapot001 @ [0.000000,0.000000,0.000000]
--Load the shaders into the Material Editor's slots 1,2 and 3:
meditmaterials[1]=mo
--> MultiOutputChannelTexmapToTexmap:MultiOutputChannelTexmapToTexmap
meditmaterials[2]=c
--> Illumination_Phong:Illumination Phong
meditmaterials[3]=m
--> Standardmaterial:Standard
--Set output 2 of the MetaSL shader to input 1:
mo.SetOutputToInput 1 c 2
--> true
|