v4.0
コンテナ(シェーダ)に属する新しいTextureLayerを作成します。
テクスチャレイヤは、シェーダおよびマテリアルの上のテクスチャエフェクトのレイヤリングを簡略化するためのオブジェクトです。各レイヤごとに、その特性(カラー、ミキシングモード、ウェイトなど)を説明するプロパティのセットがあり、制御するシェーダポートに対する影響の度合いを指定できます。コンテナの下にレイヤが表示される順序はレイヤ化が適用された順序であり、「N 色をミックス」したシェーダ ノードが動作する場合と似ています。 テクスチャレイヤポートのオブジェクト(TextureLayer.AddTextureLayerPort コマンドを参照)はレイヤに所有され、レイヤが影響するシェーダポートを指定するために使用されます。
ヒント:Materialのテクスチャレイヤコンテナもあり、この場合も同じ関連メソッドのセットを持ちます。
TextureLayer Shader.CreateTextureLayer( String in_name, Boolean in_bAfter, Object in_varRefLayer ); |
Shader.CreateTextureLayer( [Name], [After], [Reference] ); |
パラメータ | タイプ | 説明 |
---|---|---|
Name | String |
新しいの名前 TextureLayer デフォルト値:"Layer" |
After | Boolean |
True の場合は、新しいテクスチャ レイヤはリファレンス レイヤの後に挿入されます。 False の場合は、リファレンス レイヤの前に挿入されます。 リファレンス レイヤがないときは、True の場合はコンテナのリストの最後に、False の場合はリストの最初に追加されます。
デフォルト値: True |
Reference | TextureLayerまたはString | 新しく追加されたレイヤが配置されるスタック内の位置を示す、リファレンステクスチャレイヤ。レイヤはリファレンス レイヤの前後に挿入されます。 指定しない場合には、新しいレイヤはこの後に続く引数に応じて先頭または末尾に追加されます。 |
/* This JScript example shows creating texture layers on a shader, plus enumerating and removing them. */ oRoot = ActiveProject.ActiveScene.Root; oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" ); oMat = oSph.AddMaterial( "Phong" ); oPhong = oMat.Shaders(0); // Add a layer at the end (since there are no others the "After" // flag is irrelevant). oLayers = new Array(3); oLayers[0] = oPhong.CreateTextureLayer( "B", true ); // Add another layer before the other one. oLayers[1] = oPhong.CreateTextureLayer( "A", false, oLayers[0] ); // Create a third layer at the very start. oLayers[2] = oPhong.CreateTextureLayer( "base", false ); Application.LogMessage( "Created " + oPhong.TextureLayers.count + " layers." ); for ( i = 0; i < oPhong.TextureLayers.Count; i++ ) { oLayer = oPhong.TextureLayers(i); Application.LogMessage( (i+1) + ": " + oLayer ); } oPhong.RemoveTextureLayer( oLayers[1] ); oPhong.RemoveTextureLayer( oPhong.FullName + "." + oLayers[2].Name ); count = oPhong.TextureLayers.Count; Application.LogMessage( "Only " + count + " remains after removal." ); for ( i = 0; i < count; i++ ) { Application.LogMessage( (i+1) + ": " + oPhong.TextureLayers.Item(i) ); } // This example should log something like: //INFO : "Created 3 layers." //INFO : "1: sphere.Material.Phong.base" //INFO : "2: sphere.Material.Phong.A" //INFO : "3: sphere.Material.Phong.B" //INFO : "Only 1 remains after removal." //INFO : "1: sphere.Material.Phong.B" |
' ' This VBScript example shows creating texture layers on ' a shader, plus enumerating and removing them. ' set oRoot = ActiveProject.ActiveScene.Root set oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" ) set oMat = oSph.AddMaterial( "Phong" ) set oPhong = oMat.Shaders(0) ' Add a layer at the end (since there are no others the "After" ' flag is irrelevant). dim oLayers(2) set oLayers(0) = oPhong.CreateTextureLayer( "B", True ) ' Add another layer before the other one. set oLayers(1) = oPhong.CreateTextureLayer( "A", False, oLayers(0) ) ' Create a third layer at the very start. set oLayers(2) = oPhong.CreateTextureLayer( "base", False ) LogMessage "Created " & oPhong.TextureLayers.Count & " layers." i = 1 for each oLayer in oPhong.TextureLayers LogMessage i & ": " & oLayer i = i + 1 next oPhong.RemoveTextureLayer oLayers(1) oPhong.RemoveTextureLayer oPhong.FullName & "." & oLayers(2).Name count = oPhong.TextureLayers.Count LogMessage "Only " & count & " remains after removal." for i = 0 to count - 1 LogMessage i + 1 & ": " & oPhong.TextureLayers.Item(i) next ' This example should log something like: 'INFO : "Created 3 layers." 'INFO : "1: sphere.Material.Phong.base" 'INFO : "2: sphere.Material.Phong.A" 'INFO : "3: sphere.Material.Phong.B" 'INFO : "Only 1 remains after removal." 'INFO : "1: sphere.Material.Phong.B" |