2026-05-19

Blender-Armatures

1. Blender-Armatures
	1.1 骨架位置
	1.2 分类
	1.3 骨骼结构
2. 编辑
	2.1 骨骼扭转
	2.2 拆分 split
	2.3 分离骨骼 separate
	2.4 切换方向
3. 镜像编辑
	3.1 镜像挤出
	3.2 命名惯例
	3.3 对称
4. 属性
	4.1 属性结构表
	4.2 柔性骨骼 Bendy Bones
	4.3 姿态
	4.4 关系
5. 骨骼约束
	5.1 骨骼约束列表
	5.2 IK 反向运动学
	5.3 为骨骼添加 IK

1. Blender-Armatures

"骨架(armature)" 是用于绑定用的,而绑定相当于木偶(傀儡)的装配器和牵线来控制网格物体的变形。
以下是阅读手册摘录的部分内容,详细内容见Blender手册页。

1.1 骨架位置

  1. Rest Position 静置位置(简体翻译),静止位置(繁体翻译),
  2. Post Position 姿态位置。Pose,姿态(简体翻译),姿势(繁体翻译)
  • 右侧骨架属性区域,可以在Pose下切换这2种骨架位置。
  • 姿态模式下,可用 Ctrl A 将当前 姿态位置Post  应用为 静置位置Rest。
  • 如果在播放动画时,某个骨架不动了,可以检测右侧骨架属性,是否将姿态设置为Rest静止位置。

1.2 分类

Deform 形变 属性 位于右侧 骨骼属性面板。
  • Deforming Bones 变形骨骼:启用“变形”设置的骨骼会带动 vertices 顶点一起移动。
  • Control Bones 控制骨骼:禁用“变形”设置的骨骼不会拖动任何顶点。相反,它们通常用于控制其他骨骼。
注: Deform, 翻译有时用变形,有些地方会用形变。主要是针对人或动物肢体的肌肉组织。 但对于关节使用轴承的机器人,机械的运动,通常不需要考虑这部分的设置。

1.3 骨骼结构

骨架由骨骼Bone组成。1段或多端彼此连接或不连接的骨骼。
骨骼有三个基本元素:
  • "开始的关节" 叫 根部 (root) 或 头部 (head)。
  • "body (身体)" 部分是骨骼的主体。
  • "结束关节" 部分叫 顶端 (tip) 或 尾端 (tail)。
在编辑模式选择默认的骨架,在这个模式你可以选择根部(root)和尾端(tip),像操作网格顶点一样移动它们。
根部(root)和尾端(tip)(也叫 "关节" Joints)它们各自的位置定义了骨骼。
它们都有半径属性,但只在封套变形模式下有用(见下文)。

扭转
激活轴向复选框将显示每个骨骼尖端的局部轴。 Y 轴始终沿着骨骼对齐,从根部到尖端,这是骨头的 "滚动" 轴。

2. 编辑

Important
了解关于骨架编辑的一个重要之处是编辑骨架的 重置位置,即其 "默认状态"。
骨架位于 重置位置 所有骨骼 没有 旋转并在其局部空间所有缩放到1.0.

你可能之后会创建基于此静置位置的不同姿态。 所以如果你在 编辑模式 下修改它,已经存在的所有姿态也将被修改。
因此,你通常应该在开始蒙皮和姿态之前,确保你的骨架是确定的!

Note: 请注意,一些工具适用于骨骼的关节,而其他工具可以在骨骼本身上工作。小心不要混淆。

变换
骨骼的根部和尖端的行为或多或少类似于网格的顶点,而骨骼本身的行为类似于网格中的边缘。 
骨骼有两种关系:它们是父子关系和连接关系。 

需要注意的是当调整骨(通过直接进行缩放,或者通过移动其关节中的一个)大小时,Blender 自动校正它的封套的末端半径。
因此,建议首先放置所有骨骼,然后才能编辑这些属性。

2.1 骨骼扭转

骨骼滚动是骨骼静止姿态的一部分,它定义了骨骼绕其长度方向的默认旋转。
编辑模式 下可以控制骨骼滚动。
  • 菜单: 骨架 ‣ 骨骼扭转 ‣ (重算扭转/设置扭转/清除扭转)
  • 快捷键: Shift-N 重算扭转. 自动将所有选定骨骼的滚动方向与各种参考点对齐。
  • 快捷键: Ctrl-R 设置扭转. 调整所有选定骨骼的扭转。
  • 快捷键: Alt-R 清除扭转. 将所有选定骨骼的扭转设置为 0°.

2.2 拆分 split

快捷键: Y 或者 菜单: 骨架 ‣ 拆分
拆分 操作会将所选骨骼与骨架的其余部分断开,创建一个新的、无连接的骨骼链。
注意: 此运算符仅影响骨骼连接;骨骼仍位于同一骨架对象内。

2.3 分离骨骼 separate

快捷键: P 或者 菜单: 骨架 ‣ 分离骨骼
你可以像网格那样,分离骨骼为一个新的骨骼物体通过 骨架 ‣ 分离 或 Ctrl-Alt-P, 当然,在 物体模式 下,你可以将所有选择的骨架合并为一个骨架物体,通过 物体 ‣ 合并 或 Ctrl-J.

2.4 切换方向

快捷键: Alt-F 或者 菜单: 骨架 ‣ 切换方向
该工具用于切换所选骨骼的方向(即它们的头部将成为其尾端,反之亦然)。
切换骨骼的方向通常会破坏它所属的链条。
但是,如果你换整个(一部分)链,则切换的骨骼仍将保持父子和链接关系,但是以 "相反的顺序"。

3. 镜像编辑

3.1 镜像挤出

骨骼有一个额外的 "镜像挤出" 工具,通过按 Shift-E 来调用。默认情况下,它的行为与标准拉伸完全相同。
但是,一旦您启用了X 轴镜像编辑选项,每个拉伸的提示将产生 两个新骨骼,除了 "_L"/ "_R" 后缀(对于左/右,请参阅命名约定)之外具有相同的名称。
"_L" 骨骼的行为类似于默认拉伸产生的单个骨骼 -- 您可以以完全相同的方式移动,旋转或缩放它。
"_R" 骨骼是它的镜像对应物(沿着骨架的局部 X 轴),参见图 镜像挤出示例。。

3.2 命名惯例

在Blender命名习惯不仅仅是用于找到正确的骨骼,也告诉Blender哪两个骨骼是配对骨骼。

如果骨架可以镜像另一半(即它是两侧对称),这是值得坚持左/右命名的约定。
这将使您能够使用一些工具,可能会节省您的时间和精力(如 X 轴镜像 的编辑工具,我们上面看到的...)。
有效的分隔符示例:
  • (无): handLeft --> handRight
  • "_" (下划线): hand_L --> hand_R
  • "." (点): hand.l --> hand.r
  • "-" (破折号): hand-l --> hand-r
  • " " (空格): hand LEFT --> hand RIGHT
自动命名
菜单: 骨架 ‣ 名称 ‣ 自动命名左/右、前/后、上/下
骨架 ‣ 名称 的三个 自动命名 条目允许您根据其头部相对于骨架原点及其局部坐标的位置,自动为所有选定骨骼添加后缀:
  • 自动命名左/右:正 X 坐标根部添加".L"后缀,负 X 坐标根部添加".R"后缀,0坐标加"."。
  • 自动命名前/后:正 Y 坐标根部添加 ".Bk" 后缀,负 Y 坐标根部添加 ".Fr" 后缀,0坐标加"."。
  • 自动命名上/下:正 Z 坐标根部添加 ".Top" 后缀,负 Z坐标根部添加 ".Bot" 后缀,0坐标加"."。
翻转名称
菜单: 骨架 ‣ 名称 ‣ 翻转名称
您可以在选定的骨骼名称中翻转左/右标记(参见上文)。
Blender将根据上述命名约定交换骨骼名称中的文本,并在可能的情况下删除数字扩展名。

3.3 对称

“对称化”运算符会使用 Blender 的对称骨架骨骼命名规则,沿 X 轴镜像选定的骨骼 。
骨骼可以 左到右镜像,也可以 右到左镜像,具体取决于选择情况。

对称骨骼和约束属性会进行调整,以反映它们的行为。
对于带有动作约束的骨骼,会在目标动作中添加关键帧,以确保在动作激活时运动对称。

注意:对称化过程中不会创建或影响骨骼或约束驱动器。

4. 属性

4.1 属性结构表

