Unity 3D 人形角色动画(Avatar)||Unity 3D 导航系统||Unity 3D 障碍物

Unity 3D 人形角色动画(Avatar)

Mecanim 动画系统适合人形角色动画的制作,人形骨架是在游戏中普遍采用的一种骨架结构。。

由于人形骨架在骨骼结构上的相似性,用户可以将动画效果从一个人形骨架映射到另一个人形骨架,从而实现动画重定向功能。

除了极少数情况之外,人物模型均具有相同的基本结构,即头部、躯干、四肢等。

Mecanim 动画系统正是利用这一点来简化骨架绑定和动画控制过程。

创建模型动画的一个基本步骤就是建立一个从 Mecanim 动画系统的简化人形骨架到用户实际提供的骨架的映射,这种映射关系称为 Avatar

创建Avatar

在导入一个角色动画模型之后,可以在 Import Settings 面板中的 Rig 选项下指定角色动画模型的动画类型,包括 LegacyGeneric 以及 Humanoid 3 种模式。

  1. Legacy 与 Generic

Unity 3D 的 Mecanim 动画系统为非人形动画提供了两个选项:Legacy(旧版动画类型)和 Generic(一般动画类型)

旧版动画使用 Unity 4.0 版本文前推出的动画系统。一般动画仍可由 Mecanim 系统导入,但无法使用人形动画的专有功能。

非人形动画的使用方法是:

  • 在 Assets 文件夹中选中模型文件。

  • 在 Inspector 视图中的 Import Settings 属性面板中选择 Rig 标签页

  • 单击 Animation Type 选项右侧的列表框,选择 Generic 或 Legacy 动画类型即可。

  1. Humanoid

要使用 Humanoid(人形动画),单击 Animation Type 右侧的下拉列表,选择 Humanoid,然后单击 Apply 按钮Mecanim 动画系统会自动将用户所提供的骨架结构与系统内部自带的简易骨架进行匹配。

如果匹配成功,Avatar Definition 下的 Configure 复选框会被选中,同时在 Assets 文件夹中,一个 Avatar 子资源会被添加到模型资源中。

配置Avatar

Unity 3D 中的 Avatar 是 Mecanim 动画系统中极为重要的模块,正确地设置 Avatar 非常重要。

不管 Avatar 的自动创建过程是否成功,用户都需要到 Configure Avatar 界面中确认 Avatar 的有效性,即确认用户提供的骨骼结构与 Mecanim 预定义的骨骼结构已经正确地匹配起来,并已经处于 T 形姿态

单击 Configure 按钮后,编辑器会要求保存当前场景,因为在 Configure 模式下,可以看到 Scene 视图(而不是 Game 视图)中显示出当前选中模型的骨骼、肌肉、动画信息以及相关参数。

在这个视图中,实线圆圈表示的是 Avatar 必须匹配的,而虚线圆圈表示的是可选匹配的。

人形动画重定向

在 Mecanim 动画系统中,人形动画的重定向功能是非常强大的,因为这意味着用户只要通过很简单的操作就可以将一组动画应用到各种各样的人形角色上。

由于动画重定向功能只能应用到人形模型上,所以为了保证应用后的动画效果,必须正确地配置Avatar

Unity 3D 导航系统 

过去,游戏开发者必须自己打造寻路系统,特别是在基于节点的寻路系统中,必须手动地在 AI 使用的点之间进行导航,因此基于节点系统的寻路非常烦琐。

Unity 3D 不仅具有导航功能,还使用了导航网格(navigation meshes),这比手动放置节点更有效率而且更流畅。

更重要的是,还可以一键重新计算整个导航网格,彻底摆脱了手动修改导航节点的复杂方法。

1) 设置 NavMesh

NavMesh 的设置方法很简单,在 Hierarchy 视图中选中场景中除了目标和主角以外的游戏对象,在 Inspector 视图中单击 Static 下拉列表,在其中勾选 Navigation Static 即可

2) 烘焙

执行菜单 Window→Navation 命令,打开导航窗口,单击右下角的 Bake(烘焙)按钮即可,烘焙后的场景接下来详细看看 Navigation 面板,它有 Object、Bake、Areas 这 3 个标签页。

其中,Object 标签页如下图所示,该标签页可以设置游戏对象的参数,如下表所示。当选取游戏对象后,可以在此标签页中设置导航相关参数。

