Blender Tools,Production

Code with Gooseberry Flavor

19 March, 2015 |  16 Comments | by psy-fi

The Gooseberry project moves ever forward and the team is deep into making the movie. Blender is being put to the test again and modified to meet the needs of this production.

So, what do code monkeys do in this environment behind the scenes? What are their eating habits? What branches do they climb on? What does a code banana look like? Are there gnus around? Are there monoliths with a strange black surface? This post will attempt to answer those questions, specifically regarding the habits of the code monkey specimen known in the code underworld as Psy-Fi. (That’s me.)

The Animation Challenge

As production proceeds, we have moved from modeling assets to animation, so we are slowly shifting the focus to animation tools. My personal tool-coding list consists mainly of animation-curve visualization, Viewport code overhaul, and the widget project.

Animation-curve visualization is a pretty straightforward feature: we generate a set of points in 3D space where an object or bone has passed through during animation and present that to the user. This already works in Blender, but we want to make it better. There are 3 ways we’re trying to do so:

  • Making it interactive (animation curves are currently refreshed only at the end of a transform if auto-keyframing is on) during transformation and possibly auto-updating it when an object is moved.
  • Making it fast. This means making it threaded and making it only update the parts of the scene that need updating. Also, only updating the range of frames we are interested in.
  • Making the curve itself editable. This is the ultimate target, but will need some research into what kind of constraints are needed in such a case.

The widget project mainly consists of creating clickable and dragable widgets in the Viewport, which can enable various functions to be executed easily. Those can include transforms or even sliders to control properties of rigs and meshes. This should in theory alleviate some of the need for animators to actually select bones to animate and also might enable more intuitive interaction with objects in general, if we define meshes themselves to act as widgets. Campbell and I have done some experiments and code for this project over the past months, with Ton acting as the proverbial monolith in this Space Odyssey, providing ideas and guidance; and Julian will join us shortly to help carry on the torch.

The Viewport Project

Aaah, the Viewport project! You might want to read the code blog post for more details on this. This is, strictly speaking, not tied to the Gooseberry project anymore, since it’s highly unlikely that the Gooseberry crew will benefit greatly from it (apart from drawing code optimizations). At the beginning of the project I allocated some time to investigate depth of field in the Viewport to make it easier for Mathieu to make choices in his direction during the animatic stage of the production. As a byproduct, we also had real-time Ambient occlusion to help with modeling and sculpting. Currently though, we aim for more Blender-related targets: physically based rendering in the Viewport, performance improvements, and support for modern graphic card features. Basically we’re trying to make Blender’s Viewport faster and more beautiful than before, even making it a viable choice as a rasterizing engine.

Over the past weeks, I have spent a sizable amount of time trying to get existing code by other coders to work with recent Blender versions, as well as read up on modern graphic card capabilities and techniques, and experiment with some of them (such as a new method for the depth-of-field effect that made it into Blender today).

The Sequencer

Editing is crucial in this movie. Mathieu never stops asking for Sequencer features. Even as I’m writing this post, he hovers above my chair repeatedly asking for improvements on how strip proxies are stored on the disc, for instance, while sweet glockenspiel music is coming from Francesco’s sheep doll nearby. This means I should stop writing soon though and start looking at his problem.


Last but not least, we have painting. Lots of small improvements were done, such as cavity masking, which was added after Andy made a random remark about the lack thereof, or random angle support for raked brushes, which was added as a Christmas gift to Manu. There are also larger structural changes planned to fix long-standing bugs and limitations.

Bug Fixing

You never know when an artist will throw the contents of his desk on the wall and start running, screaming hysterically while swearing at the software, the universe, life, and bad coffee. That’s why prevention is the best measure, and we try to keep Blender as bug-free as possible and, thus, keep such moments of frustration to a minimum. One day per week (Thursday for me) is bug-tracker day, and I have to take care of bug reports in the Blender tracker. We also have to take care of bugs in new features, but luckily a studio full of capable artists is more than enough to get feedback and stabilize the code before “masterizing” it (that is, adding it to our official Blender releases). Needless to say, any breakage that is really urgent in the studio often takes precedence over other requests, since we need to keep things moving.