属性 物体模式
Object Mode
编辑模式
Edit Mode
姿态模式
Pose Mode
物体
Object
变换,关系,集合,运动路径
可见性,视图显示,动画,
数据
Data
姿态: (姿态位置, 静置位置)
骨骼集合, 选择集, 运动路径
IK 反向运动 – 解算: (标准, iTaSC)
视图显示, 动画, 自定义属性
骨骼
Bone
°-° 变换 Transform
柔性骨骼 Bendy Bones
关系 – 继承缩放:
(完整, 修复切变, 对齐, 平均, 无)
°-° °-° IK 反向运动
(…)
Deform形变, 视图显示, 自定义属性
约束 °-° °-° 骨骼约束
* 表中,橙色表示骨骼特有的属性。°-°表示该模式下没有本行属性。
更多详细信息,参阅手册页:
除了前面提到过的:骨架位置状态,Deform形变,还有如下几项骨骼特有的属性。
柔性骨骼 Bendy Bones,骨骼关系,IK 反向运动和 FK,骨骼约束

4.2 柔性骨骼 Bendy Bones

柔性骨骼(B-Bones)是取代许多小型刚性骨骼长链的简单方法。弯曲骨骼主要用于脊柱模型或面部骨骼。
显示:只有骨骼视图显示设置为 柔性骨骼 才能看到这些分段。
当视图显示不是 柔性骨骼 时,即使骨骼分段仍然存在并且有效,骨骼总是显示为刚性棍形。
这意味着即使在例如 八面体 可视化的显示方式,如果链中的一些骨头有分段,他们仍然会使他们的几何体平滑变形。

柔性骨骼有两组弯曲骨骼属性 -- 一组用于编辑模式(即静置姿态/基础绑定),另一组用于姿态模式 -- 将它们的值相加或相乘以获得最终变换。
Blender 将柔性骨骼看成通过骨骼关节的贝塞尔曲线一部分。骨骼两端的手柄以控制曲率。

4.3 姿态

Bone State Colors 骨骼的状态颜色
骨骼的颜色基于它们的状态。有六种不同的颜色代码,在这里按优先级排序(即骨骼将是最底部有效状态的颜色):
  • 灰色:默认的。
  • 蓝色线框:处于姿态模式。
  • 绿色:带有约束。
  • 黄色:带有 IK解算约束。
  • 橙色:带有无目标解算器约束。
Note:当 骨骼配色 被启用时,状态颜色将被覆盖。

当设置你的骨架的姿势时,你应该有一个或多个物体的皮肤在上面!
很明显,当你在 姿态模式 下变换一根骨骼时,它的相关物体或物体的形状会相应地实时移动、变形。
不幸的是,如果你有一个复杂的控制器设置和/或一个厚重的蒙皮对象,这可能会在交互式编辑中产生滞后。
如果你遇到这样的麻烦,可以尝试启用 骨架 面板中的 延时变形 按钮,蒙皮对象只有在你确认转换操作后才会被更新。

4.4 关系

在此面板中,您可以管理此骨骼与其父骨骼的关系。它还会显示此骨骼所属的骨骼集合。
骨骼关系对变换行为的影响。默认情况下,子骨骼继承:
  • 其父位置与自身的偏移量。
  • 其父旋转的角度 (即他们保持恒定旋转相对于其父级)。
  • 其父缩放,与自身偏移量。
这些继承行为将沿骨骼的层次结构传播。所以当你缩小骨骼时,它的所有后代子级按默认值相应缩小。
但是,如果在此 "系列" 中设置了一个骨骼的 继承缩放 或 继承旋转 属性,这将打破继承传播,当你缩小它的祖先(父级)时,这个骨骼 和它所有的后代(所有的子级) 将不再受到影响。

  • 完整: 骨骼继承父级缩放和剪切的所有效果。
  • 修复切变: 将完整的父级效果应用于子级的静置状态,之后以保留骨骼方向、长度和体积的方式去除任何剪切,并且最小程度地影响平均滚动。结果与子级的自身变换相结合。如果继承的比例不均匀,这不会阻止剪切由于子级骨骼或其子级的局部旋转而重新出现。
  • 对齐: 父级缩放是继承的,如同子级的方向与父级相同,始终在子级 X缩放基础上应用父级 X 缩放,等等。
  • 平均: 继承表示父级体积总体变化的均匀缩放系数。
  • 无: 忽略父级的所有缩放和剪切。
  • 无(旧版): 忽略所有缩放,前提是父级未被切。如果是,则不能保证。
    • 此选项将复制旧 “继承缩放” 复选框的行为,并可能在将来的版本中删除。
Tip
  • 各种 继承缩放 选项作为工具提供,以避免由不均匀缩放与父级指定和旋转结合引起的切变。
  • 没有明显的最佳方式来实现这一目标,因此不同的选择对不同的情形是有用的。
  • 无 - 用于完全控制子对象的缩放,例如,手动使用约束覆盖其缩放。
  • 平均 - 用于阻止子骨骼之间的挤压和拉伸传播,同时允许尺寸和体积的均匀变化传递。
  • 对齐 – 可用于骨骼链(例如触手),以便无论触手如何弯曲,都能使纵向缩放按纵向传播,横向缩放按横向传播。 类似于将“无”设置为“从父对象复制缩放”。
  • 固定剪切 – 可用于附属物的根部,以便根据父对象和子对象静止姿势方向的差异,重新分配轴向之间的挤压和拉伸。 它的行为最接近“完全”,同时抑制剪切。
因此,在调整骨骼链的姿势时,应该始终从根骨到末端骨逐一编辑。
这个过程称为正向运动学 Forward Kinematics (FK)。
我们将在后面的页面中看到,Blender 还提供了另一种姿势调整方法,称为反向运动学 Inverse Kinematics (IK),它允许您仅通过移动末端骨来调整整个骨骼链的姿势。

5. 骨骼约束

5.1 骨骼约束列表

骨骼约束仅在骨骼的姿态模式下可用,如下是骨骼约束列表。
和普通约束相比,多了IK反向运动学 Inverse Kinematics 和样条线 Spline IK。
运动追踪 Motion Tracking 变换 Transform 关系 Relationship
摄像机结算 Camera Solver 复制位置 Copy Location 动作 Action
跟随轨迹 Follow Track 复制旋转 Copy Rotation 骨架 Armature
物体结算 Object Solver 复制缩放 Copy Scale 子级 Child Of
复制变换 Copy Transforms 基面 Floor
追踪 Tracking 限定距离 Limit Distance 跟随路径 Follow Path
钳制到 Clamp To 限定位置 Limit Location 几何属性 Geometry Attribute
阻尼追踪 Damped Track 限定旋转 Limit Rotation 轴心 Pivot
反向运动学 Inverse Kinematics 限定缩放 Limit Scale 缩裹 Shrinkwrap
锁定追踪 Locked Track 维持体积 Maintain Volume
样条线 IK Spline IK 变换 Transformation
拉伸到 Stretch To 变换缓存 Transform Cache
标准追踪 Track To

5.2 IK 反向运动学

反向运动学(IK)简化了动画过程,并使得以更少的工作量制作更高级的动画成为可能。
反向运动学允许您将骨骼链中的最后一个骨骼定位,其他骨骼会自动定位。
这就像移动某人的手指会导致他们的手臂跟随它一样。

5.3 为骨骼添加 IK

模式: 姿态模式
  • 快捷键: Shift-I 或者 (菜单: 姿态 ‣ 反向运动学 ‣ 为骨骼添加 IK) 或者 (右侧属性区\骼约束面板里添加)
  • 快捷键: Ctrl-Alt-I 或者 (菜单: 姿态 ‣ 反向运动学 ‣ 移除 IK) 从所选骨骼中移除反向运动学约束。
初始链长度为 0,这实际上意味着尽可能遵循与父骨骼的连接,没有长度限制。
因此,第一次按下增加链长度会将长度设置为 1(仅移动所选骨骼),此时,减小长度点会再次将其设置回 0(无限制)。

2026-05-11

Blender-Rigid-Body

0. Blender Physics
1. Rigid Body
	1.1 刚体类型
	1.2 刚体形状
	1.3 更多刚体属性
2. Constraint 刚体约束类型
	2.1 Fixed 固定约束
	2.2 Point 点约束
	2.3 Hinge 铰链约束
	2.4 Slider 滑块约束
	2.5 Piston 活塞约束
	2.6 Generic 泛型约束
	2.7 Generic Spring 通用弹簧约束
	2.8 Motor 电机约束
3. 刚体实例
	3.1 Pendulum-clock
	3.2 Newton-cradle
	3.3 Galilean cannon
	3.4 其他简单模拟
	3.5 齿轮模拟

 Blender-Rigid-Body

0. Blender Physics

Blender 的物理系统用于模拟一些现实世界的不同物理现象。
您可以使用这些系统创作各种静态和动态的特效,比如:毛发、草地和集群,雨,烟雾和灰尘,水,布料,果冻,等等。
Blender 的物理系统包含8个模块: 
  • Force Field, 力场; 
  • Collision, 碰撞; 
  • Cloth, 布料; 
  • Dynamic Paint, 动态绘画; 
  • Soft Body, 软体; 
  • Fluid, 流体; 
  • Rigid Body, 刚体; 
  • Rigid Body Constraint, 刚体约束; 

