Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
PMDConvert Class Reference

Static Public Member Functions

static void ColladaToPMD (const char *input, OutputCB &output, std::string &xmlErrors)
 Converts a COLLADA XML document into the PMD mesh format. More...
 
static void AddDefaultPropPoints (std::vector< PropPoint > &propPoints)
 Adds the default "root" prop-point. More...
 
static void WritePMD (OutputCB &output, const uint32 *indices, size_t indexCount, const float *position, const float *normal, const std::vector< float * > &texcoords, size_t vertexCount, const std::vector< VertexBlend > &boneWeights, const std::vector< BoneTransform > &boneTransforms, const std::vector< PropPoint > &propPoints)
 Writes the model data in the PMD format. More...
 
static FCDGeometryPolygons * GetPolysFromGeometry (FCDGeometry *geom)
 
static void TransformStaticModel (float *position, float *normal, size_t vertexCount, const FMMatrix44 &transform, bool yUp)
 Applies world-space transform to vertex data and transforms Collada's right-handed Y-up / Z-up coordinates to the game's left-handed Y-up coordinate system. More...
 
static void TransformSkinnedModel (float *position, float *normal, size_t vertexCount, std::vector< BoneTransform > &bones, std::vector< PropPoint > &propPoints, const FMMatrix44 &transform, const FMMatrix44 &bindTransform, bool yUp, bool isXSI)
 Applies world-space transform to vertex data and transforms Collada's right-handed Y-up / Z-up coordinates to the game's left-handed Y-up coordinate system. More...
 

Member Function Documentation

◆ AddDefaultPropPoints()

static void PMDConvert::AddDefaultPropPoints ( std::vector< PropPoint > &  propPoints)
inlinestatic

Adds the default "root" prop-point.

◆ ColladaToPMD()

static void PMDConvert::ColladaToPMD ( const char *  input,
OutputCB output,
std::string &  xmlErrors 
)
inlinestatic

Converts a COLLADA XML document into the PMD mesh format.

Parameters
inputXML document to parse
outputcallback for writing the PMD data; called lots of times with small strings
xmlErrorsoutput - errors reported by the XML parser
Exceptions
ColladaExceptionon failure

◆ GetPolysFromGeometry()

static FCDGeometryPolygons * PMDConvert::GetPolysFromGeometry ( FCDGeometry *  geom)
inlinestatic

◆ TransformSkinnedModel()

static void PMDConvert::TransformSkinnedModel ( float *  position,
float *  normal,
size_t  vertexCount,
std::vector< BoneTransform > &  bones,
std::vector< PropPoint > &  propPoints,
const FMMatrix44 &  transform,
const FMMatrix44 &  bindTransform,
bool  yUp,
bool  isXSI 
)
inlinestatic

Applies world-space transform to vertex data and transforms Collada's right-handed Y-up / Z-up coordinates to the game's left-handed Y-up coordinate system.

TODO: Maybe we should use FCDocumentTools::StandardizeUpAxisAndLength in addition to this, so we'd only have one up-axis case to worry about, but it doesn't seem to correctly adjust the prop points in Y_UP models.

◆ TransformStaticModel()

static void PMDConvert::TransformStaticModel ( float *  position,
float *  normal,
size_t  vertexCount,
const FMMatrix44 &  transform,
bool  yUp 
)
inlinestatic

Applies world-space transform to vertex data and transforms Collada's right-handed Y-up / Z-up coordinates to the game's left-handed Y-up coordinate system.

TODO: Maybe we should use FCDocumentTools::StandardizeUpAxisAndLength in addition to this, so we'd only have one up-axis case to worry about, but it doesn't seem to correctly adjust the prop points in Y_UP models.

◆ WritePMD()

static void PMDConvert::WritePMD ( OutputCB output,
const uint32 *  indices,
size_t  indexCount,
const float *  position,
const float *  normal,
const std::vector< float * > &  texcoords,
size_t  vertexCount,
const std::vector< VertexBlend > &  boneWeights,
const std::vector< BoneTransform > &  boneTransforms,
const std::vector< PropPoint > &  propPoints 
)
inlinestatic

Writes the model data in the PMD format.


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