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

Unity中使用貝塞爾曲線對三維物體進(jìn)行彎曲

2016-09-20 07:22:34吳曉亮黃襄念西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院成都610039
現(xiàn)代計(jì)算機(jī) 2016年7期
關(guān)鍵詞:游戲

吳曉亮,黃襄念(西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院,成都 610039)

Unity中使用貝塞爾曲線對三維物體進(jìn)行彎曲

吳曉亮,黃襄念
(西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院,成都610039)

0 引言

三維物體在三維制作軟件中進(jìn)行彎曲,是很常見的。但是當(dāng)導(dǎo)出模型到游戲引擎后就無法再改變形狀,而現(xiàn)在一些虛擬現(xiàn)實(shí)的軟件中,經(jīng)常需要對三維物體進(jìn)行實(shí)時的彎曲,如管道等。要想在游戲引擎中對三維物體進(jìn)行變形,就只有通過算法編程進(jìn)行實(shí)現(xiàn)[1]。而管道等這些長條型物體,可以看成一條粗的線,只不過這條線主要靠的是網(wǎng)格,而形成網(wǎng)格的基礎(chǔ)就是網(wǎng)格點(diǎn),通過使用貝塞爾曲線控制網(wǎng)格點(diǎn),就可以控制三維物體的形狀,達(dá)到彎曲變形的目的。

1 貝塞爾曲線

貝塞爾曲線是一種應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線。貝塞爾曲線由線段與節(jié)點(diǎn)組成,節(jié)點(diǎn)是可拖動的支點(diǎn),線段像可伸縮的皮筋。通過拖動節(jié)點(diǎn),可以改變線段的彎曲程度和彎曲方向。貝塞爾曲線有線性公式、二次方公式、三次方公式和一般參數(shù)公式,分別對應(yīng)兩個節(jié)點(diǎn)、三個節(jié)點(diǎn)、四個節(jié)點(diǎn)和任意節(jié)點(diǎn)的貝塞爾曲線。由于這里只會用到四個節(jié)點(diǎn),所以只敘述三次方公式。

貝塞爾曲線的定義有四個點(diǎn):起始點(diǎn)、終止點(diǎn)(也稱錨點(diǎn))以及兩個相互分離的中間點(diǎn)。滑動兩個中間點(diǎn),貝塞爾曲線的形狀會發(fā)生變化。

如圖1,定義四個頂點(diǎn)P0、P1、P2、P3,曲線從P0走向P3,并不會經(jīng)P1、P2兩點(diǎn)。這兩個點(diǎn)只是在那里提供方向信息。P0和P1之間的間距,決定了曲線在趨進(jìn)P3之前,走向P2方向的長度有多長。

貝塞爾曲線公式[2]:

B(t)=P0(1-t)3+3P1t(1-t)3+3P2t2(1-t)+P3t3,t∈[0,1]

上述公式中,參數(shù)t可看做是線段百分比所在的位置,如圖2所示。

2 彎曲的實(shí)現(xiàn)

三維物體的形成,主要靠的就是網(wǎng)格,而網(wǎng)格的形成則需要網(wǎng)格頂點(diǎn)。如圖3-1所示的,就是一個圓柱體的網(wǎng)格,在建模的時候,都會看見模型上有著密密麻麻的網(wǎng)格,在網(wǎng)格的邊相交的地方就是網(wǎng)格頂點(diǎn),通過改變這些網(wǎng)格頂點(diǎn)的位置,相應(yīng)的網(wǎng)格就會發(fā)生形狀變化,從而讓模型的形狀發(fā)生改變。

圖1 貝塞爾曲線效果圖

圖2 生成示意圖

在Unity中,模型導(dǎo)入后形狀就會固定,達(dá)不到想要彎曲變形的目的。要想在Unity中對模型實(shí)時操作變形,就需要通過算法來實(shí)現(xiàn)。

Unity中的網(wǎng)格信息是通過 GameObject的 Mesh-Filter組件中的mesh屬性來獲取。所以想要進(jìn)行網(wǎng)格操作,必須為游戲?qū)ο筇砑右粋€MeshFiler游戲組件,而MeshFiler中的mesh屬性中包含了三維游戲模型的法線、UV坐標(biāo)、三角形和vertices頂點(diǎn)數(shù)組屬性。三角形屬性并不是單獨(dú)保存,而是通過頂點(diǎn)數(shù)組間接保存。數(shù)組不使用特殊類表示三角形,而只是一個簡單的整數(shù)指數(shù)列表。每一個三角形都是以三個點(diǎn)為一組,因此,前三個元素定義為第一個三角形,之后的三個元素定義為第二個三角形,并依此類推。

圖3 三維網(wǎng)格

