2015-03-10 18:07:42 book_longssl 阅读数 2118
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12824 人正在学习 去看看 宋晓波



一、3DMAX 五种光源
1、Ommi Light 泛光灯:可以从一点向四周均匀照射的点光源。
2、Target Spotlight 目标聚光灯:一种投射光束,影响光束内被照射的物体,可以投影
阴影,照射范围可以指定。
3、Free Spotlight 自由聚光灯:没有投射目标的聚光灯,通常用于运动路径上,或与其
阴影,照射范围可以指定。
4、Target Directional Lights 目标方向光:可以发散出平行光束的灯光,通常用于模拟
日光的照射,并且可以指定目标点的运动。

5、Free Directional Lights 自由方向光:发散平行光束,只是没有目标点可以调节。

 

二、产生投影效果
1、用ommi 泛光灯产生投影效果:Gast Shadows 投影选项
2、Target Spotlights 聚光灯:聚光灯投影边缘模糊与清晰是由灯光的品质和照射角度来
决定的,中间明亮区域称为聚光灯,外围与边缘的过渡区域称为衰减区。光线的强弱可以明显地表现
在聚光区和衰减区上,聚光区和衰减区大小一样,将产生尖锐的光束边缘。
(1)用Target Spotlights 聚光灯产生投影图像:Projector MAP 映射贴图中None
钮,将Hotspot 参数调整,Cast Shadows 勾选,以打开阴影设定,产生出投射的阴影。在Shadow
Parameters 项目面板中,从Shadow MAP 下拉菜单中选择Ray Traced Shadows 改为光线跟踪方式。Size
参数控制阴影贴图的解析度,依据衰减区的直径大小将相应调整该值。Smp Range 采样范围:决定绕
着阴影的边缘有多少像素被取样,基本上取样的像素越小,阴影的边缘越锐利。
(2)方形聚光灯:Spotlight Parameters 项目中点取Rectangle 方形,调节ASP
参数(长宽比例)为1.8。Overshoot:它能像泛光一样照亮周围的整个场景,而且在投影范围内仍产
生阴影投射。(On 关闭,视图中它的照明影响随之消失)
(3)排除物体受光影响:Exclude:将物体排除在指定聚光灯影响之外。
(4)灯光的开关与隐藏
装 订 线
(5)灯光的衰减设定:灯光有一种亮度衰减特性,它会根据与灯光的距离,慢慢
减弱光线的亮度。Attenuation Parameters 衰减参数,灯光将从黄色范围线起开始衰减,直到褐色边
界线衰减完全,褐色边界外将不再有光线。
(6)负光效果:Multiplier 可增加光线的密度和强度。预设值为1,如果大于1
会造成曝光过度的效果。小于0 时,它会产生一种吸收光的负光效果,利用它来减弱光线过强的区域。
这是现实生活在中不存在灯光。
(7)透明阴影效果:从透明物体投射出透明的阴影。

(8)带图案的透明阴影:点取材质编辑器中Extended Parameters 扩展参数项目内Filter 蓝色钮右侧的小方钮。





2015-01-31 08:14:24 book_longssl 阅读数 7129
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12824 人正在学习 去看看 宋晓波



