Material.CreateTextureLayer

導入

v4.0

詳細

コンテナ(マテリアル)に属する新しいテクスチャレイヤを作成します。

テクスチャレイヤは、シェーダおよびマテリアルの上のテクスチャエフェクトのレイヤリングを簡略化するためのオブジェクトです。各レイヤごとに、その特性(カラー、ミキシングモード、ウェイトなど)を説明するプロパティのセットがあり、制御するシェーダポートに対する影響の度合いを指定できます。コンテナの下にレイヤが表示される順序はレイヤ化が適用された順序であり、「N 色をミックス」したシェーダ ノードが動作する場合と似ています。 テクスチャレイヤポートのオブジェクト(TextureLayer.AddTextureLayerPortコマンドを参照)はレイヤに所有され、レイヤが影響するシェーダポートを指定するために使用されます。

Shaderのテクスチャレイヤコンテナもあり、この場合も同じ関連メソッドのセットを持ちます。

スクリプト 構文

oReturn = Material.CreateTextureLayer( [Name], [After], [Reference] );

戻り値

TextureLayer

パラメータ

パラメータ タイプ 詳細
Name String 新しいの名前TextureLayer

デフォルト値:"Layer"

Boolean True の場合は、新しいテクスチャ レイヤはリファレンス レイヤの後に挿入されます。 False の場合は、リファレンス レイヤの前に挿入されます。 リファレンス レイヤがないときは、True の場合はコンテナのリストの最後に、False の場合はリストの最初に追加されます。

デフォルト値: True

リファレンス TextureLayerまたはString 新しく追加されたレイヤが配置されるスタック内の位置を示す、リファレンステクスチャレイヤ。レイヤはリファレンス レイヤの前後に挿入されます。 指定しない場合には、新しいレイヤはこの後に続く引数に応じて先頭または末尾に追加されます。

1. JScript の例

/*
        This example shows how to create texture layers on
        a material, plus enumerating and removing them.
*/
oRoot = ActiveProject.ActiveScene.Root;
oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" );
oMat = oSph.AddMaterial( "Phong" );
// Add a layer at the end (since there are no others the "After"
// flag is irrelevant).
oLayers = new Array(3);
oLayers[0] = oMat.CreateTextureLayer( "B", true );
// Add another layer before the other one.
oLayers[1] = oMat.CreateTextureLayer( "A", false, oLayers[0] );
// Create a third layer at the very start.
oLayers[2] = oMat.CreateTextureLayer( "base", false );
Application.LogMessage( "Created " + oMat.TextureLayers.Count + " layers." );
for ( i = 0; i < oMat.TextureLayers.Count; i++ )
{
        oLayer = oMat.TextureLayers(i);
        Application.LogMessage( (i+1) + ": " + oLayer );
}
oMat.RemoveTextureLayer( oLayers[1] );
oMat.RemoveTextureLayer( oMat.FullName + "." + oLayers[2].Name );
count = oMat.TextureLayers.Count;
Application.LogMessage( "Only " + count + " remains after removal." );
for ( i = 0; i < count; i++ )
{
        Application.LogMessage( (i+1) + ": " + oMat.TextureLayers.Item(i) );
}
// This example should log something like:
//INFO : "Created 3 layers."
//INFO : "1: sphere.Material.base"
//INFO : "2: sphere.Material.A"
//INFO : "3: sphere.Material.B"
//INFO : "Only 1 remains after removal."
//INFO : "1: sphere.Material.B"

2. VBScript の例

'
' This example shows how to create texture layers on
' a material, plus enumerating and removing them.
'
set oRoot = ActiveProject.ActiveScene.Root
set oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" )
set oMat = oSph.AddMaterial( "Phong" )
' Add a layer at the end (since there are no others the "After"
' flag is irrelevant).
dim oLayers(2)
set oLayers(0) = oMat.CreateTextureLayer( "B", True )
' Add another layer before the other one.
set oLayers(1) = oMat.CreateTextureLayer( "A", False, oLayers(0) )
' Create a third layer at the very start.
set oLayers(2) = oMat.CreateTextureLayer( "base", False )
Application.LogMessage "Created " & oMat.TextureLayers.Count & " layers."
i = 1
for each oLayer in oMat.TextureLayers
        Application.LogMessage i & ": " & oLayer
        i = i + 1
next
oMat.RemoveTextureLayer oLayers(1)
oMat.RemoveTextureLayer oMat.FullName & "." & oLayers(2).Name
count = oMat.TextureLayers.Count
Application.LogMessage "Only " & count & " remains after removal."
for i = 0 to count - 1
        Application.LogMessage i + 1 & ": " & oMat.TextureLayers.Item(i)
next
' This example should log something like:
'INFO : "Created 3 layers."
'INFO : "1: sphere.Material.base"
'INFO : "2: sphere.Material.A"
'INFO : "3: sphere.Material.B"
'INFO : "Only 1 remains after removal."
'INFO : "1: sphere.Material.B"

関連項目

AddTextureLayer Material.AddSharedTextureLayer Shader.CreateTextureLayer Shader.AddSharedTextureLayer