自由学习记录(71)

在多个关键帧之间值完全一致,就会绘制出一条灰色水平线,表示:

  • 🔹 该段时间里该属性没有动画变化

  • 🔹 所以看起来像是 “恒定值”

  • 🔹 这有助于快速识别“静止的部分”

属性值始终是本地的(Local Space),变换坐标系只是你如何操作它的“参考坐标系统”。

NLA 轨道(NLA Track,全称 Non-Linear Animation Track) 是一种将多个动画片段(称为 动作 Actions)拼接、混合、重复、切换的系统,属于动画系统中的高级控制层。

🔧 类比理解:

  • Action = 一个动画片段(例如“走路”、“跳跃”、“挥手”)

  • NLA 轨道 = 时间线上的动画剪辑轨道

  • 像在剪辑软件里拼接视频那样,可以把动作放到不同帧上,重复它、淡入淡出、叠加


🧱 NLA 的基本组成:

名称说明
轨道(Track)一个对象可以有多个轨道,里面装的是动画片段(条带)
条带(Strip)一段动画 Action(可以是重复的、缩放的、融合的)
Action在 Dope Sheet 中创建的动画,是动画的原始数据

🧩 常见用法:

应用场景NLA 轨道的作用
人物“走 → 跳 → 站立”动画每个动作是一个 Action,在 NLA 里按顺序拼接
人物挥手动画重复播放在 NLA 中对动作条带设置重复
把动画插入不同帧区间Action 不用重新画,放在 NLA 不同位置
多动作淡入淡出支持两个动作平滑混合

如何进入 NLA 编辑器:

  1. 在窗口左上角的编辑器类型里,切换到 NLA Editor(非线性动画编辑器)

  2. 如果当前对象有动画,点击 Push Down 按钮(把 Dope Sheet 动画转为条带)

  3. 你就能在 NLA 中看到“条带”,可以拖动、复制、混合

Action 可以包含什么:

控制对象示例
物体位置 / 旋转 / 缩放动画角色移动或转身
骨骼(Armature)骨架动作、人物走路、挥手等
材质属性颜色变化、透明度淡入淡出
形态键(Shape Key)表情动画、面部变化
相机属性摄像机移动或变焦

Hook 是 Blender 中的一种修改器(Modifier),属于 Deform 类,用于让一个或多个顶点、边或面被另一个物体(通常是空物体 Empty 或骨骼 Bone)控制移动。

Array 修改器对所有帧都生效(因为修改器本身不是帧相关的,而是一直挂在物体上的结构)

修改器(Modifier)是一种对象级别的“非动画组件”

  • 它是附加在对象(Object)上的一种“实时变形功能”

  • 始终存在于物体上,从你添加它的那一刻起,它就实时影响这个物体的形状和显示

  • 修改器本身不是一个“可插值的动画实体”

这些图案(如 Modifier、Mesh、Animation 等)本质上代表的是对象的结构组成,而不是动画系统的关键帧控制目标。你不能用关键帧直接控制它们的“创建与销毁”。

每个图案的含义和动画控制关系:

图标含义能否通过关键帧控制“有无”
修改器(Modifiers)❌ 无法关键帧控制其启用/禁用/添加/删除,只能控制里面的数值参数(如 Array 数量)
动画数据(Action)❌ 本身不是可被关键帧控制的内容,它只是挂在物体上,真正被控制的是属性
网格数据(Mesh)❌ 无法动画控制“切换网格”或“删除网格”,这是对象的数据引用
Object 本体(位置/旋转/缩放)✅ 可以动画化这些变换属性
光源✅ 光照强度、颜色等可以打关键帧,但不能关键帧删除光源
摄像机✅ 焦距、位置等可以打关键帧,但不能关键帧删除摄像机

Blender 的关键帧系统是对“属性值的时间演化”进行记录,而不是对“结构元素是否存在”的管理

🧠 和 Bone Layer 的区别?

项目Bone Layer(旧)Bone Collection(新)
最大数量固定 32 个槽位理论无限
命名不能命名✅ 可以命名
多重分组❌ 只能属于一个层✅ 一个骨骼可属于多个 Collection
可视性控制有,但操作不直观✅ 拖拉式控制,支持面板显示

