作者简介:王志强(1963—),深圳大学教授.研究方向:多媒体信息处理、虚拟现实.E-mail:wangzq@szu.edu.cn
中文责编:英 子; 英文责编:木 柯
深圳大学计算机与软件学院,广东深圳518060
College of Computer Science and Software Engineering, Shenzhen University, Shenzhen 518060, Guangdong Province, P. R. China
computer simulation; Catmull-Rom spline; Perlin noise; Vogel model; physical rendering; flower simulation
DOI: 10.3724/SP.J.1249.2019.04460
花卉植物具有复杂的形态结构和生理特性,传统的欧式几何难以表现其几何造型.为满足花卉建模的高效性和真实感,提出一种基于Perlin噪声的花卉仿真方法.通过Catmull-Rom样条曲线绘制叶片和花瓣的草图轮廓,利用二维Perlin噪声生成草图的深度值,用噪声x轴和y轴缩放参数控制叶片和花瓣的卷曲程度,实现了通用、高效的片状器官三维重建.同时,采用Vogel模型构建花卉的形态结构,引入基于双向反射分布函数(bidirectional reflectance distribution function, BRDF)的物理光照渲染真实感.与分形几何、Bézier曲面的对比分析结果表明,该方法在绘制草图时使用控制点少、建模效率高,且花卉模型仿真度高,渲染光照真实感强.
Flowers have complex morphological structures and physiological characteristic, and traditional Euclidean geometry is difficult to represent their geometric modeling. To satisfy the high efficiency and reality of flower modeling, a flower simulation method based on Perlin noise is proposed. The sketch contours of leaves and petals are drawn by Catmull-Rom spline curve, the depth value of sketch is generated by two-dimensional Perlin noise, and the degree of curling is controlled by the x-axis and y-axis scaling parameters of noise. Hence, the universal and efficient three-dimensional reconstruction of sheet organs is achieved. In addition, Vogel model is used to construct the morphological structure of flowers and the physical illumination based on bidirectional reflectance distribution function(BRDF)is introduced to render the reality. Compared with fractal geometry and Bézier surface, the proposed method uses fewer control points and obtains the higher modeling efficiency in sketch drawing.Moreover, the modeled flower has the high simulation degree and the rendered illumination has the strong sense of reality.
植物模拟是计算机图形学和计算机动画技术的研究热点之一,在计算机视觉、游戏和虚拟现实等领域都发挥着重要作用[1].花卉仿真是植物模拟的重要分支,因花卉组织器官精细而不规则,且几何和形态结构的复杂性使花卉建模繁琐又费时,具有一定的挑战性.现有的花卉仿真方法,按照建模方式的不同,主要分为基于几何和基于图像的花卉建模方法.基于几何的建模方法是通过用点、线、面、体等几何元素模拟植物器官,设置规则和参数对花卉进行仿真.如PRUSINKIEWICZ等[2]将L系统应用于花卉模型构建,实现多种花卉的仿真.IJIRI等[3]提出通过草图进行花卉仿真,并采用控制点绘制花卉的曲面特征.OWENS等[4]引入植物学理论,对密集花簇进行建模及动画处理.基于图像的建模方法不依赖几何模型,主要借助光学仪器获取相关图像序列,进行组合达到三维重建.如IJIRI等[5]利用电子计算机断层扫描(computed tomography, CT)捕捉花朵内部结构的体积数据,引入一种半自动建模技术,重建了精细的花卉器官.ZHENG等[6]结合3D扫描仪引入一种基于模板的跟踪拟合算法,重构了花卉盛开过程.基于图像的花卉建模真实感强,但对数据获取设备精度要求高,三维重建计算量大.基于几何的建模方法实现相对容易,因为不会影响其性能而得到广泛应用.
本研究利用Catmull-Rom样条和Perlin噪声实现花瓣和叶片建模,通过Vogel模型生成花序,提出一种改进的物理光照方程进行花卉渲染.该方法在绘制草图时使用控制点少且可快速建模,所得花卉模型仿真度高,渲染光照真实感强.
Catmull-Rom样条曲线[7]的定义是:给定n+1个控制点{p0, p1, …, pn}, 找到一条曲线对这些控制点进行插值并连接(除首尾两控制点),其中每个控制点的切线通过前后两点来计算.
假设有4个控制点pi-2、 pi-1、 pi和pi+1, 通过Catmull-Rom样条可绘制一条从pi-1到pi的曲线(图1),其约束公式为
pi' =τ(pi+1 -pi-1)(1)
其中, pi' 为控制点pi的斜率; i∈[1, n-1]; τ是张力因子,它定义每个控制点的切线振幅.
该样条函数为3次插值样条,可表示为
p(x)= ∑3i=0aixi=a0+a1x+a2x2+a3x3(2)
其中, x∈[0, 1]; 系数a0~a3由p(x)在首尾端点pi-1和pi的约束条件决定. 将式(1)代入式(2),可求得Catmull-Rom样条曲线的表达式为
p(x)=[1 x x2 x3]×
[0 1 0 0
-τ 0 τ 0
2τ τ-3 3-2τ -τ
-τ 2-τ τ-2 τ][pi-2
pi-1
pi
pi+1](3)
其中, x∈[0, 1]; τ为张力因子.
分析Catmull-Rom样条曲线发现,只需超过4个控制点就可形成该曲线.与单一的二次曲线或三次曲线相比,可用较少的控制点形成任意形状的曲线,适应拟合花卉重要器官的二维形状(如叶片、花瓣和花蕾等).
在自然界中,大部分的叶片和花瓣往往呈对称状.考虑到花卉的中心轴对称性,将一侧的建模控制点镜面映射到另一侧,引入首尾控制点(0,0)和(0,1),可进一步简化建模难度.通过2个或3个控制点就可较好地绘制叶片、花蕾和花瓣的草图,如图2.同时,张力因子τ取通用值0.5,可令样条曲线更好地拟合二维草图.
基于Perlin噪声的花卉建模[8],需定义一个晶格结构,为每个整数晶格顶点赋值伪随机梯度向量.对于坐标为(i, j)的晶格点,伪随机梯度 g的生成需要使用梯度向量查找表 G和用于哈希计算的随机数组Q, 即
g[i, j]=G[(Q[i mod 256]+ j)mod 256](4)
其中, G为PERLIN[9]通过蒙特卡洛方法预计算的随机梯度表; Q是长度为256的数组,随机且无重复地存放0~255的整数.
对于二维的花卉草图,晶格结构是一个平面网格,且每点的噪声值由其最接近的4个晶格顶点决定,如图3.
首先,根据式(5)计算点(x, y)到各个晶格顶点的距离向量.
v[i, j]=(x, y)-(xi, yj)(5)
其次,将每个距离向量与顶点上的梯度向量进行点乘,即
δ[i, j ]=v[i, j]·g[i, j](6)
二维Perlin噪声的权重需要缓和曲线插值:
ψ(x)=6x5-15x4+10x3(7)
每点的噪声值需加权最近梯度向量,即将式(6)和式(7)相乘求和
noise(x, y)=Ψ(1-x, 1-y)δ[0,0]+
Ψ(x, 1-y)δ[1,0] +
Ψ(1-x, y)δ[0,1]+
Ψ(x,y)δ[1,1](8)
其中, Ψ(x, y)=ψ(x)ψ(y), ψ(x)和ψ(y)为插值函数.
考虑到花卉器官凹凸程度各不相同,可基于Perlin噪声引入噪声值的缩放系数Nd、 x轴和y轴的偏移值Nsx和Nsy, 来计算二维草图的三维深度值
depth(x, y)=Ndy{∑ki=01/(2i)noise[2i(x+Nox)Nsx,
/ 2i(y+Noy)Nsy]}(9)
其中, k∈(0, +∞); Nsx和Nsy为Perlin噪声x轴和y轴的缩放值.
在花卉片状器官三维重建中,通过Nsx和Nsy控制噪声在x轴和y轴的频率,使用Nd控制噪声值的振幅.叶片草图的三维重建如图4.由图4可见,当Nd、 Nsx和Nsy较小时,噪声波动趋于平缓,得到平整的叶片模型; 当增大Nsy和Nd值时,草图y轴的深度值波动频率增加且上下波动幅度变大,生成沿纵轴卷曲的叶片模型.
针对花瓣凹凸程度的对称性,用草图中轴线做镜面映射,将花瓣左侧草图的深度值赋值给右侧映射点.然后根据草图的不同,调节参数可生成所需花瓣的mesh模型,结果如图5.
VOGEL[10]在研究向日葵花盘时,发现花盘种子排序呈斐波纳契螺旋状,并建立了该形态结构的Vogel数学模型
{r=cn1/2
θ=n×(360)/(2π)×((51/2-1)/2)(10)
其中, n是花盘种子的顺序号,从中心向外计数; r是花盘中心点与第n个种子之间的距离; c是缩放系数; θ是第n个种子绕花盘中心旋转的角度,斐波纳契角一般取值为137.5°.Vogel模型中花盘种子分布如图6.
图6 种子分布图[4]
Fig.6 Seeds distribution diagram[4]
自然界中即使同一株花卉的各个花瓣也不尽相同,因此构建形态结构前需预设多个花瓣草图及其相关噪声参数.在构建第n个花瓣时,需从预置的花瓣模型中随机选择,再根据计算的欧拉角和距离放置花瓣.运用Vogel模型生成玫瑰花和睡莲等花卉形态结构,如图7.
光与花卉的交互是一个复杂的过程,传统的Lambert和Blinn-Phong等经验模型[11]无法较好地进行模拟.引入双向反射分布函数(bidirectional reflectance distribution function, BRDF)光照模型,可使漫反射项和高光反射项真实地渲染花卉.
Lambertian BRDF是应用广泛的漫反射BRDF模型,但其忽略了菲涅尔反射和次表面散射.本研究考虑到真实的物理光照渲染,对漫反射项使用Disney的BRDF模型,用符合物理现象的漫反射来模拟[12]
fd(l, v)=(Bc)/(π)[1+( FD90-1)(1-n·l)5]×
[1+( FD90-1)(1-n·v)5](11)
其中, fd(l, v)为漫反射项; l为光源的入射方向; v为观察方向; Bc是表面颜色; FD90为粗糙系数计算项, FD90=0.5+2Rn(h·l)2, h为 l和 v的半角度矢量, Rn是花卉表面的粗糙度; n为表面法向量.该光照模型还兼顾了掠射角的能量变化.
物理光照渲染中,高光反射项通常应用微面元理论[13].该理论认为:物体表面是由微观的面元组成,每个面元被假设为光学平滑,即光线和花卉表面一点相交时,实际是一系列微面元交互的结果.
引入Black Ops2的微面元光照模型进行花卉的高光效果模拟[14]
fspec(l, v)= Dpl(h)F(l, h)V(v, h)(12)
其中, fspec(l, v)为高光反射项; Dpl(h)是微面元的法线分布函数,计算法线为 h 的微面元所占比例; F(l, h)是环境映射的菲涅尔反射函数,它不仅计算反射光线占入射光线的比例,而且包含部分光线遮蔽因素; V(v, h)是可见度逼近函数,计算阴影遮掩以及校正微面元从局部到整体的数量差异.
考虑到物理渲染的计算复杂度,使用法线分布函数Dpl(h)对Blinn-Phong高光模型进行改进,即保留其模型较少的计算量,同时引入简单的参数替代Beckmann NDF[15],得到新法线分布函数为
Dpl(h)=(α+2)/(8π)(n·h)α(13)
其中, α为反射强度, α=8 192g, g为光泽度.
环境映射的菲涅尔反射函数为
F(l, h)= r0+(1- r0)2-10(l·h)(14)
其中, r0为高光反射系数.
可见度逼近函数为
V(v, h)=1/(k(v·h)2+(1-k))(15)
其中, k=min(1.0, g+0.545).
将渲染算法用于三维虚拟场景中的视觉效果,如图8.相对传统光照,改进后的算法使用物理渲染,更符合物理学规律模拟光线.
实验在Intel Core i3-2130 CPU、4 Gbyte内存、Intel HD集成显卡(128 Mbyte)的计算机上,以自然景物中的花卉为研究对象,采用C#语言并结合ShaderLab在Unity 3D的平台下,实现多种花卉的真实感建模.根据本研究仿真算法,结合所获取的数据,得到真实感渲染后的玫瑰花植株如图9(b),图9(a)为拍摄的真实玫瑰花.将仿真结果同实物照片比较可得,所构造的花卉叶片模型呈椭圆形[16],花瓣呈倒卵形,逼真地再现了玫瑰花的形态特征.通过增大Perlin噪声的Nsx和Nd值,能较好地模拟出玫瑰花瓣的波浪状褶皱纹理.
仿真算法采用控制点生成花卉器官,通过参数调整可得到不同的花卉仿真模型.算法不仅可以构造重瓣花,还可仿真各式各样的单瓣花,图 10(b)给出了单瓣花三色堇的建模效果.首先绘制卵状三角形的花瓣草图,然后使用Perlin噪声生成平整的三色堇花瓣,最后组合各个花卉器官得到形似彩蝶的三色堇.
图9和图 10两种不同花卉的具体参数设置如表1.其中, Np是花瓣数; Nl是叶片数; h是茎秆高度; φ和d分别为花被片角度和花瓣间距.其他类型的花卉仿真结果请扫描论文页末右下角二维码,见补充材料图S1和图S2.
由表1可见,重瓣花玫瑰的花瓣层数多,最内侧的花蕾接近直立状, φ通常设成90°.而单瓣花三色堇只有两层花瓣,花瓣之间紧密相连, φ设定为30°, d仅为玫瑰花的1/2.
同时,使用花蕾的数量Nb、花瓣角度比例Sa和花的大小S进行参数调整,可生成不同生长时期的花卉,结果如图 11.由图 11可知,当花蕾数量较多且比例较小时,仿真结果呈现花卉生长初期.当花蕾数量较少且比例较大时,仿真结果呈现花卉盛开时期.
图 12分别展示了采用分形几何、Bézier曲面和Perlin噪声方法生成的仿真花卉.由图 12可见,Perlin噪声生成的花卉真实感比另外两种更强.
对比各种算法生成的花卉,其结果如表2.由表2可见,分形几何生成的花瓣和叶片不可卷曲,仿真效果较差且需要花卉的迭代函数系统(iterated function system, IFS)码,如图 12(a).Bézier曲面需要使用较多的控制点以生成花瓣,但花卉建模繁琐,如图 12(b).基于Perlin噪声的算法易于建模并能获得较好的花卉仿真效果,如图 12(c).此外,还可以调整控制点和关键参数生成不同的花卉及其生长时期.
表3比较了分别采用分形几何、Bézier曲面和Perlin噪声算法生成单株玫瑰花时的性能数据.由表3可见,用Perlin噪声算法绘制的玫瑰花复杂度较低,且绘制速度最快,所需存储空间与Bézier曲面算法相比减少了31.3%,而绘制时间仅增了0.5 s.
当模拟空间规模大小为64×64×8像素的场景时,采用增加花卉数量的方法可以比较分形几何、Bézier曲面和Perlin噪声3种仿真方法在实际场景的性能,其结果如图 13.
由图 13可知,分形几何平均帧率最高,性能变化较平缓,适用于对场景真实感要求不高,但花卉数量较多的虚拟场景; Perlin噪声的性能随着花卉数量增加而下降,适用于真实感要求较高,但不需要大量花卉仿真的虚拟场景; Bézier曲面的性能下降较快,帧率不如同等条件下的Perlin噪声,适用于对花卉真实感要求特别高的小范围虚拟场景.
根据花卉的对称特性,将一侧控制点映射到另一侧,利用Catmull-Rom样条曲线绘制草图.通过二维Perlin噪声生成深度值,引入噪声x轴和y轴缩放参数去控制花瓣和叶片的卷曲程度,实现花卉器官的三维重建; 采用Vogel数学模型生成花序,并构建花卉形态结构; 提出一种改进的物理光照方程,从漫反射项和高光反射项对花卉进行渲染.实验结果表明,本研究方法在花卉仿真时使用控制点少、建模高效,生成的花卉模型仿真度高且数据量小,渲染光照真实感强.但是,该方法的花卉仿真类型局限于单瓣花和符合Vogel模型的重瓣花,也仅能模拟花卉开放的过程.如何扩展花卉仿真类型、模拟花卉从开放到衰落过程,以及综合考虑花卉的植物学特性等是下一步研究的方向.
深圳大学学报理工版
JOURNAL OF SHENZHEN UNIVERSITY SCIENCE AND ENGINEERING
(1984年创刊 双月刊)
主 管 深圳大学
主 办 深圳大学
编辑出版 深圳大学学报理工版编辑部
主 编 李清泉
国内发行 深圳市邮电局
国外发行 中国国际图书贸易集团有限公司(北京399信箱)
地 址 北京东黄城根北街16号
邮 编 100717
电 话 0755-26732266
0755-26538306
Email journal@szu.edu.cn
标准刊号 ISSN 1000-2618
CN 44-1401/N