一、平台简介  
是由 Technologies开发的一个让轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Windows Phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。




  据不完全统计,目前国内有80%的Android、Iphone手机游戏使用Unity3D进行开发,比如著名的手机游戏《神庙逃亡》就是使用Unity3D开发的,也有《纵横时空》、《将魂三国》、《争锋online》、《萌战记》、《绝代双骄》、《蒸汽之城》、《星际陆战队》、《新仙剑奇侠传Online》、《武士复仇2》、《UDog》等上百款网页游戏都是使用Unity3d开发。



  当然,不仅只限于游戏行业,在虚拟现实、工程模拟、3D设计等应用方面也有着广泛的应用,国内使用Unity3D进行虚拟仿真教学平台、房地产3维展示等项目开发的公司非常多,比如绿地地产、保利地产、中海地产、招商地产等大型的房地产公司的三维数字楼盘展示系统很多都是使用Unity3D进行开发。比如《Miya家装》、《飞思翼家装设计》、《状元府楼盘展示》等等。

  赤果果的数据->国内53.1%的人使用进行游戏开发,有80%的手机游戏使用Unity3D开发,跨多平台(IOS、Android、Windows 
Phone、Windows、Flash、XBOX360、PS3、Wii等)游戏引擎,可以开发2D、2.5D、3D游戏。appstore手机上有1500+款用Unity3D开发的游戏,而Unity3D语言就有C#(还有JavaScript,但不是原生的JavaScript)。

  因此,对于我们.NET程序员,如果说Mono让我们进入了跨平台服务器的Web开发时代,则让我们赶上了移动手游开发的浪潮,不至于掉队甚至错过这波浪潮。我又想起园子里的一位大牛—张善友先生写的一篇博文的标题:现在是C#程序员最好的时代。是啊,感谢开源社区的大牛们,我们拥抱着Mono,还迎来了



二、 IDE简介
  提供了免费的下载,目前最新版本是4.3.4f3,安装包大概1个G左右。目前提供了收费的专业版和免费的版本以及30天的试用版,一般我们学习者使用免费版足矣。当然,在大天朝各种破解补丁、注册机是可以找到的,不过涉及到版权问题这里不进行讨论,请自行百度或Google搜索。下载完成后,即可安装,安装步凑就是各种下一步(Next),中途会提示你是否需要安装几个组件:Examples、Web Player以及Mono Developer,一般都全选上,当然也可以不选。Mono Developer是个好东西(但是智能性上赶不上强大的VS),推荐装上。


  安装完成并且注册(或者破解)之后,你就可以进入以下所示的界面了。恭喜你,你已经进入的学习征途,当然,还仅仅是第一步。这里需要提示一下:在新建项目的时候,一定要放在非中文命名的路径中!另外,每次在创建新项目的时候,Unity3D都会自己重启一下,这是正常现象哈,不要以为你的安装没成功。


