座舱光学仿真-Ocean & Speos
在上篇文章:车灯光学仿真-Ocean VS Speos简要介绍了光学软件对于典型照明系统的仿真过程。主要是针对传统光学器件的定义及仿真,原理上所有非序列光学软件都可以进行处理,唯一的差异是效率和经济性。
本文将进一步拓展光学仿真的领域,除了精确计算传统光学器件诸如折反射器件、导光器件的光学量化指标外,我们将关注于用户感知直接相关的光学仿真层面:视觉模拟。
视觉模拟的目的是利用光学仿真软件,仿真出最接近人眼观察效果的图像并支持量化分析。
视觉模拟=亮度仿真+高精细度材质定义+人眼视觉处理
仿真方法就是经典的亮度仿真,因为人眼本质是一台复杂的相机系统。所以模拟拍照的方法可以得到类似于人眼的观察效果图像。(注:理论上用人眼系统模型可以仿真视网膜照度数据也可得到人眼观察效果,但是实际操作性极低。)
回到主题,座舱仿真过程中,最常用的、不可避免的、最重要的材质就是各种各样的纹理材质。看来有必要讨论一下纹理材质的光学仿真过程.
无论是皮革纹理、织物纹理、金属滚花、塑料皮纹,都是带有周期性排布微结构的材质。最大的难点就是要处理微结构带来的各向异性光学参数。
相信你一定经常看到各种漂亮的渲染图,甚至会为里面栩栩如生的皮革纹理效果而感叹。确实,几乎所有的美学渲染器都可以输出精美的纹理效果。尽管没有光学精度,很多时候符合人类常识感知,我们也会觉得很真实。

一种纹理材质
从原理上理解,需要对各个微结构的每个“点”的位置采集BSDF进行,然后在光学软件按照实际的空间位置进行定义。原理上可以实现对于纹理的精确仿真,但是实际情况是无论是硬件还是软件,目前还没有办法能实现这个流程,而且这个流程会伴随着海量的数据传递,这是非常低效的,只剩下理论可能性。
在计算机图形学中,处理纹理的方法已经非常历史悠久。无论是美学渲染器还是光学仿真软件,想要仿真纹理,在操作流程层面是一致的。
UV mapping->纹理映射->光线追迹
区别在于材质定义的光学精度,计算引擎的光学精度。这是光学软件独有的优势,由于保留了光学精度,进而可以进行光学量化分析。大概介绍一下以上三个过程:

UV映射(UV mapping)是在计算机图形学中用于将二维纹理映射到三维模型表面的过程。在三维计算机图形中,模型通常由许多个面(多边形)组成,这些面通常由顶点组成。UV映射定义了如何将纹理坐标(通常被称为UV坐标)映射到每个模型的顶点上,从而决定了纹理如何贴合在模型表面上。

纹理映射(Texture mapping)是计算机图形学中一种常用的技术,用于将二维图像(纹理)映射到三维模型表面上。这样可以为模型表面赋予更加丰富和生动的外观。
在纹理映射中,每个三维模型都与一个或多个纹理相关联。这些纹理通常是二维图像文件,如JPEG、PNG等格式。当渲染场景时,渲染引擎会根据纹理映射的信息,将纹理中的颜色、图案等内容投射到模型表面上,使其呈现出纹理所描述的外观。
纹理映射可以应用于各种类型的三维模型,从简单的几何形状到复杂的人物角色和环境场景都可以使用纹理映射技术来增强其视觉效果。纹理映射通常与UV映射技术结合使用,以确定如何将二维纹理映射到三维模型的表面上。
光学引擎的差异很容易理解,光学软件的算法会有跟高的精度,此处不赘述。
既然了解大概的过程,我们到光学软件试试看:
我们选择ocean和speos两款软件进行统一场景的纹理光学仿真验证。
首先建立场景:灯箱+光源+纹理材质

材质选择:

这是一种织物,使用两种测试方法获取光学参数,分别对应于speos和ocean。后续会讲到细节。
UVmapping
在speos中:

笔者发现Speos2023,只支持四种UV mapping 类型,而且每次参数修改都会经历漫长的卡顿、、、、、、简单原因就是:
因此,虽然SpaceClaim可能提供一些基本的纹理映射功能,但由于其设计目标和功能定位的特性,它可能不像专门的艺术性建模软件那样强调UV映射。UV映射对于SpaceClaim的用户群体来说可能不是一个主要需求,因此该软件可能没有专门优化和强大的UV映射工具。
在ocean中:

