Advertisement

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

New Feature: RotoBezier

55

An easy way of keyframing Bezier curves for rotoscoping was recently added to Blender.

ZanQdo says:

Showing of a quick roto mask right inside Blender with my new RotoBezier addon. Thanks to Campbell Barton for all the API features and fixes needed for this :)

As always, if you want to use this feature you can download a cutting-edge release from GraphicAll.

About the Author

Avatar image for Bart Veldhuizen
Bart Veldhuizen

I have a LONG history with Blender - I wrote some of the earliest Blender tutorials, worked for Not a Number and helped run the crowdfunding campaign that open sourced Blender (the first one on the internet!). I founded BlenderNation in 2006 and have been editing it every single day since then ;-) I also run the Blender Artists forum and I'm Head of Community at Sketchfab.

55 Comments

  1. Cool! But just a friendly note: try doing a speed-demo instead for demonstrating a feature of precision like this. But thanks a lot!

  2. I'm really happy to see these additions to help with more compositor projects, this looks straightforward and not too far from functionality for the same thing in other apps, kudos! To infinity and beyond! :) WOO!

  3. Reminds me of the time I used to spend in combustion doing that. Now they just have to add adjustable feathering and it'll be totally awesome.

  4. Great feature
    I think this feature opportunely modifyed would be a great addition to blender
    The ability to keyframe curves (like the flash's motion tween feature ) and to use this curves in some ways (for example like Pocoyo-Style vectorial, animated textures)

  5. Firstly, I don't know a thing about rotoscoping so...

    ...can this feature be used to animate any Bezier curve, such as that used as a path for other objects to follow? It looks much easier than the empty / hooks method for animating a Bezier curve, so it would have been nice to see what's happening in the graph editor (if anything is happening?) as each keyframe is inserted.

  6. Uhm... I don't get why this has to be so laborious.
    As far as I know there are quite a few video analysis algorithms, software tools and SDKs out there that can recognize parts of an image (like the outline of a face) fairly easily. Bezier curves could be calculated from tracked outlines. I know Blender isn't a video processing tool, but wouldn't such a feature dramatically reduce the amount of tweaking time required?

    Sorry if this sounds like an oversimplification as I'm new this area.

  7. @TomsT: Yes, there are lots of machine vision algorithms out there for doing this automatically. Very few create a usable, "clean" (at least in compositing terms) matte. Believe it or not, this sort of thing is much of what goes into high-end visual effects in blockbuster films. In fact, this is a rather crude (if expertly done) example--a face is WAY easier to track than a hand or a small object, the shot is static and relatively clean (both things that would disrupt an automatic algorithm) and in many cases, the finished roto mask like that above would simply be used as a "garbage" matte to restrict the area of influence of a algorithm that would better outline the hair, precise outlines, etc...

  8. Thanks to all for your comments, Thi's script was made to solve a very targeted need in my compositing workflow. I'll try to answer a few questions:

    @Reaction: yes it can animate any bezier curve, even 3D ones.

    @peoplecommentingonvideo: I just wanted to let the people who need this know the tool exists, I know the video sucks.. prefer to spend the time coding than making a super nice video, since then I have added new tools to the script:

    http://pasteall.org/pic/7071

    For those interested in extending rotobezier functionalities there's an Elysiun thread here:

    http://blenderartists.org/forum/showthread.php?t=202830

    cheers all

  9. Very nice! A nice step toward a good compositing tool. Now if this could be added in the compositor directly for instant feeback in the viewers, I might switch back to blender for compositing :D

    Congrats on the progress!!

  10. GreatWork I just watched your Final Result video, Top Notch! Good work I can't wait to see what blender will look like in 5 years!

  11. Ouh! Really neat feature!
    ^__________^

    I'll try it to make a vector animation now!... Shape tween makes me mad when it gives errors ;)

  12. I tested - it's awesome :) You knocked out Flash's shape tween!
    One thing that really need an improvement:

    1. After animating a curve (many frames) I decided to duplicate it (not an instance). And for some reason second curve's animation got linked to the first. So when I changed something in second - first changed this also. It can be an option but the good way is to fully duplicate keys without linking,

    Now I'm rendering a small test animation....

  13. Nice tool, usefull for compositing (that's what I do most of the time).
    Add a feather feature, maybe a non constant feather along the path and it will be one of the best rotoscoping tools ever seen...or nearly ;)

  14. @Moolah: I tried and it works fine for me when duplicating inside the same curve, when duplicating to another object it does copy the animation but you can use the Clear Animation button for that. Are you using latest SVN?

  15. the tool is great! but the technique shown here is not the best way to do roto.
    please check this tuts on how to do better rotoscoping

    http://maltaannon.com/live/rotoscoping-made-easy/

    this guy talks to much.. but the technique is great! basically to avoid doing it, frame by frame you set 3 inicial key frames at the beginning at the mettle and at the end of the footage and then re-adjust and ad additional keyframes in bettween. this is a really fast way to do rotoscoping..

    thanks for the tool tho!

  16. mmm dunno, what I do (when I'm working seriously) is find the extremes first and key there, after that just tweak. I think that is smarter than just doing halves and halves

  17. The easiest program to use for animating vector images is Anime Studio, either the Pro or Debut version. The Debut version is very cheap and frequently on sale. The bone system in Anime Studio is much better than the After Effects puppet tool. The Pro version also has rigid body physics for vector objcects. I've been playing around with that and it's awesome.

    Check it out here: http://store.smithmicro.com/ProductDetails.aspx?pid=13043

  18. Just tried it out, and wow!!! it works great.
    Especially if you add a short-cut for the Insert keyframe button.
    Was it not possible to animate Bezier curve points in Blender before?

  19. @ZanQdo: try this http://www.pasteall.org/blend/4258

    What I did to duplicate: shift+D, move object somewhere, enter edit mode, change something on a keyframe of the new object, delete a keyframe (bcoz my changes is still here but not keyframed) then click "insert". It's inserting but also changing the same keyframe in the first object. If I'll click "Clear Animation" (that is also handy) - I get only the first frame "unlinked".
    If you'll "unlink" (or copy as I understand it) all 1st object's frames to duplicated - it will be really time-saving feature for some funny vector animations :)

    BTW: if you'll add a gradient with controls to you Roto-Bezier (it may be some Blend Texture "hack" with Empty auto-creation) - then you'll bring this great feature's functionality to the next step :) It's almost the same "adjusted feathering" that was vidrazor2 told about. Just in a case if you'll be doing it, I'll make a screen from Flash's realisation (their controls are good there but not prefect, I remember some specific issues).

    @Terrachild: Thanks for the info. I heard about Anime Studio before but what I craved from Adobe Flash was just good shape tweens. They did not brought a lot to CS5 - just redesigned and added some FX (I didn't checked all features) - it's really a shame for this major corporation. These "bone things" in Flash wasn't really impressing because they're flat and not very handy.

  20. The only problem I can see is when you add a point to the curve after keyframing and store the key, your previous roto work gets thrown off because the new point zooms all over the place where it hasn't been keyframed. I usually roto in AE, so I fired it up to see what it's doing differently. When you add a point to a shape or mask in AE, it calculates the position of the new point along the line for frames that are not keyframed. That way you can add points when you need them during your roto work and it doesn't affect your previous work. This is necessary for serious roto work because you don't always know how many points you're gonna need until you roto for a while.

    Is there some what to implement that here? Or is that way too complicated?

  21. @Terrachild: all tools in this addon are in the form of modifers so you should be able to add a custom hotkey for them in the hotkey editor.

    About adding new points, we are working on it, it needs some new development in RNA paths before I can start working on this on the script side

    @Moolah: you are right actually! thank you for the report

  22. @Terrachild: ugh! I meant operators, not modifiers. for example when the addon is enabled you can run the keyframer by bpy.ops.curve.insert_keyframe_rotobezier() from the console or a script, the same way you can add to the hotkey editor

  23. Thanks ZanQdo,
    I wasn't complaining. I use to spend endless hours writing computer programs. So I know what it's like to have people keep requesting features. Gee that's a nice cake you made, now can you just put some extra frosting on it, and maybe a little whipped cream, oh and don't forget to put some cherries on top also. Okay hop to it!

    I know that what I'm suggesting is actually a lot of work. Because you're not working from base code within Blender, you can't do it the way AE does it. You're stuck with the subdivide command in Blender. Which I think means you're gonna have to keyframe every frame between the existing first and last keyframes for the added point. That will require calculating a bezier solution for each frame using the previous and next point along the curve so the curve remains unchanged. The user would select two points, then press subdivide, which ideally would trigger your script and set the keyframes for the new point on every frame. If you can't get the subdivide button to trigger your code, then you might want to add your own subdivide button in your RotoBezier panel so it can all happen automatically.

    Not impossible, but it would take some time to code it correctly. Not sure if you want to spend the time doing it!

  24. Wow, impressive explanation! I got what you meant inspite of the fact that I'm not a programmer. I think that for first steps here is no such a huge need in these recalculated points. Especially when you do masking. Do I get it right that we can add another curve object over first to "expand" masked zone? My opinion is that feather features are more important.

  25. I worked out a way to feather perfectly the way it is. I'll try to throw together a simple tutorial.
    And yes, you can add a second curve. I'll demo this in the tutorial.

  26. @Terrachild hehe yes, thank you, the problem ATM is it is actually impossible because RNA paths shuffle, we ARE working on it :) I look forward to see your tutorial!! this kinda videos really make my day. Where you able to add hotkeys? it's really easy, try it in the 3D view global category, you can see the operator path using the tooltip on each button in the script. for insert just type curve.insert_keyframe_rotobezier

  27. Yea I added a hotkey. If you you only need it once in awhile you don't need to go into the user preferences. Just right click on the "Insert" button, select "Add shortcut" to store a temporary hotkey, hover over the "Press Key" pop-up button, and press a key like "F5" for example. Any key will do. It's much easier that way to store a hotkey. Unfortunately, even if you save your file, Blender doesn't store your hotkey. I wish Blender would fix that!

  28. Yes, if you save preferences it will save the right-click hotkey method. But if you don't do that on a clean "New File" you're gonna save everything else in your current file as your new default.

    If you're in the middle of working on something else, you might not want to do that. It's a little irritating the way it works. You have to open a new file, create a curve, tab into edit to activate "RotoBezier," then right-click store the hotkey, delete your curve so you have a clean default file again, and then save preferences.

    It would be better if you could independently save hotkeys as you work and have them saved without messing up your default "New File" setup.

  29. My comment from blenderartists.org topic on this.

    Have you seen PTAM ( http://www.robots.ox.ac.uk/~gk/PTAM/ )

    Isn't there a Blender 2.5 build with Libmv by Francios Tarlier ( http://www.francois-tarlier.com/blog/tag/libmv (site is down right now)) I was hoping that see a recent build with libmv, haven't yet.

    I've been thinking about this "Feathering" feature for sometime for Blender. I tried AfterEffects or After Effects CS5 (AE), you still can't use Bezier in the Mask Feather ( http://livedocs.adobe.com/en_US/Afte...FBE3B396B.html ). Although; I haven't found an AE expression that'll do the trick. The AE's Gradient Fill and Gradient Stroke is only available for shapes (not mask); still that's room for improvement. With the proper direction the feather (gradient) bezier curve could probably grow out existing code from Adobe Illustrator Mesh Tool as an option to add falloffs. Doesn't RotoBrush have feathering already if your using tablet similar to the Extract tool in Photoshop?

    I'm not sure Adobe AE Product Manager has that in their "To Do" list Mask Feather option for gradient bezier curve of such. In Adobe Illustrator on the other hand (for stills or artwork), there's Opacity Mask, there you can add/define a shape the Opacity Mask (basically it's a layer within the Opacity), use Mesh Tool on the shape, sort-of mimic the gradients by adding white or black colors to the mesh points to the shape.

    Now, the "feathering" is it still being coded as we speak? This feathering coding hmmm... My idea sees RotoBrush with feathering in Blender (Libmv with Vertex Painting or Texturing Painting as option(?)).

    I'm on my way out. --> This is just occurred to me. And what's up with Nodes and UV/Image Editor couldn't you define the falloffs there? Use Materials or Texture Node on a Bezier shape to define the RotoBezier falloff there for now? Anyone tried this yet (SFMH).

    TTYL

  30. Boolean difference or intersect of two bezier objects (like donut; have you tried that???) Blender already does that, just need to focus on texture or materials. Then use ramp in a material or texture to affect the alpha, no? Feather come sooner or later, of course. Here's my trial with rotoBezier build. I tried playing with mapping of the Blend and here's what resulted of that http://www.pasteall.org/pic/show.php?id=7129 We still need more control or a way of fine tuning the the texture space. Oh wait, using an texture decal parented to an empty (I'll that try that later).

  31. As much as I love this new feature I HATE the video viscerally.
    What is the need to tweek forver a B-curve and then do the same for other four or five frames?
    What you learn that you wouldn't already learn from the first two?
    To be useful a demo/tutorial should be concise and SHORT!

    (And no, I do not like that music neither)

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

×