999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity的N階貝塞爾曲線繪制三維物體運(yùn)動(dòng)軌跡

2020-12-14 04:35:10李澔民陸向艷
軟件導(dǎo)刊 2020年9期

李澔民 陸向艷

摘? 要: 為實(shí)現(xiàn)在Unity引擎中使用任意階貝塞爾曲線繪制三維物體的軌跡,本文提出了一種靈活繪制N階貝塞爾曲線的方法。該方法設(shè)計(jì)了一種可以降階的插值計(jì)算函數(shù)來(lái)實(shí)現(xiàn)自定義控制點(diǎn)數(shù)的N階貝塞爾曲線。對(duì)比實(shí)驗(yàn)結(jié)果表明該方法有效且簡(jiǎn)化了三維物體的運(yùn)動(dòng)軌跡的參數(shù)定義,為應(yīng)用貝塞爾曲線來(lái)控制三維物體的運(yùn)動(dòng)軌跡提供了方法參考。

關(guān)鍵詞: Unity;N階貝塞爾曲線;三維物體;運(yùn)動(dòng)軌跡

中圖分類號(hào): TP391.7??? 文獻(xiàn)標(biāo)識(shí)碼: A??? DOI:10.3969/j.issn.1003-6970.2020.09.001

【Abstract】: In order to use the Bessel curve of arbitrary order in the Unity engine to draw the trajectory of 3d objects, this paper presents,? a flexible method for drawing N-order Bessel curve. This method designs an interpolation calculation function which can reduce the order of Bessel curve and support the custom amounts selection of control point of N-order Bessel curve. The comparative experimental results show that this method is effective and simplifies the parameter definition of motion trajectory of 3d objects. This paper provides a method for controlling the motion trajectory of 3d objects with Bessel curve.

【Key words】: Unity; N-order Bessel curve; Three-dimensional objects; Motion trajectory

0? 引言

Unity3D引擎是大多數(shù)虛擬現(xiàn)實(shí)項(xiàng)目選擇的開發(fā)工具[1],應(yīng)用Unity實(shí)現(xiàn)物體運(yùn)動(dòng)軌跡繪制,會(huì)受到諸多的外界干擾因素。為避免干擾,可以在Unity中使用貝塞爾曲線提前計(jì)算出路徑,再使用適當(dāng)?shù)倪\(yùn)動(dòng)方法沿路徑進(jìn)行移動(dòng),使得到的路徑固定且運(yùn)動(dòng)軌跡穩(wěn)定。已有相當(dāng)多的研究將貝塞爾曲線應(yīng)用于Unity3D引擎,例如用來(lái)對(duì)三維物體進(jìn)行彎曲[2],控制足球射門運(yùn)動(dòng)曲線等。貝塞爾曲線也在很多二維繪圖軟件(如微軟繪圖軟件、PhotoShop等)中得到應(yīng)用。使用物理公式的方法繪制物體運(yùn)動(dòng)軌跡往往參數(shù)較多,后期調(diào)整軌跡需要繁雜的計(jì)算和驗(yàn)證,而貝塞爾曲線則只需調(diào)節(jié)中間控制點(diǎn)就可以快速調(diào)整整條軌跡路線。然而,將貝塞爾曲線應(yīng)用于Unity3D環(huán)境需要進(jìn)行算法設(shè)計(jì)和編程才能使其應(yīng)用于三維坐標(biāo),最終實(shí)現(xiàn)對(duì)三維物體運(yùn)動(dòng)的控制。為此,本文提出一種繪制N階貝塞爾曲線的方法,該方法可以自定義控制點(diǎn)的數(shù)量,繪制出復(fù)雜的物體運(yùn)動(dòng)軌跡。

1? 貝塞爾曲線

貝塞爾曲線,也稱為貝茲曲線或貝濟(jì)埃曲線,是在制作二維圖形的應(yīng)用程序中廣泛應(yīng)用的數(shù)學(xué)曲線。1962年,貝塞爾曲線由法國(guó)工程師Pierre Bezier對(duì)伯恩斯坦多項(xiàng)式進(jìn)行擴(kuò)展用于汽車工業(yè)輔助設(shè)計(jì)而產(chǎn)生,之后推廣而得到廣泛應(yīng)用。貝塞爾曲線的優(yōu)點(diǎn)是繪制曲線簡(jiǎn)便易行,只需要定義曲線的起始點(diǎn)、終止點(diǎn)以及兩個(gè)相互分離的中間點(diǎn)(控制點(diǎn))即可完成。用貝塞爾曲線繪制復(fù)雜曲線可以先分段定義多段曲線,然后再將這些曲線段連接起來(lái)形成所需要的曲? 線或曲面圖形[3]。貝塞爾曲線的簡(jiǎn)單性特點(diǎn),使很多? 圖形工作者選擇用它來(lái)繪制形狀較為復(fù)雜的圖形或模型[4-15]。貝塞爾曲線的數(shù)學(xué)表達(dá)如下:

