我有一个类似于3D CAD的应用程序,我使用OpenGL包装库(OpenSceneGraph)进行渲染。对于这个应用程序,我正在尝试找出如何在3D中呈现粗而平滑线条的最佳策略。
所谓的“粗而平滑”是指:
- 线条粗细可以超过OpenGL的最大线宽值(在我的机器上似乎是10.f) - 在组合折线时,我想避免出现“断裂线”的外观(请参见下面的示例图像)
所谓的“粗而平滑”是指:
- 线条粗细可以超过OpenGL的最大线宽值(在我的机器上似乎是10.f) - 在组合折线时,我想避免出现“断裂线”的外观(请参见下面的示例图像)
目前我使用GL_LINE_STRIP_ADJACENCY
来渲染我的折线。
我发现有许多不同的资源可以教你如何在2D中渲染漂亮的线条和曲线。最简单的方法是将线渲染为一组四边形(GL_QUAD_STRIP
),这种方法不需要太多思考。这种解决方案的好处是它同时解决了我的两个问题。
例如,我还找到了这个nice library,它可以实现各种各样的线条和曲线外观。它使用三角形进行渲染。
注意:我不寻求像每个顶点着色或类似刷子的笔画之类的花哨效果,只需要一个可以具有大厚度的3D线段,并且与另一个线段连接良好,它们之间没有任何间隙。
问题是这些2D方法都是2D的。当我改变视角时,显然我的线几何体不是线而是位于某些3D平面上的2D“带状物”。而我想让它们看起来像3D线条。
思考这个问题时,我只能想到以下方法:- 将线渲染为一组2D四边形(三角形),然后使它们始终面向相机
- 使用某些3D形状(如圆柱体)来表示线段