C++ API Reference
MGeometryData Class Reference

This class allows storage of arbitrary data which is formated to be specifically suitable for usage using a 3D display interface such as OpenGL. More...

#include <MGeometryData.h>

Public Types

enum  ElementSize {
  kInvalidElementSize = 0, kOne = 1, kTwo, kThree,
  kFour
}
 Specifies the size or dimension of each data element of the storage. More...
 
enum  ElementType {
  kInvalidElementType = -1, kFloat = 0, kDouble, kChar,
  kUnsignedChar, kInt16, kUnsignedInt16, kInt32,
  kUnsignedInt32
}
 Specifies the data type of each data element of the storage. More...
 
enum  DataType {
  kInvalidDataType = 0, kPosition, kNormal, kTexCoord,
  kColor, kWeight, kAPISupported, kTangent,
  kBiNormal, kVelocity, kPrimitiveCenter, kColorMask,
  kUserData, kMaxDataTypeIndex
}
 Specifies the data type of the storage array. More...
 

Public Member Functions

 MGeometryData (const char *dataName, DataType dataType, ElementType elementType, ElementSize elementSize, unsigned int elementCount, void *dataPtr=NULL, bool ownsData=true)
 Geometry data constructor. More...
 
 MGeometryData (const MGeometryData &)
 Copy constructor.
 
 ~MGeometryData ()
 Class destructor. More...
 
const char * objectName () const
 Return the logical name of the geometry. More...
 
int uniqueID () const
 Return the per session unique identifier. More...
 
DataType dataType () const
 Get the data type for the data. More...
 
ElementType elementType () const
 Returns the data type. More...
 
unsigned int elementTypeSize () const
 Return the element type size. More...
 
ElementSize elementSize () const
 Return element size. More...
 
unsigned int elementCount () const
 Return element count. More...
 
void * data () const
 Retrieve a pointer to the internal data. More...
 
void setCollectionNumber (int cn)
 Set the collection number for the object. More...
 
int collectionNumber () const
 Get the collection number of the data. More...
 
void setObjectOwnsData (bool val)
 Set ownship of the interal data. More...
 
bool objectOwnsData () const
 Return if the MGeometryData object owns the internal data or not. More...
 

Friends

class MGeometryLegacy
 
class MHardwareRenderer
 
class MD3D9Renderer
 

Detailed Description

This class allows storage of arbitrary data which is formated to be specifically suitable for usage using a 3D display interface such as OpenGL.

Format options include:

  • Currently, each element can be of a 1, 2, 3, 4 tuple.
  • Element type can be IEEE single float or double float, signed or unsigned byte (character), 16 or 32 bit signed unsigned integers.
  • There are specific "type" identifiers to provide a semantic on for the data. These include:

    • position : vertex position vector
    • normal : vertex normal vector
    • texCoord : vertextexture coordinate vector
    • color : vertex color vector
    • weight : vertex skin weight vector
    • tangent : vertex tangent vector
    • binormal : vertex binormal vector
    • velocity : vertex velocity vector
    • primitiveCenter : center a primitive (e.g. a triangle)
    • colorMask : colour existance mask. 1:1 correspondance with color
    • useData : some user defined data. A semantic that Maya does not understand.

Currently Maya only interprets a fixed format subset for data with recongnized semantics, This does not mean that the user cannot create any arbitrary format for data storage. Support formats with semantics includes:

  • 3 float position interpreted as (x,y,z).
  • 3 float normal interpreted as (x,y,z).
  • 2 float texture coordinate. Coorindate is interpreted as a (U,V) tuple.
  • 4 float color. Color is interpreted as (Red, Green, Blue, Alpha) tuple.
  • 3 float tangent interpreted as (x,y,z).
  • 3 float binormal interpreted as (x,y,z).
  • 3 float velocity interpreted as (x,y,z).
  • 3 float primitive center position interpreted as (x,y,z).
  • 1 float color mask interpreted as 1=mapped, and 0 = unmapped.

Memory allocation of the correct size is left up to the user of this class.

Memory can be marked as "owned" by this class or the user of this class. Ownership by this class is the default behaviour specified in the constructor. If the data is marked as being owned by the class, it is assumed that the data is created using a "new" operation, as the destructor of this class will use a "delete" operation to free memory.

Internal Maya data which is passed to the user via this class is always assumed to be non-modifiable. If modified, stability cannot be ensured.

