【小沐学Unity3d】3ds Max 骨骼动画制作(蒙皮修改器skin)

文章目录

  • 1、简介
  • 2、蒙皮修改器
    • 3.1 骨骼对象测试
    • 3.2 Biped对象测试
  • 3、动画制作
  • 4、FBX导出
  • 结语

1、简介

“蒙皮”修改器是一种骨骼变形工具,主要设计用于通过另一个对象对一个对象进行变形来创建角色动画。可使用骨骼、样条线和其他对象变形网格、面片和 NURBS 对象。

如果将“蒙皮”修改器应用到网格,然后使用修改器指定骨骼,则每个骨骼都将收到一个胶囊形状的“封套”。这些封套中的修改对象的顶点随骨骼移动。在封套重叠处,每个顶点的运动都是影响该顶点的骨骼运动的混合。使用权重来实现此操作。

在这里插入图片描述
Character Studio提供了3个组件:Biped用于角色绑定和控制,Physique是专门为Biped骨架设计的蒙皮修改器,Crowd Animation用于程序化生成中远景群组动画。

  • (1)Biped
    提供创建骨骼并设置骨骼动画的工具。有四种操作模式:Figure Mode(体形模式);Footstep Mode(足迹模式);Motion Flow Mode(运动流模式);Mixer Mode(混合器模式)。
  • (2)Physique
    Physique修改器是Biped专用的蒙皮修改器,亮点是丰富的变形效果。Physique蒙皮中那些腱鞘等功能,都属于变形动画的范畴,无法正确的被导入进FBX文件中,因此游戏角色很少使用,通常会使用Skin修改器进行蒙皮。
  • (3)Crowd Animation
    Crowd Animation系统可以程序化生成群组动画,通过设置坐、行走、站立的区域和密度等参数快速生成人群动画。
名词中文释义重点信息其它信息
Rig绑定骨骼的拓扑结构信息(父子关系的定义)骨骼变换的坐标系(可修改);骨骼名称
Skeleton骨架父子骨骼相对变换(位置/旋转/缩放)信息骨骼的拓扑结构信息(父子关系的定义)
Bone骨骼用于模拟真实的骨骼骨骼长度、起始位置和方向等信息
Joint关节骨骼连接处的空节点/
Skin蒙皮多边形网格受骨骼控制的数量和权重信息/
Binding Pose绑定姿势骨架绑定到网格不应用任何变形的基础姿势通常为T - Pose / A - Pose
Deform变形通过变换骨架Transform使蒙皮网格变换姿势变形过程可通过关键帧记录在骨骼Transform上组成动画片段
Animation Sequence动画片段骨骼每一帧的变换(位置/旋转/缩放)信息自定义属性和曲线信息

2、蒙皮修改器

默认情况下,“蒙皮”修改器为每个指定骨骼创建一个封套,并自动调整封套来包含附近的网格顶点。然后,当骨骼移动时,它将带动其封套内的所有顶点。

  • (1)准备蒙皮(网格或面片对象)和骨骼(骨骼、CAT 或 Biped 骨骼或者其他对象)。仔细将骨骼放在网格或面片对象内,以使其组件能够影响它们直接相邻的多边形或面片。
    提示: 骨架可能已设置动画,或者您可以在将其组件应用到“蒙皮”修改器后为其设置动画。
  • (2)选择网格或面片对象,然后应用“蒙皮”修改器。
  • (3)在“参数”卷展栏中,单击“添加”,然后选择骨架对象。
  • (4)启用“编辑封套”并选择一个封套,以修改每个骨骼在其中可影响周围几何体的体积。

3dsmax中大家使用最多的就是“骨骼”和“Biped”这两个。
在这里插入图片描述

3.1 骨骼对象测试

使用一个简单的立方体模型进行蒙皮的演示。
在这里插入图片描述
Alt + X半透明显示模型,然后将其冻结。
在这里插入图片描述
添加两块骨骼,如果加上最后的尾节骨骼的话,应该是3块骨骼对象。
在这里插入图片描述
两块骨骼肯定是要放到模型里面的,尽量让骨骼置于模型的中间位置。还可以调节骨骼的大小,使其与模型的大小尽量保持一致。这样做的好处就是方便后期的“封套”编辑。
在这里插入图片描述
解冻长方体模型,选择模型,然后为其添加“蒙皮”修改器。
在这里插入图片描述
封套。蒙皮的过程,就是设置骨骼与模型顶点关系的过程。封套就是一个可视化的关系设置。每个骨骼都对应一个可视化的封套,通过编辑封套的结构来控制该骨骼对周围模型顶点的影响。
具体操作过程是,在蒙皮修改器中“添加”骨骼对象,然后点击“编辑封套”中可以看到该骨骼对模型顶点的影响。我们先给第一根骨骼(根骨骼)Bone001来设置封套,点击添加该骨骼,然后点击“编辑封套”。

