基于光线追踪的可视性分析研究与模块开发
2021-01-27邓金华
陈 川,任 强,邓金华
(中国工程物理研究院计算机应用研究所,四川 绵阳621900)
0 引言
人眼是人体的重要器官,其观察的信息是人脑进行判决的主要依据。可视性分析是人机工效分析的重要内容,保证产品在使用、维护时具有良好的可视性是十分必要的,进行人眼可视性分析的研究具有重要的意义[1-3]。
张源涛[4]等利用CATIA 软件的视野分析模块对加油车进行多条件分析,确定了视野分析方法的可行性,但是其研究缺少理论分析内容。 张丽[5]等根据中国人体尺寸建立中国飞行员标准人体模型,从操作可达性、视野可视性两个方面对无人机地面站操控台布局进行分析和仿真。 何玢洁[6]等利用CATIA软件对煤矿井下坑道钻机驾驶室空间工效、可视性、舒适度进行分析,通过人体模型在驾驶室内的操作状况分析,对驾驶室的主要部件设计提出了修改参考。 方雄兵[7]等针对维修仿真中以人眼为导向的分析方法所存在的不足,在Jack 仿真软件的基础上,采用Tcl/Tk 及Jackscript 语言,设计并实现基于维修部位导向的可视性分析功能模块。
以上可视性分析工作均是基于CATIA 或者Jack 等主流工效分析软件开展。 目前这类主流工效分析软件的可视性分析内容主要集中在视野范围定性标识与可视对象的轮廓展示,分析内容较为单一,并未进行高级的光学特性建模,未考虑光照条件、环境背景及产品自身属性等因素造成的影响,不能实现因遮挡造成的阴影或反光镜反射等高级光学效果的模拟与分析。 针对此问题,本文提出一种基于光线追踪的可视性分析方法,研究光线的传输过程和表面的着色模型,建立全局光照模型,并针对CATIA 平台,开发可视性分析组件,扩展其可视性分析功能,实现带有反射与阴影效果的可视性分析与模拟。
1 全局光照渲染引擎
1.1 全局光照模型
以Lambert 模型为代表的局部光照模型仅考虑光源直接照射物体表面,而未考虑物体之间的相互影响,难以实现阴影、反射等高级光照效果。全局光照模型除考虑入射光源的属性、物体本身材质属性(即反射率、透射率和自发光强度)之外,还考虑了物体之间的相互影响(表现为目标与光源和背景之间的几何关系),能够实现更好的渲染效果。
本文使用一种改进型Whitted 模型[8]作为全局光照模型,物体表面的亮度可以表示为:
其中,Vi为目标表面与光源i 的可见性因子,Vi等于1 表示目标被光源i 直射,反之处于光源i 的阴影中;表示光源i 的强度;分别表示入射光的方向与目标表面的法线,表 示 光 源 对表面的亮度受入射天顶角的影响,天顶角越小,光源对表面的入射亮度越大;r 表示目标表面的反射率;Is表示与表面出射光线对称的方向上背景表面的亮度,其计算方式同样遵从上式,可以通过迭代方式计算获得;fm为表面是否为镜面的标志,为了减少模型复杂度,认为非镜面表面不存在因反射形成的背景倒影,即不考虑非镜面表面的反射效果;Ie是物体本身的自发光亮度,对于非光源表面,该值为0。 在渲染系统中,上文所述的亮度、反射率等都一般使用三个分量的RGB 来表示。
式(1)中,通过引入目标对光源的可见性因子,可以实现阴影效果的模拟;通过引入与观测位置对称方向上背景的光照贡献,可以实现镜面反射效果的模拟。 由于应用需求侧重,与经典的Whitted 模型相比,本文的光照模型一方面忽略了优先级不高的折射现象,简化了模型复杂程度;另一方面引入了自发光因素,可以实现光源对象的渲染。
1.2 基于光线追踪的渲染
在全局光照模型的定义下,目标表面的亮度通过式(1)表示,难以使用解析的方法准确计算,一般采用逆向光线追踪方法递归地计算其光亮度[9-10]。求解上述全局光照模型的光线追踪算法流程如图1所示。
图1 光线追踪求解全局光照模型流程图
如图1 所示,利用光线追踪技术求解全局光照模型包括以下5 个步骤:
(1)主光线发射
从摄像机所在位置出发,经过成像平面内的像素点向场景内发射一条主光线。
(2)主光线与场景相交检测
用主光线与场景中的对象一一进行相交检测,根据最近的交点位置得到最近的目标表面;如果光线未与场景相交,则直接返回默认亮度。
(3)计算表面直射的光亮度
从交点处向光源位置发射一条阴影光线,并检测阴影光线是否与场景相交。 如果相交则表面处于阴影处,对于该光源的可视性因子Vi=0,光源对表面的直射亮度为0;否则根据光源强度、光源方向与法线夹角和表面反射率计算直射光照强度。
(4)计算表面反射的光亮度
根据表面的特性,计算由背景发出的、经目标表面反射后进入摄像机的光亮度:
①如果该表面为非镜面,则fm=0,该部分光亮度为0。
②如果该表面为镜面,则根据镜面反射定律,生成一条与主光线关于法线对称的反射光线,递归地从步骤(2)开始对该反射光线进行追踪,计算该部分反射分量的贡献。 此处追踪过程可能无限循环下去,可通过设置最大迭代次数n 进行限制,表示忽略经过n 次反射后进入人眼的背景亮度贡献。
(5)计算目标表面总亮度
根据式(1),结合表面自发光亮度,计算目标表面所有光亮度之和。
光线在场景中的传输过程可用图2 描述。
图2 逆向光线传输过程示意图
上述光线追踪过程计算的是单个像素上的亮度值,成像平面上各像素之间的光线之间互不影响,可使用并行的方式,借助GPU 强大的并行计算能力,同时向场景中发射大量的光线,并行计算整个成像平面上像素值,可极大地加快渲染过程。
从零开始进行并行的光线追踪程序开发存在流程复杂、编程难度高等问题,可借助成熟的工具实现特定需求的光线追踪应用。 OPTIX[11]是NVIDIA公司开发的一款高性能光线追踪工具包,该工具包基于CUDA 架构,将光线追踪过程流程化、标准化,封装了场景划分、CPU 与GPU 数据交换等通用功能,以Program 的形式提供接口给开发者实现各自不同的光线追踪应用。
OPTIX 的编程模型分为主机端与设备端代码。其中主机端代码运行在CPU 中,完成参数设置、场景组织与输入等准备工作;设备端代码运行在GPU中,并行地实现光线生成、相交计算、包围盒生成、着色计算等工作。 开发人员可通过实现以Program对象暴露出来的接口来实现应用相关的计算。 在OPTIX 中主要包含6 种接口,如表1 所示。
2 CATIA 可视性分析模块
CATIA 的人机工程模块实现了简单的可视性分析功能, 但是未进行光照因素与表面特性的建模,因此有必要通过二次开发的方式扩展CATIA 的可视性分析功能。
组件应用架构(Component Application Architecture,CAA)是CATIA 软件提供的一种二次开发方式,在该接口的支持下,用户可以在VC++编程环境下与CATIA进行通信,能够直接访问CATIA 的图形用户界面、应用程序和特征数据模型。
利用CAA 对CATIA 进行二次开发,集成全局光照渲染引擎,实现带有反射与阴影特性的可视性分析模块。 利用该模块进行可视性分析主要包括研究对象设定、光照设置、场景转换和渲染显示四个步骤。
2.1 对象设定
在CATIA 的图形窗口中进行交互式的拾取,拾取对象包括待分析的虚拟人和镜面对象两类。 前者拾取过滤器的特征类型为SWKIManikin,并同时获取该虚拟人眼睛所在的位置和视场角等观测参数;后者拾取过滤器的特征类型为CATISurface,能支持不同类型的曲面。
2.2 光照设置
光照条件是可视性分析的重要影响因素,不同的光照条件会影响人的视觉工效。 光照设置的内容包括光源类型、光照颜色、光线方向/位置、光源数量等因素。 光源分为点光源和平行光源,点光源位于场景之内,具有位置属性,而平行光源假设光源位于无限远处,仅具有方向属性。
表1 6 种主要的OPTIX 接口
2.3 场景转换
CATIA 采用曲面建模技术通过曲线和曲面来定义造型,而计算机图形学在渲染时采用多边形模型来近似产品形状。 因此,需要将曲面表示的CAD 模型网格化为多边形网格模型,该任务可以由CAA 提供的网格化功能完成。 在此转换过程中,需要同时获取曲面的光学材质。一般情况下在CATIA 模型中不包含产品的光学属性,可以采用颜色属性进行近似表示。另外,需对被标为镜面的曲面单独处理,将其设为镜面材质,即反射率为(1,1,1)。
2.4 渲染显示
完成场景转换后,CAD 设计模型以三角形网格的形式进入全局光照渲染引擎中进行着色计算,其结果以二维图像的形式返回并显示在窗体中。 还需要在此过程中实现CATIA 产品中虚拟人的状态监视,随时更新渲染引擎中人眼的观测位置和虚拟人姿态。
3 实验验证
本文以某汽车设计时的可视分析应用为例,验证上述开发的可视性分析模块对阴影、反射效果的模拟能力。
待分析汽车的CATIA 模型较为复杂,共有4 930个曲面,将其左侧的反光镜设置为镜面,经网格化后的网格模型约有12 万个三角面片。 开发的分析模块运行环境为:CPU 2.6 GB×16 核、显存8 GB。 可视性分析模块的渲染速率达到40 帧/s,在虚拟人执行转头、侧身等动作时,能够流畅地刷新可视内容,不存在卡顿或延迟,满足可视性分析应用的需求。
分析工况为50 百分位的男性在驾驶位偏头向左通过后视镜观察路况。图3 为CATIA 自带的可视性分析功能所得的可视内容,图4 为本文开发的可视性分析模块所得到的可视内容。 从图中对比可以看出,CATIA 的可视性分析功能仅能显示视野内物体的轮廓,而不能模拟后视镜内的反射内容,也无阴影效果;而从本文的结果中可以看出明显的阴影效果。 图5 是后视镜反射内容的特写,从中可以看出驾驶员能够通过后视镜清晰地观察到本车左侧车身和后侧来车。
图3 CATIA 可视性分析功能的分析结果
图4 本文方法的可视性分析结果
图5 后视镜反射特写
从以上验证与对比中可以看出,基于本文全局光照渲染引擎开发的可视性分析模块相较于CATIA软件内置的可视性分析功能,很好地模拟了镜面反射和阴影现象,可用于诸如反光镜、阴影区与非阴影区对比等高级视觉特性的分析工作。
4 结论
针对CATIA 软件的可视性分析功能薄弱这一问题, 本文提出了基于光线追踪的可视性分析方法,建立了全局光照模型,以此模型开发了一套渲染引擎,并在CATIA 平台下通过二次开发方式实现了一套可视性分析模块,用户仅需经过选择分析对象、设置光照条件等操作,便能实现带有阴影和反射两种高级光学效果的可视性分析与模拟。 通过对某型汽车驾驶员的可视性分析为例进行验证,体现了该分析模块在反光效果、阴影效果模拟两方面的准确性,一定程度上拓展了CATIA 可视性工效分析的能力,具有较好的实用性。
本文所使用的全局光照模型还是较为简单,它仅考虑了对称方向上的背景对目标表面点的光亮度贡献,因而它仅能模拟理想的镜面反射效果。 后续工作中应考虑目标表面半球空间内所有背景对该表面的亮度影响,实现真正的“全局光照”;另外,在光照模型中忽略了折射(透射)现象,不能实现诸如挡风玻璃这一类的透明物体可视性分析,后续工作应考虑增加该项特性。