三、第一个程序-Hello Cube!
  (1)在模型对象区域中的Hierarchy中Create一个Cube立方体,在Inspector中修改它的Position XYZ均设置为0;

  (2)场景默认是木有光照源的,因此需要在Hierarchy中Create一个Directional light(平行光);


  (3)修改Main Camera(摄像机看到的就是屏幕看到的)的Position为(0,1,-5),这样看起来清楚一点;

  (4)在项目资源管理器中Create一个C# Script,命名为CubeControl。创建完成之后,双击该脚本文件,自动进入MonoDeveloper(默认是MonoDeveloper,当然我们也可以使用Visual Studio作为默认编辑器)。 




  (5)在MonoDeveloper中,写入以下代码。这个代码主要是判断用户的按键操作,如果是上、下、左、右操作,则对指定的对象进行指定方向的翻看。(主要写在Update方法中,程序的每一帧都会调用Update方法,1秒默认30帧
using UnityEngine;
using System.Collections;


public class CubeControl : MonoBehaviour {


    // Use this for initialization
    // Unity3D中常用的几种系统自调用的重要方法
    // 首先,我们有必要说明一下他们的执行顺序:
    // Awake--Start--Update--Fixedupdate--Lateupdate--OnGUI--Reset--onDisable--onDestory
    // Start仅在Update函数第一次被调用前调用
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
        //按键盘上的上下左右键可以翻看模型的各个面[模型旋转]
        // 上
        if(Input.GetKey(KeyCode.UpArrow))
        {
            transform.Rotate(Vector3.right*Time.deltaTime*10);
        }
        // 下
        if(Input.GetKey(KeyCode.DownArrow))
        {
            transform.Rotate(Vector3.left*Time.deltaTime*10);
        }
        // 左
        if(Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Rotate(Vector3.up*Time.deltaTime*10);
        }
        // 右
        if(Input.GetKey(KeyCode.RightArrow))
        {
            transform.Rotate(Vector3.down*Time.deltaTime*10);
        }
    }


(6)将保存后的CubeControl通过鼠标拖动到模型对象区Hierarchy中的Cube上进行脚本绑定。绑定脚本和对象之后,在Cube的属性中会看到下图所示。*PS:脚本需要对应到一个具体的游戏对象才有意义!


(7)现在可以预览一下我们的第一个程序了,点击如下图所示的播放按钮,即可进入模拟器看到效果。这时,我们通过按下键盘中的上、下、左、右键,Cube立方体会随着我们的按键翻转。怎样?麻雀虽小,但是五脏俱全吧,我们的第一个Unity3D程序—Hello Cube就完成了。




  (8)接下来,如果按照正式项目的步凑的话就轮到发布程序了。这里我们可以体验一下Unity3D强大的跨平台能力,我们这个Demo可以发布为各种主流类型操作系统兼容的应用程序。通过点击File-Build Settings,即可进入如下图所示的发布设置窗口界面。查看Platform列表,里边囊括了几乎目前所有的操作平台,也就是说我们可以实现一次开发,多平台运行,爽哉!




  (9)这里我们做个测试,发布一个Windows平台的典型exe程序和一个Web平台的Flash程序来体验一下。(我的笔记本没有安装Android模拟器,更不要说Mac模拟器了,所以,你懂的)


 


  (10)足够细心的你相信已经发现这个Cube立方体的棱角有锯齿,这是因为在默认环境下,抗锯齿这个属性是设为Disabled(禁用)的。因此,我们可以点击Edit→Project Settings→Quality,将Anti Aliasing这个属性选为2x Multi Sampling(可选值为2x Multi Sampling、4x Multi Sampling以及8x Multi Sampling,值越大越平滑,但是会占用更多的系统资源,开发调试阶段一般选择为Disabled,当然,如果你的机器足够好,选择4x或8x也是一个不错的选择)。


四、原谅我是“外貌”协会—酷炫场景导入
  相信大家都玩过很多游戏,对于游戏中那些宏大逼真的游戏场景应该是历历在目。所以,对于我们这种对于游戏场景外貌要求比较高的“玩家”(不过,我很少玩网络游戏,目前一直在玩的只有Pro Evolution Soccer实况足球),上面那个一点场景都木有的游戏对我们来说没有一点吸引力!因此,对于外貌协会的挑剔客观,Unity3D支持3Ds Max的FBX模型文件直接导入,为我们的游戏“整容”,一秒变白富美!

(1)从网上下载一个FBX模型文件;(这个网上很多,请自行百度或Google。我这里使用的是一个希腊圣殿的场景FBX文件,下载地址见本文底部。)另外,这里需要提醒一下:如果下载下来的FBX文件以中文命名,请将其改为英文命名,并且最好不要有空格。例如,我这里将其原文件名“希腊圣殿”改为TempleScene。
  
(2)将下载的FBX模型文件拖动到Unity3D中的资源管理器区域中,完成后在资源管理器中会出现该模型文件图标;




(3)将上图中带有播放按钮的TempleScene.FBX文件拖动到Scene(游戏场景视图)中,于是一秒变为希腊圣殿的场景!




(4)这时我们稍微调整一下Main Camera和Cube的Position就可以浏览一下在圣殿场景下的Hello Cube程序了。




  (5)但是我们发现,虽然立方体可以随着我们的键盘方向操作翻转,但是场景一直停在一个固定的角度。于是乎,我们想让场景也随着立方体的翻转而转动,我们该怎么来做呢?这就涉及到我们刚刚所写的CubeControl脚本了,在Unity3D中脚本是需要和对象绑定才能正确运行的。因此,我们只需要把CubeControl和刚刚导入的这个圣殿的场景对象绑定一下即可。所以,这里从资源管理器区域中把CubeControl拖动到TempleScene处就OK了。最后,可以通过查看TempleScene的属性观察是否绑定上了脚本,如下图所示。




  (6)最后,通过点击播放按钮在模拟视图中可以查看。这下,只要我们按下键盘上的方向键,场景和立方体会一起转动,爽吧!




PS:一般游戏公司里边会有这么几类角色:主程(主程序员)、主美(主美工师)以及策划、测试和客服。There is no doubt that 我们的目标是主程,精通一门开发语言,熟悉游戏脚本与服务端开发,对什么HTTP协议、Socket通讯等原理都懂一些,还了解一些常用的架构和设计模式,能够熟练操作SQL语言与数据库交互。但是,我们也不是神,不能啥都学啥都会,游戏场景设计这块是主美的饭碗,所以我们只需要将美工设计好的场景模型加入游戏中,我们为游戏对象写脚本,写交互代码让游戏真正动起来即可!
五、小结
Unity3D是一个强大的游戏引擎平台,我们可以很方便地在其上编写一些简单的游戏程序。通过和美工的配合,我们完全可以开发出很酷炫的游戏。而且更为重要的是:

  1.Unity3D可以基于Mono实现跨平台,可以一次开发,多处运行;

  2.Unity3D可以使用C#编写脚本,众多的.NET程序员们可以快速学习上手,赶上手机游戏的浪潮尾巴;

2015-02-11 09:50:00 book_longssl 阅读数 861
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12824 人正在学习 去看看 宋晓波

Scut提供 Sdk包,方便开发人员快速与Scut游戏服务器对接; 先看示例如下:

启动项目 

打开Scutc.svnSDKUnity3dAssets目录下的TestScene.unity项目文件,选中Main Camera,将TestGUI.cs文件拖动到Inspector窗口的Script,如图: 
 

 


 


点击运行,如下: 
 
  

目录层次说明 
1)       Net层:封装Http与Socket请求操作,以及网络协议的数据解析和请求参数的打包,其中NetWriter里有SetMd5Key为设置网络协议请求参数的Key,用于跟服务校验请求参数的有效性 
2)       Reflect层:提供高性能的反射功能 
3)       Security层:加密操作 
4)       Serialization层:封装对象的序列化操作 
5)       Game层:游戏业务逻辑层代码实现功能,此目录下的Action和Behaviour目录,根据业务自己实现代码 
6)       CustomHeadFormater类:自定的结构消息头解析器 
7)       TestGUI.cs为测试脚本
  

