国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于質點-彈簧系統(tǒng)的植物形變模擬改進算法

2019-11-01 06:24
浙江工業(yè)大學學報 2019年6期
關鍵詞:質點骨骼彈簧

(浙江工業(yè)大學 計算機科學與技術學院,浙江 杭州 310023)

植物是自然界中一類最常見的景物,也是構成三維場景的基本要素之一[1]。構造逼真的植物模型,在影視娛樂、游戲與廣告設計、園林規(guī)劃和社區(qū)設計等多個領域均具有重要的應用價值。此外,精確的虛擬植物模型,也可以為諸多農業(yè)科學問題研究提供虛擬平臺。一般地,木本植物由主干、枝條、葉片、花朵和果實等器官組成,許多植物的枝干和其他器官都比較柔軟,因此在受到外部作用(如推拉擠壓、風力等)時,會產生比較明顯的形變。在影視特效、3D動畫等領域,常常需要構建包含植物模型的動態(tài)場景,并且用戶需要對場景中的植物模型進行交互操作,逼真地表現這些交互操作對植物產生的影響,具有十分重要的實際意義。常見的植物三維建模方法可大致分為基于圖像的建模[2]、基于規(guī)則的建模[3-5]和基于草圖[6-7]的建模三大類,而常見的植物動態(tài)模擬方法可以分為基于物理的方法和基于過程的方法[8],其中基于物理的方法被廣泛應用于植物和自然環(huán)境[9]和物體[10]等的交互模擬。例如,Pirk等[11-13]針對逆向過程建模方法進行了研究,從靜態(tài)的樹木模型中提取出樹木的生長規(guī)則和參數,利用參數集重建不同階段的樹木模型,并且基于植物模型生成受力傳感器,模擬出20 株左右的樹木在風中的實時生長變形情況。Stava等[14]使用基于骨架的樹木模型,實現了植物的實時變形,并且考慮了光照分布情況和場景中的障礙物。然而,這種變形方法較難改變植物的結構,并且變形結果受到模型原有形態(tài)的影響。Yang等[8,15]針對雨滴和樹木枝葉的交互進行了研究,通過質點-彈簧模型對樹木枝葉的動態(tài)進行模擬,并給出了一種雨滴在葉片上運動的計算方法。然而,這種算法主要處理了樹木枝條在受力下的形變情況,對葉片等其他器官的結構進行了簡化。Quigley等[16]提出了一種基于鉸鏈連接剛體模型的樹木受力形變模擬方法。這種算法將植物枝干離散為由鉸鏈連接的剛體塊,較好地模擬了剛度較高的枝條結構的形變情況,但是對于植物中其他剛度較低的器官,例如花朵葉片等結構,適用度可能不高。

上述專家學者已經進行了多種植物及其器官的形態(tài)建模以及形變模擬,然而,以上研究也存在一些不足之處。首先,許多研究是針對特定的植物結構進行模擬,而忽略或簡化了不同器官之間的相互影響;其次,很多研究并沒有考慮到物體碰撞對植物結構形變的影響情況。因此,針對現有研究中存在的問題,筆者提出了一種基于質點-彈簧模型的植物形變改進算法。該算法基于三棱柱彈簧模型構造植株的物理模型,同時結合骨骼節(jié)點的碰撞檢測,使其能夠進行基于物理的形變模擬。

1 植株重建

在進行植株形變模擬的過程中,需要針對植株的枝條和葉片等多種器官結構進行重新繪制。植株模型庫中存在多種方式構造的模型,其中許多使用建模軟件或者生長規(guī)則進行構造的植株模型,其模型分割和頂點坐標修改比較困難,在形變過程中也容易出現形狀失真的情況。為了防止發(fā)生這類問題,在進行形變模擬之前,先基于現有模型庫進行植株模型的統(tǒng)一化重建。番茄作為一種常見的作物,其生長結構比較簡單而有規(guī)律,同時其主要的器官為枝條結構和葉片結構,可以完整表現出筆者算法的實現流程,因此選擇番茄植株作為實驗對象。筆者通過對已有番茄模型進行骨骼節(jié)點的提取,并基于骨骼節(jié)點進行番茄模型的繪制和物理模型的生成,最終完成植株形變的模擬。整體流程如圖1所示。

