Root (Shader)

Introduced

5.0

Description

Returns the root of the shader tree, which may be a Material, Light, or Camera.

C# Syntax

// get accessor
Object rtn = Shader.Root;

Examples

JScript Example

/*
   This example shows how to find the material from a shader even when the
   shader is buried deeply in a shader tree.
*/
// Create an object with a texture shader
newscene(null,false);
var root = Application.ActiveProject.ActiveScene.Root;
var model = root.AddModel();
model.name = "MyModel";
var sphere = model.AddGeometry( "Sphere", "MeshSurface" );
var grid = model.AddGeometry( "Grid", "MeshSurface" );

var col = XSIFactory.CreateObject("XSI.Collection");
col.add(sphere);
col.add(grid);

BlendInPresets( "Image", col, false, false );
CreateProjection( col, siTxtSpherical, siTxtDefaultSpherical, "TxtSupport", "TxtProjection" );

var filename = Application.InstallationPath( siFactoryPath ) + 
   "\\Data\\XSI_SAMPLES\\Pictures\\xsilogo.jpg";

var imageclip = CreateImageClip( filename, "XSILogo" );

// Set up the texture space on texture shader
var mat = sphere.Material;
var textureshader = sphere.Material.CurrentTexture;

// Set the texturespace parameter
textureshader.parameters("tspace_id").Value = "TxtProjection";
textureshader.parameters("tex").Connect(imageclip);

// Select the texture shader
SelectObj("MyModel.sphere.Scene_Material.Phong.ambient_blend.Image", null, null);

// Get the sphere from the selection list
var obj = selection(0);

// Set up the sharee material with a specific txtuv for the sphere.
if ( obj.isclassof( siShaderID ) )
{
   var tspace_id = obj.parameters("tspace_id");
   var tex = obj.parameters("tex");

   if ( tspace_id && tex )
   {
       // If the object has a texture shader then change the
       // material hardware display settings to explicitly
       // track the shader's texture uvws and image clip

       // Get material from shader
       var mat = obj.Root;

       // A material may be used by many objects, just pick the first one
       // with a uvw and image clip setting
       var eUsedBy = new Enumerator(mat.usedby);

       for ( ; !eUsedBy.atEnd(); eUsedBy.moveNext() )
       {
          var curObj = eUsedBy.item();

          var uvw = tspace_id.getinstancevalue( curObj, true );
          var imageclip = tex.source;

          if ( uvw && imageclip )
          {
              mat.parameters("TextureSel").value = 3; // Specific TxtUVW & ImageClip
              mat.parameters("UV").setinstancevalue( curObj, uvw );
              mat.parameters("ImageClipName").value = imageclip.name;
          }
       }
   }
}


// Log the hardware display settings for txtuvw on the scene material
mat = ActiveSceneRoot.Material;
var eUsedBy = new Enumerator(mat.usedby);

var uvparam = mat.parameters("UV");

for ( ; !eUsedBy.atEnd(); eUsedBy.moveNext() )
{
   var curObj = eUsedBy.item();

   var uvwObj = uvparam.getinstancevalue( curObj, true );
   var uvwval = "\"\"";

   if (uvwObj!=null)
       uvwval = uvwObj.fullname;

   logmessage( mat.fullname + " " + curObj.fullname + " " + uvwval );

}
//INFO : Scene_Material MyModel.sphere MyModel.sphere.polymsh.cls.Texture_Coordinates_AUTO.TxtProjection
//INFO : Scene_Material MyModel.grid ""


Autodesk Softimage v7.5