Smarter renderer?

This might’ve already been said, but would it be possible for the blender render engine to: When it’s rendering something, if nothing has changed in the scene except for one object, instead of re-rendering the whole scene it just re-renders that specific change?

Wouldn’t this save so much time in rendering?

If this is possible where can i suggest it?

thanks!

you could also just spend some time with the compositor you can save your self massive amount of time and avoid re-rendering things especially if all you are doing is tweaking minor things. Its just more work on your part and less on the BI.

for your case you could render things out as separate elements and just re-render the parts that change

I think -Frustration- is aiming to a smarter mechanism than what you suggest, Tyrant.
I guess that if it is not done by now is because it must be very complex to code.

that’s a mpeg4-like behavior. would be very smart, but i don’t know if it’s doable

that would be a mpge4-like behaviour. really clever, but i doubt it can be appllied also to 3d rendering, since to know if there are differences between one frame and the next, well, the next one should be rendered!

ops!

@ -Frustration-
If your referring to cycles I don’t think it can be done. Because cycles must calculate all the rays for different objects in the scene.
It sounds like a good idea but if it were implemented it would have a very limited application.
consider this if you have a reflective object and a diffuse object. you change the colour of the diffuse object should its reflection change colour too.
you change the colour of the background light should all the objects in the scene update to reflect the change.
you have a character walk across a floor should the shadow stay were it was on the first step
If your talking about BI then tyrant monkey has a point you could render for example a background. and a character in motion then composite the scene but then you have to find a way to fake shadows.

why not use shift + B to render a specific area only? You can always combine the two renders in gimp if you have a heavy scene and want to save it as a still.

There’s a number of factors that would need to be taken into account.

  • If an object moves, then not only is the area around the object considered changed, but also the area where the shadow lands.

  • If there is a reflecting or refracting object, then any area that shows the changed object in a reflection or through a refraction would have to be considered changed

  • If you add GI to the scene and use physically-based specular behavior (replacing it with true reflection of light), then if an object is changed it could affect the lighting in large areas of , if not the entire scene and also affect what is reflected in glossy materials or refracted behind glass, to only change the object when it comes to location and visibility may not even be practical and the recoloring and rapid re-calibration of lighting and shadows in the scene due to material changes may complicate the code a bit too much if all cases were to be covered (not to mention require a ton of coding work)

In other words, I can’t see this being any sort of priority for Brecht until Cycles’ feature list not only includes everything BI can do (that includes render passes, SSS, and volumetrics), but also after other, more practical optimizations is done (implementing faster raytree methods like QBVH and optimizing the shaders and the sampling algorithms)

This can be done to some extent with a light cache/map, like it is used in VRay (and probably other render engines as well). Afaik Cycles will have other render engines besides pathtracing in the future. I would really love t osee a light cache like GI method because it is fast and great for doing animations when nothing changes in your scene.