圖1 植株繪制和形變模擬流程Fig.1 The process of tomato plant rendering and deformation simulation

番茄植株所包含的主要器官和結構為葉片結構及主軸和枝條結構。在骨骼節(jié)點提取的過程中,為了簡化骨骼節(jié)點的種類和番茄植株骨骼的結構,以提取枝條和葉片節(jié)點為主,如圖2所示。原始植物模型的來源不同,使用的骨骼節(jié)點提取和簡化方法也有所不同。例如,基于L-系統(tǒng)等規(guī)則參數生成的模型,可以通過提取參數規(guī)則所對應的植物器官結構的位置和生長方向來獲得骨骼節(jié)點數據。獲得的植物骨骼不一定可以直接應用于番茄植株重建和物理模型構造上,因此需要進行相應的修改和簡化。

圖2 番茄植株骨骼節(jié)點提取和模型重建流程Fig.2 The process of tomato plant skeletal node extraction and model reconstruction

1.1 植株特征分析及模型骨骼提取

番茄植株的結構大體可分為三層:主軸—葉軸—葉片等器官,其中包括“主軸—葉軸”以及“葉軸—葉片”等器官的二級關聯(lián)關系。即葉軸圍繞主軸生長,而小葉片生長在葉軸兩側及尖端,與葉軸共同構成番茄植株的復葉結構。因而在植株形變模擬時,應當考慮葉片對葉軸、葉軸對主軸所施加的力。在獲取番茄植株模型骨骼時,如果骨骼節(jié)點過于密集或分布不均勻,可能導致兩個方面的問題:1) 在植株重建時生成過多的頂點和面片,影響番茄植株的繪制效率;2) 在物理模型構造時生成過多的質點和彈簧結構。這除了影響模型形變的計算效率外,還可能在模擬流程中由于對質點位置和速度的迭代計算次數過多而導致運算結果的不穩(wěn)定。同時,對一些高精細度模型提取的骨骼節(jié)點,可能數量比較多,但是在模擬時不一定能表現出節(jié)點之間的相對運動,故可以對模型進行適度的簡化。因此,根據對番茄植株特征的分析,同時結合番茄植株物理模型構建的需求,最終得出番茄模型骨骼節(jié)點提取及簡化原則如下:1) 節(jié)點沿著主軸/葉軸/葉片主葉脈生長方向進行分布(圖3a);2) 盡可能提取生長有子結構的模型位置作為骨骼節(jié)點;3) 當兩節(jié)點距離過小時,將兩節(jié)點進行合并(圖3b);4) 若存在節(jié)點A,C之間有一節(jié)點B,在B處無子器官生長,同時向量AC與向量CB的夾角比較小時,將C節(jié)點刪去(圖3c)。

依照上述原則進行骨骼節(jié)點的提取,并依照番茄植株的層次結構,保存為番茄骨骼節(jié)點序列。接下來,使用該骨骼節(jié)點序列進行番茄植株的建模。

圖3 番茄植株骨骼節(jié)點提取Fig.3 The extraction of tomato skeleton nodes

1.2 植株建模

使用上述方法獲取原始模型的骨骼節(jié)點后,可以根據骨骼節(jié)點的結構進行番茄植株的重建工作。番茄植株的骨骼節(jié)點主要記錄了番茄主軸和葉軸等枝條結構,以及葉片器官的生長情況。因此,番茄植株的建模工作可以分為主軸/枝條建模以及葉片建模兩個部分。

1.2.1 主軸及枝條建模

主軸及葉軸等枝條結構采用廣義圓柱(Generalized cylinder)[17]方式進行模擬(圖4a)。將1.1中獲取的植株骨骼節(jié)點作為控制點,每個節(jié)點使用與下一節(jié)點的方向向量作為Y軸,構造局部坐標系,對枝條截面進行掃描變換。使用廣義圓柱構造的結構可以保持比較連續(xù)的曲率,因此基于簡化后的番茄植株骨骼模型節(jié)點,可以生成自然的番茄枝條。同時,在骨骼節(jié)點位置改變后,將枝條截面頂點基于變化后的骨骼節(jié)點局部坐標系進行變換,即可快速完成番茄枝條結構的重建。圖4b為基于廣義圓柱生成的番茄枝條結構示意圖。

