#include "DisplayMesh.h"
#include "DisplayMaterial.h"
#include "DisplayTexture.h"
#include "DisplayLink.h"
#include "DisplayShape.h"
#include "DisplayCache.h"
#if defined (FBXSDK_ENV_MAC)
#pragma GCC diagnostic ignored "-Wformat-security"
#endif
#define MAT_HEADER_LENGTH 200
void DisplayControlsPoints(
FbxMesh* pMesh);
void DisplayPolygons(
FbxMesh* pMesh);
void DisplayMaterialMapping(
FbxMesh* pMesh);
void DisplayTextureMapping(
FbxMesh* pMesh);
void DisplayMaterialConnections(
FbxMesh* pMesh);
char * header, int pMatId, int l );
{
DisplayString(
"Mesh Name: ", (
char *) pNode->
GetName());
DisplayMetaDataConnections(lMesh);
DisplayControlsPoints(lMesh);
DisplayPolygons(lMesh);
DisplayMaterialMapping(lMesh);
DisplayMaterial(lMesh);
DisplayTexture(lMesh);
DisplayMaterialConnections(lMesh);
DisplayLink(lMesh);
DisplayShape(lMesh);
DisplayCache(lMesh);
}
void DisplayControlsPoints(
FbxMesh* pMesh)
{
DisplayString(" Control Points");
for (i = 0; i < lControlPointsCount; i++)
{
DisplayInt(" Control Point ", i);
Display3DVector(" Coordinates: ", lControlPoints[i]);
{
{
char header[100];
FBXSDK_sprintf(header, 100, " Normal Vector: ");
}
}
}
DisplayString("");
}
void DisplayPolygons(
FbxMesh* pMesh)
{
char header[100];
DisplayString(" Polygons");
int vertexId = 0;
for (i = 0; i < lPolygonCount; i++)
{
DisplayInt(" Polygon ", i);
int l;
{
{
{
FBXSDK_sprintf(header, 100, " Assigned to group: ");
DisplayInt(header, polyGroupId);
break;
}
default:
DisplayString(" \"unsupported group assignment\"");
break;
}
}
for (j = 0; j < lPolygonSize; j++)
{
Display3DVector(" Coordinates: ", lControlPoints[lControlPointIndex]);
{
FBXSDK_sprintf(header, 100, " Color vertex: ");
{
default:
break;
{
DisplayColor(header, leVtxc->
GetDirectArray().GetAt(lControlPointIndex));
break;
{
}
break;
default:
break;
}
break;
{
{
break;
{
}
break;
default:
break;
}
}
break;
break;
}
}
{
FBXSDK_sprintf(header, 100, " Texture UV: ");
{
default:
break;
{
Display2DVector(header, leUV->
GetDirectArray().GetAt(lControlPointIndex));
break;
{
}
break;
default:
break;
}
break;
{
{
{
Display2DVector(header, leUV->
GetDirectArray().GetAt(lTextureUVIndex));
}
break;
default:
break;
}
}
break;
break;
}
}
{
FBXSDK_sprintf(header, 100, " Normal: ");
{
{
break;
{
}
break;
default:
break;
}
}
}
{
FBXSDK_sprintf(header, 100, " Tangent: ");
{
{
break;
{
}
break;
default:
break;
}
}
}
{
FBXSDK_sprintf(header, 100, " Binormal: ");
{
{
Display3DVector(header, leBinormal->
GetDirectArray().GetAt(vertexId));
break;
{
}
break;
default:
break;
}
}
}
vertexId++;
}
}
{
FBXSDK_sprintf(header, 100, " Edge Visibility : ");
DisplayString(header);
{
default:
break;
{
DisplayInt(" Edge ", j);
DisplayBool(
" Edge visibility: ", leVisibility->
GetDirectArray().GetAt(j));
}
break;
}
}
DisplayString("");
}
{
if(lLayeredTextureCount > 0)
{
for(int j=0; j<lLayeredTextureCount; ++j)
{
pConnectionString += " Texture ";
for(int k =0; k<lNbTextures; ++k)
{
pConnectionString += "\"";
pConnectionString += (
char*)lLayeredTexture->
GetName();
pConnectionString += "\"";
pConnectionString += " ";
}
pConnectionString += "of ";
pConnectionString += pProperty.
GetName();
pConnectionString += " on layer ";
pConnectionString += j;
}
pConnectionString += " |";
}
else
{
if(lNbTextures > 0)
{
pConnectionString += " Texture ";
pConnectionString += " ";
for(int j =0; j<lNbTextures; ++j)
{
if(lTexture)
{
pConnectionString += "\"";
pConnectionString += (
char*)lTexture->
GetName();
pConnectionString += "\"";
pConnectionString += " ";
}
}
pConnectionString += "of ";
pConnectionString += pProperty.
GetName();
pConnectionString += " |";
}
}
}
void DisplayMaterialTextureConnections(
FbxSurfaceMaterial* pMaterial,
char * header,
int pMatId,
int l )
{
if(!pMaterial)
return;
FbxString lConnectionString =
" Material %d -- ";
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
DisplayTextureNames(lProperty, lConnectionString);
bool lStringOverflow = (lConnectionString.
GetLen() + 10 >= MAT_HEADER_LENGTH);
if (lStringOverflow)
{
lConnectionString = lConnectionString.
Left(MAT_HEADER_LENGTH - 10);
lConnectionString = lConnectionString + "...";
}
FBXSDK_sprintf(header, MAT_HEADER_LENGTH, lConnectionString.
Buffer(), pMatId, l);
DisplayString(header);
}
void DisplayMaterialConnections(
FbxMesh* pMesh)
{
char header[MAT_HEADER_LENGTH];
DisplayString(" Polygons Material Connections");
bool lIsAllSame = true;
{
{
lIsAllSame = false;
break;
}
}
if(lIsAllSame)
{
{
{
if(lMatId >= 0)
{
DisplayInt(" All polygons share the same material in mesh ", l);
DisplayMaterialTextureConnections(lMaterial, header, lMatId, l);
}
}
}
if(l == 0)
DisplayString(" no material applied");
}
else
{
for (i = 0; i < lPolygonCount; i++)
{
DisplayInt(" Polygon ", i);
{
int lMatId = -1;
if(lMatId >= 0)
{
DisplayMaterialTextureConnections(lMaterial, header, lMatId, l);
}
}
}
}
}
void DisplayMaterialMapping(
FbxMesh* pMesh)
{
const char* lMappingTypes[] = { "None", "By Control Point", "By Polygon Vertex", "By Polygon", "By Edge", "All Same" };
const char* lReferenceMode[] = { "Direct", "Index", "Index to Direct"};
int lMtrlCount = 0;
if(pMesh){
if(lNode)
}
{
if (leMat)
{
char header[100];
FBXSDK_sprintf(header, 100, " Material Element %d: ", l);
DisplayString(header);
int lMaterialCount = 0;
{
lMaterialCount = lMtrlCount;
}
{
int i;
lString = " Indices: ";
for (i = 0; i < lIndexArrayCount; i++)
{
if (i < lIndexArrayCount - 1)
{
lString += ", ";
}
}
lString += "\n";
FBXSDK_printf(lString);
}
}
}
DisplayString("");
}