v4.0
テクスチャレイヤにTextureLayerPortオブジェクト(シェーダ接続)を追加します。これらは、レイヤの制御対象のシェーダポートを示します。
レイヤに、現在レイヤが属していないコンテナのポートが追加された場合は、これらのコンテナにレイヤが追加されます(レイヤの順序関係を維持するために、スタック内の適切な位置に追加されます)。たとえば、レンダツリーに
Phong と Lambert の両方のシェーダがあるとします。Phong にはすでにレイヤ"Dirt"がありますが、このレイヤは
Lambert と共有されていません。ターゲットの"Lambert.diffuse"に対してTextureLayer.AddTextureLayerPortが呼び出されると、そのシェーダに対してShader.AddSharedTextureLayerを明示的に呼び出さなくても、Lambert
の下のレイヤリストにレイヤ"Dirt"が追加されます。
oReturn = TextureLayer.AddTextureLayerPort( Target ); |
パラメータ | タイプ | 詳細 |
---|---|---|
Target | ParameterまたはString | テクスチャレイヤポート接続(このレイヤで制御されるポート接続)が追加されるターゲット(シェーダまたはマテリアルのポートである必要があります)のパラメータ。注:現在レイヤがネストされていない(有効な)コンテナにターゲットが指定された場合は、そのコンテナにレイヤが追加されます。 |
// This example shows creation of texture layer // ports, plus enumerating them. oRoot = ActiveProject.ActiveScene.Root; oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" ); oMat = oSph.AddMaterial( "Phong" ); oPhong = oMat.Shaders(0); oParam = oPhong.parameters( "specular" ); oFractal = oParam.ConnectFromPreset( "Fractal", siTextureShaderFamily ); // Add a layer at the end. oLayer = oPhong.CreateTextureLayer( "DirtLayer" ); // Add some texture layer port connections on this layer. oPorts = new Array(3); oPorts[0] = oLayer.AddTextureLayerPort( oPhong.parameters( "ambient" ) ); oPorts[1] = oLayer.AddTextureLayerPort( oPhong.parameters( "diffuse" ) ); // The next line shows adding a port which is on a container that the layer // is currently not part of -- it will be added to that container. oPorts[2] = oLayer.AddTextureLayerPort( oFractal.parameters( "color1" ) ); Application.LogMessage( "Created " + oLayer.TextureLayerPorts.count + " ports." ); for ( i = 0; i < oLayer.TextureLayerPorts.count; i++ ) { oPort = oLayer.TextureLayerPorts(i); Application.LogMessage( (i+1) + ": " + oPort ); } // This example should log something like: //INFO : "Created 3 ports." //INFO : "1: sphere.Material.Phong.DirtLayer.ambient" //INFO : "2: sphere.Material.Phong.DirtLayer.diffuse" //INFO : "3: sphere.Material.Phong.DirtLayer.color1" |
' This example shows creation of texture layer ' ports, plus enumerating them. set oRoot = ActiveProject.ActiveScene.Root set oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" ) set oMat = oSph.AddMaterial( "Phong" ) set oPhong = oMat.Shaders(0) set oParam = oPhong.parameters( "specular" ) set oFractal = oParam.ConnectFromPreset( "Fractal", siTextureShaderFamily ) ' Add a layer at the end. set oLayer = oPhong.CreateTextureLayer( "DirtLayer" ) ' Add some texture layer port connections on this layer. dim oPorts(2) set oPorts(0) = oLayer.AddTextureLayerPort( oPhong.parameters( "ambient" ) ) set oPorts(1) = oLayer.AddTextureLayerPort( oPhong.parameters( "diffuse" ) ) ' The next line shows adding a port which is on a container that the layer ' is currently not part of -- it will be added to that container. set oPorts(2) = oLayer.AddTextureLayerPort( oFractal.parameters( "color1" ) ) logmessage "Created " & oLayer.TextureLayerPorts.count & " ports." i = 1 for each oPort in oLayer.TextureLayerPorts logmessage i & ": " & oPort i = i + 1 next ' This example should log something like: 'INFO : "Created 3 ports." 'INFO : "1: sphere.Material.Phong.DirtLayer.ambient" 'INFO : "2: sphere.Material.Phong.DirtLayer.diffuse" 'INFO : "3: sphere.Material.Phong.DirtLayer.color1" |