MGeometryData Class Reference

#include <MGeometryData.h>

Class Description

This method is obsolete.

Use MHWRender::MVertexBuffer and MHWRender::MIndexBuffer instead.

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:

Public Types

enum  ElementSize {
  kInvalidElementSize = 0, kOne = 1, kTwo, kThree,
 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,
 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...


class MGeometry
class MHardwareRenderer
class MD3D9Renderer

Member Enumeration Documentation

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


Invalid element size.


Single value.







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


Invalid element type (default value)


IEEE single precision floating point.


IEEE double precision floating point.


Signed char.


Unsigned char.


Signed 16-bit integer.


Unsigned 16-bit integer.


Signed 32-bit integer.


Unsigned 32-bit integer.

enum DataType

Specifies the data type of the storage array.


Invalid data type (default value)


Position vector.


Normal vector.


Texture coordinate tuple.


Color tuple.


Vertex weighting data.


Separator to indicate native draw API supported types.


Tangent vector.


Bi-normal vector.


Velocity vector.


Center of primitive.


Mapped, unmapped color mask.


Arbitrary "user data".


Valid entries are < kMaxDataTypeIndex.

Constructor & Destructor Documentation

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.

[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.

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

Return the per session unique identifier.

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

Get the data type for the data.

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

Returns the data type.

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

Return the element type size.

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

Return element size.

Element size. MGeometryData::kInvalidElementSize is returned on error.
+ Examples:
unsigned int elementCount ( ) const

Return element count.

Element count. 0 is returned on error.
+ Examples:
void * data ( ) const
void setCollectionNumber ( int  collectionNumber)

Set the collection number for the object.

Numbers less than 0 are invalid collection numbers.

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

Get the collection number of the data.

Collection numbers are zero-based.

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

Set ownship of the interal data.

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

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

True if owned internally, else false.

The documentation for this class was generated from the following files:
  • MGeometryData.h
  • MGeometryData.cpp