圖4 廣義圓柱構造示意圖Fig.4 Schematic of generalized cylinder construction

1.2.2 葉片建模

為了降低葉片形態(tài)模擬的復雜度,采用紋理貼圖方式進行番茄葉片的繪制。在葉片局部坐標系下,首先根據葉柄根部到葉片尖端的主葉脈方向獲取葉片控制節(jié)點,獲取方法類似1.1節(jié)(圖3a),但由于葉片本身沒有生長的子結構,因此控制節(jié)點可以比較均勻地獲取。然后,以變換到葉片局部坐標系下的控制節(jié)點組為基準,進行葉片曲面構造,如圖5所示。

圖5 番茄葉片模型構造示意圖Fig.5 Schematic of tomato leaf construction

1.3 植株群體建模時的優(yōu)化策略

由于植株形變模擬的過程需要較大的計算量,因此在進行植株群體的形變模擬實驗時,考慮對群體中較遠處的植株模型繪制進行簡化,以降低模型繪制工作對計算資源的占用,從而提高系統(tǒng)整體運行的效率,并支持更大規(guī)模植株群體的實時形變模擬。為達到以上目的,結合1.2中使用的番茄植株建模方法,設計了相應的番茄植株模型簡化策略。具體的簡化方案采用多級遞進的簡化方法。

主軸/葉軸采用了基于骨架節(jié)點的廣義柱面的構造形式,因此在簡化過程中,通過保留植物模型骨架,減少圓環(huán)頂點樹,將原本的圓柱/圓臺簡化為面數更少的棱柱/棱臺,從而達到減少模型網格數的目的。簡化效果如圖6所示,經過多級簡化后,番茄枝條結構的面片數量有了明顯減少。

圖6 多級遞進簡化下番茄植株主軸/葉軸部分示意圖Fig.6 Schematic of multistage progression simplifies for leaf shaft of tomato plant

此外,對于葉片也可以采用多級遞進的簡化方法,通過降低葉片曲面構造的精細度,可以有效降低葉片器官繪制所需的面片數,但是葉片精細度過低有可能導致無法表現出自然的葉片形變效果。

2 植株的形變模擬

從原始模型獲取植株的骨骼節(jié)點之后,可以基于骨骼節(jié)點進行植株物理模型的構造,主要內容為質點-彈簧組的生成和參數設置。構造完成后,通過對植株的受力和運動進行分析,設計了基于質點運動的植株形變模擬流程,其中包括質點的碰撞檢測與處理階段。

2.1 質點-彈簧組的生成和屬性設置

本研究中質點-彈簧組的設計思想,來源于Yang等[8,15]提出的“三棱柱彈簧模型”方法,主要包括4 種彈簧結構:結構彈簧、切向彈簧、彎曲彈簧和回復力彈簧。結構彈簧和切向彈簧用于構建物體的基本結構和維持物體的穩(wěn)定,而彎曲彈簧和回復力彈簧則是用于在物體形變過程中提供額外的回復力和阻尼力,使得整個質點-彈簧系統(tǒng)盡快達到受力平衡狀態(tài)。由4 種彈簧結構組成的彈簧組能夠模擬枝條的彎曲、扭動等形變情況。與Yang方法中使用k-means聚類篩選樹枝骨架節(jié)點不同的是,筆者直接基于第1節(jié)中獲取的番茄枝條模型的骨骼節(jié)點進行質點-彈簧組的生成。

2.1.1 枝條局部坐標系構建

番茄復葉結構的生長方向以主軸為起點,以一定的葉序角生長,因此以豎直坐標軸為局部坐標Y軸,以葉軸延伸生長主方向為坐標Z軸,生成局部坐標系,并將骨骼節(jié)點變換到局部坐標系下。

2.1.2 生成枝條彈簧組