参 数功 能
Navigation Static勾选后表示该对象参与导航网格的烘焙
Generate OffMeshLinks勾选后可在导航网格中跳跃(Jump)和下落(Drop)
Navigation Area导航区域

Bake 标签页如下图所示,是 Navigation 面板最重要的标签页,在该标签页下可以设置导航代理相关参数以及烘焙相关参数,参数说明如下表所示。

参 数功 能
Agent Radius设置具有代表性的物体半径,半径越小,生成的网格面积越大
Agent Height设置具有代表性的物体的高度
Max Slope设置斜坡的坡度
Step Height设置台阶高度
Drop Height设置允许最大的下落距离
Jump Distance设置允许最大的跳跃距离
Manual Voxel Size设置是否手动调整烘焙尺寸
Voxel Size设置烘焙的单元尺寸,控制烘焙的精度
Min Region Area设置最小区域
Height Mesh设置当地形有落差时是否生成精确而不是近似的烘焙效果

3) 设置导航代理

导航代理(Navigation Agent)可以理解为去寻路的主体。

在导航网格生成之后,给游戏对象添加了一个 Nav Mesh Agent 组件,如下图所示。

Nav Mesh Agent 面板中各导航代理参数含义如下表所示。

属性分区参 数功 能
Agent SizeRadius设置导航代理的半径
Height设置导航代理的高度
Base Offset设置圆柱体相对于本地坐标的偏移
SteeringSpeed设置最大移动速度
Angular Speed设置最大角速度
Acceleration设置最大加速度
Stopping Distance设置离目标距离还有多远时停止
Auto Braking激活时,到达目标位置前将减速
Obstacle AvoidanceQuality设置躲避障碍物的质量,如果设置为0则不躲避其他导航 代理
Priority设置自身的导航优先级,范围是0〜99,值越小,优先级 越大
Path FindingAuto Traverse Off Mesh Link设置是否采用默认方式经过链接路径
Auto Repath设置当现有的路径变为无效时是否尝试获取一个新的路径
Area Mask设置此导航代理可以行走哪些区域类型

实践案例:自动寻路

案例构思

使用 Unity 3D 开发游戏,自动寻路可以有很多种实现方式。A 星寻路是一种比较传统的人工智能算法,在游戏开发中比较常用。

另外,Unity 3D 官方内置的寻路插件 Navmesh 也可以实现自动寻路功能。

本案例旨在通过一个简单的三维场景漫游实现 Navmesh 自动寻路插件的使用。

案例设计

本案例在 Unity 3D 内创建一个简单的三维场景,场景内有各种障碍,通过 Navmesh 插件可以自动寻找到目标位置。

案例实施

步骤 1):新建三维场景,将其命名为 Navigation。其中,胶囊体作为动态移动的对象,球体作为导航的目标

步骤 2):选中场景中所有除了 sphere、cylinder 摄像机以及直线光以外的所有物体,单击 Inspector 面板中右上角的 Navigation Static,使这些物体成为静态物体,并设置成 Navigation Static 类型,如下图所示。 

步骤 3):执行菜单栏中的 Window→Navigation 命令,Navigation 面板

步骤 4):单击该面板右下角的 Bake 按钮,即可生成导航网格

步骤 5):下面就可以让一个胶囊体根据一个导航网格运动到目标 Sphere 位置。执行 Component→Navigation→Nav Mesh Agent 为该胶囊体挂载一个 Nav Mesh Agent

步骤 6):最后写一个脚本就可以实现自动寻路了。创建 C# 脚本,将其命名为 DemoNavigation,脚本如下: 纯文本复制

 
  1. using UnityEngine;
  2. using System.Collections;
  3. public class DemoNavigation:MonoBehaviour{
  4. public Transform target;
  5. void Start(){
  6. if(target!=null){
  7. this.gameObject.GetComponent<NavMeshAgent>().destination=target.position;
  8. }
  9. }
  10. }

步骤 7):脚本新建完成后挂载到胶囊体上,然后将 Sphere 赋予胶囊体的 Navigation 脚本,运行场景,如下图所示,胶囊体会运动到 Sphere 的位置。

Unity 3D 障碍物

Nav Mesh Obstacle) 一般来说,不可攀爬的 Nav Mesh 都被视为障碍物(Nav Mesh Obstacle),也可以直接将物体设为障碍物,即可以为游戏对象添加 Nav Mesh Obstacle 组件。

有别于普通的 Nav Mesh,Nav Mesh Obstacle 是一种不需要烘焙的障碍物,形状可以选择为立方体或胶囊体。

