Unity换装系统实现
公司的新游戏最近要实现一个换装系统,与开发的程序讨论了一下,发现在unity下实现换装还是比较容易的。这里综合公司的代码和网上的讨论,把实现的思路简单说一下。
先是背景介绍。我们首先明确一些基本术语:
- bone:骨骼动画中人或者物体的形体结构,动画看成是bone连接处关节的运动。
- mesh:可以理解为物体表面,因为3D模型中表面都是由一个个小的网格(mesh)拼接。成
- 蒙皮:将mesh顶点与bone绑定到一起,这样bone运动时,mesh才会跟着动。
- Animator:动画编辑器。unity 5中基于的是最新的Mechanim动画系统,它具有retargeting功能,可以方便实现在多个角色间重用动画。Animator包含Animator Controller和Avatar两个元素,前者定义使用那些动画素材及如何播放,后者是Mechanim系统可识别的骨骼结构。
- SkinnedMeshRenderer:负责蒙皮计算,在Animator每帧指定的bone位置,计算相应的mesh顶点位置,并结合材质进行渲染。它有三个关键元素:bone, material, mesh,分别是对应的骨骼、材质、网格信息。
然后结合上述概念,我们来谈换装的实现。
首先要将人物拆成不同部件,如脑袋、头发、身体,每个部件单独替换。我们先定义一个人物对象,因为它是活动的,所以有相应的Animator和Avatar。在Animator下面挂载三个SkinnedMeshRenderer,分别对应脑袋、头发、身体三个部件,从而实现对三部分分别渲染。这样,在换装时我只需替换相应SkinnedMeshRenderer的material和mesh属性即可。
对上述方案还可以做材质球合并减少draw call。我们在渲染时,可以将三个部件的material、mesh和bone都做合并,再赋给新创建的SkinnedMeshRenderer,这样只用1次draw call。对于人物众多的场景,这样可以大量减少draw call,如果有10个部件,就可以降低到原来的1/10。其中合并material就是合并texture,具体做法是:新建一个material,使用的shader与被合并的material使用的shader相同,其他属性也一致,然后将texture合并到一张大texture,赋给新建的material;合并后的mesh还需重新计算uv。
参考资料:
技巧| Unity中Avatar换装实现
浅谈角色换装功能–Unity简单例子实现
- Unity中的网格与材质球合并
Unity换装系统实现相关推荐
- Unity换装系统(SkinnedMeshRenderer)
[SiKi学院Unity]Unity换装系统[上] [SiKi学院Unity]Unity换装系统[中] [SiKi学院Unity]Unity换装系统[下] 课程资料.zip (71.93MB) uni ...
- 【Unity3d基础】Unity换装系统(1)
引言 最近项目需要开发换装系统,做了一些前期的调研.换装系统主要应用与MMORPG游戏中,除了常规的换衣服,发型,翅膀之类的,现在一些次时代的MMORPG游戏加入了捏脸,改变五官等比较复杂的换装系统. ...
- Unity 换装系统
Github:https://github.com/pinzeweifen/demo/tree/master/Unity/Replacement%20Dress 效果: 测试: using Syste ...
- 【Unity】siki公开Unity相关课程下载目录
一.最新课程 Shader Forge入门 链接: https://pan.baidu.com/s/1n8324ujcUYmeMb40si30RQ 密码:uxuq 强大的UI编辑器 - FairyGU ...
- Unity动画系统经验谈:换装系统与骨骼调节
这里总结一下,自己使用Unity以来的心得,大部分属于随手解决但还有印象或者觉得效果不错. 状态机与状态机设计 角色的状态机以0层作为主层,然后以待机作混合树为中心进行切换. 主层中会有一些复杂一些的 ...
- unity人物模型换装系统浅析
*****最近研究了一下unity中人物模型的换装系统感觉挺有意思的!特意来分享给大家.*****首先给大家介绍一下3D人物模型的相关知识:模型一般分为静态模型和动态模型嘛!静态模型简单的来说就是不会 ...
- [Unity实战]换装系统的原理
原文链接:http://blog.csdn.net/yueding521125/article/details/16873431 在unity中实现换装的方式主要有三种: 1.换材质或换贴图 2.显示 ...
- Unity物体骨骼换装系统
Unity的换装系统是为了优化Unity资源,增加游戏乐趣,换装有两种,一种是增添式换装,比如给人物加个武器,装备翅膀等等,另外一种就是下面我要说的更新式换装,比如更换皮肤,更换武器,更换装备等等,换 ...
- Unity SkinnedMeshRenderer 动态换装系统
说在前面 本文只是实例说明了最基础的换装思路:刷新骨骼 完整的换装系统需要涉及到:Mesh合并.刷新骨骼.材质合并 直接上效果 动态换装需要了解SkinnedMeshRenderer动画如何播放. 本 ...
- Unity学习笔记(7) Unity2D骨骼动画制作流程
用骨骼动画最大的好处就是方便之后做换装系统. 无论对3Dor2D游戏都是这样的. 这篇博文记录一下2D骨骼动画的制作流程,参考b站麦扣的系列教程: https://space.bilibili.com ...
最新文章
- DHTML中style的display和visibility属性
- Java Swing控件样式设置
- linux系统运维面试题
- 网页的一般布局(标题和脚注100%,内容宽度固定宽度px)
- 组织应该采用集中式发电机吗?
- JavaScript第一天学习
- Android获取手机及外设存储空间
- 刚刚有水了一道,用递归实现进制转换
- 【Chrome浏览器】常用快捷键整理
- [KMP]一本通(http://ybt.ssoier.cn:8088) 1698:字符串匹配
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
- 使用echarts来显示世界地图和全国地图,并且可以下钻层级
- xcode 怎么调用midi开发录音_直播_个人工作室入门_1K-2k价位录音编曲声卡推荐
- Android 4编程入门经典
- ArcGIS获取点图层对应栅格图层的栅格行列号(或属性值)
- oppo手机硬件测试软件,OPPO怎么测试手机硬件,只需要做这一步,进入工程模式...
- Android获取CPU使用率的几种方式
- 无法使用内置管理员账户打开应用商店
- Python编写尼姆游戏
- 写过的比较难受的题目
热门文章
- 钉钉群机器人通知中的图片,突然不显示了
- html id命名规范,关于Html class id 命名规范
- 五年50起并购、股价持续上扬,复盘IBM的物联网进化之路
- Tomcat修改server.xml中的context标签后无法启动
- python对时间序列的DataFrame数据按时间段进行切分求和
- AI 之路、回顾 2021,展望 2022 :当代青年的小烦恼
- 周日报名截止,翼支付杯大数据建模大赛16万大奖邀你来!!
- struts2架构网站漏洞修复详情与利用漏洞修复方案
- Jscript流程控制语句
- 做为一个程序员必看的文章 看看你做到了吗 王森:程序设计师真情忏悔录