1. Rigid Body

刚体模拟可用于模拟固定的运动。它会影响物体的位置和方向,并且不会使物体变形。
和Blender中的其它模拟不同,刚体模拟与动画系统的工作模式更接近。
这意味着刚体可以像常规对象一样使用,并且可以是父子关系,动画约束和驱动程序的一部分。
只有网格对象可以成为刚体模拟的一部分。

1.1 刚体类型

有两种类型的刚体:
  • 活动: 该对象是动态的,由仿真结果直接控制。
  • 被动: 该对象保持静态,直接由动画系统控制,因此没有 动力 属性。
使用 动画 选项时,这两种类型都可以由动画系统驱动。

在模拟过程中,刚体系统将覆盖动态刚体对象的位置和方向。
但请注意,对象的位置和旋转不会更改,所以刚体模拟的行为类似于约束。
要应用刚体变换,你可以使用 应用对象转换 运算符。

1.2 刚体形状

确定物体的碰撞形状;这些形状可以分成两类:原始形状和基于网格的形状。
  • 原始形状(方形、球形、胶囊、柱形 和 锥形)在内存和性能方面是最好的但不一定反映物体的实际形状。它们是根据物体的边界框来计算的。重心始终位于形状的几何中心。原始形状可以通过启用额外叠加层在三维视口中显示。
  • 基于网格的形状(凸壳 和 网格)是根据物体的几何形状来计算的,所以它们能更好地表现物体。这些形状的重心是物体的原点。
比如:墙体,篮球,木桶就可以直接用这里的方形,球形,柱形。但若要模拟齿轮啮合就只能使用网格。

1.3 更多刚体属性

2. Constraint 刚体约束类型

2.1 Fixed 固定约束

此约束导致两个对象作为一个物体移动。 由于此物理系统确实有一点斜率,因此物体不会像它们是相同网格的一部分那样严格的移动。

2.2 Point 点约束

物体由点关系连接,允许围绕约束物体的位置进行任何类型的旋转,但不允许相对平移。 物理引擎将尽力确保在两个约束物体上指定的两个点一致。
例: 比如模拟单摆运动,摆锤上方需要锚定到某点,摆锤则被约束到围绕该点旋转。

2.3 Hinge 铰链约束

铰链允许两个物体之间有一个自由度。翻译是完全受约束的。
允许围绕承载物理学约束的对象(通常是一个空物体,与被链接的两个对象不同)的Z轴进行旋转。
调整承载约束的对象的位置和旋转可以控制铰链的锚和轴。
铰链是唯一使用Z轴而不是X轴的单轴旋转约束。
小结: 空物体(hinge)铰链的 Z 轴必须与从动轮旋转轴对齐!

2.4 Slider 滑块约束

滑块约束允许约束物体沿着X 轴相对平移,但不允许相对转动,或沿着其它轴相对平移。

2.5 Piston 活塞约束

活塞允许沿约束物体的X 轴平移。它还允许围绕约束物体的X 轴转动
它就像滑块的自由度和铰链的自由度的结合(两者都不是非常自由的)。

2.6 Generic 泛型约束

泛型约束具有许多可用的参数。
X、Y 和 Z 轴约束具有可用于现在物体之间的平移量。 将最小值/最大值固定到零具有与点约束相同的效果。
将相对转动固定到零可使物体保持对齐。 结合绝对旋转和绝对平移固定的行为与固定约束非常相似。
对任何参数使用非零扩散允许它在整个仿真过程中在该范围内振荡

2.7 Generic Spring 通用弹簧约束

泛型弹簧约束将X/Y/Z 轴的一些弹簧参数添加到泛型约束上可用的所有选项。
单独使用弹簧允许物体反弹,就像附着在锚定在约束物体上的弹簧一样,这通常有点过于自由,因此大多数应用都将受益于启用转换或旋转约束。

如果弹簧上的阻尼设置为1,则防止弹簧力重新调整锚点,从而导致奇怪的行为。 如果你的弹簧很奇怪,请检查阻尼。

2.8 Motor 电机约束

机动约束导致两个实体之间的平移和/或转动。它可以将两个物体分开或一起驱动。
它可以驱动简单的转动,或转动和平移(尽管它不会像螺丝一样受到约束,因为平移可以被其它物理特性阻挡而不会阻止转动)。

旋转轴是承载约束物体的X 轴。这与使用Z 轴的铰链形成对比。
由于机动在没有匹配的铰链约束的情况下容易受到混乱的扰动,因此必须特别注意对齐轴。
如果没有正确对齐,机动似乎没有效果(因为铰链阻止了机动的运动)。
小结: 空物体(motor)的 X 轴必须与驱动轮旋转轴对齐!

3. 刚体实例

3.1 Pendulum-clock

上周使用简单驱动器实现秒摆的模拟,简单总结如下: 
一个球体,围绕其上方10单位高度点旋转摆动。旋转Y轴填入驱动器公式 #sin(frame/7.6)/11.4 完成!

今天尝试使用 Rigid Body,模拟秒摆
  • 新建: 光滑球体,
    • 物理\刚体设置为 活动项。Rigid Body Type: Active
    • 形状选球体。Shape: Sphere
    • 动力\阻尼转换缩小10倍,0.004
  • 新建平板,上升10单位。
    • 物理\刚体设置为设置为 被动
    • 刚体约束类型设置为 点。Rigid Body Constraint Type: Point
    • 物体选择,First: 球体;Sec: 平板自身
  • 光标移动到平板位置,旋转轴选光标
  • 旋转球体约5°,然后 空格 播放。查看效果。
有点慢。场景 \ 刚体世界 \ Speed 改为 pi
再次播放,查看效果。完美,2秒完成一个周期。(Blender 5.1)
 

3.2 Newton-cradle

该装置以17世纪英国科学家艾萨克·牛顿爵士的名字命名,由法国科学家埃德姆·马里奥特(Edme Mariotte)于1676年设计(牛顿摆)
它也被称为牛顿摆、牛顿球、牛顿摇杆或执行球点击器(因为该装置每次小球碰撞时都会发出咔哒声,而小球的碰撞以稳定的节奏反复进行)。
注: 摆钟由克里斯蒂安·惠更斯于1656年发明。其最佳精度从每天约15分钟的偏差提高到每天约15秒。

牛顿摆是一种通常由金属制成的装置,它通过摆动的球体来演示物理学中的动量守恒和能量守恒原理。
  • 每次撞击都会产生一个声波,该声波会在中间球体之间传播。
  • 在摆动过程的每个阶段,都会有效地损失机械能,牛顿摆并非永动机。
  • 即使在没有空气阻力的情况下,例如在真空中,这一结论也仍然成立。
Blender模拟过程和上一节一样,再复制5份排列好即可。

3.3 Galilean cannon

在物理学中,伽利略炮(以伽利略·伽利莱的名字命名)是一种演示动量守恒的装置。
它由一叠球组成,从底部一个又大又重的球开始,向上依次递减到顶部一个又小又轻的球。
其基本原理是,当这叠球落到地面时,从下到上,每个球都会与下方已经向上运动的球发生碰撞,或者与它下面的球发生碰撞。
对于一个由两个球组成的伽利略炮,假设球体具有完全弹性且质量差异很大,那么最上面那颗球的向上速度的理论极限是碰撞前下落速度的三倍。
在反弹过程中,速度比会随着一系列向上碰撞而不断放大,因此最上面的球最终会反弹到其下落高度的数倍。
双球炮的最大反弹高度是原始下落高度的32 = 9 倍。
乍一看,这种现象似乎非常违反直觉,但实际上,这正是动量守恒定律的预测。
可以通过假设球体之间的间隙很小,并分别考虑每次碰撞来推导出这个结果。

主要难点在于如何保持小球在初始下落过程中的稳定排列。早期的描述中提到使用某种胶水/胶带 、管子或网来固定小球。
埃德蒙科学公司曾推出过一种现代版的伽利略炮,至今仍以“太空爆破器”(Astro Blaster)的名称销售。
在该装置中,一根粗线穿过所有小球以保持它们的精确排列——但原理相同。
由此产生的反弹力非常强劲;事实上,由于眼部安全问题日益突出,这款玩具现在都配备了安全护目镜。

用两个球,例如篮球和网球,就可以更简单地演示这个原理。
如果实验者将网球放在篮球上保持平衡,然后将这两个球一起扔到地上,网球会反弹到它被扔出高度的数倍。

Blender 模拟
列出球体计算公式,球表面积: 4πr2; 球体积: 4/3πr3。相同材质,密度一样,体积和质量正比。
不同球体体积的差异是 r3 比。那么质量也是如此。
建立3个球体。半径分别为:1,0.5,0.2。那么体积比则为:
1:0.125:0.008
建模,3个球体沿着Z轴紧挨着重上往下,从小到大排列。同时选择,G,Z,5,向Z轴移动5个单位。
在球体下方5单位处,新建一个平板,刚体类型设置为被动。
3个球体的刚体类型设置为活动, 质量分别为: 1, 0.125, 0.008, 或者他们的倍数即可。将表面响应的弹跳力跳到0.9
空格,播放 ...。这个过程的模拟还有待修正完善。

3.4 其他简单模拟

小球或木桶滚下山坡,硬币或轮胎滚下楼梯撞到障碍物 ... 
这些都直接使用刚体形状的原始形状,效果很好,烘培速度也快。

3.5 齿轮模拟

需要使用基于网格的形状,这对建模有要求。还会用到如下2个刚体约束。
Hinge 铰链约束; Motor 电机约束

如果添加了刚体,旋转不畅,抖动,弹开,就要检查建模。
  • 表面太大,可以增加 Ctrl R 环切。
  • 打开 右上角,试图叠加层\面朝向,若有表面法向问题,编辑模式下,全选,Shift N,重置法向。
  • 适当添加倒角... 适当拉开一点点距离... 
刚体设置: 
  • 基本设置: 
    • 齿轮: 刚体\活动 (齿轮的形状 统一设置为网格,敏感度为0)
    • 圆柱体: 刚体\被动 (同一轴向的多个齿轮,只需要1个)
    • 空箭头: 刚体约束\ (1个机动,每个齿轮搭配1个铰链)
  • 空物体的轴向: 
    • 空物体(hinge)铰链的 Z 轴必须与从动轮旋转轴对齐!
    • 空物体(motor)的 X 轴必须与驱动轮旋转轴对齐!
  • 刚体约束的物体的选择: 
    • [起始点]物体始终是各自对应的齿轮,[第二]物体是齿轮的轴向圆柱体。
具体操作约3周前的差速器 Differential-Gear 一文有详解。

2026-05-08

Simulate-pendulum-motion-using-Blender

1. Pendulum
	1.1 周期公式
	1.2 摆钟
	1.3 航海钟
	1.4 秒摆和米
2. 使用Blender模拟摆运动
	2.1 秒摆-简单驱动器
	2.2 摆动画-曲线编辑器
	2.3 有点粗糙的关键帧模拟
	2.4 其他可用Blender的物理特性模拟
3. 秒摆-驱动器进阶
	3.1 带变量的驱动器公式
	3.2 设置变量 fps
	3.3 设置变量 length
	3.4 设置变量 amp
	3.5 摆插件

1. Pendulum

摆是一种实验仪器,可用来展现种种力学现象。最基本的摆由一条绳或竿,和一个锤组成。
锤系在绳的下方,绳的另一端固定。当推动摆时,锤来回移动。摆可以作一个计时器。

1.1 周期公式

摆的周期随着振幅θ₀(摆动的宽度)的增加而变长。
单摆的摆动周期取决于其长度、当地重力强度,以及摆锤偏离垂直方向的最大角度θ₀(称为振幅)。 它与摆锤的质量无关。

如果振幅被限制在较小的摆动范围内。角度远小于 1 弧度(通常认为小于 0.1 弧度,约 6°)θ₀≪1
在小角度近似下,单摆的运动可以近似为简谐运动。其中θ₀为振幅(即摆杆与竖直方向之间的最大夹角)。相应的近似周期为:
T≈2π√(L/g)
其中,L为摆长,g为当地的重力加速度。

摆长为 1米的单摆,于地表处作小角度摆动可近似为简谐运动,周期 T≈2s 这种单摆称之为秒摆。

1.2 摆钟

摆钟是以一种称为钟摆的摆动重锤为计时装置的时钟。
使用钟摆计时的优势乃是因其为一谐振子,钟摆基于其摆长以同一频率反复振动,且其振动单一而稳定。
从1656年克里斯蒂安·惠更斯正式发明摆钟以来直到20世纪30年代,基于摆钟的普遍程度,摆钟一直保持着世界上最精确的计时装置的地位。

钟表匠们意识到只有摆幅较小的摆锤(几度)才能保证走时同步,这促使罗伯特·胡克在1658年左右发明了锚式擒纵机构,将摆锤的摆动幅度缩小到4-6°。
  • 秒摆(也称皇家摆),长0.994米(39.1英寸),周期为两秒,被广泛应用于高档钟表。
  • 座钟则使用半秒摆,长度为25厘米(9.8英寸)或更短。
  • 只有少数大型塔钟使用更长的摆,例如1.5秒摆,长度为2.25米(7.4英尺),
  • 或者偶尔使用两秒摆,长度为4米(13英尺),例如大本钟使用的那种摆。
到17世纪末,秒摆的长度成为衡量某一地点重力加速度的标准。
到1700年,欧洲多个城市的秒摆长度测量精度已达到亚毫米级。
对于秒摆而言,重力加速度g与其长度成正比:g∝L

1667年,惠更斯在钟摆上加了1个齿轮,令其更加可靠,但无法在颠簸摇晃的船上使用。
最后用1具由两个弹簧推动的摆轮代替钟摆,从而造出航海钟。

1.3 航海钟

航海天文钟是一种精密计时器,安装在船上,用于通过天文导航确定船舶位置。
它通过比较格林尼治标准时间(GMT) 和根据天体观测确定的当前位置时间来确定经度。
航海天文钟最初于 18 世纪发明,是一项重大的技术成就,因为在缺乏电子或通信辅助设备的时代,精确掌握远洋航行中的时间对于有效导航至关重要。
第一台真正意义上的航海天文钟是约翰·哈里森毕生心血的结晶,他历经 31 年坚持不懈的实验和测试,彻底革新了海上(以及后来的航空)导航。

1.4 秒摆和米

Meter
在1791年法国采用公制之前的讨论中,定义新长度单位——米——的主要候选方案是北纬45°的秒摆。
这一方案由法国政治家塔列朗和数学家安托万·尼古拉·卡里塔·德·孔多塞领导的小组提出。
这是法国科学院委员会考虑的三个最终方案之一。
然而,1791年3月19日,委员会最终选择以穿过巴黎的子午线长度为基础来定义米。
秒摆的定义被否决的原因是其在不同地点存在差异,而且它是用时间单位来定义长度。
不过,自1983年以来,米的官方定义已改为以秒的长度和光速为基础。
另一个可能的原因是,激进的法国科学院不希望他们的新系统以秒为基础,因为秒是旧制度下的传统非十进制单位。

尽管米的长度并非由摆锤定义,但最终选定的米的长度——从极点到赤道的子午弧的10⁻⁷倍——与秒摆的长度(0.9937米)非常接近,误差在0.63%以内。
虽然当时并未给出选择这一特定长度的理由,但很可能是为了便于将秒摆用作辅助标准,正如官方文件中所提议的那样。
因此,现代世界的标准长度单位在历史上无疑与秒摆有着密切的联系。

最新一米定义于1983年国际度量衡大会重新制定,此次定义时使用了自然中随处可见的光,并且在70年代光速的测定已非常精确,所以最终定义为光在真空中行进299 792 458分之1秒的距离为一标准米。
故此,一旦光速得到更精准的量度,改变的数值会是米而非光速。

2. 使用Blender模拟摆运动

2.1 秒摆-简单驱动器

前面章节已经了解到秒摆的要求及状态。
1米的高度,摆动幅度介于4~6°,2秒完成一个周期。
那么就做一个2秒钟,共48帧的动画,可以做成无限重复播放的视频或动图。
周期公式: T≈2π√(L/g),其中 π2 ≈ g,所以 π ≈ √g,若L=1,那么 π√(1/g) ≈ 1,结果就是T ≈ 2s

建模
新建一个球体作为摆锤。编辑模式下顶部选取面,向上挤出,作为摆动杆。
摆锤和上方的杆是一体的,将物体原点设置到摆动杆顶端。作为旋转中心。

驱动器
#sin(frame/7.6)/11.4
  • 其中sin()是正弦函数,
  • frame是随帧数变化的全局变量。
  • 这里的: /7.6, 控制频率,大约48帧,2秒完成一个周期。
  •  /11.4, 控制振幅,大约5°。
将公式写入摆锤Y轴旋转栏位,空格播放,完成。

2.2 摆动画-曲线编辑器

Tutorial: Pendulum Waves in Blender
以下内容参考教程视频如上,视频里还加入了酷炫的材质特效,有兴趣可以去看看。
这里只记录了制作摆的过程。

3D视图拆分出一个区域,打开 曲线编辑器
选中摆锤,鼠标停留在旋转Y轴栏位上方, I 添加关键帧,在曲线编辑器里,删除x,z的旋转,只保留Y。
选中曲线编辑器,中线,G 上下移动,3D视图的物体就会左右摆动了。[ESC]

曲线编辑器,打开右侧的修改器页签,点击,添加修改器\Built in Function 内置函数
就用默认的正弦。
现在 空格 播放,物体开始疯狂摆动。修改如下2个参数值。改变振幅和频率。
  • 插值 (振幅) 0.3
  • 相位倍值 Phase Multpiter (频率) 0.1
  • 相位偏移 Phase Offset 默认0即可
  • 值偏移 Value Offset 默认0即可
好了,一个摆动画。增加一点趣味

选中物体,Shift D,复制,沿Y移动5,重复约10次
然后从第二个开始,选中第二个,修改频率,0.11
选中第三个,修改频率,0.12 … 依次修改剩余摆锤。
空格,播放...

曲线编辑器 缩放操作
鼠标滚轮,缩放曲线,
Ctrl 鼠标中键, 鼠标缩放

A 全选所有摆锤,曲线编辑器里,所有曲线都会显示出来。曲线编辑器最大化 Ctrl 空格
本例中大概在 628帧处,找到了所有摆锤曲线的重合点。
总帧数设为该数值,即可循环播放了...

2.3 有点粗糙的关键帧模拟

还是以上的建模,摆锤与摆杆一体,物体原点在摆杆顶端。
在0(Y30°),30(Y0°),60(Y-30°),90(Y0°),120(Y30°)帧处分别插入关键帧,共120帧完成一个周期。
打开曲线编辑器,关闭x,z,只保留Y旋转。
A全选时间线所有关键帧,在曲线编辑器里,缩放。可以改变摆动速度。

继续添加模拟空气阻力带来的摆动衰减。
曲线编辑器,T,设置关键帧的插值模式。
缓动(通过力度)\二次型
选中怪异曲线2端,Ctrl E,选择淡出。调整其他怪异曲线,完成。

2.4 不太好控制的物理特性模拟

上方添加一个圆柱体,设置刚体:被动,形状选 Convex Huli 凸孔。摩檫力降到0.1
该圆柱体 穿过摆锤的杆顶端,作为锚点,旋转轴。

带杆的摆锤,设置刚体: 活动,形状选 Mesh 网格。摩檫力降到0.1。灵敏度降到0
重置摆锤原点。
播放。速度有点慢。
场景面板\刚体世界环境\速率,调整为5.
播放...

摆绳可用物理引擎的布料属性。

3. 秒摆-驱动器进阶

3.1 带变量的驱动器公式

这是《Python Scripting in Blender》书籍,(第09章 动画驱动器)里的示例。书本里有详细的过程。这里只摘录关键步骤。
这里的公式与前面章节(秒摆-简单驱动器)的不同之处,在于:
  • 建模部分,顶端锚点和摆锤是分开的,其间的距离是个变量,就是周期公式里的L长度。上一节的秒摆例子是直接取了最简单的1。
  • 第二个变量是每秒的帧数,也作为变量,你可以随意设置希望的帧数。
  • 第三个变量是可以随意修改属性值,以改变摆动幅度。
这个例子可以让新手了解到如何设置自定义变量,如何添加自定义属性。驱动器里如何使用这些自定义项目。

建模:可以同上,不同之处是,不要修改摆锤的原点,让原点保留在摆锤球体中心。
在顶端新建一个空物体-空箭头,作为摆动的锚点,旋转中心。
由于摆锤的原点在锤体中心,所以,这时候旋转,会绕着锤体中心旋转,而不是上方的锚点。

添加旋转约束:选择摆锤,打开约束选项面板,添加约束: Pivot, 目标选择空对象。
将选择范围改为:Always,始终。以便所有方向的旋转都受到影响。
现在再旋转摆锤,他会绕着上方空物体锚点旋转了。

驱动器公式
#sin(frame/fps/sqrt(length/9.8))
这里的 fps,就是帧数变量。length,是摆绳长度。
将公式输入摆锤的旋转Y栏位,但并不会起作用,还要定义这2个变量才能用。
鼠标在 旋转Y栏位 上方右键菜单里 选择 编辑驱动器,打开编辑面板。

3.2 设置变量 fps

获取每秒帧数属性
单击“+添加输入变量”按钮将向驱动器添加新变量。
默认情况下,此变量的名称为var,并且是RNA属性变量——即,它从Blender中的另一个属性读取值。
  • 下方的属性栏,左边选择类型:场景;右边选择当前的场景:Scene (本示例就用默认的这一个)
  • 在下方的路径,填入: render.fps 以获取在渲染设置中设置的每秒帧数。
  • 最后别忘了将基因代码(RNA)图标右侧的当前名称var重命名为fps。
下方的数值,应该已经取到当前设置的30帧了。
现在,变量名称与驱动器表达式中使用的名称匹配,因此frame/fps是当前帧的时间,以秒为单位。
这允许下一个变量length通过基于秒的公式影响周期。

3.3 设置变量 length

使用距离变量获取摆的长度
驱动器变量有四种类型:
  1. 单一属性 Single Property
  2. 变换通道 Transform Channel
  3. 旋转差异 Rotational Difference
  4. 距离 Distance
  • 前两种,单一属性和变换通道,依赖于属性的值,
  • 而后两种,旋转差异和距离则是两个对象变换之间的差异。
在这种情况下,绳索的长度是驱动对象与其支点之间的距离——即摆锤与空对象之间的距离。
因此,我们将使用它们的距离作为长度:
单击“+添加输入变量”按钮添加新变量。
单击RNA图标将类型更改为距离。面板将更改,允许您选择两个对象。

选择摆锤和空对象,并将变量名称更改为 length。
选择了2个对象后,下方的距离值就会显示出来。

空格,播放,小球已经摆动起来了。不过摆动幅度有点大。

3.4 设置变量 amp

控制振幅
选择我们用作支点的空对象。
在对象属性面板中,找到自定义属性部分。
单击“+新建”按钮以添加属性。默认情况下,它将命名为prop。
单击齿轮图标并将属性名称更改为 amplitude。
右键单击值(默认值1.00很好),选择“复制数据路径”。["amplitude"]
这将把属性的路径复制到剪贴板。当我们添加下一个驱动器变量时,这将很有用。

在驱动器中使用自定义属性
选择摆锤,打开旋转轴驱动公式的编辑驱动器面板。
单击“+添加输入变量”,并将新变量命名为amp。
单击类型选择 物体,选择空对象作为属性对象。
单击Path:字段并使用Ctrl + V粘贴存储在剪贴板中的数据路径,或输入["amplitude"]。方括号是自定义属性Python路径的一部分。

我们可以直接将* amp添加到驱动器表达式中,但我们可以做得更好:由于驱动器影响旋转,我们还可以将π添加到乘法中:
sin(frame / fps / sqrt(length/9.8)) * amp * pi
正弦函数在-1.0和1.0之间振荡,因此当幅度设置为1.0时,我们的驱动器结果在-π到π之间变化。
从0.0(静止摆动)到1.0(完整旋转)的控制对动画师和3D用户具有直接意义,因为它允许他们通过更改幅度设置所需的圆的分数。
到此,一个完整的摆动画驱动完成了,可以按需要修改3个变量的参数,以适应需求。

3.5 摆插件

编写一个插件,为活动对象设置摆。
这是书籍带的插件代码,书中详述了过程,有兴趣的可以查阅书籍内容。
下载安装插件后,即可使用。
在对象模式中,选择一个对象使其处于活动状态。
右键单击并选择“Make Pendulum”以调用插件。
在左下角操作符属性中设置长度和幅度的值。

2026-04-23

Platonic-solid

1. 正多面体
2. Platonic-solid
	2.1 判断依据
	2.2 简单证明
	2.3 同心球
	2.4 相关计算公式
	2.5 正多面体数据表
3. Blender绘制正多面体

1. 正多面体

正多面体 (regular polyhedron) 是指以全等正多边形为面的多面体。
它的对称群 (symmetry group) 作用于其所有面(或称旗面 flags)上,传递性 (transitively) 成立。
正多面体具有高度对称性 (symmetrical),边传递性 (edge-transitive)、顶点 (vertex) 传递性和面 (face) 传递性均成立。
在经典语境中,正多面体有许多不同的等价定义; 一种常见的定义是,其所有面都是全等正多边形,且围绕每个顶点以相同的方式组装而成。
缩减到4个字: 等边等角

种类
  • 五种凸正多面体 convex regular polyhedra,称为柏拉图立体 Platonic solids;
  • 四种正星形多面体 regular star polyhedra,即开普勒-泊松多面体 Kepler–Poinsot polyhedra;
  • 五种正多面体的复合多面体 regular compounds of regular polyhedra. 
本文只考虑 五种凸正多面体 柏拉图立体

2. Platonic-solid

正多面体的作法收录于《几何原本》:
  • 命题13描述正四面体的作法;
  • 命题14描述正八面体作法;
  • 命题15描述立方体作法;
  • 命题16则是正二十面体作法;
  • 命题17则是正十二面体作法。

