Manual/PartX/Soft Bodies

Wikipedia,自由的百科全书

User Manual: Contents | Guidelines | Blender Version 2.37

Contents

Soft Bodies 柔体动力学

Introduction 简介

What's the difference between a bar of metal, a bar of rubber, and a bar of gelatin? Each will bend under the force of gravity if you hold it out by one end, but by very different amounts.

金属棒,橡胶棒,凝胶棒之间的区别是什么?如果你握住它们的一端,它们都会在重力的影响下弯曲,但是弯曲量有非常大的不同。

To model a bending object, you could carefully adjust all of the vertices yourself, or you could try to insert some kind of bony armature inside the object. Blender provides a much simpler alternative called "soft bodies" simulation. If you add the "soft body" modifier on a mesh, Blender will compute the interaction between the mesh and various environmental forces (like wind or gravity), and Blender will distort the mesh accordingly. 要建立一个弯曲的物体,你需要非常仔细的调整物体的每个点,或者你可以尝试在物体内插入某些骨架。Blender提供了一个更加简便的方法叫做“柔体”模拟。如果你给多边形添加一个“柔体”修改器,Blender会计算多边形与各种环境作用力的交互(比如风和重力),再将结果呈现在多边形上。


In between each neighboring vertex of a mesh, you typically create edges to connect them. Imagine each edge is really a spring. Any mechanical spring is able to stretch under tension, and able to squeeze under pressure. All springs have an ideal length, and a stiffness that limits how far you can stretch or squeeze the spring.

在多边形上的很个相邻的点之间,通常有边把它们连接在一起。想像一下每个边都是弹簧。任何机械弹簧都可以被拉力拉伸,还能够被压力挤压。所有弹簧都有一个自身的长度,还有一个硬度值来决定它能够被拉伸和挤压的程度。

In Blender's case, the ideal length is the original edge length which you designed as a part of your mesh, even before you enable the "soft body" modifier. Until you add the modifier, all springs are assumed to be perfectly stiff: no stretch and no squeeze.

在Blender里,弹簧的自身长度是你的多边形的边的长度,在你启用“柔体”修改器之前也是如此。当你添加该修改器后,所有弹簧都处于完全硬度状态:没有拉伸和挤压。

Once you add the Soft Body modifier, you can adjust the stiffness of all those edge springs, allowing your mesh to sag, to bend, to flutter in the breeze, or to puddle up on the ground.

你添加柔体修改器后,你可以调整所有弹簧边的硬度,可以让你的多边形松弛、弯曲、随着微风摆动,或者在地面上搅动。

The Basics 基础

There are two main methods to control the soft body effect:

  • Goal - Soft body Goal acts like a pin on a chosen set of vertices; controlling how much of an effect soft body has on them. With Goal fully active (1.0), the object will act like any regular animated object (no soft body effect). When setting Goal to 0.0, the object is only influenced by physical laws. By setting Goal values between 0.0 and 1.0, you can blend between having the object affected only by the animation system, and having the object affected only by the soft body effect. Goal also serves as a memory, to make sure soft objects don't deform too much, ending up in the non-soft animated shape. Using the Vertex Group weight system, you can define a Goal weight per vertex. To make this look more natural, spring forces can be defined to control how far vertices can move from their original position.

有两个主要的方法来控制柔体效果:

  • 目标 - 柔体目标的作用像一个在所选点元素上的别针;控制在它们身上的柔体效果有多大。当目标值处于最大值(1.0)时,物体表现的就像一个规则运动的物体(没有柔体效果)。当目标值设置为0.0,物体就只会被物理规律左右。当目标值设置在0.0和1.0之间,你可以将物体的运动效果在普通动画系统与柔体动画效果之间混合。目标修改器同样需要内存,所以请确保你的柔体物体不要过于复杂,完成时是一个完成动画的没有柔体的物体。使用点组权重系统,你可以为每一个点设定一个目标权重。为了使效果更自然,弹力值可以设定以控制这些点最多可以从自己的原始位置移动多远。
  • Springs - The Edge Spring Stiffness defines how much edges try to keep their original sizes. For example, by adding diagonal edges within a cube, it will become stiffer (less "jelly like"). By tweaking the E Stiff parameter, objects can be set to try to, more or less, keep their original shape, but still move freely with dynamics.
  • 弹簧 - Edge Spring Stiffness 定义了有多少边尝试保持自己原来的大小。比如,给一个立方体添加一个对角线,它就会变的更加硬(更不像果冻了)。拖动E Stiff参数,物体会试着保持自己原来的形状,但是它依然保持对动力学的影响。
