English
登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
原创商城
官方淘宝
二手市场
学院
云课堂
考试
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
联机
航空人生(连飞)
飞行人生(虚航)
空管人生(虚管)
空战人生(对战)
工具
联飞地图
航路查询
航图查询
气象报文
资源
插件库
素材库
云网盘
企业
飞行者联盟
»
论坛
›
【飞行仿真实验室】
›
软件开发
›
Unity3D
›
程序丨如何用Unity3D实现游戏中的角色换装? ...
返回列表
发新帖
查看:
2032
|
回复:
0
程序丨如何用Unity3D实现游戏中的角色换装?
[复制链接]
phillip
phillip
当前离线
UID
5071
注册时间
2014-4-21
在线时间
小时
最后登录
1970-1-1
精华
阅读权限
20
听众
收听
雷达卡
发表于 2022-11-16 08:59:01
|
显示全部楼层
|
阅读模式
换装系统是游戏中较为常见的功能,我们给它一个专业词avatar,可以做到装备与人物分离,实现自由换装效果。我们可以将头部、身体、手、脚、武器独立建模、贴图,利用avatar来动态换装,实现各种搭配、实时时装等。
01
换装效果图
02
相关知识点准备
首先我们需要知道模型里涉及到的三个概念,蒙皮网格mesh、骨骼bone、材质material。下面是示例模型在unity里的数据标识详细说明:
蒙皮网格渲染器用来渲染骨骼动画。
骨骼数据在unity展示形式为Transform,如下图所示:
当模型在播放中,观察Transform会处于变化中。
我们来看下示例模型里,骨骼数据中左、右手挂装备的节点,这个后面挂接武器会用到,先看如下所示:
看到上图装备节点,我们可能猜到了给模型换装备的思路了,那就是实例化装备预制后,挂接到这个位置即可。正确,这是其中一种,当然我们也可以把装备直接做成SkinnMesh不用挂接点。
来看一下相关五个部分独立模型,示例模型如下所示:
需要注意的是,每一套模型都需要使用同一套的骨骼,具体如下所示:
03
实现原理
经上介绍并了解完模型里的数据、蒙皮网格渲染器与网格、骨骼、材质几个概念后,再来介绍unity3d换装实现原理。
基本原理:替换修改蒙皮网格渲染器的网格、骨骼、材质。
基本步骤:合并网格,刷新骨骼,附加材质。
我们需要将骨骼数据单独保存为一个预制,其他相关独立模型包括武器也一样做成预制,具体如下图所示:
接下来需要代码处理将四个模型里的materials材质数据,meshes数据,bones骨骼数据准备好,其中meshes数据需要进行合并网格的处理。
下面是具体代码片段:
当数据准备完毕,我们给骨骼预制添加一个蒙皮网格渲染器,并设置其中sharedMesh、bones、materials,这就是我们所说的基本步骤,合并网格,刷新骨骼,附加材质。
具体代码如下:
经过上面的处理,我们可以看到骨骼预制里最新数据,模型组合最新显示如下:
以上是较为简单的过程,一般为了达到优化,降低drawcall,需要合并模型网格,重新计算UV,合并贴图材质。新的步骤:合并网格,合并贴图,重新计算UV,刷新骨骼,附加新材质再设置UV。
其中合并材质重新计算UV,主要代码如下:
经过合并处理,我们再给网格渲染器设置新材质再设置UV:
优化前后,drawcall消耗有减小,对比如下图:
04
挂接武器
上面有提到骨骼一个名为weapon_hand_r的节点,我们可在该节点位置挂接武器。具体操作代码如下:
我们可以这样玩,将武器挂接到左手,或者左右手都挂接武器,动动手吧操作看看效果如下所示:
05
学习资料
https://github.com/zouchunyi/UnityAvater
http://www.cnblogs.com/shamoyuu/p/6505561.html
https://docs.unity3d.com/Manual/class-SkinnedMeshRenderer.html
以上内容解读与总结,希望能起到对相关知识点有加深理解的作用,感谢阅读指正分享!
今日推荐
·用Unity制作一个好玩但鸡肋的操作回滚功能
·如何用Unity Shader制作类似《炉石传说》卡牌的动态效果?
·大神的日常!资深场景概念设计师绿榴莲作品欣赏及经验分享
↓↓↓点击阅读原文,了解更多。
Unity3D
,
程序
,
丨如
,
何用
,
实现
,
Unity3D
,
Unity3D
相关帖子
•
小程序疑泄露隐私:小区门禁密码任何人随便查 还用脏话标注
•
耗时100天,我们造了台载人地效飞行器,4年前的梦想终于实现了!
•
微软飞行模拟2020启动程序设置指南
•
如何用地图数据下载工具下载OpenStreetMap(OSM)最新数据
•
CFR连飞程序查不到航路(网是没问题的)
•
【A300】借法国人之手实现欧洲的空中客车梦!
•
教你实现手游中的摇杆效果(js)
•
石头航空小课堂 第三季A319空客系列教学 |第一集 日常飞行程序讲解 兼容FENIX
•
如何用DEAMONTOLLS 3.47模拟BF2CD1mini.mds文件?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表