2.1 判断依据

判断正多面体的依据有三条
  • 正多面体的面由正多边形构成
  • 正多面体的各个顶角相等
  • 正多面体的各条棱边都相等
一个凸多面体,各个顶角相等;各条棱边都相等,是否必然是正多面体?

2.2 简单证明

正多面体,由多个正多边形组成。
正多边形,边数 为 n ,每个内角: 180 * (n – 2) / n < 360 / 3 = 120

正n变形内角分别为:
n=3,内角60°;n=4,内角90°;n=5,内角108°;n=6,内角120°… 

正6边形 及更多边的内角都大于等于120度,无法成为正多面体的面。
所以正多面体的面,只能是,正3,4,5边形。

其中:
  • 正5边形,角度为108°,单个顶点只能允许3个正5边形,正12面体
  • 正方形,角度为90°,单个顶点同样只能允许3个面存在,正六面体
  • 正3角形,角度为60°,单个顶点可以有(3,4,5)个面存在,正4,8,20面体

2.3 同心球

正多面体具有三个相关的球体(其他非正多面体至少缺少一种),其球心位于同一个点上:
  • 内切球 与所有面相切,内切圆半径 r: 多面体中心到 面中心 的距离。
  • 中分球 与所有棱相切,中点半径 ρ: 多面体中心到 边中点 的距离。
  • 外接球 过所有顶点,外接圆半径 R: 多面体中心到 顶点 的距离。

2.4 相关计算公式

  • 正多边形面积公式: S = ½ * Pr (P是周长,r是边心距。)
  • 锥体的体积公式为:V=1/3Sh,公式中S为底面积,h为高。 
每个柏拉图立体都可以被赋予一对整数 { p ,  q },
  •  p 表示每个面的边数(或等价地,顶点数),
  •  q 表示每个顶点处相交的面数(或等价地,边数)。
这对整数 { p ,  q } 被称为施莱夫利符号,它给出了多面体的组合描述。

  • 柏拉图立体 {p, q} 的表面积A可以 很容易地计算为正p边形的面积乘以面数F。即 :
    •  A = (α/2)2 * Fp * cot(π/p)
  • 体积计算方法为:F乘以底面为正p边形、高为内切半径r的棱锥的体积。也就是说,
    •  V = 1/3 * r * A

2.5 正多面体数据表

Platonic solids Tetrahedron Cube Octahedron Dodecahedron Icosahedron
Face 面数 4 6 8 12 20
构成面 ▲△▲ □■□ ▲△▲△ 5边形 ▲△▲△▲
单面的顶点 p 3 4 3 5 3
单顶点相邻的面 q 3 3 4 3 5
Vertex 顶点 V=pF/q 4 8 6 20 12
Edge 边线 E=pF/2 6 12 12 30 30
Face 面数 4 6 8 12 20
对偶多面体 自己 相互 ⇄ 对偶 相互 ⇄ 对偶
柏拉图立体 正四面体 立方体 正八面体 正十二面体 正二十面体
边长 a a a a a a
表面积
Surface area
√3 *a2
≈ 1.732a2
6a2 2√3 *a2
≈ 3.464a2
3*√(25+10√5)a2
≈ 20.65a2
5√3a2
≈ 8.66a2
体积
Volume
1/12 *√2 *a3
≈ 0.118a3
a3 √2 /3 *a3
≈ 0.471a3
1/4(15+7√5)a3
≈ 7.663a3
5/12 * (3+√5)a3
≈ 2.182a3
二面角角度
Dihedral angle
acos(1/3)
≈ 70°52’
90° acos(-1/3)
≈ 109°28’
acos(-√5/5)
≈ 116°57’
acos(-√5/3)
≈ 138°19’
外接球半径 R
circumscribed
√6 / 4 *a
≈ 0.612a
√(3/4) *a
≈ 0.866a
a / √2
≈ 0.707a
√6/4 * √(3+√5)a
≈ 1.401a
a/4 * √(10+2√5)
≈ 0.951a
中分球半径 ρ
midsphere
(1/√2)/2
≈ 0.354a
√2/2 * a
≈ 0.707a
a/2
≈ 0.5a
a((1+√5) / 2)2 / 2
≈ 1.309a
a(1+√5) / 4
≈ 0.809a
内切球半径 r
inscribed
√6 / 12 *a
≈ 0.204a
a/2
≈ 0.5a
a / √6
≈ 0.408a
a/4 * √((50+22√5)/5)
≈ 1.114a
a/12 * √3 (3+√5)
≈ 0.756a

对偶多面体的特点是,顶点数和面数互调。适当调整边长,可以互相内切或外接。

3. Blender绘制正多面体

  • 正4面体-特殊的锥体
    • 新建 锥体 Cone,顶点:3; 半径1:1m; 半径2:0m; 深度:sqrt(2) 
  • 正6面体-就是立方体
    • 新建 立方体 Cube
  • 正8面体-利用对偶立方体生成
    • 这个形状是立方体的对偶——它的顶点对应立方体的面,面对应立方体的顶点。 
    • 新建 立方体 Cube, [Tab]编辑模式,[A]全选, [Ctrl B]倒角,  左下角编辑面板 偏移 填写1, 完成。
  • 正20面体-特殊的棱角球
    • 新建 球体 Icosphere ,细分设置为1,完成。
  • 正12面体-利用对偶的正12面体生成
    • 这个形状是正二十面体的对偶面。 
    • 新建 球体 ,细分设置为1, 创建正20面体, 
    •  [Tab]编辑模式,[A]全选, [Ctrl B]倒角,  左下角编辑面板 偏移 填写(  0.30310889132  ), 完成。
    • 该值来自以下公式:a*sqrt(3)/6. a是二十面体的边长(如果用上述方法制作,则为 1.05)
更多画法:
  • 正4面体-(正4面体的边数 6 = 正6面体的面数 6)
    • 正6面体的每个面对角线连接形成正4面体。
  • 正8面体-(正8面体的边数 12 = 正12面体的面数 12)
    • 正12面体的每个面对角线连接形成正8面体。
  • 正8面体-(正8面体的边数 12 = 正4面体的面数 4的3倍)
    • 在正4面体的每个面上3条边中点相连,每个面画出3条边,4个面共画出12条边,这12条边形成正8面体。
利用对偶关系
正多面体,每个面的中心点相连接,形成对偶多面体。
每个面中心和相邻面中心连接产生的边数对应原本这2个面相邻边,总边数保持不变。
顶点数和面数则相反。


2026-04-20

Differential-Gear

1. Differential
	1.1 概述
	1.2 缺点
	1.3 改良方式
2. 其他用途
	2.1 差速器在汽车以外的应用包括模拟 运算。
	2.2 车辆悬架
3. 使用Blender构造差速器模型
4. rigid 动画模拟
	4.1 参数表
	4.2 设置总结
	4.3 播放
	4.4 合成视频
	4.5 小结
5. Drivers 动画模拟
	5.1 齿轮旋转关系
	5.2 预设一些初始条件
	5.3 参数表

1. Differential

1.1 概述

差速器(英语:Differential)是车辆传动系统(英语:Drivetrain)的一个机械部件。
差速器是一种由三个驱动轴组成的齿轮传动装置,其特性是其中一个轴的转速是其他两个轴转速的平均值。
差速器常见于汽车中,使驱动轴两端的车轮在转弯时能够以不同的速度旋转。其他用途包括时钟和模拟计算机。
差速器还可以提供输入轴和输出轴之间的齿轮比(称为“主减速比”或“差速比”)。
例如,许多汽车差速器通过使小齿轮的齿数少于环形齿轮来实现减速。

1.2 缺点

由于差速器允许两侧车轮以不同的速度进行旋转,那么当车辆驱动轮有一侧打滑时,或因剧烈驾驶导致一侧车轮产生离地时,因为差速器的等扭矩作用,全部的动力会传送到那个打滑的半轴上,使得打滑一侧的车轮飞快旋转,而另一侧车轮失去驱动力,这样会令车辆陷入困境并且失去可操控性。

1.3 改良方式

差速锁
在特定情形下,可以自动或手动将同一车轴上的两个车轮“锁定”在一起,如同它们连接在同一根轴上一样。 当不需要此功能时,可以将差速器“解锁”,使其像普通的开放式差速器一样工作。
差速锁主要用于越野车,以克服低附着力和附着力变化的路面。

限滑差速器
限制传递到每个车轮的动力差异。
多数使用摩擦力的方式限制2边转速差异,速度差异越大,摩擦力越大。
托森限滑差速器A型,使用蜗杆和涡轮单向传到的原理,限制差速。

扭矩矢量控制
扭矩矢量控制技术应用于汽车差速器,它能够通过电子系统调节分配到每个半轴的扭矩;在轨道车辆中,则通过独立驱动的车轮实现相同的功能。

2. 其他用途