Note:

When you enable the Soft Body effect on an object, it will always be simulated forward in time. Moving backwards in time or jumping in steps larger than 9 frames will reset the soft body back to its original position. Use the new TimeLine window playback to make tweaking Soft Body effects interactive.

注释:

当你在物体上添加柔体修改器后,它会一直在播放时进行运算。把时间轴向后拖动,或者向前跳大于9桢会恢复柔体的原始状态。使用新的时间线窗口来交互式的调整柔体。

Once you're satisfied with the simulation, you can Bake the simulation into a static animation system. A baked soft body plays back much more quickly, and is not dependent on simulation anymore.

当你对效果满意了,你可以Bake模拟的数据到静态动画系统。Back(烘焙)过的柔体播放起来会快很多,而且不再依靠模拟系统了。

Note:

It is recommended that you bake soft bodies when rendering animations, because the simulation doesn't work correctly for Motion Blur rendering, or for rendering in small chunks via a network render system. Using Softbody for cloth simulation, especially with collision detection, is still in a testing stage. The current collision code requires improvements, which is scheduled for a later release. For more precise control over cloth simulation, we will also add special edge options in a later release. Currently, all edges have an equal effect on the soft body.

注释:

建议你在渲染动画之前烘焙柔体数据,因为打开运动模糊渲染的话,或者通过网络渲染时渲染一小部分画面,模拟会不正常。使用柔体来模拟布料时,特别是有碰撞时,它还在测试阶段。正确碰撞的代码需要改进,它会在后续版本公布。为布料模拟提供更精确的控制,我们还会在的随后的版本加入特殊的边选项。现阶段,所有边在柔体上都是平均的效果。

Interface 界面

The interface for the SoftBody is accessed in the Object panel, (F7) under the Softbody tab. See Softbody settings..

柔体的界面在Object面板, Softbody面板下 (F7)。阅读 柔体设定

Softbody settings.
Softbody settings.

Softbody settings

