3ds Max C++ API Reference
MaxSDK::ChannelData Namespace Reference

These are classes and enums to support the Data Channel Modifier. More...

Classes

class  IInputData
 Descripes an input entry which consists of an type description and pointer to the data. More...
 
class  IOutputData
 Descripes an output entry which consists of an type description and pointer to the data Also lets the engine tell the modifier what channel it supports Other data that the engine needs to store per instance can also be stored here since the output data is stored on the modifier local data for modifiers. More...
 
class  IDataChannelEngine
 This is a black box engine that takes some input and outputs some data. More...
 

Enumerations

enum  InputDataType { kType_INode = 0 , kType_MNMesh , kType_Stack_Input }
 A list of the input data types to be passed into the engine. More...
 
enum  OutputDataType {
  kType_Int = 0 , kType_Float , kType_Point3 , kType_Matrix3 ,
  kType_IntArray , kType_FloatArray , kType_Point3Array , kType_Matrix3Array
}
 TBD A custom blind data type for any data that is not covered in OutputDataTypes. More...
 
enum  ChannelType {
  kChannel_Vertex = 0 , kChannel_Edge , kChannel_Face , kChannel_NoChannelAssigned ,
  kChannel_DoesNotCare
}
 A list of all all the MNMesh channel types you can write to. More...
 
enum  VertexOutputChannel {
  kOutputChannel_XYZ = 0 , kOutputChannel_VertexColor , kOutputChannel_MapChannel , kOutputChannel_Normal ,
  kOutputChannel_VertexSelection , kOutputChannel_VertexCreaseWeight , kOutputChannel_VData , kOutputChannel_VertexWeight
}
 List of vertex channels you can write to. More...
 
enum  EdgeOutputChannel { kOutputChannel_EdgeSelection = 0 , kOutputChannel_EdgeCreaseWeight , kOutputChannel_EData }
 List of edge channels you can write to. More...
 
enum  FaceOutputChannel { kOutputChannel_FaceSelection = 0 , kOutputChannel_MatID , kOutputChannel_SmoothGroup , kOutputChannel_FData }
 List of face channels you can write to. More...
 
enum  IndexChannel { kIndexChannel_None = 0 , kIndexChannel_Position , kIndexChannel_Normal , kIndexChannel_MapChannel }
 Vertex channels are bit tricky since they are tied to a face index channel this enumerates the different channels. More...
 
enum  EngineTypes { kEngine_Error = 0 , kEngine_Input , kEngine_Operand , kEngine_Output }
 These are enums that describe the engine type.There are 3 an Input, Operand and Output. More...
 

Detailed Description

These are classes and enums to support the Data Channel Modifier.

The Data Channel Modifier can be extened by adding additional Engines. This is done by having a plugin derive from IDataChannelEngine and using the SuperClassID DATACHANNELENGINE_SUPER_CLASS_ID. Any plugins that do that will appear in the Data Channel modifiers drop down list.

An IDataChannelEngine is just a black box solution that takes an MNMesh and then outputs an array that describes the mesh. For instance a Curvature engine would compute the curvature at each vertex and then return an array of floats one for each geometric vertex that describe the curvature.

The Data Channel modifier allows the vertex, edge and face channels to be modified. NOTE channels here just represent an array of data that describes part of a mesh and is not related to channels that flow up the stack. Vertex data is a bit tricky since some channels need face information and some do not. For instance the Vertex Selection channel implicitly is attached to the geometry face index so you cannot change that while something like a map channel has an explicit face channel attached to it.
The Map Channel modifier allows you to copy different face index channels around but not edit them directly.

Enumeration Type Documentation

◆ InputDataType

A list of the input data types to be passed into the engine.

This will be extended as add more exposure to different types in different spaces.

Enumerator
kType_INode 
kType_MNMesh 

this entry will be pointer to the inode that owns the geometry in the stack

kType_Stack_Input 

this entry will be pointer to the MNMesh in the stack

50  {
51  kType_INode = 0,
52  kType_MNMesh,
54 
55  };
@ kType_INode
Definition: IMNMeshDataChannel.h:51
@ kType_MNMesh
this entry will be pointer to the inode that owns the geometry in the stack
Definition: IMNMeshDataChannel.h:52
@ kType_Stack_Input
this entry will be pointer to the MNMesh in the stack
Definition: IMNMeshDataChannel.h:53

