假设我有这个几何:
glutSolidTeapot(1);
我想将它切成 8 个立方体,例如跨越 3 个平面 (xy)、(yz)、(xz),以制作 3D 拼图。
如何剪裁几何图形?
假设我有这个几何:
glutSolidTeapot(1);
我想将它切成 8 个立方体,例如跨越 3 个平面 (xy)、(yz)、(xz),以制作 3D 拼图。
如何剪裁几何图形?
有两种方法可以做到这一点。我将假设您想将几何体切成立方体,但其他形状也可以类似地完成。
在这里,您只需遍历所有三角形并检查三角形属于哪个立方体。如果三角形与多个立方体相交,则需要将其拆分为多个三角形。您需要对线平面相交进行一些数学运算才能正确分割,但这并不难。
您也可以多次渲染几何图形,但只剪裁要在屏幕上显示的部分。这可以使用 glClipPlane 来完成(参见http://www.opengl.org/sdk/docs/man2/xhtml/glClipPlane.xml)。对于每个立方体,您需要 6 个剪切平面。此方法将比第一种方法慢,因为 gpu 需要考虑每个立方体的每个三角形。