柔体设定

  • Enable Soft Body - This enables the softbody system on the selected object.
  • Enable Soft Body - 该选项在选定的物体上启用柔体系统。
  • Bake settings - Open up the Bake settings. See Bake settings..
  • Bake settings - 打开烘焙设定。阅读 烘焙设定
  • Friction - Sets the amount of friction the object 'feels' against the viod/gas/liquid surrounding.
  • Friction - 设定物体的摩擦力大小 '触摸' viod/气体/液体环境。
    • void: the particle moves in vacuum --> friction must be zero
    • 空的: 粒子在真空中运动 --> 摩擦力肯定为0
    • liquid: the particle is embeded in viscous phase
    • 液体: 粒子在粘滞阶段
      • liquid in rest: the particle will slow down to rest. higher values for friction will lead to sooner reaching the rest position.
      • 静止液体:粒子会慢慢静止下来。越高的摩擦力会让它更快到达静止状态。
      • liquid in motion: the particle will synchronize with the liquid motion. higher values for friction will lead to the particle sooner reaching the same velocity as the liquid has. (note : the liquid is the phase moved with wind and vortex )
      • 运动的液体: 粒子会与液体运动同步。更高的摩擦力会让它更快的与液体速度同步。(注释:液体有时跟随风和气旋移动)
    • gas ( same as liquid .. since we did not implement special gas dynamics yet)
    • 气体(与液体相同..现在我们还没有实现特殊的气体动力学)
  • Grav - Gravity, the amount of force in negative Z-axis direction. Earth gravity is a value close to 9.8.
  • Grav - 重力,负Z坐标轴上的力的数量。地球的重力值接近9.8。
  • Error Limit - The Runge-Kutta-error limit. This is too far off maths to explain here. However it is very usefull to tune 'time needed for simulation' vs' physical accuracy obtained'
  • Error Limit - Runge-Kutta-error 的极限。这里用数学解释的话很复杂。但是它对于模拟时间与精度的平衡很有用处。
    • Rule of thumb:
    • 经验法则:
      • Crank it as high a possible ( gain speed )
      • 转动它到一个可能的高度 ( 增加速率 ).
      • Decrease if your system becomes instable / too fuzzy.
      • 如果您的系统变得不稳定 / 太失真,减少它。
    • (Maths)Doing adaptive step sizes, it controls the maximum error ( in location and speed ) a simulation step is allowed. If the limit was exceeded on a 'try' step shorter steps need to be taken to stay within the limit. However if we are 'sufficient' above the limit we'll try to step faster again.
    • (数学)调整适当的步幅大小, 它控制一个模拟步幅被允许的最大误差 ( 在位置和速率 )。如果极限值超出了在' 尝试' 步幅更短的步,幅需要采取被限制在极限值之内。不管如何如果我们在极限值上面是 '充分的' ,我们将会再次尝试着更快的步幅。
  • Mass - Mass value for vertices. Larger mass slows down motion, except for gravity where the motion is constant regardless of mass. May be it's time to dust off the books on physics (yah that ol' school book that 'accidentially' dropped behind the 'hitchhiker' ) .. reading Newton's laws of motion
  • 质量 - 作为顶点的质量。较大的质量减慢运动, 重力不管物体质量是多少运动都是固定的。可能现在是重温物理书的时候,阅读牛顿的运动定律。
  • Speed - You can control the internal timing of the softbody system with this value.
  • 速率 -你能用这一个数值控制软体系统的内部时间。
  • Apply Deform First - Applies the softbody calculations after other deformations, such as those caused by Lattices or Armatures.
  • 首先应用变形 - 先应用其他的变形如: Lattices 或 Armatures 然后才进行软体计算。
  • Use Goal - Use the motion from animations in the simulation (Ipo, Deform, Parents, etc). The "Goal" is the desired end-position for vertices based on this animation. How a softbody tries to achieve this goal can be defined using stiffness forces and damping.
  • 使用目标 - 在模拟系统里运动来自动画.(IPO,变形, 父级, 及其他)," 目标 " 是需要结束-位置在这个动画作为顶点的基础。目标能使用stiffness forces和damping 去定义软体如何尝试去完成。
  • Goal - The default goal weight for all vertices when no Vertex Group is assigned. If a vertex group is present and assigned, this button instead shows the name of the goal vertex group.
  • 目标 - 没有顶点组被分配时,默认的目标权重是为所有的顶点。如果一个顶点组是present和分配了的, 这个按钮改为显示目标顶点的名字聚集。
  • G Stiff - The spring stiffness for Goal. A low value creates very weak springs (more flexible "attatchement" to the goal), a high value creates a strong spring (a stiffer "attatchment" to the goal).
  • G 硬度 - 弹簧作为目标的硬度。一个低的数值产生很衰弱的弹性 (对目标更多的柔韧性 " attatchement"), 一个高的数值产生一个强劲的弹簧 (对目标的较硬的 " attatchment") 。
  • G Damp - The friction for Goal. Higher values dampen the effect of the goal on the soft body.
  • G 阻尼 - 作为目标的磨擦力。较高的阻尼数值使目标对软体的效果。
  • G Min/GMax - When you paint the values in vertex-groups (using WeightPaint mode), you can use the GMin and Gmax to fine-tune (clamp) the weight values. The lowest vertex-weight (blue) will become GMin, the highest value (red) becomes GMax.
  • G 最小/G最大- 当您在顶点组中涂抹数值的时候 (使用 WeightPaint 模式),你能使用 G最小 和 G最大 微调 (有效范围) 权重数值。最低的顶点-权重 (蓝) 将会成为 GMin, 最高数值 (红色) 成为 GMax。
  • Use Edges - The edges in a Mesh Object (if there are, check Editing->Mesh Panel) can act as springs as well.
  • 使用边 - 在一个网格物件 (如果有, 检查Editing->Mesh Panel) 的边能产生很好的弹簧效果。
  • Stiff Quads - For quad faces, the diagonal edges are used as springs. This prevents quad faces from collapsing completely.
  • 硬四边 - 为四边面, 对角线的边被作为弹簧。这防止四边面完全地崩溃。
  • E Stiff - The spring stiffness for edges (how much the edges are stretched). A low value means very weak springs (a very elastic material), a high value is a strong spring (a stiffer material).
  • E 硬度 - 边的弹簧硬度 (多少边被伸展) .一个低的数值意味很弱的弹簧 (一个最柔性材料), 一个高的数值是一个强力弹簧 (一个较强的材料) 。
  • E Damp - The friction for edge springs. High values dampen the E Stiff effect.
  • E 阻尼 - 边弹簧的磨擦力。高的数值减弱 E Stiff 的效果。
Bake settings.
Bake settings.

Bake settings

  • Start/End - Sets the range of the soft body simulation to be baked.
  • Interval - Sets the number of frames in between each baking "step" (the "resolution" of the baked result). Intermediate positions will be calculated using the steps as key frames, with B Spline interpolation.
  • Bake - Starts the Bake process. Depending on complexity, this might take a little while. You can press ESC to stop baking. Once Baked, this button changes into a "Free Bake" button. You must free the baked result to modify soft body settings.


