Unity 3D 导入三维模型||Unity 3D 动画系统简介(Mecanim)

Posted 爱编程的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 3D 导入三维模型||Unity 3D 动画系统简介(Mecanim)相关的知识,希望对你有一定的参考价值。

将三维模型导入 Unity 3D 是游戏开发的第一步。

下面以 3ds Max 为例,演示从三维建模软件中将模型导入 Unity 3D 的过程,具体步骤如下。

  1. 在 3ds Max 中创建房子模型。

  1. 执行 Export → Export 命令导出 fbx 模型

  1. 设置保存路径以及文件名。

  1. 选择默认设置选项,单击 OK 按钮。

  1. 再次单击 OK 按钮,即可生成 fbx 文件

  1. 创建一个 Unity 3D 新项目。

  1. 将生成的 fbx 文件导入 Project 视图。

  1. 将模型拖入 Scene 视图中。

  1. 创建地面并为地面贴上大理石材质。

  1. 执行 GameObject → 3D Object → Cube 命令创建一个立方体,将其命名为 door以创建一个开关门。

Unity 3D 动画系统(Mecanim) 

Mecanim 动画系统是 Unity 公司推出的全新动画系统,具有重定向、可融合等诸多新特性,可以帮助程序设计人员通过和美工人员的配合快速设计出角色动画,其主界面如下图所示。

Unity 公司计划采用 Mecanim 动画系统逐步替换直至完全取代旧版动画系统。

Mecanim 动画系统提供了 5 个主要功能:

  • 通过不同的逻辑连接方式控制不同的身体部位运动的能力。

  • 将动画之间的复杂交互作用可视化地表现出来,是一个可视化的编程工具。

  • 针对人形角色的简单工作流以及动画的创建能力进行制作。

  • 具有能把动画从一个角色模型直接应用到另一个角色模型上的 Retargeting(动画重定向)功能

  • 具有针对 Animation Clips 动画片段的简单工作流,针对动画片段以及它们之间的过渡和交互过程的预览能力,从而使设计师在编写游戏逻辑代码前就可以预览动画效果,可以使设计师能更快、更独立地完成工作。

三维软件中制作动画导入Unity中使用

一、在Maya中制作动画

1.在Maya中新建一个立方体

2.将立方体的大小改成20*20*20

3.在30帧的位置,将立方体大小改成100*100*100,并设置为关键帧

4.在100帧的位置,将立方体旋转360度,并设置为关键帧

 

二、导出模型

1.常用的3维模型交换格式有 obj、和fbx 两种,obj 导出的时候是不带动画信息的,导出后动画会丢失。所以我们选择导出fbx

2.选择制作好动画的立方体模型,点击导出 “导出当前选择...” 按钮

3.选择文件格式,并为模型命名(这里我命名为“model.fbx”)

4.Fbx导出设置如下

5.Fbx选项设置完成后,点击 “导出当前选择” 按钮

6.等待导出模型完成后,在对应的位置会有一个后缀名为 .fbx 的文件

 

三、导入模型到Unity

1.在 Aseet 面板中右键,点击 Import New Aeet... 按钮

2.选择我们Maya导出的模型位置

 

四、制作动画片段

1.选中我们导入的“model.fbx”模型,点击右上角 Animation 按钮

2.将默认的“Take001”命名为“Idle”,并设置开始时间为1帧,结束时间为1帧

3.点击“+”号按钮,新建2个动画片段,并设置其开始帧和结束结束帧(效果如下)

 

五、制作动画控制器(Animator Controller)

1.在Asset 面板右键,点击Create-> Animator Controller 按钮,将创建出来的动画控制命名为“ModelAnimatorCtr”

2.双击 ModelAnimatorCtr ,打开动画控制器编辑面板

3.选择 model.fbx 模型,将我们前面制作好的动画片段拖动到动画控制器编辑面板中

4.制作3个触发事件并为其分别命名。(效果如下)

5.选择 AnyState 右键,点击 Make Transition 按钮

6.链接需要触发的动作

7.点击中间链接线,为其设置触发事件

8.按照上面的步骤,将Idle、Zoom、Rotate 触发事件设置一下(效果如下)

9.新建一个新场景,并将model.fbx 模型添加到,新创建出来的场景中

 

六、用代码控制动画播放

1.新建一个脚本,命名为“TestAnimation.cs”。(代码如下)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>测试控制动画播放</summary>
public class TestAnimation : MonoBehaviour
{
    private Animator m_Animator;

    private void Awake()
    {
        m_Animator = gameObject.GetComponent<Animator>();
    }

    private void Update()
    {
        if(Input.GetKeyDown(KeyCode.Alpha1))
        {
            Debug.Log("播放Idle动作!");
            m_Animator.SetTrigger("Idle");
        }

        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            Debug.Log("播放Zoom动作!");
            m_Animator.SetTrigger("Zoom");
        }

        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            Debug.Log("播放Rotate动作!");
            m_Animator.SetTrigger("Rotate");
        }
    }

}

2.在model 对象上添加 Animator 组件,并设置其 Controller 属性

3.将 TestAnimation.cs 脚本,挂载到 model 对象上,大功告成!

 

Unity QQ交流群:299412191 欢迎对Unity感兴趣的同学加入.

以上是关于Unity 3D 导入三维模型||Unity 3D 动画系统简介(Mecanim)的主要内容,如果未能解决你的问题,请参考以下文章

Unity3.0 第3章 创建和导入3D模型

详解Unity中的导入3D模型

Unity3.1 利用内置的3D对象创建三维模型

unity3d怎么导入3d模型

unity 3d中怎么导入模型

如何用PS制作Unity3D场景资源