#include <xsi_material.h>
Class Description
The
Material object represents a material property of a
SceneItem object.
You can create a material with SceneItem::AddMaterial.
- Note:
- If you get a material from a
Material
Library, use ProjectItem::GetParent,
not ProjectItem::GetModel,
to get the
Library object (ProjectItem::GetModel
returns an invalid
Model).
- See also:
- Scene::GetActiveMaterialLibrary(),
OGLMaterial
- Example:
using namespace XSI;
Application app;
Model root = app.GetActiveSceneRoot();
X3DObject myCube;
root.AddGeometry( L"Cube",L"MeshSurface",L"" ,myCube );
Material myMaterial;
myCube.AddMaterial(L"Phong",false,L"",myMaterial);
app.LogMessage( CString(L"The material: ") + myMaterial.GetFullName() );
List of all
members.
Constructor & Destructor Documentation
Constructs a
Material object from a
CRef object.
- Parameters:
-
in_ref |
A reference to a material. |
Member Function Documentation
bool IsA |
( |
siClassID |
in_ClassID |
) |
const [virtual] |
Returns True if this object supports the functionality of a
specified class. For example, a
Material is a type of
Property, so a
Material object supports
Property functionality.
- Parameters:
-
in_ClassID |
Test if this object supports this class. |
- Returns:
- True if this object supports the specified class, and false
otherwise.
Reimplemented from Property.
Returns the class ID for this object.
- Returns:
- The class ID.
Reimplemented from Property.
Assigns a
Material object to an existing
Material object.
- Parameters:
-
in_obj |
A
Material object to be copied into this object. |
- Returns:
- The reinitialized
Material object.
Assigns a
CRef to this material. The
Material object is cleared if the
CRef is not a reference to an object that supports the
Material class.
- Parameters:
-
in_ref |
A reference to an object that supports the
Material class. |
- Returns:
- The reinitialized
Material object.
Reimplemented from Property.
Returns the shaders connected to this material.
- Returns:
- An array of references to
Shader objects.
Returns the image clips connected to the material.
- Returns:
- An array of references to
ImageClip objects.
- Since:
- 4.0
Returns the
OGLMaterial for this material. The
OGLMaterial is a read-only object that holds the material
rendering information used by OpenGL.
Returns the ClusterProperty
containing the current UV coordinages used to display the texture
in OpenGL.
Returns the current image clip used for OpenGL display.
- Since:
- 4.0
Texture GetCurrentTexture |
( |
|
) |
const |
Returns the texture using the default UV coordinates used in
OpenGL.
Creates a new texture layer belonging to the container (the
material).
- Parameters:
-
in_strName |
The name of new texture layer. |
in_bAfter |
True to insert the layer after the reference layer
(in_refLayer), and False to insert the layer before the reference
layer. If there is no reference layer, then True adds the layer to
the end of the list, and False adds the layer to the start of the
list. |
in_refLayer |
The reference texture layer. Used to indicate where the new
layer is inserted in the list. |
- Returns:
- The new texture layer.
- Since:
- 4.0
Adds an existing texture layer to the container. The layer
already belongs to at least one other texture layer container
(either a
Shader or a
Material).
- Parameters:
-
in_layer |
The texture layer to add to this container. |
in_bAfter |
True to insert the layer after the reference layer
(in_refLayer), and False to insert the layer before the reference
layer. If there is no reference layer, then True adds the layer to
the end of the list, and False adds the layer to the start of the
list. |
in_refLayer |
The reference texture layer. Used to indicate where the new
layer is inserted in the list. |
- Returns:
-
CStatus::OK if successful
-
CStatus::Fail if the texture layer could not be created.
- Since:
- 4.0
Returns the texture layers owned by the material.
- Returns:
- An array of references to
TextureLayer objects.
- Since:
- 4.0
Removes a texture layer from the container. If this container is
the only owner of the layer, then the layer is deleted from the
scene. Otherwise, the layer is removed from this container
only.
- Parameters:
-
in_layer |
The texture layer to remove from this container. |
- Returns:
-
CStatus::OK if successful
-
CStatus::Fail if the texture layer could not be removed.
- Since:
- 4.0
Returns the owners of this material.
- Returns:
- An array of references to the owners.
- Since:
- 4.0
Tests whether this material is the intended material or a
stand-in.
- Returns:
- True if this material is the intended material, and False
otherwise.
- Since:
- 4.0
CString GetUnresolvedFullname |
( |
|
) |
const |
Returns the full name of the material that this material is
supposed to reference.
- Returns:
- The fullname of the material.
- Since:
- 4.0
Returns the material library that this material belongs to.
- Since:
- 4.0
Returns an array of
CustomProperty objects connected to this material shader. These
cluster properties are mostly UV and Color at Vertices properties.
The function also returns the shader connection points, as
Parameter objects, for each cluster property.
- Return values:
-
out_refArray |
Array of
Parameter objects that connect the cluster properties. |
- Returns:
- Array of Cluster
Property objects.
- See also:
-
CGeometryAccessor::GetMaterials
- Since:
- 5.0
- Example:
using namespace XSI;
Application app;
Model root = app.GetActiveSceneRoot();
X3DObject myCube;
root.AddGeometry( L"Cube",L"MeshSurface",L"" ,myCube );
Material myMaterial;
myCube.AddMaterial(L"Phong",false,L"",myMaterial);
CValueArray args(4L);
CValue outArg;
args[0] = CValue( CString(L"Image") );
args[1] = CValue(myCube.GetRef());
args[2] = CValue((short)1);
args[3] = CValue(false);
app.ExecuteCommand( L"BlendInPresets", args, outArg );
args[0] = myCube.GetRef();
args[1] = (LONG)siTxtPlanarXY;
args[2] = (LONG)siTxtDefaultSpherical;
args[3] = CString(L"Texture_Support");
app.ExecuteCommand( L"CreateTextureSupport", args, outArg );
Primitive prim = myCube.GetActivePrimitive();
PolygonMesh mesh = prim.GetGeometry();
CGeometryAccessor mt = mesh.GetGeometryAccessor();
CRefArray mats = mt.GetMaterials();
LONG nVals = mats.GetCount();
for ( LONG i=0; i<nVals; i++ )
{
Material mat(mats[i]);
CParameterRefArray params;
CRefArray clsProps = mat.GetConnectedClusterProperties(params);
CString str(mat.GetName());
for (LONG j=0; j<clsProps.GetCount(); j++)
{
str += L"\n\t";
ClusterProperty cp(clsProps[j]);
str += cp.GetName();
str += L" type: ";
switch (cp.GetPropertyType())
{
case siClusterPropertyEnvelopeWeightType:
str += L"siClusterPropertyEnvelopeWeightType";
break;
case siClusterPropertyShapeKeyType:
str += L"siClusterPropertyShapeKeyType";
break;
case siClusterPropertyWeightMapType:
str += L"siClusterPropertyWeightMapType";
break;
case siClusterPropertyUVType:
str += L"siClusterPropertyUVType";
break;
case siClusterPropertyVertexColorType:
str += L"siClusterPropertyVertexColorType";
break;
case siClusterPropertyUserNormalType:
str += L"siClusterPropertyUserNormalType";
break;
case siClusterPropertyUserMotionType:
str += L"siClusterPropertyUserMotionType";
break;
};
str += L" elem count: " + CString(cp.GetValueSize());
Parameter param = params[j];
str += L"\n\t\tParameter path: ";
str += param.GetFullName();
str += L"\n";
Texture txt(param.GetParent());
str += L"\t\tParameter parent: ";
str += txt.GetFullName();
str += L"\n";
ImageClip2 clip(txt.GetImageClip());
str += L"\t\tTexture image: ";
str += clip.GetFileName();
}
app.LogMessage( CString(i) + L" : " + str );
}
Returns the input type of a material parameter. Before you
connect a shader to the parameter, use Parameter::GetCapabilities
to make sure that the parameter supports the siTexturable
capability.
- Parameters:
-
in_paramscriptname |
The script name of a parameter. |
- Returns:
- The shader input type.
- siUnknownParameterType if the parameter cannot be connected to
a shader.
- Since:
- 5.0
Returns all shaders that match a
Filter. For example, you can write a custom filter that matches
shaders with texturespace and colormap parameters, and then use
this custom filter with this function.
- Parameters:
-
- Returns:
- Array of shaders that match the filter.
- Since:
- 5.0
Returns a list of shaders nested under this
Material.
- Returns:
-
CRefArray of references to the nested
Shader objects.
- Since:
- 7.0
The documentation for this class was generated from the following
file: