3dsMax制作弯曲动画导入Unity后动画丢失
問(wèn)題描述
上圖是在3ds中預(yù)覽的效果,可以看見(jiàn)對(duì)上面的平面進(jìn)行了一個(gè)bend變形操作。在輸出為下圖的FBX后,發(fā)現(xiàn)其他動(dòng)畫(huà)還保留,唯獨(dú)bend動(dòng)畫(huà)丟失。
那么應(yīng)該如何保留所有動(dòng)畫(huà)呢?
幾種思路,一種是找到能導(dǎo)出導(dǎo)入的方法;第二種是平面動(dòng)畫(huà)改成在unity實(shí)現(xiàn),兩個(gè)動(dòng)畫(huà)結(jié)合起來(lái);第三種是換個(gè)平臺(tái)重新做動(dòng)畫(huà),比如catia,但是如何導(dǎo)出導(dǎo)入尚不清楚;第四種是錄屏,然后單擊事件后播放視頻。(2021/2/9發(fā)現(xiàn)問(wèn)題)
目前的解決方式
(2021/2/28找到了解決方法)
網(wǎng)上下載了MegaFiers資源包,導(dǎo)入U(xiǎn)nity后可對(duì)GameObject進(jìn)行彎曲操作,當(dāng)然還有各種其他操作,有諸多大佬講解,不在此作為重點(diǎn)。
將FBX文件導(dǎo)入到Unity,依然只有簡(jiǎn)單地動(dòng)畫(huà)而會(huì)丟失彎曲動(dòng)畫(huà)。所以保留其他動(dòng)畫(huà)的同時(shí)用Unity按Unity的方式建立物體和動(dòng)畫(huà)。
可以添加Bend組件,接著就可以根據(jù)需求錄制動(dòng)畫(huà)了。
新出現(xiàn)的問(wèn)題
事情并沒(méi)有這么簡(jiǎn)單。
兩組動(dòng)畫(huà)的整體性
由于普通動(dòng)畫(huà)和彎曲動(dòng)畫(huà)是分開(kāi)來(lái)做的,所以失去了整體性。
剛導(dǎo)入的結(jié)構(gòu)基本什么組件都沒(méi)有。
可以打開(kāi)這個(gè)三角
在里面找到它的動(dòng)畫(huà),直接拖到物體上。
會(huì)發(fā)現(xiàn)生成了Animator組件
這和Animation還是有區(qū)別的,但是我不是很清楚。
(2021/3/3撰寫(xiě))
如何控制動(dòng)畫(huà)的播放
結(jié)構(gòu)動(dòng)畫(huà)的控制
剛導(dǎo)入結(jié)構(gòu)時(shí)自帶的Animator,啟動(dòng)后就開(kāi)始播放動(dòng)畫(huà)Take 001,只播一次且不受控制。目標(biāo)是實(shí)現(xiàn)可控制的動(dòng)畫(huà)播放。
嘗試了一些方法后找到一個(gè)暫時(shí)可行的。
建立一個(gè)空狀態(tài)New State,將New State與Take 001連接如圖,設(shè)置成Bool:run切換。再使用代碼控制。更詳細(xì)的教程
效果如下
平面的彎曲動(dòng)畫(huà)
可以采取類(lèi)似的方式控制,即用Animator控制。
所以將之前做的Animation的Legacy取消勾選,將平面的Animation組件刪除,添加Animator組件,將之前的Skin動(dòng)畫(huà)添加到Animator中,其余操作類(lèi)似。
也就是說(shuō)用同一組代碼可以分別實(shí)現(xiàn)對(duì)兩者的控制。
如何同時(shí)控制
可見(jiàn),如果都顯示的話(huà)使用按鈕不能實(shí)現(xiàn)兩組動(dòng)畫(huà)的控制
原因是按鈕疊加了。結(jié)構(gòu)的開(kāi)始停止兩個(gè)按鈕與平面的兩個(gè)按鈕重合了,也就是運(yùn)行后分別生成了兩組、四個(gè)按鈕。
如何實(shí)現(xiàn)一個(gè)按鈕同時(shí)控制兩組動(dòng)畫(huà)
因?yàn)閮蓚€(gè)腳本分別控制的會(huì)生成兩組按鈕,為了使用一組按鈕實(shí)現(xiàn)對(duì)兩個(gè)動(dòng)畫(huà)的控制,需要整合到一個(gè)腳本中。
using System.Collections; using System.Collections.Generic; using UnityEngine;public class Drawtest : MonoBehaviour {private Animator animator;private Animator childanimator;private GameObject skin;private void Start(){animator = GetComponent<Animator>();skin = GameObject.Find("Plane");childanimator = skin.GetComponent<Animator>();}private void OnGUI(){if(GUILayout.Button("開(kāi)始")){animator.SetBool("run", true);childanimator.SetBool("run", true);}if (GUILayout.Button("停止")){animator.SetBool("run", false);childanimator.SetBool("run", false);}} }(2021/3/5撰寫(xiě))
總結(jié)
以上是生活随笔為你收集整理的3dsMax制作弯曲动画导入Unity后动画丢失的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flutter 中 Card 设置圆角
- 下一篇: 基于java的人力资源管理系统_基于Ja