王志強(qiáng),張志偉,楊海泉
深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院,廣東深圳518060
植物模擬是計(jì)算機(jī)圖形學(xué)和計(jì)算機(jī)動(dòng)畫(huà)技術(shù)的研究熱點(diǎn)之一,在計(jì)算機(jī)視覺(jué)、游戲和虛擬現(xiàn)實(shí)等領(lǐng)域都發(fā)揮著重要作用[1].花卉仿真是植物模擬的重要分支,因花卉組織器官精細(xì)而不規(guī)則,且?guī)缀魏托螒B(tài)結(jié)構(gòu)的復(fù)雜性使花卉建模繁瑣又費(fèi)時(shí),具有一定的挑戰(zhàn)性.現(xiàn)有的花卉仿真方法,按照建模方式的不同,主要分為基于幾何和基于圖像的花卉建模方法.基于幾何的建模方法是通過(guò)用點(diǎn)、線、面、體等幾何元素模擬植物器官,設(shè)置規(guī)則和參數(shù)對(duì)花卉進(jìn)行仿真.如PRUSINKIEWICZ等[2]將L系統(tǒng)應(yīng)用于花卉模型構(gòu)建,實(shí)現(xiàn)多種花卉的仿真.IJIRI等[3]提出通過(guò)草圖進(jìn)行花卉仿真,并采用控制點(diǎn)繪制花卉的曲面特征.OWENS等[4]引入植物學(xué)理論,對(duì)密集花簇進(jìn)行建模及動(dòng)畫(huà)處理.基于圖像的建模方法不依賴幾何模型,主要借助光學(xué)儀器獲取相關(guān)圖像序列,進(jìn)行組合達(dá)到三維重建.如IJIRI等[5]利用電子計(jì)算機(jī)斷層掃描 (computed tomography, CT)捕捉花朵內(nèi)部結(jié)構(gòu)的體積數(shù)據(jù),引入一種半自動(dòng)建模技術(shù),重建了精細(xì)的花卉器官.ZHENG等[6]結(jié)合3D掃描儀引入一種基于模板的跟蹤擬合算法,重構(gòu)了花卉盛開(kāi)過(guò)程.基于圖像的花卉建模真實(shí)感強(qiáng),但對(duì)數(shù)據(jù)獲取設(shè)備精度要求高,三維重建計(jì)算量大.基于幾何的建模方法實(shí)現(xiàn)相對(duì)容易,因?yàn)椴粫?huì)影響其性能而得到廣泛應(yīng)用.
本研究利用Catmull-Rom樣條和Perlin噪聲實(shí)現(xiàn)花瓣和葉片建模,通過(guò)Vogel模型生成花序,提出一種改進(jìn)的物理光照方程進(jìn)行花卉渲染.該方法在繪制草圖時(shí)使用控制點(diǎn)少且可快速建模,所得花卉模型仿真度高,渲染光照真實(shí)感強(qiáng).
Catmull-Rom樣條曲線[7]的定義是:給定n+1個(gè)控制點(diǎn){p0,p1, …,pn}, 找到一條曲線對(duì)這些控制點(diǎn)進(jìn)行插值并連接(除首尾兩控制點(diǎn)),其中每個(gè)控制點(diǎn)的切線通過(guò)前后兩點(diǎn)來(lái)計(jì)算.
假設(shè)有4個(gè)控制點(diǎn)pi-2、pi-1、pi和pi+1, 通過(guò)Catmull-Rom樣條可繪制一條從pi-1到pi的曲線(圖1),其約束公式為
(1)
圖1 Catmull-Rom樣條曲線Fig.1 Catmull-Rom spline curve
該樣條函數(shù)為3次插值樣條,可表示為
(2)
其中,x∈[0, 1] ; 系數(shù)a0~a3由p(x)在首尾端點(diǎn)pi-1和pi的約束條件決定. 將式(1)代入式(2),可求得Catmull-Rom樣條曲線的表達(dá)式為
p(x)=[1xx2x3]×
(3)
其中,x∈[0, 1];τ為張力因子.
分析Catmull-Rom樣條曲線發(fā)現(xiàn),只需超過(guò)4個(gè)控制點(diǎn)就可形成該曲線.與單一的二次曲線或三次曲線相比,可用較少的控制點(diǎn)形成任意形狀的曲線,適應(yīng)擬合花卉重要器官的二維形狀(如葉片、花瓣和花蕾等).
在自然界中,大部分的葉片和花瓣往往呈對(duì)稱狀.考慮到花卉的中心軸對(duì)稱性,將一側(cè)的建模控制點(diǎn)鏡面映射到另一側(cè),引入首尾控制點(diǎn)(0,0)和(0,1),可進(jìn)一步簡(jiǎn)化建模難度.通過(guò)2個(gè)或3個(gè)控制點(diǎn)就可較好地繪制葉片、花蕾和花瓣的草圖,如圖2.同時(shí),張力因子τ取通用值0.5,可令樣條曲線更好地?cái)M合二維草圖.
圖2 二維草圖Fig.2 Two-dimensional sketch
基于Perlin噪聲的花卉建模[8],需定義一個(gè)晶格結(jié)構(gòu),為每個(gè)整數(shù)晶格頂點(diǎn)賦值偽隨機(jī)梯度向量.對(duì)于坐標(biāo)為(i,j)的晶格點(diǎn),偽隨機(jī)梯度g的生成需要使用梯度向量查找表G和用于哈希計(jì)算的隨機(jī)數(shù)組Q, 即
g[i,j]=G[(Q[imod 256]+j)mod 256]
(4)
其中,G為PERLIN[9]通過(guò)蒙特卡洛方法預(yù)計(jì)算的隨機(jī)梯度表;Q是長(zhǎng)度為256的數(shù)組,隨機(jī)且無(wú)重復(fù)地存放0~255的整數(shù).
對(duì)于二維的花卉草圖,晶格結(jié)構(gòu)是一個(gè)平面網(wǎng)格,且每點(diǎn)的噪聲值由其最接近的4個(gè)晶格頂點(diǎn)決定,如圖3.
圖3 二維Perlin噪聲的插值Fig.3 The interpolation of two-dimensional Perlin noise
首先,根據(jù)式(5)計(jì)算點(diǎn)(x,y)到各個(gè)晶格頂點(diǎn)的距離向量.
v[i,j]=(x,y)-(xi,yj)
(5)
其次,將每個(gè)距離向量與頂點(diǎn)上的梯度向量進(jìn)行點(diǎn)乘,即
δ[i,j]=v[i,j]·g[i,j]
(6)
二維Perlin噪聲的權(quán)重需要緩和曲線插值:
ψ(x)=6x5-15x4+10x3
(7)
每點(diǎn)的噪聲值需加權(quán)最近梯度向量,即將式(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)為插值函數(shù).
考慮到花卉器官凹凸程度各不相同,可基于Perlin噪聲引入噪聲值的縮放系數(shù)Nd、x軸和y軸的偏移值Nsx和Nsy, 來(lái)計(jì)算二維草圖的三維深度值
(9)
其中,k∈(0, +∞);Nsx和Nsy為Perlin噪聲x軸和y軸的縮放值.
在花卉片狀器官三維重建中,通過(guò)Nsx和Nsy控制噪聲在x軸和y軸的頻率,使用Nd控制噪聲值的振幅.葉片草圖的三維重建如圖4.由圖4可見(jiàn),當(dāng)Nd、Nsx和Nsy較小時(shí),噪聲波動(dòng)趨于平緩,得到平整的葉片模型;當(dāng)增大Nsy和Nd值時(shí),草圖y軸的深度值波動(dòng)頻率增加且上下波動(dòng)幅度變大,生成沿縱軸卷曲的葉片模型.
圖4 不同參數(shù)的葉片模型Fig.4 The leaf models with different parameters
針對(duì)花瓣凹凸程度的對(duì)稱性,用草圖中軸線做鏡面映射,將花瓣左側(cè)草圖的深度值賦值給右側(cè)映射點(diǎn).然后根據(jù)草圖的不同,調(diào)節(jié)參數(shù)可生成所需花瓣的mesh模型,結(jié)果如圖5.
圖5 生成的花瓣模型Fig.5 Generated petal models
VOGEL[10]在研究向日葵花盤時(shí),發(fā)現(xiàn)花盤種子排序呈斐波納契螺旋狀,并建立了該形態(tài)結(jié)構(gòu)的Vogel數(shù)學(xué)模型
(10)
其中,n是花盤種子的順序號(hào),從中心向外計(jì)數(shù);r是花盤中心點(diǎn)與第n個(gè)種子之間的距離;c是縮放系數(shù);θ是第n個(gè)種子繞花盤中心旋轉(zhuǎn)的角度,斐波納契角一般取值為137.5°.Vogel模型中花盤種子分布如圖6.
圖6 種子分布圖[4]Fig.6 Seeds distribution diagram[4]
自然界中即使同一株花卉的各個(gè)花瓣也不盡相同,因此構(gòu)建形態(tài)結(jié)構(gòu)前需預(yù)設(shè)多個(gè)花瓣草圖及其相關(guān)噪聲參數(shù).在構(gòu)建第n個(gè)花瓣時(shí),需從預(yù)置的花瓣模型中隨機(jī)選擇,再根據(jù)計(jì)算的歐拉角和距離放置花瓣.運(yùn)用Vogel模型生成玫瑰花和睡蓮等花卉形態(tài)結(jié)構(gòu),如圖7.
圖7 Vogel模型生成的花卉Fig.7 The flowers generated by Vogel model
光與花卉的交互是一個(gè)復(fù)雜的過(guò)程,傳統(tǒng)的Lambert和Blinn-Phong等經(jīng)驗(yàn)?zāi)P蚚11]無(wú)法較好地進(jìn)行模擬.引入雙向反射分布函數(shù)(bidirectional reflectance distribution function, BRDF)光照模型,可使漫反射項(xiàng)和高光反射項(xiàng)真實(shí)地渲染花卉.
Lambertian BRDF是應(yīng)用廣泛的漫反射BRDF模型,但其忽略了菲涅爾反射和次表面散射.本研究考慮到真實(shí)的物理光照渲染,對(duì)漫反射項(xiàng)使用Disney的BRDF模型,用符合物理現(xiàn)象的漫反射來(lái)模擬[12]
[1+(FD90-1)(1-n·v)5]
(11)
其中,fd(l,v)為漫反射項(xiàng);l為光源的入射方向;v為觀察方向;Bc是表面顏色;FD90為粗糙系數(shù)計(jì)算項(xiàng),F(xiàn)D90=0.5+2Rn(h·l)2,h為l和v的半角度矢量,Rn是花卉表面的粗糙度;n為表面法向量.該光照模型還兼顧了掠射角的能量變化.
物理光照渲染中,高光反射項(xiàng)通常應(yīng)用微面元理論[13].該理論認(rèn)為:物體表面是由微觀的面元組成,每個(gè)面元被假設(shè)為光學(xué)平滑,即光線和花卉表面一點(diǎn)相交時(shí),實(shí)際是一系列微面元交互的結(jié)果.
引入Black Ops2的微面元光照模型進(jìn)行花卉的高光效果模擬[14]
fspec(l,v)=Dpl(h)F(l,h)V(v,h)
(12)
其中,fspec(l,v)為高光反射項(xiàng);Dpl(h)是微面元的法線分布函數(shù),計(jì)算法線為h的微面元所占比例;F(l,h)是環(huán)境映射的菲涅爾反射函數(shù),它不僅計(jì)算反射光線占入射光線的比例,而且包含部分光線遮蔽因素;V(v,h)是可見(jiàn)度逼近函數(shù),計(jì)算陰影遮掩以及校正微面元從局部到整體的數(shù)量差異.
考慮到物理渲染的計(jì)算復(fù)雜度,使用法線分布函數(shù)Dpl(h)對(duì)Blinn-Phong高光模型進(jìn)行改進(jìn),即保留其模型較少的計(jì)算量,同時(shí)引入簡(jiǎn)單的參數(shù)替代Beckmann NDF[15],得到新法線分布函數(shù)為
(13)
其中,α為反射強(qiáng)度,α=8 192g,g為光澤度.
環(huán)境映射的菲涅爾反射函數(shù)為
F(l,h)=r0+(1-r0)2-10(l·h)
(14)
其中,r0為高光反射系數(shù).
可見(jiàn)度逼近函數(shù)為
(15)
其中,k=min(1.0,g+0.545).
將渲染算法用于三維虛擬場(chǎng)景中的視覺(jué)效果,如圖8.相對(duì)傳統(tǒng)光照,改進(jìn)后的算法使用物理渲染,更符合物理學(xué)規(guī)律模擬光線.
圖8 三維場(chǎng)景中的葉片F(xiàn)ig.8 Leaves in 3D scene
實(shí)驗(yàn)在Intel Core i3-2130 CPU、4 Gbyte內(nèi)存、Intel HD集成顯卡(128 Mbyte)的計(jì)算機(jī)上,以自然景物中的花卉為研究對(duì)象,采用C#語(yǔ)言并結(jié)合ShaderLab在Unity 3D的平臺(tái)下,實(shí)現(xiàn)多種花卉的真實(shí)感建模.根據(jù)本研究仿真算法,結(jié)合所獲取的數(shù)據(jù),得到真實(shí)感渲染后的玫瑰花植株如圖9(b),圖9(a)為拍攝的真實(shí)玫瑰花.將仿真結(jié)果同實(shí)物照片比較可得,所構(gòu)造的花卉葉片模型呈橢圓形[16],花瓣呈倒卵形,逼真地再現(xiàn)了玫瑰花的形態(tài)特征.通過(guò)增大Perlin噪聲的Nsx和Nd值,能較好地模擬出玫瑰花瓣的波浪狀褶皺紋理.
圖9 玫瑰花的仿真Fig.9 The simulation of roses
仿真算法采用控制點(diǎn)生成花卉器官,通過(guò)參數(shù)調(diào)整可得到不同的花卉仿真模型.算法不僅可以構(gòu)造重瓣花,還可仿真各式各樣的單瓣花,圖10(b)給出了單瓣花三色堇的建模效果.首先繪制卵狀三角形的花瓣草圖,然后使用Perlin噪聲生成平整的三色堇花瓣,最后組合各個(gè)花卉器官得到形似彩蝶的三色堇.
圖10 三色堇的仿真Fig.10 The simulation of pansies
圖9和圖10兩種不同花卉的具體參數(shù)設(shè)置如表1.其中,Np是花瓣數(shù);Nl是葉片數(shù);h是莖稈高度;φ和d分別為花被片角度和花瓣間距.其他類型的花卉仿真結(jié)果請(qǐng)掃描論文頁(yè)末右下角二維碼,見(jiàn)補(bǔ)充材料圖S1和圖S2.
表1 不同花卉的參數(shù)設(shè)置Table 1 The parameter settings in the different flowers
由表1可見(jiàn),重瓣花玫瑰的花瓣層數(shù)多,最內(nèi)側(cè)的花蕾接近直立狀,φ通常設(shè)成90°.而單瓣花三色堇只有兩層花瓣,花瓣之間緊密相連,φ設(shè)定為30°,d僅為玫瑰花的1/2.
同時(shí),使用花蕾的數(shù)量Nb、花瓣角度比例Sa和花的大小S進(jìn)行參數(shù)調(diào)整,可生成不同生長(zhǎng)時(shí)期的花卉,結(jié)果如圖11.由圖11可知,當(dāng)花蕾數(shù)量較多且比例較小時(shí),仿真結(jié)果呈現(xiàn)花卉生長(zhǎng)初期.當(dāng)花蕾數(shù)量較少且比例較大時(shí),仿真結(jié)果呈現(xiàn)花卉盛開(kāi)時(shí)期.
圖11 玫瑰花的不同生長(zhǎng)時(shí)期Fig.11 Different growth stages of the rose
圖12分別展示了采用分形幾何、Bézier曲面和Perlin噪聲方法生成的仿真花卉.由圖12可見(jiàn),Perlin噪聲生成的花卉真實(shí)感比另外兩種更強(qiáng).
圖12 不同算法生成的花卉Fig.12 The flowers generated by different algorithms
對(duì)比各種算法生成的花卉,其結(jié)果如表2.由表2可見(jiàn),分形幾何生成的花瓣和葉片不可卷曲,仿真效果較差且需要花卉的迭代函數(shù)系統(tǒng)(iterated function system, IFS)碼,如圖12(a).Bézier曲面需要使用較多的控制點(diǎn)以生成花瓣,但花卉建模繁瑣,如圖12(b).基于Perlin噪聲的算法易于建模并能獲得較好的花卉仿真效果,如圖12(c).此外,還可以調(diào)整控制點(diǎn)和關(guān)鍵參數(shù)生成不同的花卉及其生長(zhǎng)時(shí)期.
表2 三種不同算法的比較Table 2 Comparison of three different algorithms
表3比較了分別采用分形幾何、Bézier曲面和Perlin噪聲算法生成單株玫瑰花時(shí)的性能數(shù)據(jù).由表3可見(jiàn),用Perlin噪聲算法繪制的玫瑰花復(fù)雜度較低,且繪制速度最快,所需存儲(chǔ)空間與Bézier曲面算法相比減少了31.3%,而繪制時(shí)間僅增了0.5 s.
表3 三種仿真方法的效率比較Table 3 Comparison of the efficiency of three methods
當(dāng)模擬空間規(guī)模大小為64×64×8像素的場(chǎng)景時(shí),采用增加花卉數(shù)量的方法可以比較分形幾何、Bézier曲面和Perlin噪聲3種仿真方法在實(shí)際場(chǎng)景的性能,其結(jié)果如圖13.
圖13 渲染幀率對(duì)比Fig.13 Comparison of rendering frame rate
由圖13可知,分形幾何平均幀率最高,性能變化較平緩,適用于對(duì)場(chǎng)景真實(shí)感要求不高,但花卉數(shù)量較多的虛擬場(chǎng)景;Perlin噪聲的性能隨著花卉數(shù)量增加而下降,適用于真實(shí)感要求較高,但不需要大量花卉仿真的虛擬場(chǎng)景;Bézier曲面的性能下降較快,幀率不如同等條件下的Perlin噪聲,適用于對(duì)花卉真實(shí)感要求特別高的小范圍虛擬場(chǎng)景.
根據(jù)花卉的對(duì)稱特性,將一側(cè)控制點(diǎn)映射到另一側(cè),利用Catmull-Rom樣條曲線繪制草圖.通過(guò)二維Perlin噪聲生成深度值,引入噪聲x軸和y軸縮放參數(shù)去控制花瓣和葉片的卷曲程度,實(shí)現(xiàn)花卉器官的三維重建;采用Vogel數(shù)學(xué)模型生成花序,并構(gòu)建花卉形態(tài)結(jié)構(gòu);提出一種改進(jìn)的物理光照方程,從漫反射項(xiàng)和高光反射項(xiàng)對(duì)花卉進(jìn)行渲染.實(shí)驗(yàn)結(jié)果表明,本研究方法在花卉仿真時(shí)使用控制點(diǎn)少、建模高效,生成的花卉模型仿真度高且數(shù)據(jù)量小,渲染光照真實(shí)感強(qiáng).但是,該方法的花卉仿真類型局限于單瓣花和符合Vogel模型的重瓣花,也僅能模擬花卉開(kāi)放的過(guò)程.如何擴(kuò)展花卉仿真類型、模擬花卉從開(kāi)放到衰落過(guò)程,以及綜合考慮花卉的植物學(xué)特性等是下一步研究的方向.
深圳大學(xué)學(xué)報(bào)(理工版)2019年4期