0
$\begingroup$

I have a physics simulation with roughly 1700 objects (water bottles). I have baked the simulation and tried to render it multiple times. Rendering a single frame works just fine. However, rendering everything results in these weird glitches. As a result of having turned on motion blur, I can tell that the bottles seem to return to their starting position.

My solution so far has been to rerender the glitched frames and continue, however it is very cumbersome and I would like to prevent this issue in the future. Has anyone experienced this issue?

As a side note, the letters you don't see falling down were simulated and then the position applied. Then the rigid-body simulation was removed so they aren't consuming resources.

Also, the bottles are instances of each other (copied with ALT D) and not new objects (no SHIFT D).

Here are some examples:

Link to Example Sequence

The first Image is the result of rendering an entire sequence, the second Image is the result of a single rendering.

Frame from Sequence Render

Frame from Single Render

$\endgroup$
0
$\begingroup$

I would say this has to do with an outdated physics Caché. I’m not sure where to fix this exactly, but I’m pretty sure it’s in the scene properties/settings. Look for a “rigid body world“ and re-bake the caché.

$\endgroup$
0
$\begingroup$

I found a workaround, if anyone has the same issue.

As I mentioned, rendering a single image doesn't cause the same problem. So I automated the rendering of a single image using the blender python api.

In case anyone needs to solve the same issue, copy this script into the text editor, and hit the play button. I suggest opening the system console under Window -> System console.

For anyone not familiar with coding, you won't get the usual window popping up which shows you how fare the computer is with rendering. The Interface will become non-responsive.

To be sure that everything is working, check the task manager to see your CPU / GPU usage spike and that the system console is printing something at the start and end of every render.

Script Base, I modified

The script:

import bpy

scene = bpy.context.scene
file_path = scene.render.filepath # get existing output path
scene.render.image_settings.file_format = 'PNG' # set output format to .png

for i in range(scene.frame_start, scene.frame_end):
    # info to system console
    print("Rendering frame Nr. " + str(i))

    # Updating the current frame
    scene.frame_set(i)

    # set output path so render won't get overwritten
    scene.render.filepath = file_path + str(i)

    # render still
    bpy.ops.render.render(write_still=True) 

    # print info to system console
    print("Done rendering frame Nr. " + str(i))

# restore the filepath
scene.render.filepath = fp

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.