在OpenGL中绘制复杂表面

6

我想知道在 OpenGL 中用于渲染无法通过数学方程表示(例如汽车)的复杂表面的技术是什么。我们是通过组合如此多的基本元素(球体、圆锥体等)来创建它的吗?还是有其他方法?

我即将开始创建一个应用程序,可以渲染3D汽车,想知道从哪里开始。


你使用多边形网格来大致逼近表面。然而,就创建/建模而言,可以通过使用基本元素(如球体、圆锥体、盒子等)执行集合操作来完成。这将是一个被称为“建筑实体几何”的过程,其结果通常会转换为三角网格以进行高效的实时渲染。 - Andon M. Coleman
我建议您深入了解实体建模,以获得所有可用方法的更详细概述。请注意,GPU通常旨在快速绘制三角形,因此无论最初是如何创建模型的,它们通常都会以这种方式结束。 - Andon M. Coleman
3个回答

5
您可以使用第三方工具,如Blender创建模型,然后将其导出并在OpenGL中进行渲染。这些模型通常由三角形组成,但使用类似于2D钢笔和纸张的3D工具进行绘制。
这是一个关于此主题的教程:OpenGL模型教程

2
是的,OpenGL通过绘制许多基本元素(称为“原语”)来生成图像。
最常用的原语是三角形和四边形(或“四边形”,通常实现为两个三角形)。 (还有绘制线和点原语的规定,但这些通常不用于绘制逼真的表面。)
复杂的表面用三角形或四边形网格来近似。 通常使用深度图来进行隐藏表面消除:靠近相机的原语会在每个像素上抑制和覆盖更远的原语。
为了减少产生良好图像所需的镶嵌级别,OpenGL支持在三角形(和四边形)角之间插值(虚构的)切平面。 这种便宜的近似,称为“着色法线”,实际上消除了连续表面的分段外观,这种表面用适量的原语近似时会出现。

1
设计一个物体非常困难。OpenGL 是多边形渲染机器。通常,物体由顶点表示其 3D 位置和索引表示它们如何连接 obj 文件。例如,您可以找到一些 obj 文件来表示汽车或其他任何物品并进行渲染。此外,还有一种使用补丁设计复杂模型的替代方法。补丁在 CAD 程序中用于更好地控制模型 补丁。为了制作更复杂的模型,您需要将许多补丁连接在一起。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接