2.1 差速器在汽车以外的应用包括模拟 运算。

差速器的三个轴中,有两个轴旋转的角度分别代表(与)两个数字成比例,而第三个轴的旋转角度则代表这两个输入数字的和或差。

1720年,人们制造了一个使用差速器进行加法运算的等式钟。
20世纪,由许多差速器组成的大型装置被用作模拟计算机,例如,用于计算枪支的瞄准方向。
这些设备使用差动齿轮系来执行加法和减法运算。

2.2 车辆悬架

火星探测车“勇气号”和“机遇号”(均于2004年发射)在其摇臂式悬架中使用了差速齿轮,以保持探测车车身在左右车轮在不平坦地形上上下运动时的平衡。
“好奇号”和“毅力号”探测车则使用差速杆代替齿轮来实现相同的功能。

3. 使用Blender构造差速器模型

建模参数表如下,详细参数可将表格内必要参数输入到 otvinta 的 bevel 计算器页面获取。
Axis Gear Module Teeth 轴角 面宽 说明
Y Pinion 1.5 18 90 10 Motor 驱动轮
X Ring 1.5 36 90 10 减速导向大齿轮
X Side1 1 20 90 4.7 输出到轮胎1
X Side2 1 20 90 4.7 输出到轮胎2
Z Spider1 1 20 90 4.7 行星轮1
Z Spider2 1 20 90 4.7 行星轮2

4. rigid 动画模拟

4.1 参数表

刚体 Axis 类型 物体名称 ob1 ob2
p被动 Y 圆柱体 pinion-Axis
A活动 Y 齿轮 pinion
Hinge Y 空箭头 pinion-Hinge pinion pinion-Axis
Motor Y 空箭头 pinion-Motor pinion pinion-Axis
A活动 X 齿轮 Ring
Hinge X 空箭头 Ring-Hinge Ring Side-Axis
p被动 X 圆柱体 Side-Axis
A活动 X 齿轮 Side1
Hinge X 空箭头 Side1-Hinge Side1 Side-Axis
A活动 X 齿轮 Side2
Hinge X 空箭头 Side2-Hinge Side2 Side-Axis
p被动 Z 圆柱体 Spider-Axis
A活动 Z 齿轮 Spider1
Hinge Z 空箭头 Spider1-Hinge Spider1 Ring
A活动 Z 齿轮 Spider2
Hinge Z 空箭头 Spider2-Hinge Spider2 Ring

4.2 设置总结

  • 基本设置: 
    • 齿轮: 刚体\活动 (齿轮的形状 统一设置为网格,敏感度为0)
    • 圆柱体: 刚体\被动 (同一轴向的多个齿轮,只需要1个)
    • 空箭头: 刚体约束\ (1个机动,每个齿轮搭配1个铰链)
  • 空物体的轴向: 
    • 空物体(hinge)铰链的 Z 轴必须与旋转轴对齐!
    • 空物体(motor)的 X 轴必须与旋转轴对齐!
  • 刚体约束的物体的选择: 
    • [起始点]物体始终是各自对应的齿轮,[第二]物体是齿轮的轴向圆柱体。
    • 至于固定在大齿轮盘上的2个Spider行星齿轮,会随着大齿盘公转,所以[第二]物体选择大齿盘Ring.

4.3 播放

  • 抖动不顺畅,
    • 表面太大,Ctrl R, 环切8左右... 
    • 表面法向异常,编辑模式,全选,[Shift N] 重置法向。
  • 若转速太慢或太快,检查如下参数
    • 场景\刚体世界环境\设置\速率
  • 若旋转到250帧就停下来,可以到如下位置调整缓存帧数。
    • 场景 \ 刚体世界环境 \ 缓存

4.4 合成视频

[Ctrl F12] 渲染动画
如下命令可以将输出的图片合成视频: 
 ffmpeg -framerate 30 -i %04d.png -c:v libx264 R24.mp4
如下命令可以将输出视频转换为webp格式,类似gif动图。 效果更好,文件更小。但比视频文件大。
 ffmpeg -i R24.mp4 -loop 0 r24.webp

比如给齿轮Side2添加重量,模拟阻力增加,从而降低速度。
选中 Side2齿轮,右下角物理面板 \ 刚体 \ 设置 \ 质量。默认1kg,这里改到5kg,再播放。即可看到2边齿轮旋转差异。

4.5 小结

  • 使用刚体物理特性模拟,对建模有要求,若建模太过粗糙,齿轮就没法顺畅的啮合转动。
  • 参照如上设置即可转动,不用考虑计算齿轮之间的转速差异。
  • 完全模拟真实状况,一个驱动小齿轮转起来后,其他齿轮会依照啮合的关系在各自的轴上转动。
  • 缺点是,没法精确控制转速,没法精准控制差速比。

5. Drivers 动画模拟

  • 使用Blender的驱动器,模拟差速器运行,好处是,对建模没有要求,使用普通的Gear模型,不用太细致的细分。
  • 可以精确控制转速,差速比。
  • 缺点是,需要计算每个齿轮之间的转动比值。

5.1 齿轮旋转关系

差速器的特性是其中一个轴的转速是其他两个轴转速的平均值: 
(Side1 + Side2)/2 = Ring
当前这种结构行星轮特性: 行星轮和2测输出轮大小一样。
Spider1 + Spider2 = 0
|Side1 – Side2| = |Spider1| - |Spider2|
spider = (Side1 – Side2)/2

5.2 预设一些初始条件

  • 转速系数: 20
  • 车轮直径: 50cm
  • 车轮轮距: 150cm
  • 前后轴距: 250cm
  • 道路宽度: 350cm
  • 转弯半径: 500cm
这里的转速系数20,在blender里作为驱动轮Pinion的驱动速度,可以根据需要修改。
以上主要会用到 [转速系数],和 [车轮距离]。调整不同的 [转弯半径] 计算出符合该转弯要求的各个齿轮旋转驱动参数。

5.3 参数表

根据齿轮旋转关系,预设的一些参数,整理出如下驱动器配置表。
可计算任意旋转角度的参数。
Axis Teeth Gear 1200 750 500 150 75 轮距 转弯 600 计算公式:
Y 18 Pinion 20 20 20 20 20 0 150 600 20 指定一个系数
X 36 Ring -40 -40 -40 -40 -40 0 150 600 -40 -2*系数
X 20 Side1 -40 -42.9 -45 -48.57 0 20 150 600 -46.67 -(2*L4-K4)/(L4-K4)*M2
X 20 Side2 -40 -37.5 -36 -34 20 -20 150 600 -35 -(2*L5-K5)/L5*M2
z. 20 Spider1 0 600 360 226.67 40 20 150 600 280 (L6/(K6/2)-1)*2*M2
z. 20 Spider2 0 -600 -360 -226.67 -40 -20 150 600 -280 -Spider1
模拟 直行 左转 左转 再左转 打滑 自转
参数的使用很简单: 比如模拟转弯半径500的差速器旋转状态。
  • 选中齿轮 Pinion,在对应的 Y 轴,输入: #frame/20。
  • 选中齿轮 Ring,在对应的 X 轴,输入: #frame/-40。
  • 选中齿轮 Side1,在对应的 X 轴,输入: #frame/-49。
  • 依此类推,输入全部齿轮的驱动参数...
还有一步: 依次选择 Spider1, Spider2, Ring [Ctrl P] 将 Ring 设置为2个行星轮的父对象。
播放,齿轮已经开始工作了... 
  • 想要模拟 直行,就输入∞,这一列的参数。
  • 后面还有 打滑,就是一个轮子不转,全部动力都给了另一个轮子。
  • 至于 自转,则是一个向前转,一个向后转。完全原地打转。
实际上,若要查看不同配置的模拟,6个齿轮中,有3个可以固定配置,只修改另外3个齿轮的公式即可。
  • 驱动齿轮 Pinion,这个可以固定为20(一个适当的转速,可以清晰查看齿轮啮合。该数值越小速度越快); 
  • 大齿轮 Ring,这个可以 手动添加驱动器,选中驱动关系为 Pinion,公式:-1/2转速。其他齿轮不管怎么变,这里都不需要再修改。
  • 行星齿轮 Spider2,甚至不用添加驱动器,只需添加复制旋转的约束即可,复制的是Spider1。
所以只需要修改剩下的3个齿轮即可:Side1, Side2, Spider1.


 




2026-04-15

otvinta-Bevel-Gear-Calculator

0. 使用 otvinta 的锥齿轮计算器建模
1. 生成齿的侧面线条
2. 形成齿面
	2.1 齿型轮廓
	2.2 接着画齿与齿之间的谷
	2.3 形成齿面
3. 3D游标定位到半径长度
4. 完善齿面
	4.1 旋转齿面
	4.2 修正底边
5. 3D游标定位到锥顶高度
6. 形成齿体
	6.1 复制缩放-生成锥齿轮顶部的齿面
	6.2 形成齿体
