【发布时间】:2016-11-10 20:05:20
【问题描述】:
我想制作一款游戏,让你成为 3D 平面上的玩家,能够与周围的物体发生碰撞。我计划通过用无法输入的不可见矩形包裹游戏中的所有 3D 模型来进行碰撞。我编写了代码来计算每个顶点的 X、Y 和 Z 的最小值/最大值,以找到每个顶点的最高点和最低点。怎么把它做成长方体?
到目前为止,这是我的代码:
public CollisionModel(List<Vector3f> vert) {
float xLow = 1000;
float xHigh = 0;
float yLow = 1000;
float yHigh = 0;
float zLow = 1000;
float zHigh = 0;
for(Vector3f v : vert) {
if(v.x > xHigh) {
xHigh = v.x;
} else if(v.x < xLow) {
xLow = v.x;
}
if(v.y > yHigh) {
yHigh = v.y;
} else if(v.y < yLow) {
yLow = v.y;
}
if(v.z > zHigh) {
zHigh = v.z;
} else if(v.z < zLow) {
zLow = v.z;
}
}
}
【问题讨论】:
-
我想我对顶点的含义感到困惑。你谈论一个“顶点”,就像它可以有一个最高点和最低点一样。顶点本身不就是 3D 空间中的一个点吗?
-
您还需要什么?只需使用八个 (x, y, z) 组合作为您的顶点。
-
对不起,我不是很清楚,我试图通过遍历顶点数组来找到 3d 模型的最高和最低、最前和最后、左右顶点.我想如果我能找到这些点,我可以在模型本身周围创建一个矩形棱镜。