调整封套的大小,就是调整骨骼对模型顶点的影响。封套是一个胶囊体,由里外两层组成。从里向外对模型顶点影响越来越小。通常,封套大小和骨骼大小保持一致,这样封套才能合理的影响周围的模型顶点。封套有属性参数可以设置,也可以手动拖动改变其位置和大小。
红色表示影响最大,橙色表示影响适中,蓝色影响最小。

在这里插入图片描述
顶点调节:蒙皮属于可视化的调整骨骼对模型顶点的权重设置,使用红橙蓝颜色进行程度区分。我们还可以通过数值的方式直接修改骨骼对模型顶点的影响。操作过程就是,在编辑封套的基础上,勾选“顶点”:
在这里插入图片描述
在蒙皮修改的命令面板中找到“权重属性”下的一个扳手形状的工具,点击它弹出“权重工具”窗体。在“权重工具”弹窗中设置顶点的权重值。这个权重值在0-1之间,那么所有骨骼对顶点的权重值总和为1。一般情况下,都设置权重值为0.5即可。也就是说两个骨骼对关节处模型顶点影响度都是一半。
在这里插入图片描述
权重表:里面使用列表的形式展示了模型指定顶点收不同骨骼影响的权重值。在模型中选择顶点后,权重表里面才会显示所选顶点的权重值列表。

绘制权重:选择“封套”,在点击“绘制权重”,还有勾选“绘制混合权重”。这样就能使用笔刷在模型上面调整权重。该方式用于顶点密集的地方,尤其是骨骼移动后,模型发生变形的情况。
在这里插入图片描述
蒙皮完成后,可以通过“镜像模式”对另一半蒙皮,适用于对称性的模型蒙皮设置。
在这里插入图片描述
蒙皮完毕后,检查权重分配是否合理,就需要移动骨骼,观察模型跟随运动是否正常。
在这里插入图片描述
如果不正确的话,则需要调整骨骼对模型的影响权重。也就是封套的位置和大小,或者通过顶点直接设置权重值。
在移动骨骼之前,我们需要设置默认姿势,目的是做完动作后能够返回默认姿势。

  • 全选骨骼(工具栏中对象过滤选择骨骼),然后Alt + 右键选择“设置蒙皮姿势”。

在这里插入图片描述

  • 返回默认姿势,全选骨骼后,Alt + 右键选择“采用蒙皮姿势”,即可恢复默认姿势。
    在这里插入图片描述

3.2 Biped对象测试

  • 修改Biped骨架

首先,创建Biped骨骼系统。接着进入骨骼编辑模式,点选Biped任意一块骨骼,然后点击命令面板“运动”->“Biped”下的“体型模式”即可进入骨骼编辑模式。

然后,可以在“运动”->“结构”中,可以修改骨骼层次结构。例如可以将脊椎骨骼由4块改为3块,也可以减少手指和脚趾骨骼的数量。

接着,在“体形模式”下,可以平移,旋转和缩放Biped中的各个关节骨骼,将Biped的每一块关节骨骼置于对应身体部位的中间位置,同时也可以调整每个关节骨骼的大小。

骨骼操作的时候,尽量使用骨骼局部坐标系,这样更容易调整骨骼的位置。
调整Biped的时候,优先从根骨骼(耻骨)开始,然后调整子骨骼位置和大小。
在这里插入图片描述

移动某一块骨骼的时候,会影响到子骨骼。在层次里面点击“仅影响轴”,就能摆脱这种束缚关系。即子骨骼不跟随移动。但是,这种操作实际使用的时候,还是不太理想。

由于人体模型是对称的,因此我们调整完一半的骨骼位置后,可以复制/粘贴到另一半。首先,“创建集合”,然后选择已经调整好的骨骼(左手臂),然后“复制姿态”,最后“向对面粘贴姿态”完成。
在这里插入图片描述

最后,调整完所有骨骼后,关闭“体形模式”。

  • 骨骼蒙皮绑定
    使用3DMAX内置蒙皮系统,将Biped(骨骼)和人物模型绑定在一起

(1)给模型添加一个 蒙皮修改器。
(2)编辑封套, 添加骨骼,给骨骼分配顶点及其权重。

  1. 将人物模型与Biped骨骼重合。
    可以先选择模型,按快捷键Alt+X 使之透明化。
    然后在对象过滤器里选择”骨骼“,方便只选择骨骼进行操作。
  2. 鼠标选中某个骨骼后,进入“运动” - “体型模式”,编辑细节。
  3. 先把模型右键转换为可编辑多边形,选中模型→修改面板→修改器列表中找到蒙皮。
  4. 点击添加的蒙皮修改器。
  5. 点击按钮“编辑封套”,找到按钮"添加",添加骨骼。
  6. 调整权重值。勾选选择顶点,找到权重工具打开。
    将点击选择改成圈选,选择任意一块骨骼名称修改权重值。红色的圈圈就是它的影响范围。修改权重时,0代表不控制,1代表完全控制。如果完成后拖动骨骼模型有的部位不动,说明权重有问题,需要修改。
    在这里插入图片描述

