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

文章目录

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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

相关推荐
向宇it13 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
Heaphaestus,RC14 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
芋芋qwq14 小时前
Unity UI射线检测 道具拖拽
ui·unity·游戏引擎
tealcwu15 小时前
【Unity服务】关于Unity LevelPlay的基本情况
unity·游戏引擎
大眼睛姑娘18 小时前
Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材
unity·游戏美术
前端Hardy1 天前
HTML&CSS:数据卡片可以这样设计
前端·javascript·css·3d·html
鹿野素材屋1 天前
Unity Dots下的动画合批工具:GPU ECS Animation Baker
unity·游戏引擎
gis分享者1 天前
学习threejs,导入FBX格式骨骼绑定模型
threejs·骨骼动画·fbx
小彭努力中1 天前
138. CSS3DRenderer渲染HTML标签
前端·深度学习·3d·webgl·three.js
小春熙子1 天前
Unity图形学之着色器之间传递参数
unity·游戏引擎·技术美术·着色器