亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unity中spine怎么用

發布時間:2022-01-05 14:35:50 來源:億速云 閱讀:835 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關unity中spine怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

骨骼動畫

首先我們來看到底什么是骨骼動畫:

在早期的機器上,渲染本身已經占用了很多CPU資源,因此,對于渲染,往往采取的是一種空間換時間的策略,以避免在模型的渲染中繼續加重CPU的負擔。幀動畫模型在這種條件下應運而生。比較著名的幀動畫格式是Quake2所采用的MD2。到今天為止,幀動畫依然存在,只不過幀動畫更多地是來描述小且動作相對少些的物體。

GPU出現后,CPU的問題早已不像以前那么突出,一些新的手段和技術也可以被應用進來了。骨骼動畫相對于幀動畫而言,更加靈活多變,但同時,骨骼動畫需要更多的計算量,因此骨骼動畫往往應用在需要著重體現動作細節的模型中。

骨骼動畫技術后于幀動畫技術出現。最開始,骨骼動畫僅用于非實時渲染的建模領域,如3DMax這類建模軟件之中,以方便美工的建模。后來,CPU從渲染中解放后,骨骼動畫才用于實時渲染的游戲中。

骨骼動畫原理

骨骼動畫的想法來源于人體骨骼。例如說,人的上肢所有肌肉和皮膚都受上肢骨胳的影響,而人的踝關節則分別承受小腿骨胳和腳骨的影響。根據這個我們可以將骨骼動畫理解為兩個概念: 骨骼:用以控制蒙皮的一種抽象的概念,如人體骨骼控制皮膚。 蒙皮:被骨骼控制、并顯示在外的因素,如人體的皮膚被骨骼所影響。

蒙皮(SKINMESH)

在最終的渲染結果中,蒙皮將完全顯示出來,蒙皮實際上就是頂點、法線和紋理坐標等將被渲染的元素。而其中,最關鍵的當然是頂點,頂點將直接被骨頭牽扯運動,因而使得整個模型呈現骨骼所決定的樣子。

骨骼(SKELETON)

骨骼是一種抽象的概念,在最終的渲染結果中,它不可見。類如人體骨骼、骨骼是若干骨頭(Bone)成樹狀的集合體,而每塊骨頭又分別與若干數量的蒙皮頂點關聯。當骨頭運動的時候,與之關聯的所有蒙皮頂點也會受骨骼的影響而運動。

骨頭與蒙皮頂點的關聯需要考慮到每塊骨頭對蒙皮頂點的影響。 盡管大部分情況下,一個頂點將僅僅被一個骨頭的影響,但是關節處的頂點往往被多根骨頭影響,例如踝關節,可能會分別受小腿骨50%和腳骨50%的影響,這種影響叫作權重(Weight)。
在這種情況下,我們稱踝關節的這些頂點,受小腿骨影響的權重是50%,受腳骨影響的權重也是50%。

Unity的骨骼動畫插件

而在Unity3D中骨骼動畫插件有比較多,例如Uni2D,SmoothMovoe,Puppet2D等等,但為了方便美術人員編輯我們項目使用是spine

Spine介紹

spine容易上手,并且它提供了mesh,通常來說一張紋理只有4個頂點,左下右下左上右上,但是有了mesh,我們可以抓取這個圖片,并設置大量的頂點給它,之后就能通過對頂點的設置完成圖片的拉伸形變,比如乳搖功能。

spine中30幀為1s,最新版中也提供了IK,可以將骨骼固定,做動作

在Unity中導入骨骼動畫

1:準備好unity使用Spine所需要的運行庫,可到如下地址https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-unity

使用git下載,或直接下載master.zip文件.

2:準備好Spine導出好的動畫文件,正好最近偶爾玩一個游戲,里面使用了Spine制作的骨骼動畫,我就直接使用它做好的資源記錄一下步驟,僅作筆記使用.

我這里的動畫文件資源如圖:

unity中spine怎么用

這里需要提前做一個準備工作,把上圖中的enemy_hunter.atlas文件重名為enemy_hunter.atlas.txt,因為unity無法識別.atlas文件,后面無法進行資源導入.