◆ OutputDataType

TBD A custom blind data type for any data that is not covered in OutputDataTypes.

A list of the output data to be passed fomr the engine. This will be extended as add more exposure to different types in different spaces.

Enumerator
kType_Int 
kType_Float 

int passed as pointer an int

kType_Point3 

float passed as pointer an float

kType_Matrix3 

Point3 passed as pointer an point3.

kType_IntArray 

Matrix3 passed as pointer an Matrix3.

kType_FloatArray 

array of ints passed as pointer to MaxSDK::Array

kType_Point3Array 

array of floats passed as pointer to MaxSDK::Array

kType_Matrix3Array 

array of Point3's passed as pointer to MaxSDK::Array

78  {
79 
80  kType_Int = 0,
81  kType_Float,
82  kType_Point3,
84 
89 
90  //TBD kType_Custom, //! custom blind data passed as pointer something derived from CustomDataType
91  };
@ kType_Matrix3Array
array of Point3's passed as pointer to MaxSDK::Array
Definition: IMNMeshDataChannel.h:88
@ kType_FloatArray
array of ints passed as pointer to MaxSDK::Array
Definition: IMNMeshDataChannel.h:86
@ kType_Point3
float passed as pointer an float
Definition: IMNMeshDataChannel.h:82
@ kType_Matrix3
Point3 passed as pointer an point3.
Definition: IMNMeshDataChannel.h:83
@ kType_Float
int passed as pointer an int
Definition: IMNMeshDataChannel.h:81
@ kType_Point3Array
array of floats passed as pointer to MaxSDK::Array
Definition: IMNMeshDataChannel.h:87
@ kType_Int
Definition: IMNMeshDataChannel.h:80
@ kType_IntArray
Matrix3 passed as pointer an Matrix3.
Definition: IMNMeshDataChannel.h:85

◆ ChannelType

A list of all all the MNMesh channel types you can write to.

Enumerator
kChannel_Vertex 
kChannel_Edge 

Vertex channel which can include the position, normals, selection etc.

kChannel_Face 

Edge channel which can include the selection, crease etc.

kChannel_NoChannelAssigned 

Face chanel which can include matids, smoothing groups etx.

kChannel_DoesNotCare 

Means that this data does not use a channel and should be returned if there is no output.

97  {
98  kChannel_Vertex = 0,
100  kChannel_Face,
103 
104  };
@ kChannel_DoesNotCare
Means that this data does not use a channel and should be returned if there is no output.
Definition: IMNMeshDataChannel.h:102
@ kChannel_NoChannelAssigned
Face chanel which can include matids, smoothing groups etx.
Definition: IMNMeshDataChannel.h:101
@ kChannel_Edge
Vertex channel which can include the position, normals, selection etc.
Definition: IMNMeshDataChannel.h:99
@ kChannel_Vertex
Definition: IMNMeshDataChannel.h:98
@ kChannel_Face
Edge channel which can include the selection, crease etc.
Definition: IMNMeshDataChannel.h:100

◆ VertexOutputChannel

List of vertex channels you can write to.

Enumerator
kOutputChannel_XYZ 
kOutputChannel_VertexColor 

The position channel this also has an implied face channel attached to it.

kOutputChannel_MapChannel 

The verte color channel this also has an implied face channel attached to it (really map channel 1)

kOutputChannel_Normal 

The map channel this also has an implied face channel attached to it (really map channels -2 to 99)

kOutputChannel_VertexSelection 

The explicit normals channel this also has an implied face channel attached to it (really map channels -2 to 99)

kOutputChannel_VertexCreaseWeight 

This is the soft selection channel implicitly tied to the position channel.

kOutputChannel_VData 

This is the crease weight channel implicitly tied to the position channel.

kOutputChannel_VertexWeight 

TBD this is the VData channel implicitly tied to the position channel.

This is the vertex weight channel, VDATA_WEIGHT