实践案例:障碍物绕行

案例构思

在自动寻路过程中,往往会遇到障碍物,在寻路过程中遇到障碍物要怎样解决呢?

Unity 官方内置的寻路插件 Navmesh 完美地解决了这个问题。

本案例通过一个简单的有障碍的场景,实现自动寻路中障碍物绕行功能。

案例设计

本案例在 Unity 3D 内创建一个有障碍的场景,场景内有一个 Cube 用来充当障碍物,通过 Navmesh 插件实现主角遇到障碍物时自动绕行效果。 案例实施 步骤 1):执行 File→Save Scene as 命令,将 Navigation 场景另存为 Obstacle 场景,如下图所示。

 步骤 2):执行 GameObject→3D Object→Cube 命令新建一个障碍物,将其放置在主角的前方,并赋予黑色材质,如下图所示。

步骤 3):执行 Component→Navigation→Nav Mesh Obstacle 命令添加 Nav Mesh Obstacle 组件,如下图所示。

步骤 4):单击 Play 按钮进行测试,可以发现主角会绕过黑色立方体并到达终点,效果如下图所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9920.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D之动画(Animation)的制作

实例说明&#xff1a; 忍者跑酷的player动画制作。。。这些都是用Sprite做的动画。。。 在prioject面板里的一组sprite里面点击&#xff0c;之后看属性面板的Sprite Editor对这组Sprite进行编辑。。。 下面先编辑一个idle状态的动画&#xff1a; 首先选择第一个Sprite然后拖到H…

Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)

Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放 雨松MOMO原创文章如转载&#xff0c;请注明&#xff1a;转载至我的独立域名博客雨松MOMO程序研究院&#xff0c;原文地址:http://www.xuanyusong.com/archives/532 3D 世界中自定义模型的使用恐怕是重中之重&#xff0c;因…

Unity - 官方2D动画(2D Animation Package)文档

本文由 祝你万事顺利 出品&#xff0c;转载请注明出处。 官方文档&#xff08;英文&#xff09;&#xff0c;2D Animation 在2019.3已经是正式发布的包了。此资源包是将Assets Store 中的Anima2D进行了整合&#xff0c;在老版本中可以使用Anima2D。 简介 2D Animation packag…

Unity 3D 动画系统(Mecanim)|| Unity 3D 人形角色动画(Avatar)

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

Unity3D教程:fbx动画

Unity3D教程fbx动画。在官方提供的例子&#xff0c;可以找到主角的fbx文件。将此文件放到自己的Assets文件夹下&#xff0c;Unity3D中的Project面板会将其刷新出来&#xff0c;但是如下图所示&#xff0c;动作信息是没有经过分割的。一定要注意&#xff0c;不要选择Hierarchy面…

Unity3D类人动画humanoid animations

动画和Mecanim术语表 A Glossary of Animation and Mecanim terms Date:2013-05-24 11:01 Icon 图标 Term 术语 Description 描述Type of Concept 概念类型 Usage/Comments 用途/注释Animation Clip related terms 动画剪辑相关术语Animation Clip 动画剪辑Animation data that…

ChatGPT 工具论 我能用它做什么

​ 前言 bing版ChatGPT现在已经可以使用了。试用下来&#xff0c;相较于原版本ChatGPT&#xff0c;更加流畅&#xff0c;数据库也是最新的&#xff0c;在这里梳理下它能为我做什么。 1.搜索代码片段 我目前最想用过的功能就是这个&#xff0c;以前在CSDN上太难找到直接可以用…

给大家分享几个靠写代码赚钱的方法

微信搜 “涛哥聊Python” 点关注 设为 “星标”&#xff0c;每天下午 17:30&#xff0c;带你学Python&#xff01; 作者 mezod&#xff0c; 译者 josephchang10 来自&#xff1a;GithubDaily 如今&#xff0c;通过自己的代码去赚钱变得越来越简单&#xff0c;不过对很多人来说依…

宝塔webhook部署egg,并反向代理通过域名访问

文章目录 一、添加站点二、webhooks自动部署三、设置反向代理&#xff0c;通过域名访问 更多内容可参考我的博客 具体创建egg项目这里就不做过多叙述…请查看官网文档&#xff0c;本篇建立与已有egg仓库&#xff0c;宝塔的基础上。 一、添加站点 进入宝塔面板&#xff0c;点击…

安排,Nginx反向代理视频

