This weekly report #39 is kindly sponsored by Matija Nalis and this time I have something really yummy for you.
BONE-DRIVEN IMAGE DISTORTION
First of all - I am happy to present a first demonstration of Bone-driven Image Distortion feature, which was developed by Ivan Mahonin during this month.
Check out a this video - http://youtu.be/YD3aK9SySZo
This is just an early demo, but as you can see it is already pretty much usable.
Here’s a brief list of missing pieces:
- Grid size is hardcoded at the moment (should be defined as layer parameter)
- The maximum deformation area is hardcoded too (should be defined as layer parameter and editable through handles)
- We need an action to reset bones to initial pose
- The feature not works correctly on Windows yet
- Maybe we will give some fine-tuning to distortion algorythm
There are few tricks about rendering to mention here.
First thing you need to know - the rendering is made in software mode, without any hardware optimizations. By default Synfig uses tiled rendering and this makes Skeleton Distortion layer MUCH SLOWER. You can ensure by yourself by disabling the tiled rendering using “SYNFIG_DISABLE_TILE_RENDER=1” environment variable - this will boost rendering speed for 2 times at least.
Unfortunately, the rendering mode enabled by “SYNFIG_DISABLE_TILE_RENDER=1” variable is not working correctly when zoom level is > 100%.
So, the real solution will be to properly get rid of tiled rendering by re-writing non-tiled mode.
The second trick is about debug mode. If you build Synfig with debug symbols, then the speed will be 5-7 time slower comparing to clean non-debug build.
The demonstration video above was recorded in non-tiled and non-debug mode, that’s why redraw speed is around 0.09 sec for single image, which is pretty fine to work with.
I believe we can achieve even better speed by implementing the hardware-optimized OpenGL rendering. But it’s pretty clear that Ivan won’t be able to deliver OpenGL rendering within the remaining 3 days of this month. Also, it looks like that converting one single layer to OpenGL won’t give us a desirable speed advantage (because there will be time losses for uploading image as texture to video memory and downloading back the result - this will create a bottlenecks).
The real speed advantage will be achieved if we will implement a full OpenGL renderer for all layers together, so we won’t need to convert each layer back and forth during rendering. This is pretty much attractive perspective, especially considering that Ivan is already prepared the infrastructure for that (at the beginning of this month).
Well, but that’s just a possible plans and perspectives.
At the moment our fundraising campaign for May is at the final countdown and we still have around $600 to go, so it’s still undefined if we will be able to keep Ivan working in next month.
Anyway, right now I’m heading to prepare a binary snapshots to let you test the new feature by yourself.
But the news aren’t over here! Last week we’ve had a lot of other cool contributions.
Many of you probably noticed the issue whenthe Timetrack rows were misaligned with parameters (see illustration below).
This issue turned to be very annoying when working with animation.
Last week we’ve got an epic fix from Djay, who worked hard for a long time to resolve this issue. The fix is merged into master branch and will be available within the next development snapshots.
But that was not the only fix from Djay for the past week. Here are a few more:
- #456 - Tooltip now shows current time when you drag keyframes
- #458 (partially) - Allow to select a keyframe by clicking on the keyframe indicator of the keyframe widget. Then the keyframe panel should reflect the selection too. The inverse works too (when change selection on keyframe panel the keyframe widget shows it too).
- #626 - When you drag a keyframe, its description is not erased anymore
Finally, we have another cool contribution form Yu Chen. This time he have implemented the option to change the interface language in Synfig Studio preferences.
Well, that’s all for today.
All mentioned fixes and improvements will be delivered with the upcoming development snapshots.