Advertisement

You're blocking ads, which pay for BlenderNation. Read about other ways to support us.

Dopplerender: a turbo-boost for animation rendering

15

Jefferson Smith writes:

Ever notice how much time you spend rendering identical images? Maybe your animated character pauses to think, or maybe you're just using (and reusing) a limited number of poses. But sometimes it seems that over half the frames you spend precious time rendering are identical the frames you've already rendered. Sure, you can try to keep track of which ones are duplicates and then wrangle those files by hand, but situations get complicated quickly, and it ends up being easier to just bite the extra render time and save yourself the headache.

Well dopplerender solves all that. It's not a new renderer. It's not an image processor. It's just a really simple Python script that uses a couple of clever tricks to figure out which frames in your animation are duplicates, and then renders them only once. Then it fills in all the other doppleganger frames by soft linking to the rendered file. Easy peasy. And really, really fast.

In my test cases, (real animation projects creating illustrations for my YouTube series) dopplerender cut my rendering time in half.

I've been using dopplerender in my own production process for a couple of weeks now, and I think it's time to start getting some feedback from other users.

Happy animating!

About the Author

Jefferson Smith

Fantasy author, creativity researcher, and amateur film maker.

15 Comments

  1. It seems super useful! Does it detect also the difference that could appear with motion blur between two frames?

    • If the images are different because of motion blur, then they are different and dopplerender will not treat them as the same image. Even if the unblurred images would have been identical. And that's usually what you would want it to do.

    • That's EXACTLY the kind of thing dopplerender will be great for. Sure, you can usually do that kind of optimization by hand, rendering once and then duplicating the frame, but nobody does that. It ends up creating as many problems as it solves, so we just grit our teeth and let it render. But with dopplerender, you don't have to worry about the redundancy. In just the last week, it's already saved me over 35 hours of rendering time, because I'm using an old-timey limited animation style for my current project.

  2. All initial doubts I had about this were blown away by the full blog post.
    I must say, congratulations on some impressive insight, and a beautifully simple idea and implementation.
    It seems face-slappingly simple once explained, but the revelation to use fast thumbnails as a pre-process for visual-diffing the frames is actually just brilliant. Until I read that, I was critically questioning everything about this. Now I’m working out how much time I can justify playing around with it/offering help. I’ll definitely be using it myself in any case.

    There’s no license in the script itself. What (if any) intentions/plans do you have for it going forwards? Permissive/GPL? If one wanted to contribute, say for example by testing/running it on Windows and MacOS and maybe wrapping it in a bpy addon, that sort of stuff would be good to know.

    I would strongly advise you to put the script on github, rather than only as a file download on your own website. That would make it easier to discover, access, and contribute.

    Thanks very much for posting this.

  3. Excellent questions, Acro. What license am I planning to use? I'd like to keep my name attached as "originator," but aside from that, Blender is about sharing, so after getting so much satisfaction from Blender over the years, I'm sharing this fairly broadly as a way of giving back. I was thinking CC BY 4.0.

    Why is it on my site and not on github? I'm happy for it to BE on github of course, but I know nothing about github stewardship and I suspect I would end up being something of a deadbeat project dad. I'm a novelist by day and can often disappear down rabbitholes for months at a time. Not the responsive kind of maintainer an active project needs. So I decided to share it quickly, without having to first learn the ins and outs of github project stewardship.

    What do I want to see happen to it? I want to see people extend it and use it in whatever ways make sense. I suppose the best roadmap would be to create an addon that brings the feature inside Blender and puts a simple UI on the render panel. That would be the most beneficial to the most users. (I'm already getting gripes from users who aren't Python-savvy and don't understand why I didn't develop this into a fully sentient app that just does what they want. :-)

    Ultimately, I'd love to see the idea fully integrated into the Blender core, and then into Maya and 3ds Max and all the others as well.

    Anyway, I'm really pleased to see responses like this, from someone who both "gets it" and also appreciates the broader questions that are still unanswered. If you'd like to contact me through my web site, I'd be happy to talk further about some of these issues.

    • From the Shore on

      I am interested in further developing this code and (hopefully) turn it into a full-fledged Blender add-on. This will be my first major project I will develop using Git, therefore I want to use this opportunity do it properly by (trying to) following the best practices. This includes choosing a fitting license.

      Before I continue, I must mention that I am (like many of us) no lawyer. But what I found out after some research is that CC BY 4.0 is a license that is not well suited for software [1]. I tried to find a good alternative but am unable to find it because there are multiple licenses[2] which could match CC BY 4.0: MIT[3], BSD[4], GPL[5], just to name a few.

      You mentioned that aside from Blender you would also would like to see this concept implemented in other 3D software like Maya, 3ds Max, and the like. All the mentioned software packages have API’s for Python scripting. Keeping this in mind (and the fact that you want to keep the “originator” title) I would suggest the GPL v3 license.

      My reasoning is that this license requires modifications to be made available (allowing everyone to enjoy the improvements), including a notice of the copyright and license (which among others attributes you as the “originator”). And as an added bonus this license “prevents” (again, don’t quote me on this: still not a lawyer ;)) troubles about patents. Also Blender uses this same license :D.

      But as you are the original creator of this code I want you to have the final say on this. So which of these (or other[2]) licenses would you choose for this project?

      [1] https://choosealicense.com/licenses/cc-by-4.0/
      [2] https://choosealicense.com/appendix/
      [3] https://choosealicense.com/licenses/mit/
      [4] https://choosealicense.com/licenses/bsd-3-clause/
      [5] https://choosealicense.com/licenses/gpl-3.0/

Leave A Reply

To add a profile picture to your message, register your email address with Gravatar.com. To protect your email address, create an account on BlenderNation and log in when posting a message.

Advertisement

×