I need to create a lot (10000+) same objects in a scene. It seems that it works much faster if I join all meshes in one with different position and orientation of every single object. I found the technique how to merge all meshes but I cannot understand how can I use different position and orientation this way.
Code: Select all
void Utility::MergeMesh(Ogre::MeshPtr &aSourceMesh, Ogre::MeshPtr &aTargetMesh, Ogre::String aMaterialName
{
Ogre::Mesh::SubMeshIterator mesh_itr = aSourceMesh->getSubMeshIterator();
Ogre::SubMesh *in = 0, *out = 0;
Ogre::VertexBoneAssignment vbass;
while (mesh_itr.hasMoreElements())
{
in = mesh_itr.getNext();
out = aTargetMesh->createSubMesh();
out->indexData = in->indexData->clone();
out->mLodFaceList = in->mLodFaceList;
out->operationType = in->operationType;
out->parent = aTargetMesh.get();
out->useSharedVertices = false;
out->vertexData = in->vertexData->clone();
out->setMaterialName(aMaterialName;
out->clearBoneAssignments();
for (size_t i = 0; i < in->vertexData->vertexCount; ++i)
{
vbass.vertexIndex = i;
vbass.weight = 1.0f;
out->addBoneAssignment(vbass);
}
}
}