0
$\begingroup$

I'm super new to Blender and I hope I'm not offending others asking this. I am baking physics using the method described here and then do the rendering using the code below. However, it takes a while for the simulation to take place and I only care about the final status of the system/simulation. So I was wondering, is there a way to shortcut the simulation and only get the final status/scene?

self.scene.render.filepath = output_name
logfile = '/dev/null'
open(logfile, 'a').close()
old = os.dup(1)
sys.stdout.flush()
os.close(1)
os.open(logfile, os.O_WRONLY)

# do the rendering
if simulate:
    bpy.ops.render.render(animation=True)
else:
    bpy.ops.render.render(write_still=True)

# disable output redirection
os.close(1)
os.dup(old)
os.close(old)

Thanks

$\endgroup$

2 Answers 2

5
$\begingroup$

No, it needs to calculate each step through the animation to make sure that the physics are correct. There is no way to "cut in line."

Think about it in terms of a stream of marbles across a plane in Blender. If (theoretically) you could calculate the end frame, you would image a line of marbles moving along. But due to calculating the end frame, you missed the fact that a cube slid across the path, pushing marbles out of the way.

Blender needs to calculate every frame to make sure physics are correct.

If you already know the locations of the objects you want on the end frame, then I recommend just placing the objects there.

$\endgroup$
2
$\begingroup$

No and if you think about it, it really does make sense.

Blender does not "calculate" the result. The results are based on the events that are simulated by Blender's realtime physics engine and they can be different every time you run the simulation.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .