#include "DisplayCommon.h"
void DisplayShapeLayerElements(
const FbxShape* pShape,
const FbxMesh* pMesh);
{
int lBlendShapeCount, lBlendShapeChannelCount, lTargetShapeCount;
for (int lBlendShapeIndex = 0; lBlendShapeIndex < lBlendShapeCount; ++lBlendShapeIndex)
{
DisplayString(
" BlendShape ", (
char *)lBlendShape->
GetName());
for (int lBlendShapeChannelIndex = 0; lBlendShapeChannelIndex < lBlendShapeChannelCount; ++lBlendShapeChannelIndex)
{
DisplayString(
" BlendShapeChannel ", (
char *)lBlendShapeChannel->
GetName());
DisplayDouble(
" Default Deform Value: ", lBlendShapeChannel->
DeformPercent.
Get());
for (int lTargetShapeIndex = 0; lTargetShapeIndex < lTargetShapeCount; ++lTargetShapeIndex)
{
DisplayString(
" TargetShape ", (
char *)lShape->
GetName());
{
DisplayShapeLayerElements(lShape, FbxCast<FbxMesh>(pGeometry));
}
else
{
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("");
}
}
}
}
{
if (index != -1)
{
}
Display3DVector(desc.Buffer(), pData);
}
{
if (index != -1)
{
}
Display2DVector(desc.Buffer(), pData);
}
void DisplayElementData(
const FbxString& pHeader,
const FbxColor& pData,
int index = -1)
{
if (index != -1)
{
}
DisplayColor(desc.Buffer(), pData);
}
{
switch (pComponent)
{
pHeader = " Normal: ";
break;
pHeader = " BiNormal: ";
break;
pHeader = " Tangent: ";
break;
pHeader = " UV: ";
break;
pHeader = " Vertex Color: ";
break;
default:
pHeader = " Unsupported element: ";
break;
}
}
template<class T>
{
if (pLayerElement)
{
FillHeaderBasedOnElementType(pComponent, header);
int lPolynodeIndex = 0;
for (int i = 0; i < lPolygonCount; ++i)
{
for (int j = 0; j < lPolygonSize; ++j, ++lPolynodeIndex)
{
{
default:
break;
{
{
DisplayElementData(header, pLayerElementArray.
GetAt(lControlPointIndex), lControlPointIndex);
break;
{
int id = pLayerElementIndexArray.
GetAt(lControlPointIndex);
if (
id > 0) { DisplayElementData(header, pLayerElementArray.
GetAt(
id), id); }
}
break;
default:
break;
};
}
{
{
DisplayElementData(header, pLayerElementArray.
GetAt(lPolynodeIndex), lPolynodeIndex);
break;
{
int id = pLayerElementIndexArray.
GetAt(lPolynodeIndex);
if (
id > 0) { DisplayElementData(header, pLayerElementArray.
GetAt(
id), id); }
}
break;
default:
break;
}
}
break;
}
}
}
}
}
void DisplayShapeLayerElements(
const FbxShape* pShape,
const FbxMesh* pMesh)
{
bool lValidLayerElementSource = pShape && pMesh && lShapeControlPointsCount && lMeshControlPointsCount;
if (lValidLayerElementSource)
{
if (lShapeControlPointsCount == lMeshControlPointsCount)
{
for (int j = 0; j < lShapeControlPointsCount; j++)
{
FbxVector4 delta = lShapeControlPoint[j] - lMeshControlPoint[j];
{
DisplayElementData(header, lShapeControlPoint[j], j);
}
}
}
for (int i = 0; i < lLayerCount; ++i)
{
}
}
}