7. 完成锥齿轮
	7.1 直齿锥齿轮
	7.2 给直齿增加弧度
8. 制作大齿轮
9. Rigid 刚体动画
	9.1 设置参数表
	9.2 播放
	9.3 相机环绕拍摄

0. 使用 otvinta 的锥齿轮计算器建模

前面已经试过使用插件建模,生成锥齿轮,驱动旋转动画看起来没啥问题。
但若使用Blender的物理特性,相互摩擦旋转,就需要更加精细的建模。
这里使用 otvinta 的锥齿轮计算器建模。使用官方视频里的参数建模: 
  • Module 为1
  • 齿数分别为: 18, 36
  • 轴角度为: 100
  • 接触面宽为: 6

1. 生成齿的侧面线条

  • 小键盘[7,5] 正交顶视图,[Shift C] 3D游标归位。
  • [Shift A] 新增物体: 网格 \ 数学函数 Math Functions \ XYZ Math Surface 数学曲面
  • 根据 表格信息,依次输入参数: 
    • X equation
    • Y equation
    • Z equation
    • Umin, Umax, Ustep
  • 取消 选中[ u wrap](循环) 的复选框。
  • 因为未使用V参数。v的最大,最小都输入0,步长输入1.
  • 删除重复项,[A] 全选 [m] 合并重复顶点

2. 形成齿面

2.1 齿型轮廓

  • Shift D 复制 S 缩放 Y -1 Enter 创建镜像反射。
  • 复制 表格参数 [Tooth thickness at base (°) 牙根厚度]: 11.7079
  • 回到Blender
  • R 旋转 Z (11.7079)
  • 点选2条曲线最右边的顶点,F 填充。形成齿尖。
  • 打开 计算器,将刚才复制的数字/2,复制结果: 5.85395
  • 回到Blender, A 全选
  • R Z (-5.85395) 
现在的齿形线条跨X轴。

2.2 接着画齿与齿之间的谷

复制新齿
A 全选 Shift D 复制 R Z 20 绕Z旋转20度。
20度是小齿轮相邻齿之间的角度距离,因为小齿轮有18个齿。360/18=20度。
现在在原始齿的另一端创建第三个齿。
接着前面的步骤,Shift D R Z -40

选中上面2个齿形靠近的顶点,[Shift S 2] 游标到选中项
取消上面的顶点,保留下面顶点选中。
菜单:网格\挤出\旋绕 90度,分8步 ,形成90度圆弧。

选中下面2个齿形靠近的顶点,[Shift S 2] 游标到选中项
取消下面的顶点,保留上面顶点选中。
菜单:网格\挤出\旋绕 90度,分8步 ,形成90度圆弧。

2.3 形成齿面

Shift C 游标归位
选中上下2个齿,删除,只保留中间编辑过的齿。上下各有1/4个圆弧。

A F 全选后填充。
[2] 边模式。选中新形成的齿底边,E X -1 挤出,构成齿临时底部。
退出编辑模式

3. 3D游标定位到半径长度

复制 表格参数 [Reference radius (mz / 2) 参考半径]: 9
将参考半径值作为3D光标的X坐标输入。
3D游标 移动到X 9的位置。

4. 完善齿面

4.1 旋转齿面

复制 表格参数 [Reference cone angle (°) 参考锥角]: 28.334
回到Blender
物体模式,选中物体,R Y (-28.334)

4.2 修正底边

Shift C 游标归位
Tab 编辑模式
A 全选 Shift D 复制 R Z 20 绕Z旋转20度。
Shift D 复制 R Z -40 绕Z旋转-40度。
目前状态是:
中间跨X轴1个齿,上下分别各1个齿。
Ctrl Z 透视模式,顶点编辑,将齿低2个相邻顶点向中间合并。
面模式,删除上下2个齿。
Tab 退出 编辑模式

5. 3D游标定位到锥顶高度

复制 表格参数 [Cone base-to-apex height (R cos δ) 底面到锥顶的高度]: 16.691
将 底面到锥顶的高度 作为3D光标的 Z坐标输入。
3D游标移动到Z轴的这个高度: 16.691
菜单 物体 设置原点,原点到3D游标

6. 形成齿体

6.1 复制缩放-生成锥齿轮顶部的齿面

复制 表格参数 [Top/Bottom Scaling Factor 缩放因子]: 0.6836
回到Blender
Tab 编辑模式
全选 Shift D 复制 S 缩放 (0.6836)

6.2 形成齿体

[2] 边模式。全选,右键菜单,桥接循环边
删除底座的地面和2个侧面。

7. 完成锥齿轮

7.1 直齿锥齿轮

A 全选 Shift D 复制 R Z 20 绕Z旋转20度。
A 全选 Shift D 复制 R Z 40 绕Z旋转40度。
A 全选 Shift D 复制 R Z 80 … 直到超过360度,完成齿轮形态。
… 形成小齿轮后,删除重复项
A M 合并重复顶点
根据喜好填充顶面,底面,中间的孔面... 
到这里,一个直齿的锥齿轮就完成了,要更顺滑的弧度齿,接着做下一步。

7.2 给直齿增加弧度

环切齿表面,记录环切数量,比如(5),因为后续对另一个齿轮要进行相同的环切数量。
将从最上面的循环开始,分别将新创建的循环旋转2,4,6,8,10,12度.
最后依次旋转12,则是选中底面。

8. 制作大齿轮

参照如上步骤(1~7),制作大齿轮。这里不在重复。需要注意的是: 
  • 参照表格数据,只有缩放因子一致,其他的都有大小齿轮各自的参数。
  • 形成齿时的旋转角度需要根据齿数计算得出。比如上面的小齿轮: 20度=360度/18齿。大齿轮则是: 360度/36齿=10度。
  • 给齿增加弧度,上面是对小齿轮进行弧度旋转。对于大齿轮,相同的环切数量,旋转角度则为1,2,3,4,5,6. 正好是小齿轮旋转的1/2. 这个比例与半径成反比。若其他半径组合,也是用这个反比关系计算即可。

9. Rigid 刚体动画

9.1 设置参数表

操作 类型 物体名称 操作描述
选中 大齿轮 Gear [shift S] 光标到选定对象。
刚体 \ Active, Mesh, Sersitivity (0.04改为0)
选中 小齿轮 Pinion [shift S] 选定对象到光标。
[R X 100] 小齿轮绕X旋转100度。
刚体 \ Active, Mesh, 敏感度-边距 (0.04改为0)
2个齿轮的原点重合,都在齿轮轴线焦点处。3D光标在齿轮原点。
添加 圆柱体 Axis1 绕X旋转 100。
刚体 \ Passive, 被动
添加 空箭头 Hinge1 绕X旋转 100
添加 空箭头 Motor1 绕z旋转 90, 然后绕X旋转10,使空物体的x轴与小齿轮的轴重合
添加 圆柱体 Axis2 向上移动 ~20左右,
刚体 \ Passive, 被动
添加 空箭头 Hinge2 向上移动 ~20左右,
选中 空箭头 Hinge1 刚体约束 \ Hinge; Ob1: pinion; Ob2: Axis1
选中 空箭头 Motor1 刚体约束 \ Motor; Ob1: pinion; Ob2: Axis2; 启用角度
选中 空箭头 Hinge2 刚体约束 \ Hinge; Ob1: gear; Ob2: Axis2

9.2 播放

参照如上参数设置,小结如下。
  • 齿轮: 刚体\活动 (齿轮的形状 统一设置为网格,敏感度为0)
  • 圆柱体: 刚体\被动
  • 空箭头: 刚体约束\ (1个机动,2个铰链)
播放 … 
  • 若转速太慢或太快,检查如下参数
    • 场景 \ 刚体世界环境 \ 速率
  • 若旋转到250帧就停下来,可以到如下位置调整缓存帧数。
    • 场景 \ 刚体世界环境 \ 缓存

9.3 相机环绕拍摄

  • 新增 曲线\圆环,调整设当大小。相当于相机的轨道。
  • 选择 相机,曲线,[Ctrl P] 设置父对象,选择 跟随路径。
  • 播放 看看 … ESC 退出。
  • 选择 圆环,右边 数据 面板 \ 路径动画 \ 调整 帧 数,以调相机整旋转速度。这个帧数表示旋转1周需要的帧数。
  • 新增 空箭头,在目标物体之间,作为相机锁定的方向。
  • 选择 相机,添加约束 \ 追踪 \ 标准跟随 选中 空箭头




Blender-Armatures

导航 (返回顶部) 1. Blender-Armatures 1.1 骨架位置 1.2 分类 1.3 骨骼结构 2. 编辑 2.1 骨骼扭转 2.2 拆分 split 2.3 分离骨骼 separate 2.4 切换方向 3. 镜像编辑 3.1 镜像挤出 ...