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 一文有详解。

没有评论:

发表评论

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 Hing...