烘焙设置

  • 开始/结束 - 设定要烘焙的软体模拟时间范围。
  • 间距 - 设定帧的数目在每个烘焙 " 步幅 " 之间.中间位置将被计算使用步幅值作为关键帧, 以B Spline插值。
  • 烘焙 - 启动烘焙。 依赖复杂,这可能有点慢。你能按 ESC 停止烘焙。
  • 烘焙一次后, 这个按钮变成"Free Bake" 按钮。你必须释放烘焙过的结果才能修改软体设置。

Particle Interaction 粒子交互

Since softbody vertices are considerd as particles they interact with all the forces applied to particles in the layer. Such as wind, force fields .. and what ever comes from the modifier stack there.

因为软体顶点是考虑粒子与所有力场相互影响,粒子被应用在层里。 如风,力场... 和任何来自修改堆的修改。

Springs in detail 弹簧细节

In the softbody world vertices of meshes, lattices, curves .. are treated as particles having a mass. Their movement is determined by the forces affecting them. Beside other forces the individual particles can interact with another along edges using a physical model which is very close to shock absorbers used in cars. The working parts are:

在网格的柔体世界顶点中, 格子、曲线 ... 被当做一个有质量的粒子处理。他们的运动由力场决定。在其他的力场旁边,个别的颗粒能相互影响 另一个向前的边 使用一个 非常接近物理模型去吸收震动。工作的步骤是:

  • 1. A spring trying to keep the particles at a certain distance. How hard the spring tries to do that is controlled by the softbody parameter 'E Stiff'.
  • 1.一个弹簧尝试把粒子保留在一个特定的距离。弹簧尝试稳定柔体参数控制 'E Stiff' 约束
  • 2. A damping element to calm the movement down. The resistance the element builds up against motion is controlled by the softbody parameter 'E Damp'.
  • 2.一个阻尼因素使运动平定下来。抵抗力因素造型在防止运动被柔体参数 'E Damp' 约束.


Shockabs.gif

  • Softbody goals
    • There is another 'shock absorber' at each vertex of the softbody connecting the associated particle with the 'original' position of the vertex. So this defines a 'goal' the particle tries to reach. The strength of the springs here however is modified by either object global settings in the softbody panels or weight painted to a vertex group.
    • A very special goal relation is obtained when the weight of the vertex is exactly 1. In this case the particle is "bolted" to the original vertex. The motion of that particle is the same as if it was no softbody at all. Defining goal weights smaller than 1 will cause the softbody to jiggle around it's "rest position".
    • Having said that, it's not very surprising that a weight of 0 breaks the goal 'shock absorber' completly.


  • 柔体目标
    • 在以顶点的 '原始的' 位置另外的一个'减震器'在柔体的每个顶点连接联合了的粒子 。因此定义一个 '目标'粒子尝试延伸。弹簧的强度在此无论如何被修改任一物体目标设置在柔体板面 或被权重涂抹到一个顶点组,弹簧的强度在此被修改。
    • 一个很特别的目标连系被获得时, 顶点的权重是正确 1。在这情况,粒子被 " bolted " 到原始的顶点。如果它不是柔体,粒子的运动是相同的。定义目标权重小过 1 将会导致柔体轻轻地摇动在" 休息位置 ".
    • 还有, 这不是很令人惊讶一个0权重会打断目标双方' 避震器'。

Example 实例

Our example will show you a way to do a simple flag moving with the wind. Create a plane in front view and subdivide it three times. Go to the Edit buttons F9 and activate Subsurf. Set subsurf level to 2 for the best results. Press Set Smooth. Let's add two pins to our flag in both upper and lower corner of our plane.