Blender 2.91 起就是主推使用 Bone Collection 来代替旧 Bone Layer 系统的。

Bone Collection 是为了你能在 UI 上快速隐藏/显示特定控制器或 Deform 骨

Auto-Rig Pro(ARP)默认不使用 Blender 的 Bone Collection 系统,它使用的是自己内部的一套更成熟的组织方法

ARP 用以下方式管理骨骼:

类型命名标识用途
控制骨ctrl_*给动画师用的手柄
变形骨def_*绑定到 mesh 上用于蒙皮变形
机械辅助骨mch_*ORG-*用于姿势传递和数学中间骨骼

这些名字(特别是 def_)决定了该骨骼是否参与自动权重、导出等,而不是靠 Bone Collection 控制。

它用「层级命名 + 控制界面」代替了 Bone Collection:

  • ARP 提供自己的 Rig UI 面板(比如“脸部控制”、“手部控制”可以展开/隐藏)

  • 不依赖 Bone Collection,因为它要保持最大兼容性与可控性(尤其导出时)

总结:Auto-Rig Pro 的做法与官方原生 Rigging 系统不同,是一整套闭环系统

项目Blender 原生 Rig(比如 Rigify)Auto-Rig Pro
组织方式使用 Bone Collection、Bone Layer使用命名约定 ctrl_, def_, mch_
控制器 UI有默认的属性控制可见性提供独立的自定义控制面板
导出优化需要手动设置隐藏骨骼自动设置哪些导出,哪些忽略
是否使用 Bone Collection✅(可选,推荐)❌ 不使用,内部自定义结构

“两个灰色的 cs_grp_limi” 的同步行为,实际上是因为这两个对象是 同一个数据块(DataBlock)被多次引用(instanced) 的结果

 

【Blender 基本功】2-2 数据块 —— 面向对象建模_哔哩哔哩_bilibili

alt d 引用的复制,网格会直接被复用,而不是加001创建一个新的

利用这一技巧,可以先用简单的物体摆放到场景中,之后再直接换成精细的模型

这种方法既可以高效的把控整体的布局,又可以集中精力在单个模型的雕刻上

blender采用了单向连通的数据结构

具体删什么,从下方的Manage unused data里面查看

点击叉是unlink,在blender中不是意味着删除,一切都是reference的存在

最终连接引用到子场景

xxx

一个数据块被多个数据块引用的时候,必然会想确认哪些数据块在引用 这个

blender file,outline里会分门别类的归纳所有的数据块

选择关联项即可选择所有关联此数据块的物体

可以引用外部的资产

物体的移动,旋转缩放,三维信息都不可以修改,因为这些都是在源文件里的,都有确定的数值

代表该数据块的引用数据被重写,已经开启

回到最开始的link状态,(对于里面的单个数据可以点击右边,返回引用值,也可以整个点击选择非single)

为的是大型的多人合作文件编辑

Action 像是向量?改了原文件的位置,动作也会照搬过去?
不是“变化量”,而是“值”
Action 记录的是 某属性在某帧时的绝对数值,比如位置是 (2, 3, 0),旋转是 90°
所以如果你把物体从世界原点 (0,0,0) 移到 (5,0,0) 再播放相同的 Action,动作不会自动适配新位置,物体还是会跳回 Action 记录的原始位置。

不能完全“脱离任何物体”创建一个 Action


因为 Action 是为某个数据块(Data Block)服务的,而这个数据块通常是一个物体(Object)、骨架(Armature)、材质(Material)、形状键(Shape Key)或其它可动画的东西。

示例 1:绑定在物体上

你在 Cube 上插入一个位置关键帧,它的 Action 就记录在 Cube 的 Object 数据块里。

示例 2:你用 Shape Key 做脸部动画

此时 Action 是绑定在该物体的 Key 数据块(Shape Key 动画数据)上。

物体(Object)之间共用 Action:
  • 如果两个物体都没有父子关系,只要它们都具有 locationrotation_eulerscale 属性,

  • 那么你完全可以把一个物体的 Action 分配给另一个物体,产生一模一样的位置/旋转/缩放动画

2. 骨架(Armature)的 Pose 动画:
  • 如果两个骨架结构一样(骨骼名字相同、层级结构匹配),

  • 那么你可以把一个骨架的 Action 套用到另一个骨架上,动画会正常播放。

  • 用于多个角色共用一个“走路”、“打招呼”等动画动作非常常见。

3. 形状键(Shape Key)动画:
  • 如果两个模型都含有同样名称和顺序的 shape key(比如:Key 1、Key 2、Smile、Blink),

  • 那么 shape key 的 Action 是可以直接复用的。

❗️但注意两个关键点:

限制说明
动画路径必须一致比如物体动画路径为 "location"、Pose 动画路径为 "pose.bones[\"c_foot.l\"].location"
数据结构必须对应比如骨骼名、shape key 名、属性名一致,不然动画会“丢失目标”

两个数据块的内容不相同,也依然可以复用,只是找不到的部分不复用

动画相关编辑器(如:动画摄影表、曲线编辑器、驱动器、非线性动画编辑器)中显示内容的 决定因素

🔹1. 显示内容取决于活动物体(Active Object)
  • Blender 中,活动物体是最后一个被选中的、呈现浅橙色轮廓的物体

  • 在多数动画编辑器中(如 Dope Sheet/动画摄影表、Graph Editor、Drivers),默认只显示活动物体的动画数据(Action/Keyframes/F-Curves)。

多选时的表现
  • 默认状态下,只有活动物体的数据被显示。

  • 若你勾选了“显示所有选中对象的动画数据”(例如在动画摄影表左上角的下拉菜单中开启 “Only Selected” 的选项),则会显示所有选中对象的相关关键帧。

NLA 编辑器(非线性动画)
  • 显示内容与 Dope Sheet 类似,但它针对的是整个 Action 的片段(Strip)而不是单独关键帧。

  • 同样是以活动物体为主,但你也可以在侧边手动展开各对象来查看其 NLA Tracks。

下推(Push Down)

意思:把当前使用的 Action 推入 NLA 编辑器成为一条 NLA 轨道片段(Strip)

  • 将当前 Action 从“活动状态”转换成 NLA 条带(strip)

  • 结果:Action 不再可直接编辑,而是以一个 NLA 动画块的形式出现在 Nonlinear Animation(非线性动画)视图中。

  • 动作仍然生效(控制角色或物体运动),但不能直接在 Action Editor 修改,必须在 NLA 中操作。

  • 如果你需要制作多个动作(例如走、跳、跑),然后拼接混合——这一步是必须的

动作存放(Stash)

xxx

摄影表被个人认为用处不大,重点是这个action Editor

  • 在时间轴上拖动它们的位置,让它们按顺序或有间隔地播放;

  • 叠加多个动作进行混合(例如走路动作上加个晃头);

  • 设置“混合模式(Blend)”,如“替换”、“加法”、“乘法”等,控制动画混合方式;

  1. 启用“自动混入/混出”,让两个片段之间自然过渡;

  2. 设置循环或反向播放,在属性面板里一键控制;

  3. 暂时禁用某一个动画片段,不影响整体结构;

  4. 将这个 NLA 动画导出成片段资产(Action Asset)或 FBX/BVH 等用于引擎/剪辑/游戏中

所以现在nla是干什么的是了解了,大致上就是一个数据硬控制段,可以丢到一起,然后编辑多个数据硬控制的排列前后

Blender 场景和视图层(场景 视图层 集合之间的关系)_哔哩哔哩_bilibili

实际工作中,一般创建一个场景就可以

也就是view layer是存储同一套物体的显隐组合,方便整体预览的

自己额外塞进入的图(bitmaps)位图,那就会额外存到sbsar文件里

骨骼 Bone ❌ 不是独立数据块 它属于 Armature 的子结构

Rigify 面板中“生成绑定”按钮变成灰色(不可点击)

当前未选中 “Metarig”

Rigify 只能在选中 “Metarig”(元骨架,通常是 metarig 命名的 Armature)时才启用生成按钮。

✅ 解决方法:
  1. 在右侧 Outliner 中找到并选中 metarig 对象(通常是一个蓝色的小人图标的 Armature)

  2. 进入 对象模式(Object Mode)

  3. 再点击 “生成绑定” 按钮,应该就能使用了

