何振邦 程章林
1(中國科學(xué)院深圳先進技術(shù)研究院 深圳 518055)
2(中國科學(xué)院大學(xué) 北京 100049)
植物作為現(xiàn)實世界中常見的自然景觀,其三維模型在影視特效、電子游戲和虛擬現(xiàn)實等場景中具有廣泛的應(yīng)用。然而,由于植物具有復(fù)雜的結(jié)構(gòu)和多變的外形,植物三維模型的構(gòu)建一直較為困難。傳統(tǒng)的植物建模方法是創(chuàng)作者利用Maya 等三維建模軟件以真實的植物圖片或?qū)嵨镒鳛閰⒖?,進行細(xì)致地手工建模。但這種方法繁瑣且低效,尤其是對大規(guī)模的植物場景進行建模時,任務(wù)會變得更艱巨。因此,高效、快速的植物建模方法一直是計算機圖形學(xué)研究中一個具有挑戰(zhàn)性的重要課題。本文提出一種基于手繪草圖的高效植物建模方法。此外,鑒于傳統(tǒng)植物建模方法主要聚焦于大型樹木植物,對花卉等細(xì)小植物的精細(xì)結(jié)構(gòu)建模研究較少,本文針對該類細(xì)小植物也進行了建模研究。
自 20 世紀(jì) 80 年代以來,研究人員和學(xué)者發(fā)展了許多有效的植物建模方法,如基于規(guī)則的過程式建模方法,基于視頻圖像和三維點云的重建方法,以及基于手繪草圖的建模方法[1]等。其中,基于手繪草圖的建模方法作為一種新穎、高效的建模方法,近年來得到許多學(xué)者的廣泛關(guān)注。與其他方法相比,基于手繪草圖的三維建模方法快速、簡便、靈活,創(chuàng)作者可以根據(jù)自己的想法繪制草圖并快速生成期望的模型,極大地提高建模效率。此外,其他建模方法如基于規(guī)則的建模方法較難控制植物外形,需要創(chuàng)作者具有豐富的植物學(xué)專業(yè)知識且熟悉各種參數(shù)的調(diào)控方法才能得到理想的目標(biāo)模型,且模型生成后存在不易修改等問題。但基于手繪草圖的建模方法能給創(chuàng)作者較大的自由度去生成各種外形復(fù)雜的植物模型而無需了解模型生成的相關(guān)細(xì)節(jié)。因此,基于手繪草圖的建模是一種具有較大應(yīng)用前景的建模方式。
從二維草圖中構(gòu)建植物模型,首先需要從二維草圖中提取各種筆畫特征,分析草圖各部分的語義信息并理解創(chuàng)作者的創(chuàng)作意圖,以此為導(dǎo)向進行后續(xù)的處理。然而,由二維草圖得到三維模型過程不可避免地要面臨深度信息缺失的問題,這也是所有基于草圖的三維建模方法的難題。因此正確的深度信息對于生成具有較強真實感的植物模型具有至關(guān)重要的作用。另外,草圖僅提供了植物的大致輪廓信息,如何根據(jù)粗糙草圖進行相應(yīng)細(xì)節(jié)的補充和潤色,使最終產(chǎn)生的模型符合自然規(guī)律且具有一定真實感,也是基于手繪草圖的建模方法需要解決的問題。
本文提出一種基于手繪草圖的快速植物建模方法,支持對包括花卉、盆栽、樹木等具有花朵、葉片和枝干的植物進行快速建模,彌補了傳統(tǒng)方法僅支持單一種類植物建模的缺點,且模型構(gòu)建過程完全自動化,無需額外的調(diào)整信息。算法首先根據(jù)草圖自動推測建模者的建模意圖;然后依靠基于植物學(xué)先驗知識的模型來恢復(fù)植物各結(jié)構(gòu)的深度信息,并根據(jù)植物的特點設(shè)計模型的優(yōu)化算法;最后構(gòu)建出具有一定真實感的植物模型。實驗結(jié)果表明,本文方法可以構(gòu)建出具有真實感的各種植物模型,且相比于傳統(tǒng)方法,在建模速度上有明顯優(yōu)勢。
基于規(guī)則的過程式建模方法是最早被提出和應(yīng)用的植物建模方法。早期的過程式建模方法主要依據(jù)植物枝干的生長特性所提出的幾何規(guī)則來構(gòu)建植物模型,如枝干的角度、長度比例等[2]。Lindenmayer[3]通過觀察植物枝干的分形結(jié)構(gòu)提出 L-System 文法系統(tǒng)[4]——一個基于字符串的替換和重寫系統(tǒng)。該系統(tǒng)反復(fù)使用不同的規(guī)則來生成字符串,通過這種模擬植物的生長的方式來構(gòu)造分形結(jié)構(gòu)。Prusinkiewicz[5]提出對字符賦予一定的圖形的意義來解釋這些字符串,從而使得L-System 能用來表達植物模型。
L-System 具有很強的表達能力,能夠描述各種復(fù)雜的植物結(jié)構(gòu)。但其對于普通用戶來說并不友好,需要一定的數(shù)學(xué)和植物學(xué)專業(yè)背景知識。鑒于 L-System 難以控制植物的整體輪廓外形,有學(xué)者對模型進行逆向推測來獲得 L-System 的模型參數(shù)[6],亦有學(xué)者通過改進 L-System 來產(chǎn)生外形可控的植物模型[7]。由于現(xiàn)實中的植物還存在空間競爭、趨光性等特點,僅使用 L-System 無法模擬這種行為。Runions 等[8]提出一種空間殖民地算法來模擬樹木生長的競爭過程。Palubicki 等[9]提出一種將葉序等植物學(xué)因素加以考慮的自組織算法,使生成的模型更為逼真、自然。此外,Yi 等[10]提出一種基于生長方程約束的植物建模方法,來模擬環(huán)境阻擋以及不同植物之間的空間競爭等因素對植物生長形態(tài)造成的影響。Wang 等[11]提出一種基于部件的快速花朵建模方法:用戶可通過輸入?yún)?shù)來生成一些預(yù)定義的花朵部件,并通過指定部件的組裝方式來生成模型,同時花瓣和葉片的紋理也可以根據(jù)預(yù)設(shè)樣式自動生成。
隨著硬件技術(shù)的發(fā)展,高精度的植物圖像和點云數(shù)據(jù)變得越來越容易獲取,這為基于真實數(shù)據(jù)的植物建模提供了便利。Shlyakhter 等[12]提出一種基于照片的樹木三維重建方法——通過提取照片內(nèi)樹木輪廓作為參考來生成樹木主干,再結(jié)合 L-System 形成枝干分支來重建照片中的樹木模型。Tan 等[13]提出一種基于單張照片重建樹木模型的方法——以追蹤圖片中可見的樹木主干為基礎(chǔ),結(jié)合樹木輪廓,提出一種數(shù)據(jù)驅(qū)動的吸引子生長方法來補充被樹葉遮擋的樹枝部分。Guo 等[14]利用過程式建模方法從拍攝的多張植物照片中重建出具有逼真外形的植物模型。Yan 等[15]結(jié)合一定的先驗知識從單張照片對花卉進行三維重建:假定花瓣圍成一個三維圓錐且花瓣尖端圍成的橢圓是三維圓錐在圖像平面的投影,從而可以利用幾何關(guān)系還原各個花瓣的大致三維位置。
由于現(xiàn)實場景中各種物體存在遮擋和測量角度限制,加之植物自遮擋現(xiàn)象,三維掃描獲取的點云數(shù)據(jù)不完整且有噪聲,如何從低質(zhì)量的點云數(shù)據(jù)中重建植物模型具有不小的挑戰(zhàn)。Xu 等[16]提出對點云數(shù)據(jù)進行帶權(quán)圖的構(gòu)造,并使用最小路徑算法結(jié)合一定的植物學(xué)先驗知識進行骨架結(jié)構(gòu)的提取。Livny 等[17]提出一種輕量級的樹木表達方式,從雜亂的點云數(shù)據(jù)中提取較為清晰的主干骨架,而對于噪聲較多的樹葉部分采用 Lobe的結(jié)構(gòu)表達——使用預(yù)儲存的樣本枝干進行填充,這比直接從點云數(shù)據(jù)構(gòu)建樹木模型更快速且占用的空間更小。此外,通過在 Lobe 內(nèi)使用不同填充率還能完成不同層次的渲染。
從現(xiàn)實場景重建現(xiàn)實世界的植物有時并不能滿足人們的需求,而基于手繪草圖的植物建模方法允許人們以直觀的方式表達其建模意圖,從而能夠自由創(chuàng)建生活中不存在的植物模型。草圖建模最早于 1999 年由 Igarashi 等[18]在開發(fā)基于手繪草圖的三維建模軟件 Teddy 時提出,該系統(tǒng)根據(jù)草圖輪廓進行膨脹來產(chǎn)生低復(fù)雜度的三維模型。Okabe 等[19]最早提出將手繪草圖建模應(yīng)用在樹木建模上,并設(shè)計了一個交互式系統(tǒng)來幫助用戶將草圖生成真實的樹木模型,該系統(tǒng)可以在 10 min 內(nèi)從草圖中構(gòu)建一棵樹的三維模型。Anastacio 等[20]提出使用基于構(gòu)造線的概念草圖方式去定義植物器官的排列順序以及全局結(jié)構(gòu),而局部使用 L-System進行細(xì)節(jié)創(chuàng)建。Ijiri 等[21]也提出使用草圖進行樹木整體結(jié)構(gòu)與輪廓的控制,并結(jié)合 L-System 進行局部枝干生成的樹木建模算法。Longay 等[22]在平板電腦上實現(xiàn)了一個手繪樹木建模系統(tǒng),該系統(tǒng)結(jié)合了過程式建模和自組織建模方法,可以根據(jù)手繪草圖模擬樹木生長,產(chǎn)生真實的樹木模型。Ijiri 等[23]還將手繪草圖建模應(yīng)用在花卉建模上,開發(fā)出根據(jù)手繪花卉草圖和花序圖進行建模的交互式花卉建模系統(tǒng)。唐棣等[24]提出一種素描式三維花朵建模方法,通過提取草圖中的側(cè)影線與邊界輪廓線等筆畫信息計算出花瓣的橫截曲線來構(gòu)造花瓣的曲面形狀。濮群等[25]針對現(xiàn)有花朵建模方法形成的花瓣式樣與形態(tài)單一的缺陷,提出先根據(jù)手繪花瓣的輪廓圖提取花瓣模型的二維控制點,然后通過彎曲控制函數(shù)得到花瓣的三維控制點,繼而利用三維控制點構(gòu)造三維花瓣模型的方法。目前,大部分基于手繪草圖的植物建模工作往往針對單一類型植物,鮮有支持多類型植物的建模方法。
對輸入草圖進行預(yù)處理是本文系統(tǒng)的第一步。受限于繪制水平與繪制設(shè)備的輸入精度,創(chuàng)作者在繪制草圖時常常會出現(xiàn)一些微小失誤,如筆劃的抖動。若不對其進行適當(dāng)處理,這些繪制失誤則會被如實反映到模型中,從而影響模型的質(zhì)感。此外,從輸入設(shè)備直接得到的草圖采樣點可能存在數(shù)據(jù)冗余和采樣點分布不均等問題,不利于后續(xù)步驟的處理。因此,對草圖進行預(yù)處理是十分必要的。
由于計算機只能處理離散數(shù)據(jù),而從輸入設(shè)備中得到的草圖筆劃實際上是一系列的離散點集合,且輸入設(shè)備的采樣率較高、采樣點較為密集,存在一定的冗余數(shù)據(jù),會影響后續(xù)算法的處理速度。此外,若創(chuàng)作者在繪圖時移動光標(biāo)的速度不均,可能出現(xiàn)采樣點分布不均的情況。因此,為了簡化筆劃信息、獲得間隔均勻的像素點,在預(yù)處理步驟中,本文首先對筆劃進行的重采樣,即先按次序連接筆劃中的所有采樣點以形成筆劃線段,然后從首點出發(fā),沿線段以一定半徑對筆劃線段上的點進行重新采樣,以獲得均勻的新采樣點。
其中,m為對采樣點進行平滑處理的窗口半徑;c為權(quán)重影響因子。
預(yù)處理后的草圖只是一些采樣點集合,所包含的信息十分有限,因此需要對這些點集進行圖元分類,并對圖元進行語義分析,以推測創(chuàng)作者的創(chuàng)作意圖,最終得到建模對象類別和相關(guān)的參數(shù)信息,并提供給后續(xù)步驟進行模型構(gòu)建操作。
在獲取草圖時要充分考慮系統(tǒng)給予創(chuàng)作者的自由度與便利性,同時也要兼顧后續(xù)處理的難易度。因此,文本方法約定輸入的圖元類型有 5種:花瓣、葉片、枝干、枝干輪廓和葉片輪廓,各圖元示意簡圖如圖 1 所示。各圖元的具體定義如下:葉片是具有近似閉環(huán)結(jié)構(gòu)的曲線;花瓣可以看作是一種特殊的葉片,即若干互相聚集的葉片;枝干是多個非封閉曲線的集合;枝干輪廓是圍繞枝干的曲線,定義了植物內(nèi)部細(xì)枝干的生長范圍和大致輪廓;葉片輪廓也是圍繞枝干的曲線,定義了植物內(nèi)部葉片填充的范圍和大致輪廓。
圖1 草圖中支持繪制的各圖元示意簡圖Fig.1 The sketch elements supported in our system
枝干輪廓和葉片輪廓分別在特定模式下繪制,故無需進行進一步的分類。而花瓣、葉片、枝干均在部件模式下繪制,為了能夠分別對花瓣、葉片和枝干進行建模,需要將部件模式下繪制的筆劃進行分類。鑒于花瓣和葉片在二維形態(tài)上是相似的,僅存在紋理以及空間位置上的不同,本文方法將花瓣和葉片的細(xì)分類留到后續(xù)的步驟中進行,在元素模式下僅需要將繪制的筆劃分成花瓣和葉片一類,以及枝干一類。本文使用支持向量機根據(jù)提取的筆劃特征進行分類。參與分類的特征有:(1)筆劃起點到終點的距離與整個筆劃長度的比值;(2)對筆劃采樣點進行主成分分析(Principal Component Analysis)后得到的較大特征值與較小特征值的比值;(3)對筆劃采樣點主成分分析后得到的兩特征向量方向上形成的包圍盒的面積與筆劃長度的比值。本文預(yù)先繪制和標(biāo)注了約 200 個筆劃數(shù)據(jù),并使用支持向量機訓(xùn)練一個分類模型來進行筆劃分類。
將花瓣和葉片與枝干區(qū)分后,需要對花瓣和葉片作進一步分類。本文的花瓣和葉片分類算法是基于以下觀察假設(shè):自然界中同屬于一朵花的花瓣是由同一個原基區(qū)域發(fā)育而來,花瓣的根點彼此靠近以形成所謂的花心,而葉片則通常從枝干的側(cè)面單獨生長發(fā)育而來,少有葉片的根點互相聚集。因此,可對葉片和花瓣的根點進行聚類,將互相聚集的花瓣和單獨分布的葉片分類開來。本文并未要求創(chuàng)作者指定花朵的數(shù)目,聚類簇的數(shù)目是未知的,因此本文使用 Mean Shift 算法對花瓣和葉片的根點進行聚類。聚類后簇中元素個數(shù)>2 的簇被分類為花朵,元素個數(shù)≤2 的簇則被分類為葉片。
前述步驟已完成枝干分類,在對枝干進行建模時,通過枝干的父子層級關(guān)系調(diào)整枝干的半徑、延伸方向和姿態(tài)等參數(shù)可增強模型的真實感。本文設(shè)計了一個算法可對這些枝干進行父子層級分析,定義處理集 M 和未處理集 N,初始狀態(tài)下所有枝干都在集合 N 中。算法首先從集合N 中取出最長的枝干作為 0 級節(jié)點移入集合 M;隨后遍歷集合 N 中所有的枝干,與當(dāng)前集合 M中所有屬于最大層級的枝干進行匹配,若集合 N中枝干nj的端點與集合 M 中屬于最大層級的枝干mi的點集內(nèi)任意一點的歐幾里得距離最小且該距離小于閾值,則nj與mi匹配,即nj為mi的下一層級,mi為nj的父節(jié)點,并將nj從集合 N移入集合 M;重復(fù)上述操作直到集合 N 為空集或集合 N 內(nèi)無枝干可以匹配。
當(dāng)創(chuàng)作者期望描述一個密集的細(xì)枝干簇結(jié)構(gòu)時,本文系統(tǒng)允許創(chuàng)作者在待分枝的主枝干周圍繪制一個輪廓筆劃,代表輪廓內(nèi)有許多細(xì)枝干從主枝干生成,且生成的新枝干簇整體輪廓與筆劃大致相符。為了完成此目標(biāo),系統(tǒng)需要在輪廓范圍內(nèi)進行細(xì)枝干填充,本文參考 Tan 等[13]基于單張照片的樹木建模工作中提出的數(shù)據(jù)驅(qū)動的吸引子算法。首先,對枝干進行采樣得到若干生長點,同時對輪廓進行采樣得到若干吸引點。然后,從某一生長點出發(fā)行進,設(shè)當(dāng)前點為pi,則下一點的坐標(biāo)pi+1為:
其中,kp為輪廓吸引系數(shù),vp為當(dāng)前生長點指向輪廓上最近吸引點的方向;kb為枝干吸引系數(shù),vb為細(xì)枝干初始生長點所附著處的父枝干方向;km為方向記憶系數(shù),pi-1pi為上一生長點指向當(dāng)前生長點的方向;r為總體生長速率。重復(fù)迭代該過程直到當(dāng)前生長點已靠近輪廓筆劃。該公式綜合考慮了輪廓吸引方向、細(xì)枝干附著的父枝干方向以及前一生長方向的影響,可通過設(shè)置不同的參數(shù)達到不同的生長效果。其中,不同參數(shù)對枝干的形態(tài)影響如圖 2 所示。
圖2 不同參數(shù)對枝干形態(tài)影響圖Fig.2 The impact of different parameters on the branch shapes
當(dāng)創(chuàng)作者需要在一個枝干周圍布滿葉片時,可以在該枝干的周圍繪制一個輪廓筆劃,代表枝干上生長有與輪廓形狀相符的葉片簇。與枝干填充算法類似,葉片輪廓填充算法先按照枝干填充算法生長出一個主葉脈結(jié)構(gòu);然后,在已繪制葉片中隨機選擇一個模板葉片執(zhí)行仿射變換,并與主葉脈對齊——使仿射變換后的葉片的根點與主葉脈初始生長點對齊,同時該葉片的尖點(葉片筆劃中曲率變化最大的點,即視覺上葉片最為突出的一點)與主葉脈的末點對齊。由此得到新葉片并將該新葉片加入當(dāng)前葉片集合中去,該過程如圖 3 所示。
圖3 葉片生長和填充過程示意圖Fig.3 An illustration of the leaf growth and fill
基于草圖建模技術(shù)最關(guān)鍵的問題是如何從二維圖像中恢復(fù)深度信息。由于二維草圖存在深度信息的缺失,用二維草圖表示三維模型具有歧義性,即草圖中的二維投影所對應(yīng)的深度可以有無數(shù)種可能,如何找到一個合理的二維-三維映射是一項巨大的挑戰(zhàn)。因此,在三維模型的逆向推測過程中需要結(jié)合一定的先驗知識,以保證逆向推測得到的三維模型的合理性。本文以植物學(xué)知識為向?qū)?,結(jié)合對真實植物樣本的觀察,提出一定假設(shè)與約束來分別對花朵、枝干、葉片進行深度信息的恢復(fù)。
通過觀察大量的花朵實物樣本并參考 Yan等[15]相關(guān)工作,本文使用一個圓錐模型來恢復(fù)花朵的深度信息,即認(rèn)為由若干花瓣組成的花朵是高度對稱的:花瓣環(huán)繞花心近似形成一個圓錐,且圓錐的頂點位于花心處,花瓣大致貼合在圓錐側(cè)面上,各個花瓣的尖點圍成圓錐底面圓。其中,花瓣的尖點定義為筆劃中曲率變化最大的點,視覺上是花瓣最外圍的一點,如圖 4(a)所示。
本文假設(shè)草圖是由花朵實體經(jīng)過垂直于繪圖屏幕方向的平行投影所得,因此,通過分析草圖中每朵花的花瓣形成的圓錐投影可以得到三維空間圓錐的方程,從而代入各花瓣上采樣點的XY二維坐標(biāo)解得花瓣的Z軸深度信息。
本文花朵深度信息恢復(fù)算法如下:
(1)計算當(dāng)前處理的花朵中所有花瓣的根點坐標(biāo)均值,記為花心cf。
(2)使用最小二乘法對所有花瓣的尖點進行橢圓擬合,得到橢圓E。
(3)根據(jù)假設(shè),二維草圖是通過垂直于繪圖屏幕方向的平行投影得到的。因此,橢圓E的長軸即為原三維空間中圓錐底面半徑r,圓錐的主軸與繪圖平面所成的夾角θ有 sinθ=a/b。其中,a、b為橢圓E的短軸和長軸,根據(jù)此關(guān)系可求得θ。
(5)步驟(4)中所得橢圓方程是以Z軸為圓錐主軸的標(biāo)準(zhǔn)形式,未考慮橢圓旋轉(zhuǎn)角θ。為了計算旋轉(zhuǎn)矩陣,以花心cf為原點建立三維直角坐標(biāo)系。設(shè)垂直草圖平面的單位向量z=[0, 0, 1],可計算得到橢圓的旋轉(zhuǎn)軸vn=v×z。已知圓錐主軸與草圖平面的夾角θ,可計算通過繞vn旋轉(zhuǎn)使得圓錐主軸與Z軸重合的旋轉(zhuǎn)矩陣RM,如圖 4(d)所示。
圖4 花朵的深度信息恢復(fù)算法示意圖Fig.4 An illustration of the flower depth recovery algorithm
其中,pr為點 通過旋轉(zhuǎn)矩陣RM變換到以Z軸為主軸的標(biāo)準(zhǔn)圓錐方程中的點坐標(biāo)。
枝干的幾何結(jié)構(gòu)較為簡單,只需知道枝干兩端點的深度信息便可通過插值得到枝干上各點的深度。本文參考 Okabe 等[19]的基于草圖的樹木建模工作,設(shè)計了一種獲取枝干深度的算法。算法的主要思想是基于之前得到的枝干父子層級關(guān)系,讓所有子枝圍繞其父枝旋轉(zhuǎn),以尋找一種枝干的三維分布狀態(tài)——在該狀態(tài)下,枝干的熵(即分布的散亂程度)最大,枝干在三維空間形成均勻、自然的分布效果。同時還對枝干的旋轉(zhuǎn)角度進行一定約束,避免較大的旋轉(zhuǎn)角導(dǎo)致旋轉(zhuǎn)后的三維空間枝干長度與草圖空間枝干長度的差值過大,顯得過于突兀。對于某一枝干b,其熵S(b)的定義參考公式(4):
本文算法是遞歸進行的,處理完某枝干后再以相同方法處理其子節(jié)點??紤]當(dāng)前枝干作為父枝干,將子枝干分成左側(cè)的子枝干和右側(cè)的子枝干兩組,給予每個子枝干一個服從高斯分布的隨機擾動角度作為初始值,應(yīng)用最優(yōu)化方法求解當(dāng)前枝干熵最大時的子枝干旋轉(zhuǎn)角度。在實際操作中,通常經(jīng)過最優(yōu)化算法的多次迭代計算后便可得到具有較好效果的旋轉(zhuǎn)值,而無需解出最大熵值下的最優(yōu)分布。值得注意的是,若不對子枝干進行左右區(qū)分,則可能出現(xiàn)某個子枝干得到一個較大的旋轉(zhuǎn)角,使得該枝干從一個半球旋轉(zhuǎn)到另一個半球空間內(nèi),造成與原二維草圖表達意圖相沖突的問題。根據(jù)三維空間的旋轉(zhuǎn)角度可以從二維投影坐標(biāo)反解出三維空間的Z軸深度值,從而實現(xiàn)深度信息的獲取。圖 5 展示了利用本文算法恢復(fù)深度信息重建得到的三維枝干模型。
圖5 利用枝干深度信息重建得到枝干模型Fig.5 The reconstructed branch model using recovered depth
由于葉片的生長較為自由,相關(guān)工作中也鮮有對葉片的草圖建模研究,這對葉片的深度信息獲取提出了一定挑戰(zhàn)。鑒于葉片通常由枝干旁的小芽發(fā)育而來,且葉片作為植物養(yǎng)分生產(chǎn)器官總是趨向于接觸到最多陽光的方向生長,因此葉片在大部分情況下位于垂直于陽光的平面上。此外,由于創(chuàng)作者在草圖繪制的方式上不太可能使用精確的透視手法,即繪制的葉片草圖僅描繪葉片的輪廓形狀,而不代表特定的三維位置信息。
圖6 葉片深度信息獲取示意圖Fig.6 An illustration of the leaf depth recover
在獲得草圖中各部分的深度信息之后,便可以通過 Delaunay 三角化進行網(wǎng)格模型的生成。由于植物的結(jié)構(gòu)較為復(fù)雜、曲面形狀多變,因此在建模時應(yīng)充分考慮這些特點并呈現(xiàn)在模型中以增加模型的真實感。
花瓣彎曲廣泛存在于各種類型的花朵中,其中有的是受重力影響,也有的是因花瓣固有的形態(tài)所致。本文認(rèn)為花瓣是一個軟體平面,滿足彈性力學(xué)原理。根據(jù)力學(xué)的相關(guān)知識可以推出,一個長度為L的理想化軟體棒上某點距離底端的長度x與該處彎曲形變y之間的關(guān)系有:
圖7 花瓣彎曲模擬結(jié)果Fig.7 The result of petal bending modeling
圖8 花瓣內(nèi)凹模擬結(jié)果Fig.8 The result of petal hollow modeling
在現(xiàn)實世界中可以觀察到,植物枝干在分叉后具有不同的半徑,且越末級的枝干半徑越小。事實上,植物枝干的分支遵循一定的規(guī)律。規(guī)定每一級枝干的半徑在各處都是一致的,設(shè)r為分支點處父枝干的半徑, 為分支點以上各子枝干的半徑,則滿足:
其中,冪級數(shù)t控制枝干半徑積累程度,影響下一級枝干半徑的相對粗細(xì),且不同植物有不同的冪級數(shù)t。當(dāng)t=2 時,即為達芬奇提出的樹木分支枝干半徑關(guān)系;對于花卉等草本植物,取t>2 可達到較好的效果。在草圖分析步驟中,基于枝干間的父子層級關(guān)系,通過遍歷枝干節(jié)點可以統(tǒng)計得到某枝干的子節(jié)點和子節(jié)點個數(shù),將相關(guān)信息帶入公式(6)可得到子枝干的半徑供后續(xù)建模參考。
事實上,植物某一級枝干的半徑并不是恒定的。對于一級枝干,其半徑從根部到頂端是逐漸衰減的,這是植物生長的先后順序和生長累積效應(yīng)造成的。為了捕捉這種現(xiàn)象,本文提出半徑衰減公式(7),在距離根部長度與枝干總長的比值為x處的半徑衰減比值r為:
其中,s和α控制衰減的快慢,s一般取s>10,α一般取 0.3~0.5;m控制枝干末端半徑與根部半徑的比值,一般取 0~1。
目前,對于植物枝干的幾何形體建模已有廣泛的研究,常用的枝干描述方法有多棱柱、B 樣條曲線、廣義圓柱等?;诮:弯秩镜木C合性能考慮,本文默認(rèn)使用八棱柱來對枝干進行建模:將一個正八邊形的中心沿著枝干骨架移動放樣,同時參考前文步驟中各級枝干的半徑和半徑衰減公式來調(diào)整八邊形的半徑。若建模時枝干設(shè)置的初始半徑較大時,可增加棱柱邊數(shù)以提高模型精度,并達到較好的視覺效果。
本文使用 C++ 實現(xiàn)上述算法,使用 Qt 作為圖形界面框架并使用 OpenGL 進行模型的渲染顯示,實現(xiàn)的系統(tǒng)界面如圖 9 所示,創(chuàng)作者可在界面左側(cè)進行草圖繪制,并在右側(cè)實時觀察生成的模型。為了測試本文方法建模的有效性,在一臺配置為 8 GB 內(nèi)存、2.4 GHz 主頻雙核 CPU 的電腦上對建模算法進行若干測試實驗。
圖9 本文基于手繪草圖的植物建模系統(tǒng)界面Fig.9 The interface of our sketch-based plant modeling system
實驗首先測試了本文方法建模的有效性和效率,即邀請 6 位未使用過本系統(tǒng)的用戶進行手繪草圖建模。在測試前,先對用戶進行簡要地介紹與指導(dǎo);隨后,用戶在程序中自由進行草圖的繪制并使用系統(tǒng)進行建模,直到用戶構(gòu)建出滿意的模型,同時記錄下建立 8 個不同種類和規(guī)模的植物模型所用時間與相應(yīng)的模型參數(shù)。測試中的草圖和模型如圖 10 所示,植物模型的屬性和建模時間如表 1 所示。由表中數(shù)據(jù)可知,對不同規(guī)模和種類的植物模型,本文系統(tǒng)具有較高的效率,均能在 1 s 內(nèi)完成模型構(gòu)建;用戶也一般能在 2 min 完成整個草圖繪制、調(diào)整與模型構(gòu)建的過程,并得到滿意的建模結(jié)果??傮w而言,本文系統(tǒng)的建模速度主要與草圖處理后得到的圖元數(shù)量成線性關(guān)系,由于本文系統(tǒng)支持輪廓填充,可生成更多的枝干或葉片,因此較少的筆劃也可能導(dǎo)致較長的處理時間。整個處理流程,二維草圖的處理耗時較短,深度恢復(fù)和模型三角化占據(jù)了大部分處理時間。草圖處理后得到的枝干、葉片和花瓣越多,處理時間越長。由于需要對葉片和花瓣進行形態(tài)模擬,較少的頂點數(shù)會導(dǎo)致較差的花瓣彎曲和內(nèi)凹視覺觀感,因此葉片和花瓣的頂點分布較為密集,具有較多該類圖元的模型擁有的頂點數(shù)和三角面數(shù)也較多。另外,葉片和花瓣的處理時間顯著長于枝干的時間,這是由于葉片和花瓣具有較多的頂點數(shù),三角化需要的時間更長,且在建模時會進行額外的形態(tài)模擬。如圖 10 和表 1 中模型(c、e、g、h)所示,這 4 幅草圖中的葉片和花朵較多,特別是模型(g、h)為含有較多葉片的大型樹木,相較于其他模型處理時間顯著增長。
表1 植物模型的數(shù)據(jù)統(tǒng)計Table 1 Statistics on tested plant models
圖10 實驗中用戶繪制的草圖和得到的模型Fig.10 The sketches and constructed models in our test
為了展示本文方法所構(gòu)建模型的真實感,本文還根據(jù)真實圖片進行手繪建模的對照實驗。實驗收集了若干植物的真實圖片,首先根據(jù)真實圖片進行手繪臨摹出草圖,然后使用本文系統(tǒng)進行建模,并將真實圖片中手工提取的紋理映射到所建立的模型上,實驗結(jié)果如圖 11 所示。從對比圖可以看出,本文方法能夠較好地還原植物的各種形態(tài)與細(xì)節(jié),且構(gòu)建的模型生動、形象,具有一定的真實感。
圖11 根據(jù)真實植物圖片臨摹草圖并重建得到的植物模型Fig.11 The reconstructed plane models according to real plane photos
橫向?qū)Ρ绕渌麑W(xué)者的植物建模系統(tǒng),唐棣等[24]的花朵建模系統(tǒng)需要繪制花朵的側(cè)影線來確定花朵的三維結(jié)構(gòu),這對創(chuàng)作者的繪制水平提出了不小要求,本文方法無需用戶精確繪制投影視角下的草圖;濮群等[25]提出的基于手繪花瓣的花朵建模方法雖然允許用戶通過繪制花瓣草圖來進行建模,但仍然要求用戶對花瓣軸線上的控制點進行控制來調(diào)整花朵形態(tài),同時該方法涉及的參數(shù)較多,提高了操作的門檻;繆永偉等[26]提出的基于對稱性的單幅圖像花朵建模允許用戶在已有圖像上繪制花朵輪廓來進行建模,與本文方法相比,該方法僅支持對單個花朵進行建模,無法構(gòu)建出具有枝干、葉片的完整花朵模型。本文方法與前述方法在花朵建模方面的效果對比如圖 12所示。對比參考圖像,本文方法構(gòu)建的花朵具有較為還原的形態(tài)。相較于其他基于手繪草圖的樹木建模系統(tǒng),Okabe 等[19]的系統(tǒng)需要細(xì)致地繪制葉片并手工排列葉片分布,而本文方法僅需要繪制若干模板葉片即可,算法會進行自動復(fù)制和填充;馬玲等[27]的系統(tǒng)由于預(yù)先建立了枝葉數(shù)據(jù)庫,僅需要繪制幾筆草圖便可快速得到樹木模型,具有較高效率,然而其結(jié)果對樹木的形態(tài)控制不佳,圖 13 展示了該方法與本文方法在輸入相似草圖時的結(jié)果??傮w而言,與傳統(tǒng)的交互式建模方法相比,本文方法大大降低了用戶的工作量,與現(xiàn)有的草圖建模方法相比,本文方法不局限于單一樹木或花朵的建模,可以通過自由組合各種圖元來建立多種植物模型,為用戶提供較大的創(chuàng)作自由度。
圖12 不同方法的花朵建模結(jié)果對比Fig.12 The flower reconstruction result comparison on different methods
圖13 不同方法的樹木建模結(jié)果對比Fig.13 The tree reconstruction result comparison on different methods
基于手繪草圖的植物建模方法作為一種直觀、快速、便捷的建模手段,面對植物這種具有復(fù)雜形態(tài)、傳統(tǒng)方式處理繁瑣的建模對象,在建模效率上有突出的優(yōu)勢。然而,從深度信息缺失的二維草圖中重建出符合創(chuàng)作者意圖的三維植物模型一直是基于草圖建模需要解決的難點。本文提出一種基于手繪草圖的快速植物建模方法,能夠自動地從繪制的二維草圖中建立出花朵、盆栽、樹木等具有枝葉結(jié)構(gòu)的植物模型。本文方法通過結(jié)合植物學(xué)先驗知識來輔助深度信息的恢復(fù),其推斷和重建出的植物結(jié)構(gòu)較為自然且符合二維草圖的形態(tài)描述。同時本文還對植物的形態(tài)細(xì)節(jié)進行了建模,產(chǎn)生的模型具有一定的真實感。與其他同類基于手繪草圖的植物建模方法相比,本文方法支持的圖元類型較多,能夠通過組合圖元來創(chuàng)作各種形態(tài)的植物模型,而不局限于單一種類的樹木或花朵。
本文系統(tǒng)還存在一些不足,如僅支持花瓣、葉片和枝干這 3 種植物元素,后續(xù)可以增加如根、花蕊、果實等元素。由于本文方法對花朵的建模依賴于圓錐模型假設(shè),處理形態(tài)較為復(fù)雜、具有較多層級和自遮擋的花朵模型時,難以對花朵形態(tài)進行較為忠實地還原。此外,由于先驗知識模型的局限,本文系統(tǒng)生成的植物模型姿態(tài)較為單一,在后續(xù)的研究中可以結(jié)合更多的植物學(xué)知識,如參考趨光性、重力、自組織生長、空間競爭等因素來生成更為自然逼真、多姿多態(tài)的植物模型。近年來,植物建模研究的一大趨勢是將傳統(tǒng)的植物建模方法與機器學(xué)習(xí)、深度學(xué)習(xí)方法進行結(jié)合,在后續(xù)研究中可以考慮將這兩種方法用于輔助深度信息的恢復(fù)、植物種類的識別和分類、紋理的生成等。