来源&#xff1a; 来自网络&#xff0c;如侵权请告知博主删除&#xff0c;感谢????。 仅学习使用&#xff0c;请勿用于其他&#xff5e; 为什么要安排Nginx, Nginx 后端必会技能之一&#xff0c;虽然百度会告诉你怎么配&#xff0c;但是如果你自己学一遍的话&#xff0c;很…

Nginx关于视频播放反向代理

动机 这几天为了服务器上搭建的FileBrowser播放视频浏览了一堆资料,现在基本可以做个总结了. FileBrowser是一个开源的基于Web的文件管理器&#xff0c;它支持在Web浏览器中访问和管理本地和远程服务器上的文件。它提供了一个简单易用的界面来上传&#xff0c;下载&#xff0c;…

Nginx反向代理,让网页可以被别人访问

使用Nginx反向代理 1、下载Nginx   想要使用Nginx反向代理首先进入Nginx官网 http://nginx.org/2、在右侧选择download 3、选择自己操作系统的稳定版本 4、解压压缩包 5、进入html文件夹  把想要代理的网页替换文件夹中的index.html 6、回到nginx解压的主目录打开nginx.…

通过反向代理内网穿透访问视频监控

通过反向代理内网穿透访问视频监控 业务场景反向代理建立反向代理安装docker安装服务端安装客户端使用 穿透rtsp 业务场景 我们在客户的船上安装了监控设备&#xff0c;因为船只要横渡长江&#xff0c;长江南北属于不同的城市辖区&#xff0c;所以船在江中心时肯定会有4G基站变…

手把手教你搭建自己本地的ChatGLM

前言 如果能够本地自己搭建一个ChatGPT的话&#xff0c;训练一个属于自己知识库体系的人工智能AI对话系统&#xff0c;那么能够高效的处理应对所属领域的专业知识&#xff0c;甚至加入职业思维的意识&#xff0c;训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生…

网页在线沟通工具,网页即时聊天工具-ttkefu完全免费电话呼叫流程图

ttkefu的免费网页电话是怎么回事&#xff0c;应该怎么使用呢&#xff1f;都在哪里能加入免费电话 如图&#xff08;1&#xff09;在网站侧边加入免费电话 如图(2)在聊天咨询页面的网页电话 如图(3)点击打开网页电话&#xff0c;输入手机号或电话号。 &#xff08;图1&#xf…

ChatGPT和New Bing作为AI界新宠,两者有何异同

ChatGPT和New Bing是两个不同的实体&#xff0c;它们之间有一些区别也有一些相似之处。我先说说各自的特点&#xff0c;再汇总说说两者的异同点。 ChatGPT的特点&#xff1a; ChatGPT是一个基于神经网络的自然语言处理模型&#xff0c;能够自动生成自然语言响应。ChatGPT的模…

AI正在取代人工?ChatGPT这样说.....

随着ChatGPT的大火&#xff0c;对于AI机器人的讨论热度空前&#xff0c;它表现出的强大功能性&#xff0c;给当前多领域带来了更多发展可能性&#xff0c;但同时也为该模型带来的一系列技术伦理问题&#xff0c;争议也随之而来。 ChatGPT表现出的智慧与强大令人激动&#xff0…

【人工智能】你知道 ChatGPT 有什么新奇的使用方式吗?请来看看 Open AI 内部工程师都怎么使用 ChatGPT 的

现在,大家基本上把能想到的ChatGPT的使用方法都研究遍了——从写作、写代码,到翻译、英语润色,再到角色扮演等等。 说一个高级的,来看看OpenAI内部是如何使用ChatGPT的。 目录 说一个高级的,来

ChatGPT禁令影响A股吗

3月的最后一天&#xff0c;意大利政府数据保护局暂时禁止OpenAI的ChatGPT&#xff0c;并对其展开涉嫌违反隐私规则展开调查&#xff0c;这是风靡全球3个多月的ChatGPT首次遇到挫折。 据瑞银上月发布的一项研究显示&#xff0c;ChatGPT预计在1月份&#xff0c;即推出两个月后&a…

ChatGPT决定要挑战“考研”,你猜它会上岸吗?

2023年考研 Postgraduate Entrance Examination ChatGPT挑战考研 它能成功吗&#xff1f; 写在前面 在众多“考研人”中&#xff0c;有一个不同寻常的参与者——ChatGPT。这个人工智能模型在2022年12月惊艳亮相&#xff0c;成为了众人关注的焦点。虽然ChatGPT没有身份证&…