OpenGL®照明是三维(3D)计算机图形编程中最复杂、有时也最不易理解的方面之一。它可以用于为渲染场景添加必要的、逼真的画龙点睛,但它也可能在计算上要求很高,并且在效果不易达到时最终导致混乱元素(例如定义曲面法线)很容...
OpenGL®照明是三维(3D)计算机图形编程中最复杂、有时也最不易理解的方面之一。它可以用于为渲染场景添加必要的、逼真的画龙点睛,但它也可能在计算上要求很高,并且在效果不易达到时最终导致混乱元素(例如定义曲面法线)很容易理解,而照明模型的其他部分,例如不同灯光类型的划分,可能需要更多的研究才能完全掌握。在使用OpenGL®照明时,通常存在两个问题:渲染速度和质量。有一些技巧可以帮助实现两者的可接受比例,但最终需要在质量和速度之间进行权衡。许多3D照明技巧可以通过幻觉实现使用制作精良的纹理图像,这些纹理图像已经在表面上绘制了照明。通常会遇到一个问题,尤其是对于那些刚接触OpenGL®照明的人来说,就是场景中的每个顶点都需要定义其曲面法线。如果没有法线,渲染器将使用单个常量,从而有效地导致使场景看起来平坦且无阴影。定义法线时的一个技巧是使用不垂直于曲面但面向不同方向的值。这将更改灯光在曲面上的渲染方式,并可用于轻松创建噪波或岩石纹理,这一过程称为凹凸贴图。要获得良好效果,以及潜在的独特效果在使用OpenGL®照明的场景中,有必要充分了解环境、镜面反射、漫反射和发射光源的含义。可以使用较高的灰色环境值使充满雾的场景看起来更真实。类似地,可以通过发射来实现火灾或暴露灯光等特殊效果材料和光源四种基本模型的分层和组合可以使场景看起来更逼真。了解OpenGL®照明对每个渲染帧都需要大量的处理器功率,这意味着优化场景有助于获得更好的帧速率。有些事情可以降低渲染效果时间是尽可能少地使用光源,尽量减少被照明的表面数量,并避免多次处理最终帧缓冲区的算法或扩展。在场景中移动照明也会对性能产生一些有害影响,当渲染速度出现问题时应避免使用。有关使用OpenGL?照明的最后一个提示是知道何时不使用OpenGL?照明。它可以很容易想到在场景中的每个点都放置发射对象和灯光,但这很快就变得不切实际了。相反,许多照明技巧可以通过使用制作良好的纹理图像(已经在表面绘制了照明)来实现。同样地,布置场景的几何体有时可以通过隐藏一些问题区域或允许空心复合对象中的单个光源通过多个计划的开口照射而不需要多个光源
-
发表于 2020-08-07 23:52
- 阅读 ( 894 )
- 分类:电脑网络