Ocean具有开源的结构接口,因为UV mapping不受软件限制,用户可以使用任意建模软件进行UVmapping,Ocean可以直接使用这些UV mapping信息。所以在结构数据处理方面没有限制。以笔者所用rhino为例,非常擅长UVmapping,同样的结构几乎是瞬间就可以完成高质量的UV映射。
光学仿真
为了能继续下去,我建立了更简单的模型,单个NURBS面。
speos:

在speos中使用软件简单渲染视图,可以预览纹理材质的大概效果。(一种美学渲染效果)
在speos中,先对这个面进行UV mapping,然后设置纹理属性,使用纹理贴图和凹凸贴图,使用测试的BSDF。texture 颜色归一化有三个选项,对比了三种类型的归一化方法,选择了最接近真实的效果。
然后设置光源属性、灯箱材质、设置亮度接收器、开始模拟!
PS:speos不支持使用GPU进行纹理模拟。

使用CPU进行模拟,模拟三分钟。
ocean:
使用同样场景结果,设置光源属性、灯箱材质、设置亮度接收器、开始模拟!
与speos不同的是,Ocean不仅支持使用speos使用纹理贴图+BSDF的方法定义纹理材质。
ocean支持一种更高精度的纹理材质定义方法--SVBRDF.

SVBRDF(Spatially-Varying Bidirectional Reflectance Distribution Function,空间变化双向反射分布函数)
SVBRDF扩展了BRDF的概念,以包括对物体表面上每一点的反射特性的描述。这意味着SVBRDF是一个关于位置和方向的函数,可以表示为f(x, y, θi, φi; θr, φr),其中x和y表示表面上的位置。这种模型允许反射特性在物体表面上变化,更加适用于描述现实世界中材料的复杂性,比如木材的纹理、布料的编织或者砖墙的结构等。
SVBRDF提供了一种更为详细和复杂的方式来描述材质的光学性质,特别是对于那些表面反射特性随空间位置变化的材料。而BRDF则提供了一种更为简化的视角,适用于描述表面属性相对均匀的材料.
使用CPU进行模拟,模拟三分钟。
仿真结果:




猛的看起来差不多,仔细一看,差异明显,最大的差异是Ocean模拟结果中有“高亮的区域”。分析一下原因。

在红圈位置中,实物观察效果是如右侧所示,会有“高亮”反光的效果,ocean的仿真结果是更接近实际观察效果的。speos因为使用了综合的BSDF,无法表征细节的视觉效果,所有纹理位置都呈现出相同的“粗糙感”,这和实际是不符的。
中心行亮度数据分布:

对比SVBRDF测试设备的获取的数字图像:

上述结果是用的朗伯光源,加上白漆灯箱,照明均匀,对于角度各向异性强的材质,差异不明显。为了更明显的对比差异。我使用小角度光束照射纹理进行仿真。结果如下:

果然,颜色差异明显。
到此:在座舱光学仿真中,speos的纹理处理方法使用近似的、简化的方法,使用这样的纹理仿真,视觉仿真的参考性有限。Ocean使用的SVBRDF材质,在保证光学精度的同时,无疑具有更高的真实度。
最后部分:人眼视觉
仿真的准确性是最高优先级。基于以上结果,我研究了一下两款软件的人眼视觉效果。
人眼视觉处理的目的将光学引擎计算的结果转换为符合人眼感知特性的数据。最大的区别是动态范围的处理。人眼具有超高的动态范围。而照片的动态方位有限。在处理数据动态方位的同时还要兼顾人眼的感知习惯(这个尤其麻烦),而且人眼受生理、心理、年龄等等多重因素的综合因素。一句话来说,每个人的观察效果都不可能一模一样。
所以光学软件应该是开放人眼调整效果的参数,让用户自由定义,以便找到满意的结果。
我在speos和ocean中进行了调整,结果仅供参考。两款软件都有各自的参数可以调整,没有优劣之分。

*********************************************************************应用案例:
以笔者的习惯,会使用两款软件进行完整座舱的仿真对比,speos在处理第一个零件(5万个mesh)UVmapping 时就已经使用了一个多小时(频繁卡顿)不得不放弃使用speos,因为我准备的座舱场景有八百多万个mesh,这种速度处理起来不具有操作性。
Ocean直接读取建模软件划分好的mesh数据和UV mapping 数据,直接可以开始计算。
Ocean仿真结果如下:











想了解更多,VX18800204397