MGeometryData Class Reference
 
 
 
MGeometryData Class Reference

This reference page is linked to from the following overview topics: A hardware shading node plug-in example, 2.2 Geometric Data (MGeometry).


#include <MGeometryData.h>


Class Description

Geometric data container.

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:

AshliShader/GLSLShaderNode.cpp, cgfxShaderNode.cpp, D3DViewportRenderer/D3DGeometryItem.cpp, dx11Shader/dx11Shader.cpp, DX11ViewportRenderer/DX11GeometryItem.cpp, GLSLShaderNode.h, hlslShader/hlslShader.cpp, hwColorPerVertexShader/hwColorPerVertexShader.cpp, hwPhongShader/hwPhongShader.cpp, hwPhongShader/hwPhongShader.h, and OpenGLViewportRenderer/OpenGLViewportRenderer.cpp.

List of all members.

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.
  MGeometryData (const MGeometryData &)
  Copy constructor.
  ~MGeometryData ()
  Class destructor.
const char *  objectName () const
  Return the logical name of the geometry.
int  uniqueID () const
  Return the per session unique identifier.
DataType  dataType () const
  Get the data type for the data.
ElementType  elementType () const
  Returns the data type.
unsigned int  elementTypeSize () const
  Return the element type size.
ElementSize  elementSize () const
  Return element size.
unsigned int  elementCount () const
  Return element count.
void *  data () const
  Retrieve a pointer to the internal data.
void  setCollectionNumber (int cn)
  Set the collection number for the object.
int  collectionNumber () const
  Get the collection number of the data.
void  setObjectOwnsData (bool val)
  Set ownship of the interal data.
bool  objectOwnsData () const
  Return if the MGeometryData object owns the internal data or not.

Friends

class  MGeometry
class  MHardwareRenderer
class  MD3D9Renderer

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

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] dataName name of the data
[in] dataType type of data
[in] elementType element type
[in] elementSize size 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] elementCount element count
[in] dataPtr pointer to contiguous block of data
[in] ownsData flag 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:
D3DViewportRenderer/D3DGeometryItem.cpp, DX11ViewportRenderer/DX11GeometryItem.cpp, and hlslShader/hlslShader.cpp.
void * data ( ) const
void setCollectionNumber ( int  collectionNumber )

Set the collection number for the object.

Numbers less than 0 are invalid collection numbers.

Parameters:
[in] collectionNumber The 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] value ownership 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: