简单模型场景的辐射度算法研究与实践
2019-01-30苏静孔令德
文/苏静 孔令德
1 引言
辐射度方法主要依靠的是光能,它将物理学中的热辐射运用进算法。为了便于计算,在建立模型场景的时候假设场景中的面片数值是恒定的;这就表示着要计算精确的辐射度图像,模拟场景中的几何部分必须细分为更小的区域,或者说面片,然后再把一个个小的区域组合起来得到最后的图像。
2 构建场景模型
场景模型是直观反映算法的一个工具,通过模型间颜色的相互影响能较为清楚的辨别出算法实现是否实现,或者说实现的难易程度。
2.1 构建平面模型
首先创建一个平面模型,平面方程为:
通过平面方程,我们需要在平面方程上随机的取点(x,y,z),方程中的系数A、B、C、D是4个常数,通过三条方程求解方程组的办法求解出这4个常数。
图1:模拟场景效果图
然后通过已知点与场景中的各个面求交,交点通过像素连接形成平面图像。
2.2 构建圆锥模型
假设圆锥的高度为h,圆锥底面圆的半径为r,则圆锥的方程为:
建立三维坐标系,原点位于底面中心,则圆锥面的参数方程为:
2.3 构建球体模型
球体方程为:
球心位于三维坐标的原点,设球面的半径为r,则球面的参数方程为:
2.4 构建半立方体模型
在构建整体的场景模型前,我们首先要构建一个半立方体模型,半立方体技术早在之前被许多学者研究过。半立方体是指除去正面的一个盒子模型,定义盒子底面中心的点坐标为(0,0,0),并且将半立方体分为五个平面,在定义平面大小的同时,将自发光、漫反射、镜面高光、反射等结构体一起定义进去。
3 实践效果
图2:模拟场景效果图
场景为室内的一个球体和一个圆锥,左侧的墙面为蓝色,右侧墙面为绿色,上面的墙面为淡蓝色,后面的墙面为红色。在左上角设置高光,在辐射度的影响下,球体表面分别呈现出四面墙的颜色,而右侧的圆锥只受到右侧绿色墙面的辐射影响所以只显示绿色效果,模拟场景效果图如图1。
改变颜色亮度和高光位置方向,重新绘制场景。可见通过改变高光位置,模型物体在平面上显示的阴影方向改变;通过改变颜色亮度,墙面和顶部的颜色因为辐射度辐射到物体模型上的颜色更加明显,模拟场景的效果图如图2。
4 结束语
本文仅仅完成了简单模型场景的辐射度算法实践,其中还有很多内容需要更深入研究。诸如计算形状因子、对场景面片集合映射的改进处理。在计算辐射度方程时其他迭代算法没有实践值得再去挖掘研究。