要對三維物體進(jìn)行變形,只需要獲得這組頂點(diǎn)數(shù)組,將每一個頂點(diǎn)的位置通過貝塞爾曲線算法進(jìn)行計(jì)算,重新定位即可。具體算法如下[3]:

(1)將三維物體導(dǎo)入U(xiǎn)nity引擎中,為其添加Mesh-Filer組件,通過它獲取物體的mesh屬性,再通過mesh獲取物體的網(wǎng)格頂點(diǎn)vertices屬性。

(2)為物體創(chuàng)建一條貝塞爾曲線。在三維物體的兩端加入兩個子物體,對應(yīng)好位置,通過引擎提供的In-verseTransformPoint()函數(shù)將兩個子物體的坐標(biāo)點(diǎn)轉(zhuǎn)化為三維物體的本地坐標(biāo)點(diǎn),并將此兩點(diǎn)作為三階貝塞爾曲線的兩個端點(diǎn)。再在此兩點(diǎn)中間任取兩點(diǎn),將其作為貝塞爾曲線的錨點(diǎn)。有了這四個頂點(diǎn),就可以根據(jù)三階貝塞爾曲線公式計(jì)算出一條適用于這個三維物體的一條曲線。

(3)將獲取到的mesh屬性的vertices數(shù)組取出,根據(jù)自己的物體要彎曲的軸向,選擇相應(yīng)的X、Y、Z軸,并找出相應(yīng)軸的最大值和最小值,相減獲得物體的總長,再將每個點(diǎn)對應(yīng)的值和最小值相減并除以總長,得到每一個網(wǎng)格頂點(diǎn)在物體中的百分比。

(4)將百分比值傳給貝塞爾曲線,計(jì)算出貝塞爾曲線對應(yīng)的百分比所在點(diǎn),并計(jì)算出此百分比對應(yīng)的前一個點(diǎn)和后一個點(diǎn)。

(5)通過叉乘,計(jì)算出這個百分比所在的貝塞爾曲線上的切線方向和垂直方向的偏移量。

(6)將此切線偏移量和垂直偏移量和三維物體的vertices屬性中對應(yīng)百分比的點(diǎn)相加,得到新的網(wǎng)格頂點(diǎn)。

(7)重復(fù)上述(3)到(6)的操作步驟,計(jì)算出每一個網(wǎng)格頂點(diǎn)的值。如此得到一個新的網(wǎng)格頂點(diǎn)數(shù)組,將此數(shù)組賦給vertices得到新的vertices頂點(diǎn)屬性,就改變了三維物體網(wǎng)格頂點(diǎn)的位置,從而使物體發(fā)生彎曲(如下圖)。

圖4 三維物體彎曲

3 結(jié)語

本文給出了利用貝塞爾曲線對三維物體進(jìn)行彎曲的實(shí)現(xiàn)算法,并且對Unity中的網(wǎng)格屬性進(jìn)行了簡單的說明,使大家對網(wǎng)格有簡單的認(rèn)識,在實(shí)現(xiàn)算法時有一定的幫助。但是在Unity中實(shí)現(xiàn)此算法,需要掌握一些Unity3D的API[4],使用這些API進(jìn)行計(jì)算,可以減少許多不必要的實(shí)現(xiàn)代碼,可以大大地簡化此算法的實(shí)現(xiàn)。

此算法擴(kuò)大了貝塞爾曲線的應(yīng)用,不只是局限于應(yīng)用在二維平面中的線條,如今也可以應(yīng)用于三維的條形狀物體,具有一定的創(chuàng)新性。

[1]丁德紅,方逵,饒大鵬,敬松.三維植物花朵動態(tài)仿真模型技術(shù)研究與實(shí)現(xiàn)[J].農(nóng)機(jī)化研究,2014(5)

[2]王竹溪,郭敦仁著.特殊函數(shù)概論[M].北京:北京大學(xué)出版社,2012.

[3]陳江.VC實(shí)現(xiàn)貝塞爾曲線繪制[J].科技經(jīng)濟(jì)市場,2011(5)

[4]陳泉宏著.Unity API詳解[M].北京:人民郵電出版社,2014.

[5]克利福德·彼得斯(Clifford Peters),斯特·奈·斯瑞(Thet Naing Swe)著.Unity 3D人工智能編程[M].李秉義譯.北京:機(jī)械工業(yè)出版社,2015.

Bezier Curve;3D Object;Mesh Vertex;Bend

Using Bezier Curve to Bend 3D Objects in Unity

WU Xiao-liang,HUANG Xiang-nian
(School of Computer and Software Engineering,Xihua University,Chengdu610039)

1007-1423(2016)07-0057-03

10.3969/j.issn.1007-1423.2016.07.013