Rigify 并不是一个“自动帮你绑定任意骨骼”的魔法插件(魔法插件,6),而是一个:

基于标准化模块化“模板骨架”来自动生成复杂控制器和绑定关系的工具。

也就是说:

你给 Rigify 的骨架它能不能识别?原因
自己乱建的一堆骨头❌ 无法识别它看不懂你要手指、脊柱、脸部还是尾巴
使用官方的 Metarig 模块搭建的骨架✅ 可以识别每个骨骼都有特定名字、位置、标记(比如 spine, arm, leg)

Rigify 为啥不识别你自建的骨架?

Rigify 的生成系统背后其实是一整套“模块系统”:

  • 每个 limb(四肢)都用预定义结构super_limb, basic_spine, fk_arm

  • 每个骨头都有 rig 类型、名字结构(如 upper_arm.Lhand.R

  • Rigify 用这些模块来判断你这是什么部位,然后自动套用 rig 脚本

自己手动创建骨骼没有这些结构,它就没法自动生成。

这些命名,被承包了,如果是你自己做,就要出一段骨骼,然后在模型mesh里挑出顶点组,起个名字和这个骨骼一样,这根骨头才接管对模型的移动(像这样的骨头还有一百多根,你懂的,)

我新建一个物体,里面两个顶点组,fuck1 和fuck2,我现在新建一段骨骼(也就带上了1)bone1,然后挤出bone2,我不用任何绑定插件,可以让bone1控制fuck1,bone2控制fuck2吗

ChatGPT said:

是的,完全可以不用任何插件,只靠手动设置,就能让:

  • bone1 控制 fuck1 顶点组的权重区域

  • bone2 控制 fuck2 顶点组的权重区域

这就是 Blender 最基础的绑定方式 —— 骨骼 + 顶点组 + 蒙皮修改器(Armature Modifier

amature修改器,就是物体-->讨要--骨骼的控制(而这种控制只能是同名的识别,是自己给顶点组命名的 屈从,不去迎合 骨骼的命名 就滚蛋)

以后这修改器蹩脚什么rig了,叫beg算了,这么卑微,靠

  • 切换到 “姿态位置”:看到的是你在姿势模式下对 Bone1/2 的移动/旋转后的效果,模型也会随之变形。

  • 切换到 “静置位置”:无论你做了什么动画或关键帧,骨骼都会回到编辑模式中的原始位置,模型也恢复默认变形状态。

切换“姿态位置 / 静置位置”确实不会改变任何数据。
它只是 在不同的显示方式之间切换,用于参考和检查
你看到的“切换样子”只是因为它显示了不同的数据状态(静置 vs 动画变换),但并不对数据本身产生写入或修改。

手动切换到「静置位置」,它就会暂停动画驱动,仅使用骨架原始绑定状态

Blender骨骼绑定必看基本知识1-绑定方式、姿态模式、应用变换_哔哩哔哩_bilibili

物体模式就可以看到这个动画

(骨骼的旋转和移动,只允许在姿态模式下进行)

同样的问题

删掉之后,那个姿态还是保留着的(这个数据是可以清除的,可以自己归零,最好是清除变换)

姿态模式下的骨骼,a全选

第一下是确认骨骼的大小结构,名称

只是创建一副形状上可以匹配 mesh 的骨骼

然后要match to rig

这会生成控制器(是控制骨骼的控制器,此时依然和mesh无关,只是为了做好骨骼的控制)

bind前,bind后

限制插针的类型,里面带上什么参数,这样关键帧只在限定的参数里进行修改

Coloso认为这里的关键帧数值的限定会更加简单一些

个人喜好而言的auto key

【Blender 基本功】1-2 视图控制_哔哩哔哩_bilibili

Blender 中物体的旋转行为,并不是默认以屏幕为面的法线进行旋转。它的旋转行为取决于你设置的「变换方向」和「旋转轴心点」,具体如下:

旋转的“轴向”:取决于左上角的变换方向(Transform Orientation)

你可以在界面左上角找到这个:

可选项有:

模式说明
Global世界坐标系方向
Local当前物体/骨骼自己的坐标系方向
Normal面或骨骼的法线方向(选择面时有用)
View与你说的「屏幕法线」最接近,Z轴朝屏幕外
Gimbal骨骼的旋转顺序轴
Cursor使用 3D 游标方向
Custom自定义轴向

旋转的“中心”:取决于中上部的「Pivot Point(旋转轴心)」设置

它决定了绕哪个点转,比如:

选项说明
Median Point默认,所有点的中心
Active Element以活动物体为中心
3D Cursor以 3D 游标为中心
Individual Origins每个物体绕自己转
Bounding Box Center所有物体包围盒中心
Cursor Active混合模式

Auto-Rig Pro 自动生成的骨骼系统(rig)具备这些特征:

  1. 统一的控制器命名和层级结构
    所有通过 Auto-Rig Pro 生成的控制器骨骼,比如 c_root, c_spine_01, c_arm_fk.l 等,都会使用相同的命名规范与组织方式(包括左右 .l/.r 后缀),这是 Action 可复用的核心前提。

  2. 一致的控制器数量与类型
    即使两个角色外形不同(高矮胖瘦),Auto-Rig Pro 会根据相同的模板结构生成同样数量、同样名称、相同用途的控制器。例如两个角色都会有 c_foot_ik.lc_hand_fk.r,尽管它们的具体位置不同。

  3. 支持跨模型的 Action 复用
    所以,只要你使用 Auto-Rig Pro 生成骨骼,并且动画是建立在这些控制器骨骼(Controller Bones)上——
    👉 就可以直接把一个角色的 Action 赋给另一个角色来播放,无需重新绑定

举个例子:

假设你给模型 A 做了一套走路动画:

  • 控制器 c_root, c_leg_ik.l, c_leg_ik.r 都有关键帧。

  • 你把这段动画保存成 walk_cycle 动作。

接下来你有模型 B,也用 Auto-Rig Pro 绑定了:

  • 虽然它腿长不同,但骨骼结构同样有 c_leg_ik.l,所以你可以直接在 B 身上使用 walk_cycle,动画立即生效。

骨骼结构是 ARP 自己定义的,不兼容 Rigify、Mixamo 等其它系统

  • 比如:

    • ARP 控制器命名为 c_arm_fk.lc_spine_02c_foot_ik.r

    • 而 Rigify 会叫 MCH-upper_arm.LDEF-thigh.R 等,完全不一样

  • 所以:你不能直接把 ARP 的动作用在 Rigify 或 Mixamo 角色上,反之亦然。

在action直接切换,状态就无所谓了

action是一个帧段的数据,所以可以切换(当前a中的31帧,切换到b后,立刻变成b action中的31帧)

如果当前在B action,那graph Editor里表现的也是b的帧段内的数据变化

这种情况a会消失,不能播放(a001也是一样的,都被挡住了)

然后是nothing,这就不会挡住,而到b之后会直接替换b action的帧段

b action的帧段长度是0到40帧

在nla里面,这种控制单位叫做strip,可以看到下面的action clip,里面“引用”的才是B 这个action

当然,改名字是更好区分开

repeat也是,都是nla的strip下才有的属性,而单独一个action此时就显得十分单调了

Animation月复杂,月有可能会使用nla(当然,这里肯定就会使用上了)

action里空了还会播放是理所当然的,因为nla里还有播放,如果action里选择了什么,那只是会创建一个最上面的track,这样播放的就是the个action,此时播放的是action而不是strip可控,所以需要压入nla的操作

增加一个左右摇晃腰部的运动效果

这个勾是控制这一行的参与的

也就是在上方的控制骨骼的动作段,是优先占用变换的控制的

换成add模式后,scale变的很大

先action Editor里切换到c的动作,然后在graph Editor里查看这个动作里的曲线

发现scale虽然没有动,但是打了关键帧,(所以两个动画的值直接相加了)

这里值得注意的是scale,,明明c和a里的腰骨骼的scale都没有产生变化,只是都打了1,1,1的关键帧,但是add却相加了,使得模型在这一整段都2,2,2

去掉c的三个scale关键帧记录,这个问题就消失了,因为a的帧动作段里三个scale里定下了1.1.1

默认情况下,如果压入了一个action,实际的意义是 压入了一个帧段,里面挑中了几根骨骼,在这个帧段里,这些action里参与的骨骼如何transform被完全占领 

在这按下tab,也可以选中该strip里的action,在graph 里面查看这个action(不需要特意去action Editor里切换出这个动作了)

stash lower(以前是默认的设置)

这个选中的action还是只有一个,graph里显示的也只是显示的那个action,不同的只是选中这个之后播放的是否带上其他

50mm被称为标准镜头

一般的相机最小就是9到11mm,很难有比这还更广角的镜头了

广角镜头拍近景,导致的结果就是鱼眼镜头

超过50mm就是望远镜头了,普通相机的极限一般在300左右(当然也有600和1200,但一般摄影不用这么大)

靠近目标,但是广角镜头,这样简单来说就是会出现透视效果了,虽然看到的范围还是差不多的

广角增强透视感,望远(长焦)增强压缩效果

想拍摄宽广的风景,使用广角镜头更好

如果想拍摄类似产品、商品照片的东西,尽量让画面看起来更
清晰,所以使用长焦镜头更好。

如果希望从人的眼中看到宁静的风景,使用标准镜头更合适。

先给相机设置一个关键帧,这样不小心移动了也不会出问题

可以插关键帧的控制属性

这些设置并不只是“绑定”时的姿势辅助,而是设计为在动画过程中动态使用、可以插帧控制的动画参数,比如:

属性可否插帧作用
IK-FK Switch✅ 可以控制IK和FK混合程度,通常在一段动画中切换IK/FK时插帧
Fingers Grasp✅ 可以控制手指整体抓握弯曲,快速做出手部动作
Auto Stretch✅ 可以控制是否允许骨骼拉伸,可做夸张动画或柔性过渡
Arm Twist✅ 可以控制扭转程度,用于某些旋转纠正或风格动作
Elbow Pinning✅ 可以控制肘部是否锁定,做特殊撑地、打桩式动作时用得上
Pole Parent✅ 可以控制Pole目标的参考空间,角色旋转或切视角时防止pole乱飞

这些都可以在 Graph Editor / Dope Sheet 插关键帧,会以「自定义属性」的形式存在于控制骨骼上(比如 .L_arm_ik 这样的控制骨骼)。

不插帧,只用于一键操作或绑定时调整的功能

设置/按钮名插帧说明
Snap IK-FK❌ 不行用于IK ↔ FK切换时自动对齐姿势,不是动画属性
Snap Pole Parent❌ 不行切换Pole目标的绑定参考后进行姿势对齐
Snap Pinning❌ 不行同样是姿势对齐按钮
Reset All Pose❌ 不行清除当前骨骼的所有旋转位置等数据,恢复为Rest Pose
Snap Child Of❌ 不行管理Child Of约束时的瞬时绑定操作

  • "wiggle_enable[0]" 是一个 布尔值或整数/浮点数 类型的自定义属性,通常由某个插件、Rig系统(例如 ARP / Rigify)或你手动创建的驱动系统使用。

  • 它的功能由“谁引用了它”决定,比如头发物体的 wiggle(抖动)功能是否启用

  • 你设置了关键帧(红色线),表示在某些帧数它启用,在其他帧它关闭。

In Unity, the Universal Render Pipeline (URP) and the built-in render pipeline are two different systems for drawing your game's visuals on the screen. URP is a more modern and flexible system designed for cross-platform compatibility and performance optimization, while the built-in pipeline is the older, more traditional approach. URP is generally recommended for new projects, especially those targeting multiple platforms or requiring specific visual features

 

不是在学“Unity 的 Shader 写法”,而是在写传统前向渲染模型

  • 手动处理 MVP 变换;

  • 光照模型自己构建(如 Blinn-Phong、RimLight 等);

  • 多 Pass 控制写得清清楚楚;

  • 能拆解 ShadowCaster、Transparent 等技术。

👉 你已经在写“裸的渲染流程”了 —— 这意味着你可以理解 “SRP 本质上是如何重新组织这个流程”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值