Merge pull request #2215 from Areloch/MeshBaking_Expanded

Expanded mesh baking functionality
This commit is contained in:
Areloch 2018-03-17 00:41:37 -05:00 committed by GitHub
commit 81f9f1bdbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 1664 additions and 8 deletions

View file

@ -3927,15 +3927,38 @@ void WorldEditor::makeSelectionAMesh(const char *filename)
OptimizedPolyList polyList;
polyList.setBaseTransform(orientation);
ColladaUtils::ExportData exportData;
for (S32 i = 0; i < objectList.size(); i++)
{
SceneObject *pObj = objectList[i];
if (!pObj->buildPolyList(PLC_Export, &polyList, pObj->getWorldBox(), pObj->getWorldSphere()))
if (!pObj->buildExportPolyList(&exportData, pObj->getWorldBox(), pObj->getWorldSphere()))
Con::warnf("colladaExportObjectList() - object %i returned no geometry.", pObj->getId());
}
//Now that we have all of our mesh data, process it so we can correctly collapse everything.
exportData.processData();
//recenter generated visual mesh results
for (U32 dl = 0; dl < exportData.colMeshes.size(); dl++)
{
for (U32 pnt = 0; pnt < exportData.colMeshes[dl].mesh.mPoints.size(); pnt++)
{
exportData.colMeshes[dl].mesh.mPoints[pnt] -= centroid;
}
}
//recenter generated collision mesh results
for (U32 dl = 0; dl < exportData.detailLevels.size(); dl++)
{
for (U32 pnt = 0; pnt < exportData.detailLevels[dl].mesh.mPoints.size(); pnt++)
{
exportData.detailLevels[dl].mesh.mPoints[pnt] -= centroid;
}
}
// Use a ColladaUtils function to do the actual export to a Collada file
ColladaUtils::exportToCollada(filename, polyList);
ColladaUtils::exportToCollada(filename, exportData);
//
// Allocate TSStatic object and add to level.