日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3dsMax制作弯曲动画导入Unity后动画丢失

發布時間:2024/3/7 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3dsMax制作弯曲动画导入Unity后动画丢失 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

上圖是在3ds中預覽的效果,可以看見對上面的平面進行了一個bend變形操作。在輸出為下圖的FBX后,發現其他動畫還保留,唯獨bend動畫丟失。
那么應該如何保留所有動畫呢?

幾種思路,一種是找到能導出導入的方法;第二種是平面動畫改成在unity實現,兩個動畫結合起來;第三種是換個平臺重新做動畫,比如catia,但是如何導出導入尚不清楚;第四種是錄屏,然后單擊事件后播放視頻。(2021/2/9發現問題)

目前的解決方式

(2021/2/28找到了解決方法)
網上下載了MegaFiers資源包,導入Unity后可對GameObject進行彎曲操作,當然還有各種其他操作,有諸多大佬講解,不在此作為重點。

將FBX文件導入到Unity,依然只有簡單地動畫而會丟失彎曲動畫。所以保留其他動畫的同時用Unity按Unity的方式建立物體和動畫。

可以添加Bend組件,接著就可以根據需求錄制動畫了。

新出現的問題

事情并沒有這么簡單。

兩組動畫的整體性

由于普通動畫和彎曲動畫是分開來做的,所以失去了整體性。

剛導入的結構基本什么組件都沒有。

可以打開這個三角

在里面找到它的動畫,直接拖到物體上。

會發現生成了Animator組件

這和Animation還是有區別的,但是我不是很清楚。
(2021/3/3撰寫)

如何控制動畫的播放

結構動畫的控制

剛導入結構時自帶的Animator,啟動后就開始播放動畫Take 001,只播一次且不受控制。目標是實現可控制的動畫播放。

嘗試了一些方法后找到一個暫時可行的。
建立一個空狀態New State,將New State與Take 001連接如圖,設置成Bool:run切換。再使用代碼控制。更詳細的教程

using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// /// </summary> public class Drawtest : MonoBehaviour {private Animator animator;private void Start(){animator = GetComponent<Animator>();}private void OnGUI(){if(GUILayout.Button("開始")){animator.SetBool("run", true);}if (GUILayout.Button("停止")){animator.SetBool("run", false);}} }

效果如下

平面的彎曲動畫

可以采取類似的方式控制,即用Animator控制。
所以將之前做的Animation的Legacy取消勾選,將平面的Animation組件刪除,添加Animator組件,將之前的Skin動畫添加到Animator中,其余操作類似。

也就是說用同一組代碼可以分別實現對兩者的控制。

如何同時控制

可見,如果都顯示的話使用按鈕不能實現兩組動畫的控制

原因是按鈕疊加了。結構的開始停止兩個按鈕與平面的兩個按鈕重合了,也就是運行后分別生成了兩組、四個按鈕。

如何實現一個按鈕同時控制兩組動畫

因為兩個腳本分別控制的會生成兩組按鈕,為了使用一組按鈕實現對兩個動畫的控制,需要整合到一個腳本中。

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("開始")){animator.SetBool("run", true);childanimator.SetBool("run", true);}if (GUILayout.Button("停止")){animator.SetBool("run", false);childanimator.SetBool("run", false);}} }

(2021/3/5撰寫)

總結

以上是生活随笔為你收集整理的3dsMax制作弯曲动画导入Unity后动画丢失的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。