3:現在準備工作ok了,我們可以創建一個unity工程了.

a:把master.zip文件中spine-runtimes-master\spine-unity\Assets\spine-unity文件夾復制到工程的Assets文件夾中

b:把master.zip文件中spine-runtimes-master\spine-csharp\src文件夾中所有內容復制到工程的Assets\spine-csharp文件夾中

4:導入資源

a:這里我在資源面板右鍵新建一個文件夾,用來存放導入的資源,建議導入順序為".png" ".json"  ".atlas.txt",這樣在最后導入".atlas.txt"文件的時候,會自動生成enemy_hunter_Material.mat文件和enemy_hunter_Atlas.asset文件.

b:右鍵新建"spine skeletonData"類型文件,名稱為"enemy_hunter_SkeletonData.asset",這里結合網上的資料,感覺以前的版本,應該都是自動生成的,不知道這里為什么需要手動建立這個文件,之前的版本也沒有使用過,純屬猜測.文件新建好后,需要配置Skeleton JSON屬性,指定"enemy_hunter.json"文件,然后點擊"Attempt Reimport"的按鈕即可.完成后如圖:

unity中spine怎么用

到目前為止,骨骼動畫的導入工作就完成了.

5.現在我們把這個骨骼動畫加入到場景中看看效果.

新建Spine SkeletonAnimation對象,Skeleton Data Asset屬性指定為"enemy_hunter_SkeletonData.asset"文件.然后Advanced中Animation屬性選擇一個動作,Loop屬性勾上,即可循環播放.

如圖:

unity中spine怎么用

unity中spine怎么用

6:現在即可在Game面板播放觀看效果.至此Spine骨骼動畫導入unity已完成!

在Unity中使用骨骼動畫

可以使用spine制作骨骼動畫來給unity使用。spine提供了unity運行包。運行包的版本一定要和spine版本一致,不然會報錯。

導入spine動畫:

由spine導出的動畫文件有3個:xx.atlas,xx.json,xx.png。將這三個文件直接導入unity會報錯,將xx.atlas改為xx.atlas.txt,這時會自動生成xx_Atlas.asset,xx_Material.mat。然后在unity里面create spine SkeletonData,指定xx_Atlas.asset和xx.json。就可以用SkeletonData生成動畫了。

控制動畫播放:

SkeletonAnimation skeletonAnimation;   //gameobject的component。
Spine.AnimationState spineAnimationState = skeletonAnimation.state;
Spine.Skeleton skeleton;

spineAnimationState.SetAnimation(0, animationName, true);

切換動畫的bug:

由于spine在切換動畫的時候自動補償,用于動畫的平穩過度。但是會導致殘影等bug,這時候需要在SetAnimation前調用

skeletonAnimation.skeleton.SetToSetupPose ();
spineAnimationState.ClearTracks ();

來消除前一個動畫的影響。

添加事件:

skeletonAnimation.state.Start:開始播放
skeletonAnimation.state.End:動畫被清除或者中斷
skeletonAnimation.state.Interrupt:動畫被打斷
skeletonAnimation.state.Complete:播放結束
skeletonAnimation.state.Event:用戶自定義事件

事件設置采用lambda表達式:

skeletonAnimation.state.Complete += (state, trackIndex,loopCount) => {
            Debug.log("");
        };

動態獲取slot的坐標:

Vector3 pos = skeletonAnimation.skeleton.FindSlot("hat_1").Bone.GetWorldPosition(transform);

關于“unity中spine怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

赤壁市| 台北县| 嘉峪关市| 绵竹市| 伊宁县| 温泉县| 米易县| 临西县| 临沭县| 巩留县| 芷江| 当涂县| 垫江县| 朝阳区| 辉县市| 扎囊县| 子洲县| 大厂| 镇沅| 麻栗坡县| 葵青区| 渭南市| 云南省| 梧州市| 随州市| 武强县| 浑源县| 梓潼县| 德州市| 新闻| 新邵县| 遵化市| 略阳县| 奉贤区| 靖远县| 于田县| 平阴县| 黄陵县| 临漳县| 高青县| 婺源县|