如圖7所示,在局部坐標系下,沿著葉軸方向,以葉軸骨骼節(jié)點為中心,取距離R,對每個骨骼節(jié)點生成3 個質點,質點質量總和為所屬的骨骼節(jié)點質量,并依據三棱柱彈簧模型對質點組建立結構彈簧、切向彈簧、彎曲彈簧和回復力彈簧。

圖7 枝條彈簧組生成Fig.7 Generation of branch mass-spring system

2.1.3 彈簧組屬性設置

在番茄器官局部坐標系下,包括枝條、葉片等器官在內,可以認為器官根部骨骼節(jié)點是固定在上一級器官上的,因此以最靠近根部的骨骼節(jié)點所關聯(lián)的質點開始進行彈簧組屬性設置。假設番茄植株枝條結構的材料學特性基本一致,且切向彈簧和結構彈簧的屬性相同。對彎曲彈簧和回復力彈簧根據節(jié)點順序進行參數調整,公式為

(1)

式中:li為從節(jié)點i到根部節(jié)點的距離;ltip為最尖端節(jié)點到根部節(jié)點的距離。

2.1.4 質點屬性設置

在質點-彈簧系統(tǒng)的位移計算階段,需要考慮質點與其他物體的碰撞處理,以對質點位置進行修正,因此針對質點本身構造一個較小的AABB包圍體,用以和其他物體的包圍體進行碰撞檢測。圖8為基于筆者方法生成的質點-彈簧模型組示意圖。其中黑色點表示質點,灰色線段表示各種彈簧結構。

圖8 質點-彈簧模型組示意圖Fig.8 Schematic of final mass-spring system

2.2 模型受力及動態(tài)分析

質點-彈簧系統(tǒng)的每一個質點都包含以下物理屬性:質量、位置、速度、加速度以及合外力。每個質點的質量應當是恒定不變的。本研究暫不考慮植株生長、枝條斷裂等會導致的質量或質點的增加和減少,整個植株的物質總量維持在恒定狀態(tài)。當需要計算其他物體附著的情況時,筆者首先計算附著物對植株器官施加的合力,并將相應大小的外力直接添加到臨近附著物的質點上。

每個質點的位置與它所屬的骨骼節(jié)點位置相互依賴,在質點位置每個時間間隔更新后,其所屬的骨骼節(jié)點依據相關質點的位置進行位置更新。每個時間間隔Δt下質點的位移ΔP與兩個屬性相關:質點的速度Vm以及質點在碰撞處理系統(tǒng)中需要進行的位置修正Pmove。其表達式為

ΔP=VmΔt+Pmove

(2)

其中Pmove的計算與質點的碰撞對象相關,即

Pmove=K×Linner×contactNormal

(3)

式中:Linner為碰撞對象的相交深度;contactNormal為碰撞對象的相交法線,它是一個三維向量;K為每個碰撞對象移動距離所占總移動距離的比例,即

(4)

式中:m為本物體質量;mother為所碰撞對象的質量。

對于番茄植株的每一個骨骼節(jié)點,其速度的計算包含加速度a和碰撞分離速度Vsep,即

Vm=aΔt+Vsep

(5)

質點的加速度由其所受的合外力決定,而單個模型結構所受到的力通常包括以下來源:1) 外界力Fouter;2) 重力G;3) 子結構賦予力Fsub;4) 彈簧彈性力Fspring。其表達式為

Fm=Fouter+Fsub+Fspring+G

(6)

2.3 植物形變模擬流程

植物形變模擬的整體流程包括受力計算、碰撞處理和質點狀態(tài)更新三個方面,并且三者之間具有相互依賴的關系。其中,根據公式(6)可以得出:質點所受的合力與彈簧施加的彈性力有關,而每一個時間間隔后,彈簧施加的彈性力隨著質點位移引起的彈簧長度變化而變化,因此為了保證質點-彈簧組的準確和穩(wěn)定,包括彈簧彈性力在內的質點合力計算放在整個模擬流程最開始。質點碰撞檢測和處理的目的是減少場景中模型穿透的現象。因此在每一個時間間隔內的碰撞處理完成后,質點的位置不應當繼續(xù)發(fā)生變化。

植物形變模擬的整體流程如下:

