cmk524
31-07-2008 11:20:10
Iam doing a project on Earth Movers.
so i need physics for vehicles and mesh deformation at run time.
iam deforming mesh by using a sample ETTerrain.
But for colision iam using:
Vector3 Level::getTerrainVertex(size_t x,size_t z)
{
Vector3 res;
res.x = mTerrainInfo->getOffset().x + mTerrainInfo->getScaling().x * x;
res.y = mTerrainInfo->getOffset().y + mTerrainInfo->at(x,z) * mTerrainInfo->getScaling().y;
res.z = mTerrainInfo->getOffset().z + mTerrainInfo->getScaling().z * z;
return res;
}
void Level::generateTerrainCollision()
{
OgreNewt::CollisionPrimitives::TreeCollision *col = new OgreNewt::CollisionPrimitives::TreeCollision(mWorld);
col->start();
for(size_t x=0;x<mTerrainInfo->getWidth()-1;x++)//hmWidth and hmHeight are the dimensions of the heightmap
{
for(size_t z=0;z<mTerrainInfo->getHeight()-1;z++)
{
//| |
//4---3-
//| \ |
//1---2-
Vector3 v1 = getTerrainVertex(x,z);
Vector3 v2 = getTerrainVertex(x+1,z);
Vector3 v3 = getTerrainVertex(x+1,z+1);
Vector3 v4 = getTerrainVertex(x,z+1);
Ogre::Vector3 poly_verts[3];
poly_verts[2] = v1;
poly_verts[1] = v2;
poly_verts[0] = v4;
col->addPoly( poly_verts, 0 );
poly_verts[2] = v2;
poly_verts[1] = v3;
poly_verts[0] = v4;
col->addPoly( poly_verts, 0 );
}
}
col->finish(false);
terrainBody = new OgreNewt::Body(mWorld,col);
delete col;
}
at the beganing
but if i cdeform the mesh again i had to made colision for the mesh.
Is there any another methods to add colision for deforming mesh.
so i need physics for vehicles and mesh deformation at run time.
iam deforming mesh by using a sample ETTerrain.
But for colision iam using:
Vector3 Level::getTerrainVertex(size_t x,size_t z)
{
Vector3 res;
res.x = mTerrainInfo->getOffset().x + mTerrainInfo->getScaling().x * x;
res.y = mTerrainInfo->getOffset().y + mTerrainInfo->at(x,z) * mTerrainInfo->getScaling().y;
res.z = mTerrainInfo->getOffset().z + mTerrainInfo->getScaling().z * z;
return res;
}
void Level::generateTerrainCollision()
{
OgreNewt::CollisionPrimitives::TreeCollision *col = new OgreNewt::CollisionPrimitives::TreeCollision(mWorld);
col->start();
for(size_t x=0;x<mTerrainInfo->getWidth()-1;x++)//hmWidth and hmHeight are the dimensions of the heightmap
{
for(size_t z=0;z<mTerrainInfo->getHeight()-1;z++)
{
//| |
//4---3-
//| \ |
//1---2-
Vector3 v1 = getTerrainVertex(x,z);
Vector3 v2 = getTerrainVertex(x+1,z);
Vector3 v3 = getTerrainVertex(x+1,z+1);
Vector3 v4 = getTerrainVertex(x,z+1);
Ogre::Vector3 poly_verts[3];
poly_verts[2] = v1;
poly_verts[1] = v2;
poly_verts[0] = v4;
col->addPoly( poly_verts, 0 );
poly_verts[2] = v2;
poly_verts[1] = v3;
poly_verts[0] = v4;
col->addPoly( poly_verts, 0 );
}
}
col->finish(false);
terrainBody = new OgreNewt::Body(mWorld,col);
delete col;
}
at the beganing
but if i cdeform the mesh again i had to made colision for the mesh.
Is there any another methods to add colision for deforming mesh.