unity36——原神等手游常用的物理bone(弹簧)裙摆,与Cloth(布料)裙摆插件 Magica Cloth 使用教程(一)

本文主要是介绍unity36——原神等手游常用的物理bone(弹簧)裙摆,与Cloth(布料)裙摆插件 Magica Cloth 使用教程(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
目前我们手游开发,经常会遇到头发,双马尾,长裙,飘带等。以前我们都是在三维软件中制作骨骼后,自己手动K针。这样做有一些弊端,时间长,并且K帧的飘带效果没法随着游戏中角色的移动,旋转等动作实时发生动画位移效果。因此,下面将介绍MagicaCloth的两种用法。
其中一种是需要绑定骨骼蒙皮,但是不需要K帧。bone cloth(原理,骨骼弹簧物理计算)计算量小,适用于手机,同屏20个角色

其中另一种是不需要骨骼绑定,直接导出mesh到unity中进行物理计算。clothing(布料解算器物理计算)计算量大。适用于PC或者手机换装界面,同屏不超过2个角色。

特别说明,不管是哪一种,导出FBX的时候,你想要计算的骨骼都不能K帧,不然会影响运动计算。

下面先上干货,这个视频是Bone cloth计算出来的动态效果。

物理弹簧模拟测试示意

首先我们先为插件安装一下环境。在这里我用的是URP项目2021版本。

在这里插入图片描述
在这里插入图片描述
1Package Manager 选中Reagistry 选择Burst
如上图,这是需要安装的第一个环境,如果版本内已经有了,直接跳过即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2如上图,击Add package 输入com.unity.jobs
安装jobs 这个是插件需要的第二个运行环境。

在这里插入图片描述
3如上图。这两个环境安装好后,就可以安装正式插件了。插件包直接用我准备好的就可以。magica cloth 2.4版本。直接丢入到引擎中,没有报错即可使用。

在这里插入图片描述在这里插入图片描述

4如上图,接下来还需要一个显示骨骼的辅助插件、方便调试。
Animation Rigging 此插件unity自带的插件工具,直接在package manager窗口中搜索安装即可。此插件能显示unity中的骨骼并且直接鼠标选中,方便咱们后面设置局部物理碰撞。

在这里插入图片描述
5 所有插件安装好后,导入一个你需要的,模型,这里以头发为例,我需要这个双马尾跟随身体做物理动画运算。那么点击菜单中的Animation Rigging菜单,选中你的模型,再点击最后一项Renderer swtup,你会得到骨骼映射。
在这里插入图片描述
右侧可以调整骨骼映射的颜色还有参数,鼠标单击左侧蓝色任意骨骼,就能直接跳转到对应骨骼,让我们在unity中操作骨骼更为方便(有兴趣的小伙伴也可以直接用这个插件骨骼K一些动画。)

在这里插入图片描述在这里插入图片描述

6选中你需要动的头发模型预制体,为他添加magica cloth插件命令。
添加插件后,你会得到上图右侧的菜单栏。鼠标点击两根双马尾的蓝色骨骼根节点映射。拖动到右边菜单Root Bones中。并且把插件的模式选择为bone cloth模式(这就代表启用骨骼弹簧运算)

当你设置好后,左图的骨骼会变成根节点为红色圆球,其他为绿色。这说明红色只会做旋转而不会随着物理计算位移。绿色计算位移加旋转。当然你也可以点击右侧小铅笔图标,绘制你需要的颜色点。

在这里插入图片描述7如上图,右侧菜单栏Preset有插件内置好的所有动态计算预设,懒得手动调节的朋友, 可以直接选择红色个方框中自己喜欢的对应预设就可以,有裙子、飘带、头发、刘海等。如果你觉得内置的不够精致,也可以点击左侧绿色方框中,打开菜单,调节更精细的滑块配置。
调整好之后点击运行,就可以看到效果。

特别说明:下面是干货,有些同学,会发现,头发在运动的过程中会出现穿模,也就是头发进入身体,或者其他衣物中,这是因为你没给身体加上对应的碰撞。下面讲解为身体设置碰撞,来解决穿模问题。老版本就是因为这块做的不好,所以导致很多人不用,但是现在的版本已经可以解决任何穿模问题,只要你耐心调整碰撞形状。
在这里插入图片描述
8如上图,如果我们不给身体设置碰撞,运行后头发会因为重力,直接垂直到绿色位置,插进身体里。因此我们需要给胸部骨骼上,创建一个碰撞。注意,一定要把碰撞设置在骨骼上,不然不生效。
在这里插入图片描述
如上图,找到你身体胸前的骨骼,右键选择红色方块内的各种碰撞形态,第一种为球形,第二种为圆柱体,第三种是平面,第四种、跟第五种、是任意形态设置。朋友们可以自行点击参数,调节滑块感受。
目前这个案例,因为胸前是一个斜面,我们需要的是双马尾搭在胸前受到重力作用。因此我选择了一个斜面碰撞体,如下图在这里插入图片描述
在这里插入图片描述
9设置好碰撞体后,点击你头发预制体中的插件,手动把刚刚设置的与i肢体,拖动到右侧菜单Collider collion菜单下的Collider List下面,这样头发就会受到此处碰撞的影响。

下面再次点击运行,你就会得到文章上面参考视频的效果,头发可以随着你身体各种移动方式来进行物理运动计算。

之后我们可以举一反三,为裙子,飘带、等其他部位,也设置骨骼物理计算。

本帖为初贴,只讲解了插件中,骨骼弹簧运算,适用于手机端。
下个帖子,将介绍插件中的第二个选项,布料解算。布料的结算会更加丝滑。并且不用蒙皮绑定,不用骨骼绑定。但是计算量比较大,也比较复杂,我们下期见。

这篇关于unity36——原神等手游常用的物理bone(弹簧)裙摆,与Cloth(布料)裙摆插件 Magica Cloth 使用教程(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644924

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符