2? 方法描述

在實(shí)際應(yīng)用中,繪制三維物體平滑運(yùn)動(dòng)軌跡,主要是應(yīng)用貝塞爾曲線2階公式或貝塞爾曲線3階公式。本文的問(wèn)題是擬在Unity3D環(huán)境下,用GetBezierList函數(shù)實(shí)現(xiàn)應(yīng)用貝塞爾曲線繪制三維物體平滑運(yùn)動(dòng)軌跡。解決問(wèn)題的核心思想是應(yīng)用GetBezierList函數(shù)來(lái)繪制任意中間控制點(diǎn)(N取2或3均可)的三維貝塞爾曲線軌跡。解決方法是首先分析二階和三階貝塞爾的插值點(diǎn)關(guān)系,導(dǎo)出GetBezierList函數(shù)實(shí)現(xiàn)貝塞爾曲線的N階公式的插值的計(jì)算函數(shù);然后設(shè)計(jì)Unity中的實(shí)現(xiàn)貝塞爾曲線N階公式插值的計(jì)算函數(shù)代碼;最后用剛體Rigidbody組件和本文設(shè)計(jì)的貝塞爾曲線N階公式法進(jìn)行物體運(yùn)動(dòng)軌跡實(shí)現(xiàn)的效果和參數(shù)復(fù)雜度對(duì)比。

3? 方法設(shè)計(jì)與實(shí)現(xiàn)

3.1? 函數(shù)設(shè)計(jì)

本文通過(guò)GetBezierList函數(shù)獲得貝塞爾曲線的線段點(diǎn)列表,其參數(shù)為:GetBezierList(List PiList, float pointsNum);PiList代表包括起點(diǎn)和終點(diǎn)的所有控制點(diǎn),pointsNum代表通過(guò)多少個(gè)點(diǎn)來(lái)描述貝塞爾曲線,這些采樣點(diǎn)根據(jù)式(1)中的參數(shù)t平均分布在貝塞爾曲線的路徑上。

4? 實(shí)驗(yàn)與對(duì)比分析

繪制運(yùn)動(dòng)軌跡我們使用unity的LineRenderer組件,LineRenderer線渲染器組件主要是用于在3D中渲染線段,使用LineRenderer我們可以對(duì)繪制線段進(jìn)行很多操作,例如設(shè)置顏色、寬度等。本文中我們?cè)谝豢钇古仪蛴螒蛑欣蒙蒒階貝塞爾曲線的方法繪制乒乓球運(yùn)球的一條預(yù)判軌跡,來(lái)展示本文提出的方法是如何在實(shí)際項(xiàng)目中應(yīng)用的。

LineRenderer組件可以定義一段由多個(gè)采集點(diǎn)構(gòu)成的曲線,然后在相鄰兩個(gè)采集點(diǎn)之間渲染出一條直線,只要繪制的時(shí)候生成的采集點(diǎn)足夠多就能繪制出相對(duì)來(lái)說(shuō)更平滑的曲線。所以我們將GetBezierList方法生成出來(lái)的描述曲線的點(diǎn)坐標(biāo)組代入LineRenderer組件中去。

4.1? 使用Rigidbody控制物體運(yùn)動(dòng)實(shí)驗(yàn)

控制unity3D里面物體的物理運(yùn)動(dòng)一般使用剛體Rigidbody組件來(lái)控制,賦有剛體屬性的對(duì)象可以施加力,并且可以設(shè)置物體的質(zhì)量,初速度等物理運(yùn)動(dòng)初始屬性。我們控制一個(gè)乒乓球在乒乓球桌上進(jìn)行一次運(yùn)球運(yùn)動(dòng),并設(shè)置乒乓球的兩段運(yùn)動(dòng)屬性如表1所示。第一段運(yùn)動(dòng)為乒乓球從被擊出后到接觸到乒乓球桌上的運(yùn)動(dòng),第二段運(yùn)動(dòng)為乒乓球從桌上彈起后到落地的運(yùn)動(dòng),設(shè)置好上表1中的屬性后繪制出的運(yùn)動(dòng)軌跡如圖3所示。

4.2? 使用貝塞爾曲線控制物體運(yùn)動(dòng)實(shí)驗(yàn)

