欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2024/3/7 编程问答 70 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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后动画丢失的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。