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

最后发布: 2017-10-06 19:20:11


问题

我目前正在Qt程序中渲染3D模型(Wavefront .obj格式)。 现在,我正在QML中使用Scene3D渲染模型,并且能够将其显示在查看区域中。 我想做的是让用户单击模型,并生成要在另一个窗口上绘制的切片的2D横截面。 我对3D渲染还很陌生,而且许多Qt文档的描述性都不强。 我一直在阅读Qt文档,进行实验和在线搜索,但没有运气。 如何在Qt 3D中(最好在QML中)创建3D对象模型的2D切片? 我可以使用哪些Qt库或类来实现此目的?

qt qt3d
回答

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

例如,考虑一个由人脸构成的模型可能缺少人脸。 现在怎么办? 您可以从不同角度一致地跨过该间隙吗? 横截面可能不包含任何顶点的事实呢?

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