我们的实例将告诉你做一个随风飘动的简单旗子。创建一个plane在前视图和细分三次。去编辑模式按下 F9 和激活细分面。设定细分面级别到 2 得到最好的结果。按下Set Smooth。让我们添加两个pins到我们的旗子上方和下方到plane的角。


  • Create a new Vertex Group, and set Weight to 0. Select all vertices, and press Assign.
  • 创建一个新的顶点组, 和设置权重到 0.选择所有的顶点 , 点击分配。
  • Now, select both upper and lower corner on one side of the flag. Set Weight to 1.0, and press Assign again. This will make these vertices stay where they are during the softbody simulation. In Weight Paint Mode you should see something like this Example Weight Setting..
  • 现在, 在旗子的侧面选择上方和下方的角。设定权重 到 1.0, 再一次点击分配。这将会使这些顶点在柔体模拟期间静止。在 Weight 笔刷模式,你应该见到旗子权重设置跟这一个实例很象。
  • Next, exit EditMode and go to the Softbody panel in the Object Buttons F7. Click Enable Soft Body. Increase Grav to 9.8. Activate the Use Goal button. Click the small button next to Use Goal and choose the name of the Vertex Group to use for the goal, in this case, the only choice should be the default name Group. Now set the edge stiffnes E Stiff to 0.9, set Mass to 0.5, Friction to 0.14 and Speed to 2.
  • 下一步, 退出 EditMode 按 F7转到柔体面板.点击Enable Soft Body。把 Grav 增加到 9.8 。激活Use Goal 按钮。然后点一下小按钮与Use Goal 连接和选择Vertex Group的名字为目标使用, 在这个案例,Group是你唯一的选择。现在设定边硬度 E Stiff 到 0.9, 设定Mass到 0.5, Friction到 0.14 和Speed到 2.
  • Now, you can press ALT-A to see the flag react to gravity.
  • 现在, 你能按 ALT-A 见到旗子产生重力反应。
Example Weight Setting.
Example Weight Setting.

Now we will add some wind to the simulation

  • Add an empty to the scene where the source of the wind will be. Select the Particle Interaction tab and activate the Wind button. Set Strength to 1.
  • Now rotate and move the empty so that the Z axis point towards the flag. See Example Wind setup..


现在我们将会把风加入模拟.

  • 添加一个empty到场景那将会是风的起源。选择Particle Interaction 标签和激活Wind按钮。设定强度到 1.
  • 现在旋转和移动mpty,以便 Z 轴向旗子。见到实例风的设置。


A Tip 一个提示:

You can temporarily increase the Strength value so that you can more easily see the effect of the wind.

你能暂时增加Strength,以便你能更容易见到风的效应。


  • Now, you can press ALT-A to see the flag react to wind.
  • Adding an IPO curve to simulate changing wind strength will add more realism to the animation. See Example Wind Strength IPO..


  • 现在, 你能按 ALT-A 见到风对旗子产生反应。
  • 增加一个 IPO 曲线到模拟改变风的强度这将使动画更现实。看实例Wind Strength IPO 。
Example Wind setup.
Example Wind setup.
Example Wind Strength IPO.
Example Wind Strength IPO.

Why does it do 它做什么

Nothing!

没什么!

When an object becomes 'softbody' (Enable Soft Body) all of it's vertices are free floating particles in the void. This means unless any kind of interaction with 'the rest of the world' is established they keep in the state of motion they are in (1st newton law). Since we don't have any 'nontrivial initial conditions' implemented yet, they stick where they are. First guess would be: no Goal, Gravity, Edges as springs at all.
当一个物件成为 '柔体'(Enable Soft Bod) 它所有的是顶点在空间中是自由浮动的粒子。 这意味除非一些交互因素在“静止的世界”里是激活的,否则他们在运动的状态保持在(第一牛顿定律). 因为我们仍没有任何的 '非起始条件' 激活, 所以他们黏住不动。 首先认为: 没有Goal,Gravity, 全部的Edges as springs。

I only wanted a little jiggle...

我只需要轻轻摇动。

Use Goal it is!
It connnects the free particles with their siblings (vertices in a mesh, but curves and lattices should work too) by establishing a 'damped spring'. Use G Min and G Max to get it as close as you want.
Use Goal 可以做到!
它指挥它们同属的自由的粒子 (在一个网格的顶点, 但是曲线规和格子也可以)建立一个 'damped spring'。使用 G Min和 G Max 获得你最想要的效果。

But I want it to fall down...

但是我想要它下落。

Gravity makes things fall down.
Gravity使物下落。

I want some vertices to be soft...

我想要一些顶点变软。

Then you need to to have a vertex group assigned to goal.
Weight painting in that group means 1.0 sticks extacly to what comes out of Modifier stack for 'sibling' 0.0 move free in terms of .. i'll care for any force but Goal.
那么你需要去对一个顶点组分配到目标。.
(权重笔刷在一个组里意味1完全受影响,Modifier的堆的 '同属' 0.0是完全自由的。????)我将会注意除目标以外的任何的力场。
Previous: Manual/PartX Contents Next: Manual/PartX/Fluid Simulation
Personal tools