由于乒乓球在運(yùn)球的過(guò)程中會(huì)與桌面發(fā)生一次碰撞交互形成第二段運(yùn)動(dòng),所以需要繪制兩條貝塞爾曲線來(lái)描述乒乓球的整個(gè)運(yùn)球路線,第二條貝塞爾曲線的起點(diǎn)即為第一條曲線的終點(diǎn),調(diào)節(jié)控制點(diǎn)的屬性屬性如表2所示。

4.3? 實(shí)驗(yàn)結(jié)果分析

(1)通過(guò)圖4的對(duì)比可以看到使用貝塞爾曲線生成的運(yùn)動(dòng)軌跡和使用剛體的物理學(xué)控制形成的運(yùn)動(dòng)軌跡幾乎重合,可以看出貝塞爾曲線已經(jīng)可以繪制三維物體,模擬真實(shí)的物理運(yùn)動(dòng)。

(2)從表1和表2的對(duì)比來(lái)看,使用剛體中的物理屬性控制物體運(yùn)動(dòng)時(shí),需要同時(shí)考慮到重力加速度、物體質(zhì)量、物體初速度、物體初速度向量等比較多的系數(shù),這樣使得后期調(diào)整物體運(yùn)動(dòng)軌跡的時(shí)候調(diào)試步驟繁雜,調(diào)試成本高。而使用貝塞爾曲線控制物體的運(yùn)動(dòng)軌跡時(shí),只需要考慮控制對(duì)應(yīng)線段的控制點(diǎn),即可方便快捷的修改運(yùn)動(dòng)曲線,后期維護(hù)成本較低。

(3)對(duì)于物體做一些比較特殊的運(yùn)動(dòng),或者是不受重力和其他物理因素影響的運(yùn)動(dòng)這些情況,使用貝塞爾曲線來(lái)生成和配置物體的運(yùn)動(dòng)路徑相當(dāng)簡(jiǎn)單高效。

5? 結(jié)束語(yǔ)

使用物理公式的方法繪制物體運(yùn)動(dòng)軌跡往往參數(shù)較多,后期想要調(diào)整軌跡需要繁雜的計(jì)算和驗(yàn)證,而使用貝塞爾曲線則只需調(diào)節(jié)少量的中間控制點(diǎn)就可以快速調(diào)整條軌跡路線。在Unity中使用貝塞爾曲線可以提前計(jì)算出路徑,進(jìn)而使用適當(dāng)?shù)倪\(yùn)動(dòng)方法沿路徑進(jìn)行移動(dòng),繪制的路徑固定且運(yùn)動(dòng)軌跡穩(wěn)定。本文提出一種基于Unity的靈活繪制N階貝塞爾曲線的方法來(lái)控制三維物體的運(yùn)動(dòng)軌跡。該方法設(shè)計(jì)了一種可以降階的插值計(jì)算函數(shù)來(lái)實(shí)現(xiàn)自定義控制點(diǎn)數(shù)的N階貝塞爾曲線。對(duì)比實(shí)驗(yàn)結(jié)果表明該方法有效且簡(jiǎn)化了三維物體的運(yùn)動(dòng)軌跡的參數(shù)定義,為應(yīng)用貝塞爾曲線來(lái)控制三維物體的運(yùn)動(dòng)軌跡提供了方法參考。

參考文獻(xiàn)

[1]唐實(shí), 任淑霞, 王佳欣, 等. 基于虛擬VR技術(shù)的心臟醫(yī)療輔助系統(tǒng)的設(shè)計(jì)與應(yīng)用[J]. 軟件, 2018, 39(6): 23-25.

[2]吳曉亮, 黃襄念. Unity中使用貝塞爾曲線對(duì)三維物體進(jìn)行彎曲[J]. 現(xiàn)代計(jì)算機(jī)(專業(yè)版), 2016(07): 57-59.

[3]胡學(xué)峰, 朱家明, 劉雅倩等. 基于貝賽爾曲線位圖矢量化方法的研究[J]. 西昌學(xué)院學(xué)報(bào)(自然科學(xué)版), 2015, 29(02): 72-75.

[4]張祖媛. 貝塞爾曲線的幾何構(gòu)型[J]. 四川工業(yè)學(xué)院學(xué)報(bào), 1998(04): 33-36+45.

[5]張少林, 景奉水, 王碩. 基于球面貝塞爾的姿態(tài)過(guò)渡與插補(bǔ)方法[J]. 華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2017, 45(10): 75-79.

[6]張金煒, 王文揚(yáng), 郭蓬等. 基于蟻群四次貝塞爾曲線的無(wú)人車路徑規(guī)劃[J]. 現(xiàn)代電子技術(shù), 2019, 42(13): 113-116.

