如何在 Qt 中创建 3D 对象模型的 2D 切片?

How to create 2D slices of 3D object model in Qt?

我目前正在我的 Qt 程序中渲染 3D 模型(Wavefront .obj 格式)。现在,我正在 QML 中使用 Scene3D 渲染模型,我能够让它显示在查看区域中。我想做的是让用户单击模型并生成我想在不同 window 上绘制的切片的二维横截面。我是 3D 渲染的新手,很多 Qt 文档都不是很详细。我一直在阅读 Qt 文档、试验和在线搜索,但都没有成功。如何在 Qt 3D 中创建 3D 对象模型的 2D 切片,最好是在 QML 中?我可以使用哪些 Qt 库或 类 来实现此目的?

不幸的是,模型存储为一组表面这一事实使这变得困难。 QT 可能没有为此内置的方法。

例如,考虑一个由人脸构成的模型可能缺少 一张脸。现在怎么办?你能从不同的角度一致地跨过这个差距吗?横截面可能不包含任何顶点的事实怎么样?

但是,当然可以解决。首先,不允许未闭合的表面(带孔的网格)。其次,要找到横截面的顶点,请在模型中的每条边和您正在使用的平面之间执行交点,如果有交点,则那里有一个点。第三,要找到边,请查看顶点列表,网格中同一多边形上的任意两个边都应通过横截面中的边连接。要找到边缘的方向,请将多边形的法线投影到您使用的平面上。对于填充,我真的不知道该怎么做。我想这就是你想要的。