在多个关键帧之间值完全一致,就会绘制出一条灰色水平线,表示:
-
🔹 该段时间里该属性没有动画变化
-
🔹 所以看起来像是 “恒定值”
-
🔹 这有助于快速识别“静止的部分”
属性值始终是本地的(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 编辑器:
-
在窗口左上角的编辑器类型里,切换到 NLA Editor(非线性动画编辑器)
-
如果当前对象有动画,点击 Push Down 按钮(把 Dope Sheet 动画转为条带)
-
你就能在 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:
-
如果两个物体都没有父子关系,只要它们都具有
location、rotation_euler、scale属性, -
那么你完全可以把一个物体的 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)”,如“替换”、“加法”、“乘法”等,控制动画混合方式;
-
启用“自动混入/混出”,让两个片段之间自然过渡;
-
设置循环或反向播放,在属性面板里一键控制;
-
暂时禁用某一个动画片段,不影响整体结构;
-
将这个 NLA 动画导出成片段资产(Action Asset)或 FBX/BVH 等用于引擎/剪辑/游戏中。

所以现在nla是干什么的是了解了,大致上就是一个数据硬控制段,可以丢到一起,然后编辑多个数据硬控制的排列前后
Blender 场景和视图层(场景 视图层 集合之间的关系)_哔哩哔哩_bilibili



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

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


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

骨骼 Bone ❌ 不是独立数据块 它属于 Armature 的子结构
Rigify 面板中“生成绑定”按钮变成灰色(不可点击)
当前未选中 “Metarig”
Rigify 只能在选中 “Metarig”(元骨架,通常是 metarig 命名的 Armature)时才启用生成按钮。
✅ 解决方法:
-
在右侧 Outliner 中找到并选中
metarig对象(通常是一个蓝色的小人图标的 Armature) -
进入
对象模式(Object Mode) -
再点击 “生成绑定” 按钮,应该就能使用了
Rigify 并不是一个“自动帮你绑定任意骨骼”的魔法插件(魔法插件,6),而是一个:
基于标准化模块化“模板骨架”来自动生成复杂控制器和绑定关系的工具。
也就是说:
| 你给 Rigify 的骨架 | 它能不能识别? | 原因 |
|---|---|---|
| 自己乱建的一堆骨头 | ❌ 无法识别 | 它看不懂你要手指、脊柱、脸部还是尾巴 |
| 使用官方的 Metarig 模块搭建的骨架 | ✅ 可以识别 | 每个骨骼都有特定名字、位置、标记(比如 spine, arm, leg) |
Rigify 为啥不识别你自建的骨架?
Rigify 的生成系统背后其实是一整套“模块系统”:
-
每个 limb(四肢)都用预定义结构(如
super_limb,basic_spine,fk_arm) -
每个骨头都有 rig 类型、名字结构(如
upper_arm.L、hand.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)具备这些特征:
-
统一的控制器命名和层级结构
所有通过 Auto-Rig Pro 生成的控制器骨骼,比如c_root,c_spine_01,c_arm_fk.l等,都会使用相同的命名规范与组织方式(包括左右.l/.r后缀),这是 Action 可复用的核心前提。 -
一致的控制器数量与类型
即使两个角色外形不同(高矮胖瘦),Auto-Rig Pro 会根据相同的模板结构生成同样数量、同样名称、相同用途的控制器。例如两个角色都会有c_foot_ik.l或c_hand_fk.r,尽管它们的具体位置不同。 -
支持跨模型的 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.l、c_spine_02、c_foot_ik.r -
而 Rigify 会叫
MCH-upper_arm.L、DEF-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 本质上是如何重新组织这个流程”。
2483

被折叠的 条评论
为什么被折叠?