3、动画制作

  • 设置动画时间
    一般情况下使用1秒钟30帧就足够了。在3ds max可以设置这个FPS值。右下角“时间配置”,可以设置FPS值。也可以设置“动画”->“结束时间”。这个结束时间的单位是帧,也就是3ds max下方的动画控制面板中帧滑块的长度。
    在这里插入图片描述

  • 关键帧:动画由一组关键帧组成,关键帧与关键帧之间的部分是由系统按照线性插值的方式自动计算而得到的。关键帧是一个红绿蓝颜色的滑块。

  • 3ds max设置关键帧有两种方式,一个自动关键帧,一个是设置关键帧(手动关键帧)。两种状态可以通过下图红框内的两个按钮来进行切换。
    在这里插入图片描述
    (1)自动关键帧状态下,将时间帧滑块移动的某一个时间帧位置的时候,然后调整模型的位置或动作,则系统自动将此设为关键帧。
    (2)设置关键帧状态下,调整模型的位置或动作后,然后将时间帧滑块移动到一个时间帧位置后,需要手动点击钥匙形状按钮,才能将此设为关键帧。

  • 对象过滤器
    为了方便全选骨骼,我们可以在对象过滤器中,选择“骨骼”。
    在这里插入图片描述

  • 旋转捕捉
    为了帮助我们精确旋转,我们可以设置旋转角度,同时打开旋转捕捉。
    在这里插入图片描述
    接着鼠标左键选中了上面的按钮”角度捕捉切换“之后,再对模型对象进行旋转如下:
    在这里插入图片描述
    上面的角度变化均是5的倍数值。

4、FBX导出

在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

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

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

相关文章

docker镜像是如何导入的?

镜像导入是由image/tarexport/load.go#tarexporter.Load()完成的 以下代码参考github.com/docker/docker版本v0.0.0-20181129155816-baab736a3649 主要是注册镜像信息以及解包镜像tar流到新root 导出和保存的区别在于 导出(export): 仅导出文件结构保存(save): 保存镜像历史和元…

python3+requests:接口自动化测试(二)

前言:上篇文章python3requestsunittest:接口自动化测试(一):已经介绍了基于unittest框架的实现接口自动化,但是也存在一些问题,比如最明显的测试数据和业务没有区分开,接口用例不便于…

【机器学习】线性回归

Model Representation 1、问题描述2、表示说明3、数据绘图4、模型函数5、预测总结附录 1、问题描述 一套 1000 平方英尺 (sqft) 的房屋售价为300,000美元,一套 2000 平方英尺的房屋售价为500,000美元。这两点将构成我们的数据或训练集。面积单位为 1000 平方英尺&a…

2010-2021年上市公司和讯网社会责任评级CSR数据/和讯网上市公司社会责任数据

2010-2021年上市公司和讯网社会责任评级CSR数据 1、时间:2010-2021年 2、指标:股票名称、股票代码、年份、总得分、等级、股东责任、员工责任、供应商、客户和消费者权益责任、环境责任、社会责任、所属年份 3、样本量:4万 4、来源&#…

数据结构与算法基础-学习-31-交换排序之冒泡排序、快速排序

排序的其他相关知识点和源码分享可以参考之前的博客: 《数据结构与算法基础-学习-30-插入排序之直接插入排序、二分插入排序、希尔排序》 一、交换排序基本思想 两两比较,如果发生逆序则交换位置,直到所有数据记录都排好序为止。 二、冒…

linux下C程序查看内存剩余大小

嵌入式linux中很多内存资源都比较小&#xff0c;所以很多程序中在malloc时就需要提前知道内存剩余的大小 下面是一种调用 sysinfo接口来实现。 示例代码如下&#xff1a; #include <stdio.h> #include <linux/kernel.h> #include <linux/unistd.h> #includ…

大模型理解之CLIP

前言 2021年2月份&#xff0c;CLIP模型被提出&#xff0c;想法很简单&#xff0c;性能高效&#xff0c;而且具备很好的泛化性。我在这里简单谈论下我对CLIP模型的理解&#xff0c;以及发现的一些问题。 我是在沐神的视频中了解的CLIP, 里面提到CLIP最大的贡献在于打破了固定类…

四轴飞行器的电池研究(MatlabSimulink仿真)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

