2017-10-06 65 views
0

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

+0

我不认为在Qt中有什么东西 – dtech

回答

1

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

例如,考虑一个由脸部构成的模型可能是缺少的脸部。现在怎么办?你是否可以从不同的角度一直插入这个空白?那么横截面可能不包含任何顶点的事实呢?

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

+0

谢谢,我们能够弄清楚如何使用画布和你所建议的算法来绘制它。一个问题,如果模型缺失的是面或者有漏洞,我们可以做些什么来尝试填补漏洞? – Dillydill123

+0

哇,你有工作吗?凉!要关闭表面,也许你可以使用[ear-clipping](https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf)。它可能无法正常工作。如果一张脸在一个完美的网格中颠倒过来,我不知道可以修复它。 –