1.规整物体的简单包围盒实现
void computeBound()
{
Vector3 min, max, v;
int vertexNum = Mesh->GetVertexCount() ;
for(int i = 0;i < vertexNum ;i++)
{//拿到mesh中各轴最大值和最小值
Mesh->GetVertexPosition(i, v)//获取顶点坐标
GetMin(min, v);
GetMax(max, v);
}
//包围盒中心坐标
bound.center = (min + max)*0.5;
//包围盒尺寸
bound.Box = max - min;
float bound.sphereRadius = 0.0f;
for(int i = 0 ;i < vertexNum; i++)
{//求包围球的半径
Mesh->GetVertexPosition(i,v);
GetMax(Distance(bound.center, v), bound.sphereRadius);
}
}
2.delete_scalar.cpp报错
int* vpoint=new int;
vpoint[0]=1;
vpoint[1]=1;
通过指针new数组没有指明大小,new int 只声明了一个元素的大小,应该具体指明数组的大小
int* vpoint=new int[2];
vpoint[0]=1;
vpoint[1]=1;
3.合并两个Mesh的实现
//大体思路:
1.分别拿到两个mesh的顶点等数据
2.新建一个mesh
3.在新mesh总合并两个mesh的数据
mesh* MergeMesh(mesh& mesh1, mesh& mesh2)
{
mesh* finalResult;
if(mesh1 == mesh2)
return mesh1;
int m1VerNum = mesh1 -> GetVertexCount();
int m2VerNum = mesh2 -> GetVertexCount();
int totalVertex = mesh1 -> GetVertexCount() + mesh2 -> GetVertexCount();
finalResult->CreateMeshVertexBuffer(totalVertex);
Vector3 Position;
Vector3 Normal;
Vector2 TexCoord;
for(int i = 0; i < m1VerNum ;i++)
{
mesh* source= &mesh1;
source->GetMeshVertex( i, Position );
source->GetMeshNormal( i, Normal );
source->GetMeshTexCoord( i, TexCoord);
finalResult->SetMeshVertex( i, Position);
finalResult->SetMeshNormal( i, Normal);
finalResult->SetMeshTexCoord( i, TexCoord);
}
for(int i = m1VerNum; i < totalVertex ; i++)
{
mesh* source= &mesh2;
source->GetMeshVertex( i, Position );
source->GetMeshNormal( i, Normal );
source->GetMeshTexCoord( i, TexCoord);
finalResult->SetMeshVertex( i, Position);
finalResult->SetMeshNormal( i, Normal);
finalResult->SetMeshTexCoord( i, TexCoord);
}
return finalResult;
}
//应该还有索引,下次一定