Examples:
cgFx/cgfxShaderNode.cpp, dx11Shader/dx11Shader.cpp, and hlslShader/hlslShader.cpp.

Member Enumeration Documentation

Specifies the size or dimension of each data element of the storage.

Enumerator
kInvalidElementSize 

Invalid element size.

kOne 

Single value.

kTwo 

2-tuple

kThree 

3-tuple

kFour 

4-tuple

Specifies the data type of each data element of the storage.

Enumerator
kInvalidElementType 

Invalid element type (default value)

kFloat 

IEEE single precision floating point.

kDouble 

IEEE double precision floating point.

kChar 

Signed char.

kUnsignedChar 

Unsigned char.

kInt16 

Signed 16-bit integer.

kUnsignedInt16 

Unsigned 16-bit integer.

kInt32 

Signed 32-bit integer.

kUnsignedInt32 

Unsigned 32-bit integer.

enum DataType

Specifies the data type of the storage array.

Enumerator
kInvalidDataType 

Invalid data type (default value)

kPosition 

Position vector.

kNormal 

Normal vector.

kTexCoord 

Texture coordinate tuple.

kColor 

Color tuple.

kWeight 

Vertex weighting data.

kAPISupported 

Separator to indicate native draw API supported types.

kTangent 

Tangent vector.

kBiNormal 

Bi-normal vector.

kVelocity 

Velocity vector.

kPrimitiveCenter 

Center of primitive.

kColorMask 

Mapped, unmapped color mask.

kUserData 

Arbitrary "user data".

kMaxDataTypeIndex 

Valid entries are < kMaxDataTypeIndex.

Constructor & Destructor Documentation

OPENMAYA_MAJOR_NAMESPACE_OPEN MGeometryData ( const char *  dataName,
MGeometryData::DataType  dataType,
MGeometryData::ElementType  elementType,
MGeometryData::ElementSize  elementSize,
unsigned int  elementCount,
void *  dataPtr = NULL,
bool  ownsData = true 
)

Geometry data constructor.

Data is reference counted. On creation the reference count is set to be 1.

Parameters
[in]dataNamename of the data
[in]dataTypetype of data
[in]elementTypeelement type
[in]elementSizesize or dimension of an element. For example, a 3D position vector has three components per position (x, y, z) so it would have an elementSize of kThree.
[in]elementCountelement count
[in]dataPtrpointer to contiguous block of data
[in]ownsDataflag to tell if the instance owns the data or not.

Class destructor.

Automatically releases the associated image array.

Member Function Documentation

const char * objectName ( ) const

Return the logical name of the geometry.

Returns
NULL or object name string pointer.
int uniqueID ( ) const

Return the per session unique identifier.

Returns
Unique data identifier. -1 on error.
MGeometryData::DataType dataType ( ) const

Get the data type for the data.

Returns
Geometry data type. MGeometryData::kInvalid on error.
MGeometryData::ElementType elementType ( ) const

Returns the data type.

Returns
Element type. MGeometryData::kInvalidElementType on error.
unsigned int elementTypeSize ( ) const

Return the element type size.

Returns
Size of element in bytes.
MGeometryData::ElementSize elementSize ( ) const

Return element size.

Returns
Element size. MGeometryData::kInvalidElementSize is returned on error.
Examples:
dx11Shader/dx11Shader.cpp.
unsigned int elementCount ( ) const

Return element count.

Returns
Element count. 0 is returned on error.
Examples:
hlslShader/hlslShader.cpp.
void * data ( ) const

Retrieve a pointer to the internal data.

Returns
Void pointer to the data. Pointer is NULL on error.
Examples:
dx11Shader/dx11Shader.cpp, and hlslShader/hlslShader.cpp.
void setCollectionNumber ( int  collectionNumber)

Set the collection number for the object.

Numbers less than 0 are invalid collection numbers.

Parameters
[in]collectionNumberThe number to use
int collectionNumber ( ) const

Get the collection number of the data.

Collection numbers are zero-based.

Returns
-1 if failed. Else number greather than -1.
void setObjectOwnsData ( bool  value)

Set ownship of the interal data.

Parameters
[in]valueownership flag to set to.
bool objectOwnsData ( ) const

Return if the MGeometryData object owns the internal data or not.

Returns
True if owned internally, else false.

The documentation for this class was generated from the following files: