Showing posts with label feathering. Show all posts
Showing posts with label feathering. Show all posts

Monday, November 21, 2011

Update: feathering and nodes

Just a little update to let you all know this project has not been abandoned yet :).

I have made some improvements to the feathering code to prevent it from overlapping itself so easily. Even though it now works better than before, it still isn't as robust as having a second bézier shape (like in Nuke). So, I've decided to add a bézier feathering mode to give the user the option of using it when the current method fails.

I have also started working on a dedicated Roto2D compositing node. At the moment Roto2D uses a standard Image node which is less than ideal. The new node will fix the current rendering and undo issues. The next release will probably be a intermediate one with parts of the script moved to the node but not all of it yet. I'm still working on the best way to allow the node and the image editor to interact and right now python gives me a faster turn around.

Saturday, August 20, 2011

Almost there...

I'm currently finishing things up for the first public release. There is still an annoying issue with loading a new or existing .blend while Roto2D is active but as long as you activate Roto2D after loading the .blend it is, dare I say it, useable!
Here's a list of changes since the last post:
  • MUCH faster image updates. I've added a couple of functions to Blender that gives me a more direct route to the pixel data. This allows for 15-20x (guesstimated) faster updates. It can now play back filled in animated masks at an acceptable speed.
  • Feathering!!! I finally managed to get it to work. There are some issues with large feather distances and sharp corners but since it is intended to be used to match the soft-edge of an in focus image element it is already useable. For bigger blurs you can attach a blur node to the mask's image node.
  • The feather distance can be adjusted per point. The feather distance for every curve point between two points is calculated using the logistic function mentioned here. This gives it a nice sigmoid slope.
  • Every mask now has a corresponding node in the Node editor. These nodes are fully managed (created/removed/updated) by Roto2D. The nodes can be forced to update by enabling 'Update nodes' in the panel.
  • The masks now match the render settings instead of the image size. A dotted line shows the size of the mask in the editor.
  • Inverting a mask. Just as fast as a non-inverted mask thanks to the new pixel functions mentioned above.
  • Changing the Bézier resolution per mask. range: 10-80
  • Translate, rotate & scale a mask or the selected points. Uses the standard Blender 'g', 'r' & 's' keys.
Example of an Inverted, feathered mask showing the variable feather distance. Inset: corresponding alpha mask generated by Roto2D



Most of the desired functionality is there. Now it's a matter of fixing a couple (Fingers crossed, knock on wood, etc.) of bugs and releasing it.