濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation教程

Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation教程

熱門(mén)標(biāo)簽:宿遷怎么辦理400電話(huà) 蘇州呼叫中心外呼系統(tǒng)哪家強(qiáng) 鶴壁高頻外呼系統(tǒng)多少錢(qián)一個(gè)月 外呼系統(tǒng)怎么群發(fā)短信 聯(lián)通外呼系統(tǒng)電腦app軟件 400電話(huà)申請(qǐng)到底哪家好 400電話(huà)辦理費(fèi)用低 谷歌地圖標(biāo)注日期 地圖標(biāo)注項(xiàng)目幾個(gè)月

一、前言

點(diǎn)關(guān)注不迷路,持續(xù)輸出Unity干貨文章。
嗨,大家好,我是新發(fā)。
Unity項(xiàng)目中,我們可能需要實(shí)現(xiàn)3D角色表情的過(guò)渡切換,比如像這樣子:

Unity中如何做這個(gè)功能呢?今天就來(lái)跟大家講一下。

二、BlendShape(動(dòng)畫(huà)師、MAYA)

Maya中,動(dòng)畫(huà)師可以使用BlendShape綁定好表情,動(dòng)畫(huà)師只需要制作好A表情、B表情、C表情等,通過(guò)BlendShape就可以很方便地進(jìn)行表情之間的插值過(guò)渡了。
注意BlendShape與骨骼動(dòng)畫(huà)不同,骨骼動(dòng)畫(huà)需要先將網(wǎng)格綁定骨骼,由骨骼來(lái)驅(qū)動(dòng)網(wǎng)格;而BlendShape不需要骨骼,BlendShape很適合用作面部表情的實(shí)現(xiàn)。
動(dòng)畫(huà)師做好BlendShape后,Unity客戶(hù)端程序員將模型導(dǎo)入Unity工程中,在Unity中勾選模型的Import BlendShapes。

這樣,在Unity中我們就可以通過(guò)BlendShape滑塊來(lái)調(diào)節(jié)表情的過(guò)渡啦。

效果如下:

三、Unity控制BlendShapes

上面我們是手動(dòng)調(diào)節(jié)BlendShape的滑塊,我們?nèi)绾瓮ㄟ^(guò)代碼來(lái)控制BlendShape呢?
有兩種方式:

  • 1、直接通過(guò)SkinnedMeshRenderer組件訪(fǎng)問(wèn)BlendShape;
  • 2、制作成Animation,在Animation中控制BlendShape,然后由代碼來(lái)控制Animation

1、SkinnedMeshRenderer控制BlendShape

接口:

// SkinnedMeshRenderer.cs
public void SetBlendShapeWeight(int index, float value);

參數(shù)index就是BlendShape的索引,從0開(kāi)始,參數(shù)value是滑塊的值,范圍:0~100。

2、Animation控制BlendShape

動(dòng)畫(huà)師將表情制作成Animation,特定組合的BlendShape其實(shí)就是一個(gè)表情,比如眉毛上抬,眼睛睜大,嘴巴張開(kāi)這三個(gè)組合起來(lái)是一個(gè)表情,這樣做成n個(gè)Animation動(dòng)畫(huà)。

把這些動(dòng)畫(huà)組織到Animator狀態(tài)機(jī)中。

關(guān)于Animator的使用,可以參見(jiàn)我之前寫(xiě)的這篇文章:關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程

接著,我們就可以通過(guò)播放動(dòng)畫(huà)來(lái)實(shí)現(xiàn)表情的過(guò)渡了。

// Animator.cs
public void CrossFade(string stateName, float normalizedTransitionDuration);

參數(shù)stateName是動(dòng)畫(huà)狀態(tài)名稱(chēng),比如smile,參數(shù)normalizedTransitionDuration是動(dòng)畫(huà)融合歸一化時(shí)間。
我們可以測(cè)試下normalizedTransitionDuration分別為0、0.3f1三種情況的融合效果:
為0的情況:

為0.3f的情況:

為1的情況:

四、結(jié)束語(yǔ)

好了。
喜歡Unity的同學(xué),不要忘記點(diǎn)擊關(guān)注,如果有什么Unity相關(guān)的技術(shù)難題,也歡迎留言或私信~
感謝閱讀,我們下次再見(jiàn)。

以上就是Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation教程的詳細(xì)內(nèi)容,更多關(guān)于Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Unity實(shí)現(xiàn)滑動(dòng)更換界面效果
  • Unity3D實(shí)現(xiàn)漸變顏色效果
  • 解決Unity urp級(jí)聯(lián)陰影接縫問(wèn)題

標(biāo)簽:丹東 鄂爾多斯 哈爾濱 錫林郭勒盟 莆田 襄陽(yáng) 遵義 雙鴨山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation教程》,本文關(guān)鍵詞  Unity,通過(guò),BlendShape,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation教程》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Unity通過(guò)BlendShape實(shí)現(xiàn)面部表情過(guò)渡切換Animation教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    浦江县| 普兰店市| 娱乐| 天镇县| 南安市| 唐海县| 随州市| 昭通市| 南靖县| 拉孜县| 茌平县| 托里县| 朔州市| 承德市| 宁安市| 伊金霍洛旗| 邻水| 探索| 乌兰察布市| 柘城县| 慈溪市| 兴山县| 黄龙县| 金昌市| 化隆| 横山县| 和田县| 淳化县| 南岸区| 施秉县| 光泽县| 岢岚县| 华阴市| 营山县| 东明县| 穆棱市| 绵竹市| 义马市| 怀远县| 开封市| 外汇|