109  {
110  kOutputChannel_XYZ = 0,
118  };
@ kOutputChannel_VertexCreaseWeight
This is the soft selection channel implicitly tied to the position channel.
Definition: IMNMeshDataChannel.h:115
@ kOutputChannel_VertexSelection
The explicit normals channel this also has an implied face channel attached to it (really map channel...
Definition: IMNMeshDataChannel.h:114
@ kOutputChannel_VertexColor
The position channel this also has an implied face channel attached to it.
Definition: IMNMeshDataChannel.h:111
@ kOutputChannel_XYZ
Definition: IMNMeshDataChannel.h:110
@ kOutputChannel_MapChannel
The verte color channel this also has an implied face channel attached to it (really map channel 1)
Definition: IMNMeshDataChannel.h:112
@ kOutputChannel_VertexWeight
TBD this is the VData channel implicitly tied to the position channel.
Definition: IMNMeshDataChannel.h:117
@ kOutputChannel_Normal
The map channel this also has an implied face channel attached to it (really map channels -2 to 99)
Definition: IMNMeshDataChannel.h:113
@ kOutputChannel_VData
This is the crease weight channel implicitly tied to the position channel.
Definition: IMNMeshDataChannel.h:116

◆ EdgeOutputChannel

List of edge channels you can write to.

Enumerator
kOutputChannel_EdgeSelection 
kOutputChannel_EdgeCreaseWeight 

Edge selection data.

kOutputChannel_EData 

Edge crease weight data.

124  {
128  };
@ kOutputChannel_EdgeCreaseWeight
Edge selection data.
Definition: IMNMeshDataChannel.h:126
@ kOutputChannel_EdgeSelection
Definition: IMNMeshDataChannel.h:125
@ kOutputChannel_EData
Edge crease weight data.
Definition: IMNMeshDataChannel.h:127

◆ FaceOutputChannel

List of face channels you can write to.

Enumerator
kOutputChannel_FaceSelection 
kOutputChannel_MatID 

Face selection channel.

kOutputChannel_SmoothGroup 

Material ID channel.

kOutputChannel_FData 

Smoothing Group ID channel.

134  {
139  };
@ kOutputChannel_MatID
Face selection channel.
Definition: IMNMeshDataChannel.h:136
@ kOutputChannel_FaceSelection
Definition: IMNMeshDataChannel.h:135
@ kOutputChannel_SmoothGroup
Material ID channel.
Definition: IMNMeshDataChannel.h:137
@ kOutputChannel_FData
Smoothing Group ID channel.
Definition: IMNMeshDataChannel.h:138

◆ IndexChannel

Vertex channels are bit tricky since they are tied to a face index channel this enumerates the different channels.

Enumerator
kIndexChannel_None 
kIndexChannel_Position 

The data is not associated with any face indices ( things like edge or face data )

kIndexChannel_Normal 

Position face indices.

kIndexChannel_MapChannel 

Normal face indices.

146  {
147  kIndexChannel_None = 0,
151  };
@ kIndexChannel_Normal
Position face indices.
Definition: IMNMeshDataChannel.h:149
@ kIndexChannel_None
Definition: IMNMeshDataChannel.h:147
@ kIndexChannel_MapChannel
Normal face indices.
Definition: IMNMeshDataChannel.h:150
@ kIndexChannel_Position
The data is not associated with any face indices ( things like edge or face data )
Definition: IMNMeshDataChannel.h:148

◆ EngineTypes

These are enums that describe the engine type.There are 3 an Input, Operand and Output.

An Input Engine just creates data that is sent to the stack. An Operand takes data flowing thru the stack and modifies it and then puts it back on the stack An Output takes the data and pushes it back to the mesh

Enumerator
kEngine_Error 
kEngine_Input 

Error condition.

kEngine_Operand 

Input Engine just creates data that is sent to the stack.

kEngine_Output 

Operand takes data flowing thru the stack and modifies it and then puts it back on the stack.

259  {
260  kEngine_Error = 0,
261  kEngine_Input,
264  };
@ kEngine_Error
Definition: IMNMeshDataChannel.h:260
@ kEngine_Operand
Input Engine just creates data that is sent to the stack.
Definition: IMNMeshDataChannel.h:262
@ kEngine_Input
Error condition.
Definition: IMNMeshDataChannel.h:261
@ kEngine_Output
Operand takes data flowing thru the stack and modifies it and then puts it back on the stack.
Definition: IMNMeshDataChannel.h:263