Step1輸入場景中所有的番茄植物模型models,從中獲取全部質點列表MassList,所有質點受力生成器列表ForceList,以及所有碰撞發(fā)生器列表CollisionList。將場景中所有質點放入MassList,所有彈簧結構及重力計算結果以及對應的受力質點放入受力生成器列表ForceList。

Step2在每一時間間隔Δt時,檢查所有質點是否有新的受力產生,更新受力生成器列表ForceList,并根據公式(6),使用所有受力生成器更新對應質點所受的合外力。

Step3遍歷質點列表MassList,使用運動學公式更新所有質點的加速度、速度和位置。

Step4利用更新后的質點位置及其包圍體進行碰撞檢測,并將所有的碰撞對加入碰撞發(fā)生器列表CollisionList。

Step5遍歷CollisionList,對于其中的每一對碰撞對,計算其碰撞避免所需位移Pmove和分離速度Vsep,并按照公式(4)計算分配比例K,最終按照公式(2,5)進行質點位置和速度的修正。

Step6質點位置更新完畢之后,根據質點和模型骨骼節(jié)點的關聯(lián)關系,對番茄模型的骨骼節(jié)點位置進行更新,更新方式為:骨骼節(jié)點新位置為當前相關聯(lián)質點位置的平均值。

Step7基于更新后的骨骼節(jié)點,使用繪制函數對番茄植株進行重新繪制,完成該幀內番茄植株的更新。

Step8重復Step 2到Step 7,直到停止物理系統(tǒng)的模擬。

3 運行結果與分析

本實驗在聯(lián)想Y-50筆記本電腦(Intel Core i7-4710HQ CPU 2.50 GHz,16 G內存,NVIDIA GeForce GTX860M顯卡)上完成,界面及模型繪制采用Unity3D引擎實現。實驗針對本文方法在多種場景下的運行效果和耗時進行了分析和比較。實驗主要內容如下:

1) 對枝條和葉片的觸動/拉扯,如圖9,10所示。在圖9中,通過對葉片施加橫向的拉力,使得葉片控制點的相對位置發(fā)生了變化,原本彎曲的葉片隨著控制點位置的變化變得比較平直。

圖9 番茄葉片形變Fig.9 Deformation of tomato leaf

圖10 番茄復葉結構形變Fig.10 Deformation of tomato compound leaf structure

在圖10中,番茄復葉結構的葉軸尖端受到向上的牽引力,由于尖端質點所關聯(lián)的彎曲彈簧和回復力彈簧帶來的彈性力較小,因此尖端控制點的位置變化幅度大于靠近根部的控制點。表現在枝條整體上,可以看出枝條在向上牽引力的作用下,整體形態(tài)由自然向下彎曲變?yōu)橄蛏蠌澢?/p>

2) 其他物體對番茄植株的碰撞結果,如圖11所示,在葉軸尖端與下落的小球發(fā)生碰撞時,葉軸尖端控制點所屬的質點與小球的包圍體發(fā)生碰撞,經過碰撞處理的位置修正后,葉軸尖端控制點隨著質點位置改變發(fā)生了較為明顯的位移。

圖11 番茄植株的碰撞處理Fig.11 The collision handling of tomato plants

3) 在番茄群體植株場景中進行的形變模擬,效果如圖12所示。在模擬開始時,番茄植株葉軸結構處于比較平直的伸展的狀態(tài),即葉軸結構的控制點構成的葉軸骨骼曲線彎曲程度比較低;此時所有植株由于自身器官和結構所受重力的影響發(fā)生形變,以使得番茄植株進入受力平衡狀態(tài):由于葉軸結構尖端所關聯(lián)的彎曲彈簧和回復力彈簧強度較小,因此發(fā)生比較明顯的向下位移,導致番茄植株葉軸結構的彎曲程度變大,例如圖12中標注的右側前排植株葉軸結構。在經過一段模擬時間后,番茄植株的多數葉軸結構都發(fā)生了一定程度的彎曲。

圖12 番茄植株群體形變模擬Fig.12 The deformation simulation of tomato plant population