[7]牛巖軍, 王進(jìn)杰, 曹國(guó)華等. 基于高階貝塞爾曲線的提升機(jī)鋼絲繩層間過(guò)渡平穩(wěn)性研究[J]. 礦山械, 2015, 43(12): 53-58.

[8]張文靜, 加云崗, 王偉. 基于Bezier曲線的移動(dòng)模型研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2015, 32(06): 1830-1834.

[9]韓浩, 王舜燕. 基于混合貝塞爾曲線模型的車道檢測(cè)算法[J]. 計(jì)算機(jī)工程與計(jì), 2018, 39(03): 732-737.

[10]張志毅, 楊溪. A級(jí)貝塞爾曲線的交互式控制生成方法[J]. 計(jì)算機(jī)應(yīng)用與件, 2014, 31(02): 103-105+194.

[11]徐梁, 高宏力, 宋興國(guó). 貝塞爾曲線融合ACO的移動(dòng)機(jī)器人路徑規(guī)劃[J]. 機(jī)械設(shè)計(jì)與造, 2020(01): 263-266.

[12]劉成志, 李軍成, 楊煉. 基于三次Bézier 曲線逼近的邊緣亞像素定位方法[J]. 軟件, 2015, 36(7): 31-35.

[13]何洪亮, 趙珂, 王子群, 等. 基于層次分析與多元曲線擬合法的眾包任務(wù)定價(jià)模型研究[J]. 軟件, 2018, 39(10): 139-144.

[14]譚振, 李軍成. 一種平面正則 C-Bézier 曲線的廣義偏距曲線構(gòu)造方法[J]. 軟件, 2018, 39(11): 07-10.

[15]盧超, 黃蔚, 胡國(guó)超. 基于圖形數(shù)據(jù)結(jié)構(gòu)的復(fù)雜對(duì)象建模設(shè)計(jì)[J]. 軟件, 2015, 36(12): 220-223.

主站蜘蛛池模板: 91精品专区国产盗摄| 国产成人精品优优av| 亚洲精品日产精品乱码不卡| 91精品国产综合久久香蕉922| 福利在线免费视频| 久久国产精品电影| 欧美日韩中文国产va另类| 四虎国产永久在线观看| 国产原创第一页在线观看| 日韩精品久久无码中文字幕色欲| 欧美一区中文字幕| 91成人在线免费视频| 国产永久无码观看在线| 亚洲黄色网站视频| 精品三级网站| 自慰高潮喷白浆在线观看| 91麻豆精品国产高清在线| 99在线免费播放| 日韩国产另类| 国产人人射| 无码人中文字幕| 亚洲欧美日韩色图| 伊人久久大香线蕉影院| 伦伦影院精品一区| 国产精品免费露脸视频| 无码内射中文字幕岛国片 | 中文字幕乱码中文乱码51精品| 国产人成网线在线播放va| 亚洲国产成人麻豆精品| 国产精品色婷婷在线观看| 亚洲成人播放| 国产乱人伦AV在线A| 国产欧美精品一区aⅴ影院| 666精品国产精品亚洲| 97在线视频免费观看| 国产女人在线| 亚洲大尺码专区影院| 亚洲色图另类| 久久久波多野结衣av一区二区| 91精品国产自产在线老师啪l| 无码专区国产精品一区| 一级成人a做片免费| 中文字幕丝袜一区二区| 欧美啪啪网| 成人福利在线免费观看| 国产aⅴ无码专区亚洲av综合网| 亚洲一区精品视频在线| 中国丰满人妻无码束缚啪啪| 高清国产va日韩亚洲免费午夜电影| 美女裸体18禁网站| 国产在线八区| 国产成人高清精品免费5388| 久久国产亚洲偷自| 尤物视频一区| 怡春院欧美一区二区三区免费| 国产亚洲视频中文字幕视频| 色135综合网| 最新精品国偷自产在线| 亚洲成a人片77777在线播放| 亚洲精品成人片在线播放| 日韩一区精品视频一区二区| 四虎精品免费久久| 欧美一区二区三区香蕉视| 国产日韩精品欧美一区灰| 成人午夜福利视频| 在线免费观看AV| 亚洲国产精品日韩欧美一区| 成年人国产网站| 欧美成人一级| 久久精品亚洲中文字幕乱码| 国产精品人人做人人爽人人添| 少妇高潮惨叫久久久久久| 亚洲永久色| 国产69精品久久久久孕妇大杂乱 | 精品国产一区91在线| 亚洲综合久久成人AV| 国产无码性爱一区二区三区| 亚洲综合经典在线一区二区| 欧美色亚洲| 欧美在线精品怡红院| 无码日韩精品91超碰| 国产chinese男男gay视频网|