2014-01-23 48 views
5

我想知道在OpenGL中用于渲染复杂曲面的技术,这些复​​杂曲面不能用数学公式(如汽车)表示。我们是通过结合如此多的基本元素(球体,锥体......)来创造它吗?或者还有其他一些方法? 我即将开始创建一个应用程序,该应用程序将呈现3D汽车并想知道从哪里开始。在OpenGL中绘制复杂曲面

+0

您可以使用粗略近似表面的多边形网格。然而,就创造/建模而言,可以通过使用诸如球体,锥体,盒子等基本元素来执行集合操作来完成。这将是被称为[构造实体几何](http:// en。 wikipedia.org/wiki/Constructive_solid_geometry),结果通常会转换为三角形网格,以便进行高效的实时渲染。 –

+0

我建议你看看[实体建模](http://en.wikipedia.org/wiki/Solid_modeling),以获取所有可用方法的更详细概述。请注意,传统上,GPU的设计目标是快速绘制三角形,因此通常无论最初如何创建模型,模型都会变得模样。 –

回答

4

您可以使用第三方工具(如Blender)创建可以导出并在OpenGL中渲染的模型。这些模型通常由三角形组成,但是用3D工具绘制,类似于2D的笔和纸。

这里是关于主题的教程:OpenGL Model Tutorial

2

是,OpenGL的通过拉伸许多基本元件产生的图像(称为“原语”)。

最常用的基元是三角形和四边形(或“四边形”,通常实现为两个三角形)。 (也有关于绘制线条和点基元的规定,但这些通常不用于绘制逼真的表面。)

复杂曲面近似为三角形或四边形网格。通常通过使用深度图来完成隐藏表面移除:靠近相机绘制的基元以每个像素为基础禁止并覆盖更远的基元。

为了减少生成良好图像所需的曲面细分级别,OpenGL支持在三角形(和四边形)角之间插入一个(虚构的)切平面。这种便宜的近似称为“阴影法线”,实际上消除了多面的外观,否则该多面的外观会损坏与适量的基元近似的连续表面。

1

从头开始设计你的对象是非常困难的。 OpenGL是多边形渲染机器。 Usualy对象由三维位置的verteces和它们如何连接的索引来表示obj file。你可以找到一些代表汽车的obj文件或者其他东西来渲染它。另外还有一种使用补丁设计复杂模型的方法。修补程序用于CAD程序,以更好地控制patches型号。为了制作更复杂的模型,你需要将许多补丁连在一起。