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

news2025/3/11 0:12:38

文章目录

  • 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.coloradmin.cn/o/964929.html

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

相关文章

【Java 基础篇】Java 数组使用详解:从零基础到数组专家

如果你正在学习编程,那么数组是一个不可或缺的重要概念。数组是一种数据结构,用于存储一组相同类型的数据。在 Java 编程中,数组扮演着非常重要的角色,可以帮助你组织、访问和操作数据。在本篇博客中,我们将从零基础开…

如何使用C++11原子操作实现自旋锁

什么是自旋锁? C自旋锁是一种低层次的同步原语,用于保护共享资源的访问。自旋锁是一种轻量级的锁,适用于短时间的资源锁定。 自旋锁的特点:当一个线程尝试获取已经被另一个线程占有的自旋锁时,这个线程会进入一个循环…

从入门到精通,30天带你学会C++【第六天:与或非三兄弟和If判断语句(博主目前最长文章,2514字)】(学不会你找我)

目录 前言 计算机里的真和假 与或非三兄弟 ​编辑与运算(&&) 具体说明表格: 举个栗子1: 或运算(||) 具体说明表格: 举个栗子2: 非运算(!&#xff09…

python编写MQTT订阅程序

Download | Eclipse Mosquitto 1、下载: https://mosquitto.org/files/binary/win64/mosquitto-2.0.17-install-windows-x64.exe 2、安装: 3、conf配置 1)使用notepad打开“C:\Program Files\mosquitto\mosquitto.conf”另存为c:\myapp\msquitto\mo…

C++的多重继承

派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有两个或多个基类。 多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Java、C#、PHP 等干脆取消了多继承。 …

漏洞发现-web应用发现探针类型利用(43)

关于在真实环境下面,这个漏洞该如何发现 这里老师把它分成了三块第一类是 #已知cms 如常见的dedecms,discuz,wordpress等源码结构,这些都是网上比较知名的php源码的cms的名称,这是我们在国内常见的几个程序&#xf…

【Java 基础篇】Java 方法使用详解:让你轻松掌握方法的奥秘

如果你正在学习Java编程,方法是一个不可或缺的重要概念。方法允许你将代码组织成可重用的块,提高了代码的可维护性和可读性。在本篇博客中,我们将深入探讨Java方法的使用,从基础概念开始,逐步介绍如何定义、调用、传递…

Netty-ChannelPipeline

EventLoop可以说是 Netty 的调度中心,负责监听多种事件类型:I/O 事件、信号事件、定时事件等,然而实际的业务处理逻辑则是由 ChannelPipeline 中所定义的 ChannelHandler 完成的,ChannelPipeline 和 ChannelHandler应用开发的过程…

剑指 Offer 44. 数字序列中某一位的数字(中等)

题目: class Solution { //本题单纯找规律,要注意通过n%digits来判断有几个位数为digits的数 public:int findNthDigit(int n) {long base 9, digits 1; //digits代表位数while(n-base*digits>0){ //该循环是为了确定目标数字所在…

找不到msvcp140.dll的解决方法【msvcp140.dll修复工具下载】

今天,我将为大家分享一个与我们日常工作息息相关的话题——msvcp140.dll重新安装的5种解决方法。在接下来的时间里,我将向大家介绍什么是msvcp140.dll,为什么会丢失,以及它的用途。最后,我将为大家提供5种解决方法,帮助…

【人工智能】—_神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

神经网络、前向传播、反向传播 文章目录 神经网络、前向传播、反向传播前向传播反向传播梯度下降局部最小值多层前馈网络表示能力多层前馈网络局限缓解过拟合的策略 前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后,最终得到输出结果的过…

useEffect 不可忽视的 cleanup 函数

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

[dasctf]misc1

不确定何种加密方式 P7NhnTtPUm/L3rmkP/eAhx5Vnbc2YyatkXCePJ0Wh2NYfqXGZCpZdCesMmEAihhUYI1PjoLq6FedZ7MSclA9h0/Dy4CavBwVg5RHr8XJmfbtuWkxK2Gn3sNTEzQi0p 1t_15_s3cR3t_k3y 也许是密钥

html5——前端笔记

html 一、html51.1、理解html结构1.2、h1 - h6 (标题标签)1.3、p (段落和换行标签)1.4、br 换行标签1.5、文本格式化1.6、div 和 span 标签1.7、img 图像标签1.8、a 超链接标签1.9、table表格标签1.9.1、表格标签1.9.2、表格结构标签1.9.3、合并单元格 1.10、列表1.10.1、ul无序…

vmware虚拟机远程开发

目录 1. 下载vmware2. 下载ubuntu镜像3. 安装4. 做一些设置4.1 分辨率设置4.2 语言下载4.3 输入法设置4.4 时区设置 5. 直接切换管理员权限6. 网络6.1 看ip6.2 ssh 7. 本地编译器连接远程服务器7.1 创建远程部署的配置7.2 文件同步7.3 远程启动项目 8. ubuntu安装golang环境8.1…

C++学习笔记总结练习:多态与虚函数

1 多态 多态分类 静态多态,是只在编译期间确定的多态。静态多态在编译期间,根据函数参数的个数和类型推断出调用的函数。静态多态有两种实现的方式 重载。(函数重载)模板。 动态多态,是运行时多态。通过虚函数机制实…

单片机开发中的内存优化

在单片机开发中,内存优化是至关重要的,它不仅能够降低成本,还可以提高性能。本文将深入讨论如何在STM32单片机和C语言的环境中实施内存优化策略,以确保项目的顺利进行。 单片机内存资源通常包括RAM(随机访问存储器&am…

Java空指针异常

在所有的RuntimeException异常中,Java程序员最熟悉的恐怕就是NullPointerException了。 NullPointerException即空指针异常,俗称NPE。如果一个对象为null,调用其方法或访问其字段就会产生NullPointerException,这个异常通常是由J…

2022年12月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程(1~8级)全部真题・点这里 第1题:区间合并 给定 n 个闭区间 [ai; bi],其中i1,2,…,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1;2] 和 [2;3] 可以合并为 [1;3],[1;3] 和 [2;4] 可以…

腾讯云网站备案详细流程_审核时间说明

腾讯云网站备案流程先填写基础信息、主体信息和网站信息,然后提交备案后等待腾讯云初审,初审通过后进行短信核验,最后等待各省管局审核,前面腾讯云初审时间1到2天左右,最长时间是等待管局审核时间,网站备案…