TestGUI代码


using UnityEngine;

public class TestGUI : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        //todo 启用自定的结构
        Net.Instance.HeadFormater = new CustomHeadFormater();
    }

    // Update is called once per frame
    void Update()
    {

    }

    void OnGUI()
    {

        // Now create any Controls you like, and they will be displayed with the custom Skin
        if (GUILayout.Button("Click Http"))
        {
            NetWriter.SetUrl("[color=blue !important]http://ph.scutgame.com/service.aspx");
            Net.Instance.Send((int)ActionType.RankSelect, null);
        }

        // Any Controls created here will use the default Skin and not the custom Skin
        if (GUILayout.Button("Click Socket"))
        {
            NetWriter.SetUrl("ph.scutgame.com:9001");
            Net.Instance.Send((int)ActionType.RankSelect, null);
        }
    }
}



Send方法接口会根据url是否带http字段来判断是否是用http还是socket, 
Action和Behaviour目录下实现自己的业务代码

自定头部解析类CustomHeadFormater代码


using System;
using GameRanking.Pack;
using ZyGames.Framework.Common.Serialization;

/// <summary>
/// 定制的头部结构解析
/// </summary>
public class CustomHeadFormater : IHeadFormater
{
    public bool TryParse(byte[] data, out PackageHead head, out byte[] bodyBytes)
    {
        bodyBytes = null;
        head = null;
        int pos = 0;
        if (data == null || data.Length == 0)
        {
            return false;
        }
        int headSize = GetInt(data, ref pos);
        byte[] headBytes = new byte[headSize];
        Buffer.BlockCopy(data, pos, headBytes, 0, headBytes.Length);
        pos += headSize;
        ResponsePack resPack = ProtoBufUtils.Deserialize<ResponsePack>(headBytes);

        head = new PackageHead();
        head.StatusCode = resPack.ErrorCode;
        head.MsgId = resPack.MsgId;
        head.Description = resPack.ErrorInfo;
        head.ActionId = resPack.ActionId;
        head.StrTime = resPack.St;

        int bodyLen = data.Length - pos;
        if (bodyLen > 0)
        {
            bodyBytes = new byte[bodyLen];
            Buffer.BlockCopy(data, pos, bodyBytes, 0, bodyLen);
        }
        else
        {
            bodyBytes = new byte[0];
        }

        //UnityEngine.Debug.Log(string.Format("ActionId:{0}, ErrorCode:{1}, len:{2}", resPack.ActionId, resPack.ErrorCode, bodyBytes.Length));

        return true;
    }