吳曉亮(1994-),男,四川簡陽人,本科,研究方向?yàn)閁nity開發(fā)

2016-01-26

2016-02-26

隨著虛擬現(xiàn)實(shí)的發(fā)展,在游戲引擎中對三維物體進(jìn)行彎曲效果的模擬越來越重要。在三維游戲引擎中,需要對一些三維的物體進(jìn)行彎曲,以達(dá)到游戲操作中實(shí)時模擬物體彎曲。貝塞爾曲線算法是一個在計(jì)算機(jī)圖形中常用的算法,被用于各類圖形制作軟件中,如Photoshop等軟件,但多限于二維線條的應(yīng)用,在三維物體上的應(yīng)用較少。通過貝塞爾曲線算法結(jié)合三維物體的網(wǎng)格頂點(diǎn),可以實(shí)現(xiàn)對條形三維物體進(jìn)行彎曲變化。

貝塞爾曲線;三維物體;網(wǎng)格頂點(diǎn);彎曲

2014年國家級大學(xué)生創(chuàng)新訓(xùn)練項(xiàng)目(No.201410623012)

黃襄念(1964-),男,四川人,教授,研究方向?yàn)閳D像/文字識別技術(shù)與系統(tǒng)、智能視頻監(jiān)控技術(shù)與系統(tǒng)、三維游戲圖形引擎技術(shù)與系統(tǒng)、體感交互技術(shù)與虛擬現(xiàn)實(shí)系統(tǒng)

With the development of virtual reality,it’s increasingly important to simulate bending effect of 3D objects in game engine.In order to re-al-time simulate the bending of object in the 3D game engine,it needs to bend some 3D objects.Bezier curve algorithm is one of the common algorithms in computer graphics,which is used in all kinds of graphics software,such as Photoshop and so on.It is usually used in 2D lines while rarely in 3D objects.By combining Bezier curve algorithm with mesh vertex of the 3D objects,it can achieve to bend the bar 3D objects.

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數(shù)獨(dú)游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
第八章 直接逃出游戲
游戲五計(jì)算
主站蜘蛛池模板: 欧美成人国产| 丝袜无码一区二区三区| 亚洲免费人成影院| www亚洲天堂| 性欧美在线| 欧洲日本亚洲中文字幕| 91系列在线观看| 亚洲国产av无码综合原创国产| 久久精品只有这里有| 日韩av无码精品专区| 亚洲精品成人片在线观看| 亚洲综合激情另类专区| 国产亚洲精品无码专| 欧美日韩高清在线| 成人一级免费视频| 免费女人18毛片a级毛片视频| 中文无码毛片又爽又刺激| 一级爆乳无码av| 亚洲日韩精品无码专区97| 爱爱影院18禁免费| 亚洲无码日韩一区| 日韩天堂视频| 9久久伊人精品综合| 亚洲视频免费在线看| 正在播放久久| 99久久成人国产精品免费| 青青极品在线| 黄色污网站在线观看| 色丁丁毛片在线观看| 亚洲一级无毛片无码在线免费视频| 色视频国产| 国产成人高清精品免费软件| 精品欧美日韩国产日漫一区不卡| 亚洲福利视频一区二区| 亚洲第一成年网| 成人在线综合| 久久永久精品免费视频| 亚洲成人在线免费| 91色综合综合热五月激情| 高清久久精品亚洲日韩Av| 婷五月综合| 亚洲女同欧美在线| 国产成人欧美| 天堂av高清一区二区三区| 国产精品性| a天堂视频| 中文字幕免费播放| 最新日韩AV网址在线观看| 亚洲三级a| a毛片在线| 国产丝袜无码精品| 欧美另类精品一区二区三区| 一本色道久久88综合日韩精品| 欧美日韩国产系列在线观看| 秋霞午夜国产精品成人片| 欧美成人午夜视频免看| 香蕉网久久| 无码福利日韩神码福利片| 欧美精品xx| 人与鲁专区| 久久久久国产精品嫩草影院| 亚洲色图综合在线| 一区二区在线视频免费观看| 99精品在线视频观看| 久久国产av麻豆| 久久久久国产一级毛片高清板| 曰韩免费无码AV一区二区| 国产91麻豆免费观看| 国产精品私拍99pans大尺度| 成人免费午间影院在线观看| 在线观看av永久| 99在线视频网站| 国产在线精品人成导航| 99热国产在线精品99| 成人免费黄色小视频| 国产成人亚洲综合a∨婷婷| 91成人在线观看视频| 高清码无在线看| 四虎国产成人免费观看| 波多野结衣一区二区三区四区视频 | 免费a在线观看播放| 人妻中文久热无码丝袜|