Gravity ignores units scale
Closed, ArchivedPublic

Description

System Information
Ubuntu 16.10, GeForce GTX 950M/PCIe/SSE2

Blender Version
Broken: 2.77a

Short description of error
When dropping an object from 20m high, it takes about 2 seconds before it hits the ground. At 60fps this is sqrt(20*2/9.81)*60=121.16 frames. As it starts falling at frame 1, it should hit the ground around frame 122. Blender does this correctly.

Now if the scale is set to 0.1, that 20m becomes 2m. Dropping an object from 2m high should take sqrt(20*2/9.81)*60=38.3 frames. Hence the object should hit the ground at frame 39. However, it doesn't and still hits the ground at frame 122.

Exact steps for others to reproduce the error

  • Open the file gravity.blend
  • Press N and select the pole to see that it is 20m high, indicating that the bottom of the cube is 20m above ground.
  • Click play animation (alt+a)
  • When the cube hits the ground pause the animation (alt+a)
  • Compare frames 121 and 122 and note that it correctly hits the ground at frame 122.
  • In the 'properties' area under the 'scene' tab in the 'units' section, set 'scale' to 0.1.
  • Note that the pole's hight now has changed to 2m.
  • Note that the gravity is still shown as -9.81m/s².
  • Rewind the animation and play again.
  • Note that the cube still hits the ground at frame 122, instead of the expected frame 39.

Workaround

  • Change the gravity to -98.1m/s² (i.e. divide the gravity by the applied scale).
  • Rewind the animation and play again.
  • Note that the cube now hits the ground at frame 39.

Related bugs
T27311 Maximum value of physics gravity is too small
T40925 Scene gravity hard limited

Details

Type
Bug

Can confirm, also related to and mentioned in T49544.
It does not just affect rigid body physics, but also cloth simulation (see the given task for an example), as well as several other things. The issue is simply that certain subsystems of blender ignore the unit scale, while others do not. A mismatch basically.

LazyDodo (LazyDodo) closed this task as Archived.Sep 28 2017, 7:43 PM
LazyDodo (LazyDodo) claimed this task.

Can confirm the behavior, however, it's working as designed, and even if we were to go out and change this behavior it's not and easy fix and it is likely that the physics will get some rework in 2.8 anyhow, so I'm gonna have to classify it as a feature request and close it, we'll revisit once the physics code in 2.8 gets some love.