    private int GetInt(byte[] data, ref int pos)
    {
        int val = BitConverter.ToInt32(data, pos);
        pos += sizeof(int);
        return val;
    }
}




BaseAction代码


/// <summary>
/// 自定结构Action代理基类
/// </summary>
public abstract class BaseAction : GameAction
{
    protected BaseAction(int actionId)
        : base(actionId)
    {
    }

    protected override void SetActionHead(NetWriter writer)
    {
        MessagePack headPack = new MessagePack()
        {
            MsgId = Head.MsgId,
            ActionId = ActionId,
            SessionId = Head.SessionId,
            UserId = Head.UserId
        };
        byte[] data = ProtoBufUtils.Serialize(headPack);
        writer.SetHeadBuffer(data);
        writer.SetBodyData(null);
    }
}


Action1001代码


using System;
using System.Collections.Generic;
using GameRanking.Pack;
using ZyGames.Framework.Common.Serialization;

public class Action1001 : BaseAction
{
    private Response1001Pack _responseData;

    public Action1001()
        : base((int)ActionType.RankSelect)
    {
    }

    protected override void SendParameter(NetWriter writer, object userData)
    {
    //自定对象参数格式
    Request1001Pack requestPack = new Request1001Pack()
    {
        PageIndex = 1,
        PageSize = 10
    };
    byte[] data = ProtoBufUtils.Serialize(requestPack);
    writer.SetBodyData(data);
    }

    protected override void DecodePackage(NetReader reader)
    {
        if (reader.StatusCode == 0)
        {
        //自定对象格式解包
        _responseData = ProtoBufUtils.Deserialize<Response1001Pack>(reader.Buffer);
             
        }
    }

    protected override void Process(object userData)
    {
        if (_responseData != null)
        {
            UnityEngine.Debug.Log(string.Format("ok, count:{0}", _responseData.PageCount));
        }
    }
}





2015-03-04 08:54:49 book_longssl 阅读数 959
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12824 人正在学习 去看看 宋晓波

