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

        ?

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

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

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

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

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

        0 引言

        三維物體在三維制作軟件中進(jìn)行彎曲,是很常見的。但是當(dāng)導(dǎo)出模型到游戲引擎后就無(wú)法再改變形狀,而現(xiàn)在一些虛擬現(xiàn)實(shí)的軟件中,經(jīng)常需要對(duì)三維物體進(jìn)行實(shí)時(shí)的彎曲,如管道等。要想在游戲引擎中對(duì)三維物體進(jìn)行變形,就只有通過算法編程進(jìn)行實(shí)現(xiàn)[1]。而管道等這些長(zhǎng)條型物體,可以看成一條粗的線,只不過這條線主要靠的是網(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)是可拖動(dòng)的支點(diǎn),線段像可伸縮的皮筋。通過拖動(dòng)節(jié)點(diǎn),可以改變線段的彎曲程度和彎曲方向。貝塞爾曲線有線性公式、二次方公式、三次方公式和一般參數(shù)公式,分別對(duì)應(yīng)兩個(gè)節(jié)點(diǎn)、三個(gè)節(jié)點(diǎn)、四個(gè)節(jié)點(diǎn)和任意節(jié)點(diǎn)的貝塞爾曲線。由于這里只會(huì)用到四個(gè)節(jié)點(diǎn),所以只敘述三次方公式。

        貝塞爾曲線的定義有四個(gè)點(diǎn):起始點(diǎn)、終止點(diǎn)(也稱錨點(diǎn))以及兩個(gè)相互分離的中間點(diǎn)?;瑒?dòng)兩個(gè)中間點(diǎn),貝塞爾曲線的形狀會(huì)發(fā)生變化。

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

        貝塞爾曲線公式[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所示的,就是一個(gè)圓柱體的網(wǎng)格,在建模的時(shí)候,都會(huì)看見模型上有著密密麻麻的網(wǎng)格,在網(wǎng)格的邊相交的地方就是網(wǎng)格頂點(diǎn),通過改變這些網(wǎng)格頂點(diǎn)的位置,相應(yīng)的網(wǎng)格就會(huì)發(fā)生形狀變化,從而讓模型的形狀發(fā)生改變。

        圖1 貝塞爾曲線效果圖

        圖2 生成示意圖

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

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

        圖3 三維網(wǎng)格

        要對(duì)三維物體進(jìn)行變形,只需要獲得這組頂點(diǎn)數(shù)組,將每一個(gè)頂點(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)建一條貝塞爾曲線。在三維物體的兩端加入兩個(gè)子物體,對(duì)應(yīng)好位置,通過引擎提供的In-verseTransformPoint()函數(shù)將兩個(gè)子物體的坐標(biāo)點(diǎn)轉(zhuǎn)化為三維物體的本地坐標(biāo)點(diǎn),并將此兩點(diǎn)作為三階貝塞爾曲線的兩個(gè)端點(diǎn)。再在此兩點(diǎn)中間任取兩點(diǎn),將其作為貝塞爾曲線的錨點(diǎn)。有了這四個(gè)頂點(diǎn),就可以根據(jù)三階貝塞爾曲線公式計(jì)算出一條適用于這個(gè)三維物體的一條曲線。

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

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

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

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

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

        圖4 三維物體彎曲

        3 結(jié)語(yǔ)

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

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

        [1]丁德紅,方逵,饒大鵬,敬松.三維植物花朵動(dòng)態(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ì)市場(chǎng),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-),男,四川簡(jiǎn)陽(yáng)人,本科,研究方向?yàn)閁nity開發(fā)

        2016-01-26

        2016-02-26

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

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

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

        黃襄念(1964-),男,四川人,教授,研究方向?yàn)閳D像/文字識(shí)別技術(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.

        猜你喜歡
        貝塞爾百分比頂點(diǎn)
        過非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
        看星星的人:貝塞爾
        少兒科技(2021年3期)2021-01-20 13:18:34
        關(guān)于頂點(diǎn)染色的一個(gè)猜想
        基于虛宗量貝塞爾函數(shù)的螺旋帶色散模型
        普通照明用自鎮(zhèn)流LED燈閃爍百分比測(cè)量不確定度分析
        電子制作(2017年20期)2017-04-26 06:57:46
        肝癌患者外周血Treg、Th17百分比及IL-17水平觀察
        一種脈沖貝塞爾波的構(gòu)造及其非線性聲場(chǎng)的仿真
        高階貝塞爾光束的Z掃描理論
        商貿(mào)投資最適宜國(guó)家和地區(qū)
        海外星云 (2012年24期)2012-04-29 00:30:09
        數(shù)學(xué)問答
        av在线播放男人天堂| 国内无遮码无码| 高潮社区51视频在线观看| 久久精品视频日本免费| 国色天香社区视频在线| 国产精品无圣光一区二区| 国产精品视频久久久久| 午夜国产小视频在线观看黄| 国产成人亚洲综合小说区| 国产精品国产三级国产专播| 伊人久久精品无码av一区| 日日噜噜噜夜夜爽爽狠狠视频| 久久精品免费无码区| 色老板在线免费观看视频日麻批| 巨爆中文字幕巨爆区爆乳| 无码骚夜夜精品| 尤物无码一区| 九九日本黄色精品视频| 五月激情在线视频观看| 97日日碰曰曰摸日日澡| 精品国产成人亚洲午夜福利| 国产高潮精品久久AV无码| 亚洲国产视频精品一区二区| 日本a爱视频二区三区| 国产成年女人毛片80s网站| 国产午夜福利在线播放| 亚洲an日韩专区在线| 久久久免费精品国产色夜| 欧洲乱码伦视频免费| 国产无遮挡又黄又爽在线视频| 看黄网站在线| 最大色网男人的av天堂| 白白在线视频免费观看嘛| 特级av毛片免费观看| 精品九九视频| 亚洲成人免费久久av| 亚洲综合色区一区二区三区| 99国内精品久久久久久久| 久久精品成人免费观看97| 一本大道久久a久久综合精品| 欧美激情一区二区三区|