Time Management in Cinema 4DΒΆ
Cinema 4D uses a very sophisticated system for specifying time values. If only frame numbers were used, changing the frame rate would cause keys either to overlap or disappear. If only float values (seconds) were used instead, there would be problems because of the limited data precision. For example when using 30 fps the frame 29 = 29/30 could easily be misinterpreted as frame 28.
Cinema 4D has a time class that internally stores the time values as exact fractions independent of the frame rate. For example frame 29 is stored as fraction with nominator 29 and denominator 30. The class always tries to keep the nominator and denominator as small as possible. Hence 15/30 is stored as 1/2. Now when using 30 fps BaseTime.GetFrame()
will return 15, but when using 24 fps it will return frame 12:
The fraction: 1/2
Frames per second: 30
Frame in document: **15**
Otherwise take a look at this example:
The fraction: 8/1
Frames per second: 25
Frame in document: **200**