Aaaand, that’s it! I hope at least some questions about the ecology of code monkeys have been answered.

16 Responses

  1. Sean Kennedy says:

    All are great improvements! I’m not even a character animator, and the motion path improvements sound wonderful and useful.

    I’m most excited for the widget project, because I’m hoping a lot of that extends over into the compositor, and we get widgets in there for transforming and working with 2D effects.

    Keep up the awesome work!

  2. Digidio says:

    Good to read all those actions in the blender studio I really see great viewport changes in the near future good luck you

  3. These articles are awesome!
    Thank you.

  4. Gigantic thank you for the Christmas gift! Whenever I paint textures it’s in use :) Though I’ve yet to make a nice collection of cool brushes for different situations and release them as pure CC0/Public Domain.

    Thank you also for the dithering and cavity painting and dof and ao and so many other cool features that make using Blender so much nicer :)

  5. Dan Eicher says:

    Long, long time ago I was messing around and made a patch that let objects/bones be callable so they could act like widgets (with some extra coding I never got around to doing) and Campbell veto’d the whole idea with something like “why would anyone want to attach a function to an object?”


  6. loulou says:

    Why do not you write more?
    You write great, really fun to read
    And more about different sweets Blender

  7. Nico says:

    Reading above, especially the animation part, and the work beeing don on viewports.
    I wondered why blender hasn’t much tools that interact with the viewport and model, in a more graphical way. (thinking of how google sketchup has some angular tools), or thinking about displaying the animation curves directly in the 3d view space. And have some onion skinning in the animation process (for example X semi transparen frames before/after, with a distance of Y frames in between those images). Well maybe tips for development.

    PS i’d love to see some kind of real coding explained as been done in Blender, i think a lot of potential coders, might get over the barrier of coding and understanding it all.
    I understand its a complex program to code, or maybe i’m wrong and its all clear.
    But now i’m in the unknown and dont touch the code state..

  8. Anton says:

    Great to her from the coders! It’s very impressive how fast blender evolves nowadays! I’ve been glad about the sequencer getting polished, especcially about the “Nested Scene Sequence Hack” from Campbel that Mathieu posted some weeks ago. Are there plans for real (scene independent) nested sequence functionality coming to VSE? I think Adobe Premiere Pro implemented that very nicely, but in blender it would open up even more possibillities, like easy sequence relinking…

    I made a quick mockup, how I could imagine nested sequences in Blender:
    What do you think about it, could it be useful for project gooseberry?


  9. Charlie Ringström says:

    When I download the file I get a version in which Victor’s legs are… weird.

    I would understand if you wouldn’t share the complete Victor rig without paying for the cloud. Just in case you didn’t know.

    • Nathan Craddock says:

      When you open the .blend file you need to inform Blender that it is a trusted source so it can execute some scripts automatically. There are two ways to do this.

      1. If you open the file through File > Open, you can check the box in the lower left-hand corner that says Trusted Source.

      2. If you opened it another way, there is a button at the top that says Reload Trusted. Click that.

      Hopefully that helps!

  10. n-pigeon says:

    For a long time your work is my favorite! You can say you have a fan xD Thx for your work on Painting and OGL renderer! They are absolutely vital for me and you make them great to use. Thank you~! o/

  11. Kevin says:

    Hats of to the coders! It amazes me what can be done with numbers by masters that know how to wield them, manipulate them and sculpt them to their desire. Turning them into such amazing things as Blender. And you share! You’re much appreciated, current and past developers of Blender. Because of what you do and I presume love to do, I get to do what I love to do, animate and create art.


  12. Alejandro Dominguez says:

    nice to hear something about the coding side of the project, wich IDE’s or software use the developers to work? i dont think they would use the blender text editor to create all the magic

  13. Craigo says:

    Thanks a million for all the new features – all of them end up being valuable, even if my main focus is blenderpaint :D I am very glad Manu and Andy inspired you to make the cavity and random rake, together they make some serious blocking a breeze!

  14. Alexander13 says:

    I think blender 2.76 is the biggest updating of blender. The most important things (as for me) it’s modelling tools and modifires.

Comments are closed.