1. ogre 生成mesh的时候,ManualObject 用mHillStone->begin("", Ogre::RenderOperation::OT_TRIANGLE_LIST);用OT_TRIANGLE_TRIPE可能不支持后面操作
多两个点 mHillStone->triangle(2*i - 2, 2*i - 1, 2*i);mHillStone->triangle(2*i - 1, 2*i + 1, 2*i);添加面的信息,再保存为mesh格式。
2 用OgreCommandLineTools_1.7.2 把mesh 转换为xml文件
3 用3D.Object.Converter.v4.101 加载xml文件,在保存为3ds max binary mesh 格式
。此工具可以显示模型统计信息。
4 再用3ds max 打开,bool运算。
for(int j = 0; j </* 2*/iStack ; j++)
{
VEC3 *pV1 = pm->GetVertexByStack(j);
VEC3 *pV2 = pm->GetVertexByStack(j + 1);
VEC3 *pN1 = pm->GetNormalByStack(j);
VEC3 *pN2 = pm->GetNormalByStack(j + 1);
fTex1X = (float)j / fStack;
fTex2X = (float)(j + 1) / fStack;
mHillStone->begin("", Ogre::RenderOperation::OT_TRIANGLE_LIST);
a b两点
for(int i = 0; i < iCount; i++)
{
fTexY = (float)i / fCount;
mHillStone->position(pV1[i].x, pV1[i].y, pV1[i].z);
mHillStone->normal(pN1[i].x, pN1[i].y, pN1[i].z);
mHillStone->textureCoord(fTex1X, fTexY);
mHillStone->position(pV2[i].x, pV2[i].y, pV2[i].z);
mHillStone->normal(pN2[i].x, pN2[i].y, pN2[i].z);
mHillStone->textureCoord(fTex2X, fTexY);
新加两个个三角形
if (i != 0)
{
mHillStone->triangle(2*i - 2, 2*i - 1, 2*i);
mHillStone->triangle(2*i - 1, 2*i + 1, 2*i);
}
}
mHillStone->end();
}