转一个别人的翻译:
算是从unity3d官方网站上的翻译,如果你没有看到,可以看下,这个也是我自己碰到比较麻烦的事情,经常windows下提交,然后mac下更新下去一堆关联没了,有些可以reimport可以变好,有些要重新关联,麻烦的很,因为我们漏了一些东西没有提交到版本控制中。



    • 在unity3d中建立一个项目,如:InitialUnityProject,你可以加入一些assets的package或者放到以后加也没关系,我一般是刚开始是空的项目,空的场景,然后保存,一些asset可以在用到的时候选择性的添加,不然一堆东西看着也是麻烦的
    • Edit->Project Settings->Editor,选择Enable, 我在4.3.1的时候,安装了默认是disable的,这里要开起来,这样你的asset每个就会有meta 文件生成,大家可以用ultraedit等打开看下里面的东西,注意这个文件最好生成后不要自己去修改和删除,提交到svn即可,这个文件是文本,svn可以merge的
    • 退出unity3d,当然你可以保存你的空场景
    • 删除Library下的所有文件和目录,不过以下的文件要保留,其实也就是一些配置的东西:
      • EditorBuildSettings.asset
      • InputManager.asset
      • ProjectSettings.asset
      • QualitySettings.asset
      • TagManager.asset
      • TimeManager.asset
      • AudioManager.asset
      • DynamicsManager.asset
      • NetworkManager.asset
      • 不过在mac下面比较搞笑的是,它不会自动生成cache目录,他会生成其他的如preview之类的,但cache不会,你如果reimport,则他会报错,说不能从temp复制到cache.搞不清楚他自己为啥不创建,怀疑写程序的人有点想当然了,没判断目录是否存在吧。所以在mac下,自己要创建下cache目录,不然你报错可能不知道怎么回事情。
    • 把项目文件夹Import到svn服务器上,命令行如下:
      svn import -m"Initial project import" InitialUnityProject svn://my.svn.server.com/MyUnityProject
    • 你可以从svn 服务器上check out出来整个项目,任何组内的开发人员都可以
      svn co svn://my.svn.server.com/MyUnityProject
      看看所有用到的Assets下面的文件是否都已经在版本控制下了
    • 建议:可以为Library设立ignore ,如果用命令行的话svn propedit svn:ignore MyUnityProject/Library
      svn 会打开一个文本编辑器,添加所有除了下面文件外的目录和文件到这个文本中
      • EditorBuildSettings.asset
      • InputManager.asset
      • ProjectSettings.asset
      • QualitySettings.asset
      • TagManager.asset
      • TimeManager.asset
      • AudioManager.asset
      • DynamicsManager.asset
      • NetworkManager.asset
    • 当用unity3d打开项目的时候,一些丢失的文件会全部重新建立,如Library中被我们删除了的,如果还是不行,可以用reimport all
    • 最后就可以用svn commit了
      svn ci -m"Finishing project import" MyUnityProject

一些注意点:
(1) Unity3D的二进制资源必须加锁进行版本控制,因为它没办法merge;
(2) Unity3D自己产生的C#工程相关文件,包括VS产生或者Mono产生的,都不需要归入版本控制;

(3) 在新加入项时,Unity3D会产生一个同名的.meta文件,这个文件记录了此项一个唯一的64位的guid,这个文件必须上传,否则会出现各种缺失的异常情况(比如脚本Miss等)

(4) 对于Library文件夹,有以下几个.Asset文件需要进行版本管理:
               TimeManager
               TagManager
               QualitySettings
               ProjectSettings
               NetworkManager
               InputManager
               EditorBuildSettings
               DynamicsManager
               AudioManager
即便如此,在使用Editor进行开发时,由于需要经常改动场景的.unity 文件,而这个是二进制的,所以需要得锁且不能Merge。感觉并行开发的难度还是比较大的,Unity3D还是比较适合个人开发者和较小团队开发,对于大型团队开发,无论是从版本管理还是代码结构上,都觉得不太方便和自然。



2015-03-09 19:25:14 book_longssl 阅读数 1212
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12824 人正在学习 去看看 宋晓波



Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生。Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期。使用从Unity资源商店找到的动画资源,或把您自己的动画文件(动作捕捉或关键帧)导入编辑器,启动或实现整个项目,并将它们转换为您自己的可重定向的动画资源。

轻松地构建和编辑复杂的状态机和混合树。Unity编辑器提供强大的工具,用于分割、创建循环和从导入的动画文件中提取轨迹。然后可以把这些动画短片用作一个多层混合树的叶子,或者作为分层状态机中的一种状态。混合树让您只使用几个动画剪辑就能创建各种各样的运动。在混合树编辑器中,您可以定义混合参数并在3D视图中预览混合动画。

可以使用自动创建的IK(反向动力学)骨架.

简单地说,由父骨骼的方位和子骨骼的相对变换得到子骨骼的方位,称为正向动力学(Forward Kinematics,FK);而反向动力学(Inverse kinematics,IK)则是先确定子骨骼的方位,反向推导出其继承链上n级父骨骼方位 从而确定整条骨骼链的方法。

MecAnim 角色动画系统中,我们需要通过以下步骤实现Unity中的角色动画:

1.导入角色动画

2.创建角色动画Avatar

3.添加角色动画控制器、设置状态机、设置混合树。

4.实现编码等控制角色动画



  




2017年全新Unity3d教程新手教程分享

博文 来自: sinat_35761779
没有更多推荐了,返回首页