亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenGL與IFS的牡丹植株仿真研究

        2021-01-13 05:42:18許艷凰王其棣
        關(guān)鍵詞:生長

        許艷凰,王其棣

        (漳州城市職業(yè)學院,福建 漳州 363000)

        當前,主要從基于視覺真實感和基于植物學知識這兩個方面,對植物形態(tài)進行計算機仿真。第一類仿真的側(cè)重點是視覺上的逼真性,主要從視覺上對植物幾何特點進行研究與構(gòu)造,模擬不同植物的形態(tài)發(fā)生模型,繪制出植物外部形態(tài)。如淮永建、楊猛等通過采集植物三維點云或拍攝圖片提取數(shù)據(jù),進行花瓣形態(tài)及生長模擬[1-2];孫海洪實現(xiàn)了基于OpenGL的虛擬林場漫游[3]。第二類仿真的側(cè)重點是以植物的生物學特征為基礎(chǔ),結(jié)合大量的實驗數(shù)據(jù)定量地模擬植物的自然生長過程,有專門針對花卉植物形態(tài)與生長可視化的仿真研究[4-5],還有基于L-系統(tǒng)的植物形態(tài)模擬方法的研究與應用[6-8],這些研究主要應用于農(nóng)業(yè)方面。在植物仿真建模方面,目前最常用的方法是L-System[7-9],以及在此基礎(chǔ)上提出的改進算法Open-L系統(tǒng)和隨機L-系統(tǒng)[10-11]。在樹木生成方面,主要有基于IFS迭代系統(tǒng)的改進算法[12]。素有 “國色天香” 之稱的牡丹是中國歷史悠久的傳統(tǒng)花卉,具有一定的代表性,又不失一般性,國內(nèi)暫無學者對其進行仿真實驗研究。本文基于VR技術(shù),對牡丹植株形態(tài)和開花過程進行研究與模擬,可應用于以牡丹為代表的灌木植物的植物學研究、園林園藝展銷與植物教學交互。

        1 模擬

        1.1 牡丹花朵和葉的建模

        1.1.1 牡丹花朵的建模

        花的形態(tài)仿真重點在于花瓣形態(tài)的描述。每朵花都由若干個花瓣組成,不同品種的牡丹花的花瓣形態(tài)各不相同,但都可以視為一個在三維空間中的曲面。貝塞爾曲面的算法相對比較成熟,具有顯示的圖形平滑、控制參數(shù)少等特點,OpenGL中有專用的函數(shù)支持。當我們獲得若干特征點后,便可使用相應的圖形庫方便地顯示出其曲面。繪制一個貝塞爾曲面可用公式(1)表示:

        牡丹有千余個品種,不同品種的花朵形態(tài)與結(jié)構(gòu)有很大差別。牡丹花的類型主要有:單瓣型、荷花型、菊花型、薔薇型、托桂型、金環(huán)型、皇冠型、繡球型、千層臺閣型、樓子臺閣型。現(xiàn)以薔薇型牡丹為例進行模擬。首先,利用貝塞爾曲面,結(jié)合該類牡丹花瓣較圓的特點,將牡丹花瓣形成的曲面用4×6個區(qū)域,共35個關(guān)鍵點來模擬。然后通過關(guān)鍵點的調(diào)節(jié),讓模型盡可能接近真實的花瓣形態(tài)。圖1所示的是初始狀態(tài)的花瓣,彎曲度較大,第一行的關(guān)鍵點z軸的值從負到正變化,使得花瓣的最上端成S形彎曲。隨著花朵綻放,花瓣在一定范圍內(nèi)變寬變長且彎曲度變小。為了表達這種變化,設(shè)置花瓣關(guān)鍵點的x和y軸坐標值隨花朵開放而按比例變大,z軸坐標值按比例縮小,可用函數(shù)來表示:

        glScalef(sx,sy,sz);

        sx=sx+0.005; sy=sy+0.004; sz=sz-0.005;

        if(sx>1) sx=1;

        if(sy>1.2) sy=1.2;

        if(sz<0.8) sz=0.8;

        1.1.2 牡丹葉的建模

        牡丹常見的葉型有大圓葉、小圓葉、大長葉、小長葉和中形葉型5類。中國牡丹的羽狀復葉除了極個別為一回的,大多數(shù)是二回三出,長和寬以及各小葉的形狀、大小多數(shù)不相同。根據(jù)牡丹葉的這一形態(tài)特點,使用15個關(guān)鍵點來建立貝塞爾曲面進行葉片建?!,F(xiàn)以常見的葉型為例(如圖2所示),通過3D建模后獲得葉的關(guān)鍵點(如圖3所示)。

        圖1 三維牡丹花瓣模型的關(guān)鍵點

        圖2 牡丹常見的葉型

        圖3 牡丹仿真葉子

        1.2 牡丹花朵開放模擬

        牡丹的花瓣是多層的,系統(tǒng)中設(shè)置為5層,每層5個花瓣,每層花瓣的初始傾角和最終傾角的取值范圍不同,內(nèi)層的值比外層小。隨著花的開放,花瓣傾角變化的加速度呈現(xiàn)先大后小的趨勢。牡丹花瓣存在自相似性,在生長過程中也存在花瓣形態(tài)的迭代過程。因此,可設(shè)置狀態(tài)庫對花瓣生長狀態(tài)進行存放,并將庫中的對象加入隨機數(shù)以模擬現(xiàn)實中的性狀差異,使牡丹開花仿真效果更佳。

        在繪制花瓣的時候,因人眼視網(wǎng)膜視覺暫留現(xiàn)象,即使只繪制最外層的花瓣,仍可產(chǎn)生花瓣連續(xù)綻放的視覺效果。花朵在完全綻放前,內(nèi)層花瓣被外層花瓣包裹,在最內(nèi)層花瓣分開前,可只繪制最外層花瓣的形態(tài),從而減少計算機性能開銷。當最內(nèi)層花瓣開始分離時,再將各層花瓣進行長、寬和角度變化的計算及繪制,并根據(jù)花瓣與花中心Y軸夾角判斷花瓣生長快慢??捎靡韵滤惴ū磉_:

        Step1:設(shè)定花瓣的初始狀態(tài)坐標點,并放入狀態(tài)庫Petal;設(shè)定花瓣層Layer=0;

        Step2:通過Petal的旋轉(zhuǎn)變化,得出第一層花瓣:

        n=0;

        for(n<5)

        P=Petal沿 y軸旋轉(zhuǎn) 360。 /5×n+Rand;

        Draw(P);

        存入狀態(tài)庫數(shù)組a[Layer][n]中;

        n=n+1;

        Step3:利用視覺暫存現(xiàn)象,用迭代的方法將當前最外層花瓣進行長、寬及與花中心Y軸夾角的變換,繪制新的最外層的花瓣,最終得到第2~5層花瓣:

        for(layer<4)

        layer=layer+1;

        n=0;

        for(n<5)

        將狀態(tài)庫數(shù)組a[Layer-1][n]中的花瓣l=l+△l;w=w+△w;g=g+dgk;

        Draw(P);

        存入狀態(tài)庫數(shù)組a[Layer][n]中;

        n=n+1;

        Step4:當花朵處于開放期時,即g不超過90°時,將花瓣的長、寬、與花中心Y軸的夾角g分別增加相應的數(shù)值,得到下一時間點花瓣的狀態(tài)。在繪制時,先繪制外層花瓣,再繪制內(nèi)層花瓣:

        for(layer>=0 and g<90。 )

        n=0;

        for(n<5)

        將狀態(tài)庫數(shù)組a[Layer][n]中的花瓣l=l+△l;w=w+△w;g=g+dgs;

        Draw(P);

        存入狀態(tài)庫數(shù)組a[layer][n]中;

        n=n+1;

        layer=layer-1;

        Step5:g>90°花朵停止綻放,退出繪制程序。

        其中,l代表花瓣長度,△l代表花瓣長度變化值,w代表花瓣寬度,△w代表花瓣寬度變化值,g代表當前傾角的值,dgk代表傾角快速變化值,dgs代表傾角慢速變化值。

        根據(jù)花朵生長規(guī)律,花瓣與花中心Y軸的夾角變化速度以g=angle/2為分界點,先快速變化,再趨緩,最終停止(圖4)。所以在步驟3用了dgk,而在步驟4用了dgs。

        圖4 花瓣與花中心Y軸的夾角示意圖

        1.3 牡丹枝干和形態(tài)的建模

        從宏觀上看,花木枝干結(jié)構(gòu)一般由主干、分枝及葉三個部分組成,且呈現(xiàn)層次結(jié)構(gòu),如圖5、圖6所示。主干是第一層,分枝是在主干的基礎(chǔ)上生成的,為第二層,在前兩層的基礎(chǔ)上生成最后一層——葉。枝干的生長過程是一個迭代的過程,新的分枝生成過程與前一層分枝生成方式相同,這是一種自相似的分形結(jié)構(gòu)。根據(jù)這一特點,可通過傳遞參數(shù)的方式,來建立枝干的整體模型[13]。

        圖5 真實的牡丹枝干形狀

        圖6 仿真枝干的分枝模型

        牡丹枝干的特點與一般的花木枝干類似,其生長受許多外力因素影響,每個枝干衍生出的分枝存在差異。根據(jù)枝干生長的規(guī)律,可以得出枝干生長的算法,具體如下:

        (1)定義一個三維坐標系,坐標系Y軸方向表示樹木主干0級主軸的生長方向。

        (2)定義模型的各種屬性,并通過合適的字母來表示相關(guān)屬性。用R表示主干,用B來代表分枝的屬性,L表示每一段枝干的長度,S表示該枝段的半徑,C表示每一段枝段的彎折程度,A表示枝段的扭轉(zhuǎn)程度。

        (3)生成一段新分枝時,分枝先在平面XZ面進行,同時考慮重力、光源等因素對枝干生長過程的影響,使模型能描述同一個主干的不同分枝的長度、半徑變化情況。分枝的扭轉(zhuǎn)和彎折角度順序是:先扭轉(zhuǎn)一定角度,再繞向量[Cos(T′),0,Sin(T′)]轉(zhuǎn)動一定角度[14]。

        (4)要實現(xiàn)新分枝的衍生,可根據(jù)概率,設(shè)置、選擇不同的產(chǎn)生式。同時,為了更好地實現(xiàn)對枝干的模擬,當層數(shù)較大時,應當考慮頂端優(yōu)勢帶來的影響,并給予適當?shù)目刂?,即在?cè)枝加入控制參數(shù),調(diào)整后的函數(shù)如公式(2):

        另外,兩種新分枝的調(diào)整算法是不一樣的,其中一種與枝干模型的調(diào)整算法相同,另一種調(diào)整算法如公式(3):

        從公式(2)(3)可以發(fā)現(xiàn),算法中增加了3個常數(shù), 即 SideScaleDepth、SideScale和 Eside。 參 數(shù)SideScaleDepth用于削減側(cè)枝的段數(shù),使左右分叉的生長規(guī)模有區(qū)別;參數(shù)SideScale用于控制分叉的左右枝變,使其大小不相同;參數(shù)Eside用于控制每一個分叉展開的角度,即與其主枝的夾角[15]。

        使用符號來替代分枝的對應屬性,見表1。

        枝干的初始結(jié)構(gòu)設(shè)置完成之后,建立一些生成規(guī)則P(規(guī)則被選擇概率之和等于1),最后通過概率選擇相應的生成規(guī)則。

        表1 系統(tǒng)中出現(xiàn)的符號及含義

        當N=i時,調(diào)用分枝規(guī)則,此時:

        r1=Lsun表示主枝長度的縮短比例

        r2=SideScale表示分枝長度的縮短比例

        α1=Tg表示分枝與主枝間的夾角

        α2=Tg+180表示分枝上各分枝間的夾角

        d=Eg表示分枝與分枝間的夾角

        R=(Li+1/Li)*Rscale*Rad 分枝半徑的縮放比例

        ω=F(d)=F(Li,Ri,Ti,Ei)

        P1: A(w) →! (w)F(i) [&(a1)B(1×r2,w×wr)] / (d)A(1×r2,w×wr);

        P2: B(w) →! (w)F(i) [- (a2)$C(1×r2,w×wr)] C(1×r2,w×wr);

        P3: C(w) →! (w)F(i) [+(a2)$B(1×r2,w×wr)] B(1×r2,w×wr);

        同時為每個產(chǎn)生式設(shè)置調(diào)用概率。

        新的分枝算法如下:

        Step1:在主枝頂端的側(cè)邊生出兩個側(cè)枝;

        Step2:將這兩個側(cè)枝當成新的主枝;

        Step3:當級數(shù)等于4的時候,就隨機調(diào)用分枝上述的產(chǎn)生式。

        本算法中分枝的生成方法,采用確定性和隨機性兩種算法相結(jié)合的辦法。同時,每個字母的取值是根據(jù)樹枝所在的層次,通過表達式計算出這個分枝的旋轉(zhuǎn)角度和縮放尺度,也是非固定值。

        2 系統(tǒng)設(shè)計

        依據(jù)上述算法思想,基于Win7系統(tǒng),在Visual Studio2012集成開發(fā)環(huán)境中,使用C++語言,借助OpenGL圖形渲染引擎和MFC框架,研發(fā)了虛擬現(xiàn)實三維牡丹花開仿真系統(tǒng)。

        該系統(tǒng)主要有牡丹展示區(qū),控制面板和右鍵菜單(圖7)。可實現(xiàn)的功能如下:

        (1)點擊系統(tǒng)可執(zhí)行文件,打開導航畫面,待系統(tǒng)載入后,進入主程序界面;

        (2)點擊右鍵選擇全屏顯示系統(tǒng)界面;

        (3)點擊右鍵選擇牡丹花種類,調(diào)取相應牡丹開花過程;

        圖7 系統(tǒng)主界面功能區(qū)分布圖

        (4)點擊右鍵打開控制面板,對牡丹枝干的數(shù)量、長度、半徑、扭曲程序、展開角度進行適當?shù)恼{(diào)整;

        (5)點擊右鍵選擇自動旋轉(zhuǎn),查看牡丹不同角度的形態(tài)特點;

        (6)點擊關(guān)閉按鈕退出程序。

        3 實驗結(jié)果分析

        通過虛擬現(xiàn)實三維牡丹花開仿真系統(tǒng)的開發(fā)實現(xiàn),模擬了3種牡丹的生長與開花形態(tài)。通過圖8及圖9的比較可發(fā)現(xiàn),系統(tǒng)使用本文的算法實現(xiàn)的牡丹仿真,能較真實地模擬出牡丹植株形態(tài)和花朵開放。用戶可通過對控制面板中各參數(shù)的調(diào)節(jié),達到對畫面中牡丹形態(tài)的控制,亦可通過鍵鼠改變用戶視角,或以牡丹植株為中心進行自動旋轉(zhuǎn),方便用戶對牡丹進行全方位的觀察。

        4 總結(jié)與展望

        圖8 牡丹花朵繪制效果對比圖

        圖9 牡丹植株仿真展示圖

        本文根據(jù)現(xiàn)實世界中植物的自相似性與差異性等特征,對牡丹生長進行仿真研究。首先,分析牡丹生長過程中各器官的特點,對其進行分類。其次,重點研究牡丹花開形態(tài)及植株生長形態(tài),對花瓣及葉使用了貝塞爾曲面進行模擬。對牡丹花開放過程的研究,主要是通過分析花朵綻放過程中各階段的器官形態(tài)特征,建立器官模型庫,通過模型調(diào)用并作隨機數(shù)變換,減少反復建模的系統(tǒng)開銷。最后,對于植株枝干部分,在考慮重力、頂端優(yōu)勢等因素的影響下,采用改良的IFS算法,即確定性和隨機性相結(jié)合的辦法,進行分枝的生成。同時,加入用戶交互部分,可以得到各種極端條件下植株的形態(tài)特征。在未來的工作中,還將探索改良剪枝算法,及對頂端優(yōu)勢控制的參數(shù)設(shè)置。

        猜你喜歡
        生長
        野蠻生長
        碗蓮生長記
        小讀者(2021年2期)2021-03-29 05:03:48
        生長的樹
        自由生長的家
        美是不斷生長的
        快速生長劑
        共享出行不再“野蠻生長”
        生長在哪里的啟示
        華人時刊(2019年13期)2019-11-17 14:59:54
        野蠻生長
        NBA特刊(2018年21期)2018-11-24 02:48:04
        生長
        文苑(2018年22期)2018-11-19 02:54:14
        久久精品免视看国产成人| 亚洲一区二区av天堂| 日本中文字幕精品久久| 热re99久久精品国99热| 成年午夜无码av片在线观看| 国产精品女同一区二区久久| 少妇激情一区二区三区| 音影先锋中文字幕在线| 久久超碰97人人做人人爱| 久久精品中文字幕第23页| 久久精品免费观看国产| 亚洲区在线| 青青草视频国产在线观看 | 欧洲亚洲色一区二区色99| 亚洲精品中文字幕二区| 国产一区二区三免费视频| 女人被爽到高潮视频免费国产| 青青青国产精品一区二区| 日日躁欧美老妇| 在线免费观看蜜桃视频| 久久www免费人成精品| 国产精品二区在线观看| av亚洲在线一区二区| 亚洲av无一区二区三区久久蜜桃| 久久久老熟女一区二区三区| 国产日韩欧美网站| 无码人妻精品中文字幕免费| 日韩av在线不卡一区二区| 日韩精品久久无码中文字幕| 欧美人与物videos另类xxxxx| 国产麻豆剧传媒精品国产av蜜桃| 国产麻豆精品传媒av在线| 无码精品久久久久久人妻中字| 久久99精品久久久久久齐齐百度| 久久久国产精品粉嫩av| 99久久国内精品成人免费| 狠狠色综合7777久夜色撩人ⅰ| 高清国产日韩欧美| 国产成人高清亚洲一区二区| 在线免费观看蜜桃视频| 国精产品推荐视频|