最后,結合筆者提出的植物群體形變模擬算法,實現了番茄群體植株場景的建模和漫游,并為其中少量植株進行了質點-彈簧組的構造,以在確保場景渲染效率的情況下實現近景植株的形變模擬(圖13)。采用了1.3中的多級簡化方案進行番茄植株多分辨率模型的生成,并結合廣告牌模型,繪制出較大規(guī)模的番茄植株場景。

圖13 番茄植株群體繪制場景Fig.13 Rendering of tomato plant population

通過對不同規(guī)模的番茄植株或器官的形變進行模擬,可以得到相應的質點、彈簧數量和模擬效率數據,結果如表1所示。

表1 不同場景規(guī)模下形變模擬耗時

Table 1 The comparison of time-cosuming for plant deformation in different scenes

植株規(guī)模單葉片單復葉結構單株4×4 株網格面片數量/個81201 83029 280頂點數量/個101051 63526 160質點數量/個151202103 360彈簧數量/個574327561 296初始化耗時/ms3.397.0010.50125.60形變模擬幀數/fps65~7063~6657~6125~28

上述實驗結果圖片和數據表明,筆者提出的方法較好地模擬了番茄植株及器官在受到外部作用時的形變情況,并且在小規(guī)模群體的模擬中具有較好的實時性。相應的,在場景規(guī)模進一步擴大時,其消耗的運算時間將會進一步增加,在模擬過程中可能出現幀率不足的情況。其中表現比較明顯的是葉片部分的模擬耗時:由于葉片結構是植株中數量最多的結構,因此構成葉片的骨骼節(jié)點數量也占據了番茄模型骨骼中的大部分。例如某株番茄植株具有10 條葉軸,每條葉軸上生長7 片小葉片,假設每片葉片上有4 個骨骼節(jié)點,則按照1.1中提出的骨骼節(jié)點提取原則,生成的總節(jié)點數為262 個,其中葉片節(jié)點有210 個。由此分析可以看出:在小規(guī)模的植株形變模擬中,由于需要展示比較自然的葉片,需要對植物的葉片結構進行精細度比較高的形變模擬,從而占用較大比例的計算資源。因此,當需要進行更大規(guī)模的植株形變模擬時,應當對當前使用的質點-彈簧組進行簡化,例如可以減少葉片上控制點的采樣數量,以減少整個系統(tǒng)中的質點和彈簧數量。

同時,可以考慮將質點-彈簧系統(tǒng)與其他形變模擬算法進行結合。例如,在葉片的形變模擬上采用基于位置的動力學方法,可以通過對葉片控制點的合理選取,從而降低葉片形變模擬時間的消耗。相對應地,多種物理模型之間的配合問題有待進一步研究。同時,可以將現有基于串行實現的質點-彈簧系統(tǒng)使用GPU進行并行化加速運算,以提高模擬效率。還可以結合植物學和材料學方面的相關研究,探索不同物理性質的植物器官結構與其相應質點-彈簧組數值的對應關系,從而進一步提升植株形變時的物理真實感。

4 結 論

提出了一套使用質點-彈簧系統(tǒng)進行番茄植株形變模擬的改進算法:首先,使用基于骨骼節(jié)點的繪制方法生成適用于形變模擬的番茄植株模型;然后針對番茄植株模型構造基于三棱柱模型的質點-彈簧組,并根據番茄植株的特征對彈簧組的數值進行了調整;最后,對番茄植株的受力和運動情況進行了分析,建立并實現了一套番茄植株運動模擬算法。實驗結果表明,筆者提出的算法能夠在實時情況下對番茄植株的形變進行較好的模擬。在未來的工作中,將會探索多種基于物理形變方法的融合,以及基于植物學和材料學相關知識的物理模型參數獲取。同時,也可在筆者方法的基礎上進行進一步簡化或者并行化的實現,從而在保證模擬效率的情況下,減少模擬流程所消耗的時間。

猜你喜歡
質點骨骼彈簧
聯(lián)合彈簧(天津)有限公司
做家務的女性骨骼更強壯
巧用“搬運法”解決連續(xù)質點模型的做功問題
三減三健全民行動——健康骨骼
析彈簧模型 悟三個性質
如何求串聯(lián)彈簧和并聯(lián)彈簧的勁度系數
質點的直線運動
質點的直線運動
骨骼是如何生長的
神奇的骨骼