全球免费编程教育网站:Code.org

全球免费编程教育网站&#xff1a;Code.org 官网地址注册使用 你还在为小朋友的编程教育而发愁吗&#xff1f; 你还在为小朋友放假无聊而头疼吗&#xff1f; 他来了他来了&#xff0c;全球免费编程教育网站来了。 2013年成立的Code.org是一个非营利组织。 它致力于为年轻女子、…

Xilinx UltraScale架构之可配置逻辑块CLB

目录 一、概览 二、UltraScale架构 2.1 UltraScale/UltraScale特点 2.2 与7系列CLB差异 三、 CLB结构 3.1 LUT 3.2 FF 3.3 多路选择器Multiplexers 3.4 进位链Carry Chain 四、应用 4.1 分布式RAM 4.2 移位寄存器 4.3 进位链Carry Chain 五、参考资料 一、概览 二…

专门针对开发人员,攻击者利用Rust获取操作系统信息

近日&#xff0c;研究人员在 Rust 编程语言的 crate 注册表中发现了一些恶意软件包&#xff0c;专门针对开发人员。 Phylum 在上周发布的一份报告中称&#xff0c;这些库是由一个名为 "amaperf "的用户在 2023 年 8 月 14 日至 16 日之间上传的。现已删除的软件包名…

【LeetCode-中等题】114. 二叉树展开为链表

文章目录 题目方法一&#xff1a;前序遍历&#xff08;构造集合&#xff09; 集合&#xff08;构造新树&#xff09;方法二&#xff1a;原地构建方法三&#xff1a;前序遍历--迭代&#xff08;构造集合&#xff09; 集合&#xff08;构造新树&#xff09; 题目 方法一&#x…

el-select 选择一条数据后,把其余数据带过来

1. 案例&#xff1a; ps: 票号是下拉框选择&#xff0c;风险分类、场站名称以及开始时间是选择【票号】后带过来的。 2. 思路: 使用官网上给的方法&#xff0c;选择之后&#xff0c;触发change方法从而给其余字段赋值 3. 代码 <el-form-itemlabel"票号&#xff1a;&…

buildAdmin的使用笔记

安装buildAdmin 下载完整包&#xff0c;解压进入 buildadmin 的文件夹&#xff0c; 输入命令 composer install 启动的时候使用&#xff0c; php think run 就可以了 为什么启动只需要&#xff0c; php think run 这种启动方式&#xff0c; 我是头一回看见 &#xff0c;后来才…

如何在IT技术面试中脱颖而出?

前序 在竞争激烈的IT领域&#xff0c;技术面试是进入理想工作的关键一步。然而&#xff0c;要在面试中脱颖而出&#xff0c;您需要更多的准备和策略。以下是一些实际且深入的方法&#xff0c;可以帮助您在IT技术面试中脱颖而出。 准备和策略 确保深入了解公司和职位 在面试前…

Android 手游聚合SDK小知识(一)

Android 手游聚合SDK小知识(一) Android 手游聚合SDK小知识(二) 聚合分包 前言 回头想想&#xff0c;在安卓游戏SDK这个领域&#xff0c;我也呆了4年了&#xff0c;从啥都不懂的小菜鸟&#xff0c;逐渐靠自己不断学习&#xff0c;对这个行业也算有了一些理解&#xff0c;趁着…

如何击败那个令程序员绝望的Bug

灵异事件&#xff01;程序里发现了新Bug但是它正常运行啦&#xff01;人生处处有Bug&#xff0c;但有些Bug实在令人目瞪口呆&#xff0c;久久不能忘怀。 有一天&#xff0c;我正忙着维护一个庞大的软件项目&#xff0c;数以百万计的行代码交织成复杂的网络。项目中的一个模块引…

[贪心] 拼接最小数

这道题思路并不难&#xff0c;我主要想学习其一些对于字符串的处理。 代码如下&#xff1a; #include <iostream> #include <string> #include <algorithm> using namespace std;const int MAXN 10000; string nums[MAXN];bool cmp(string a, string b) {…

柯桥外贸英语培训哪家表专业,零基础可以学吗

“我也是”一出口&#xff0c;紧跟着就是 “Me too! / I think so. / I agree with you. 等等”。 今天&#xff0c;咱们换个说法&#xff0c;来表达一下两个人不谋而合、意见一致吧~~ 01 影视对接 02 Subtitle WA: And these are her puppies. Come here, come here, littl…

useEffect 不可忽视的 cleanup 函数

在 react 开发中&#xff0c; useEffect 是我们经常会使用到的钩子&#xff0c;一个基础的例子如下&#xff1a; useEffect(() > {// some code here// cleanup 函数return () > {doSomething()} }, [dependencies])上述代码中&#xff0c; cleanup 函数的执行时机有如下…