FBX C++ API Reference
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ImportScene/DisplayShape.cxx
/****************************************************************************************
Copyright (C) 2015 Autodesk, Inc.
All rights reserved.
Use of this software is subject to the terms of the Autodesk license agreement
provided at the time of installation or download, or which otherwise accompanies
this software in either electronic or hard copy form.
****************************************************************************************/
#include <fbxsdk.h>
#include "DisplayCommon.h"
void DisplayShape(FbxGeometry* pGeometry)
{
int lBlendShapeCount, lBlendShapeChannelCount, lTargetShapeCount;
FbxBlendShape* lBlendShape;
FbxBlendShapeChannel* lBlendShapeChannel;
FbxShape* lShape;
lBlendShapeCount = pGeometry->GetDeformerCount(FbxDeformer::eBlendShape);
for (int lBlendShapeIndex = 0; lBlendShapeIndex < lBlendShapeCount; ++lBlendShapeIndex)
{
lBlendShape = (FbxBlendShape*) pGeometry->GetDeformer(lBlendShapeIndex, FbxDeformer::eBlendShape);
DisplayString(" BlendShape ", (char *) lBlendShape->GetName());
lBlendShapeChannelCount = lBlendShape->GetBlendShapeChannelCount();
for(int lBlendShapeChannelIndex = 0; lBlendShapeChannelIndex < lBlendShapeChannelCount; ++lBlendShapeChannelIndex)
{
lBlendShapeChannel = lBlendShape->GetBlendShapeChannel(lBlendShapeChannelIndex);
DisplayString(" BlendShapeChannel ", (char *) lBlendShapeChannel->GetName());
DisplayDouble(" Default Deform Value: ", lBlendShapeChannel->DeformPercent.Get());
lTargetShapeCount = lBlendShapeChannel->GetTargetShapeCount();
for (int lTargetShapeIndex = 0; lTargetShapeIndex < lTargetShapeCount; ++lTargetShapeIndex)
{
lShape = lBlendShapeChannel->GetTargetShape(lTargetShapeIndex);
DisplayString(" TargetShape ", (char *) lShape->GetName());
int j, lControlPointsCount = lShape->GetControlPointsCount();
FbxVector4* lControlPoints = lShape->GetControlPoints();
bool lStatus = lShape->GetNormals(&lNormals);
for(j = 0; j < lControlPointsCount; j++)
{
DisplayInt(" Control Point ", j);
Display3DVector(" Coordinates: ", lControlPoints[j]);
if (lStatus && lNormals && lNormals->GetCount() == lControlPointsCount)
{
Display3DVector(" Normal Vector: ", lNormals->GetAt(j));
}
}
DisplayString("");
}
}
}
}