<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.synfig.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jose+X</id>
		<title>Synfig Studio :: Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.synfig.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jose+X"/>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/Special:Contributions/Jose_X"/>
		<updated>2026-04-10T17:42:15Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Source_code&amp;diff=13005</id>
		<title>Dev:Source code</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Source_code&amp;diff=13005"/>
				<updated>2010-07-18T20:12:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category|Code}} {{Category|Permalink}}&lt;br /&gt;
&lt;br /&gt;
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code: &lt;br /&gt;
&lt;br /&gt;
*Using git (one repository)&lt;br /&gt;
*Using svn (three repositories). '''DISCONTINUED'''&lt;br /&gt;
&lt;br /&gt;
Once you grab the code, you will need to follow the {{l|Dev:Build Instructions|build instructions}}.&lt;br /&gt;
&lt;br /&gt;
Commit notifications to master branch are sent to [http://cia.vc/stats/project/synfig CIA] and show up in the {{l|Contact|IRC channel}}.&lt;br /&gt;
&lt;br /&gt;
While you are browsing the code, you may wish to refer to these links:&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/tracker/?atid=757416&amp;amp;group_id=144022&amp;amp;func=browse Bug tracker]&lt;br /&gt;
* [http://patches.synfig.org/groups/synfig/ Patches review board]&lt;br /&gt;
* [http://download.tuxfamily.org/synfig/api/index.html API documentation]&lt;br /&gt;
* {{l|Source Outline|source code outline}}&lt;br /&gt;
* {{l|Source Glossary|source code glossary}}&lt;br /&gt;
* {{l|Source:ETL_make_check|ETL make check failures}}&lt;br /&gt;
* {{l|Source:Layers|Mapping between layer types, classes and .cpp files}}&lt;br /&gt;
* {{l|Source:class_ValueNode|ValueNode types}}&lt;br /&gt;
* {{l|Source:BlendMethods|Blend Method enumeration values}}&lt;br /&gt;
* {{l|Interesting Readings}}&lt;br /&gt;
&lt;br /&gt;
== GIT repository at Sorceforge==&lt;br /&gt;
&lt;br /&gt;
Anonymous access: &lt;br /&gt;
&lt;br /&gt;
  git clone git://synfig.git.sourceforge.net/gitroot/synfig/synfig &lt;br /&gt;
People with commit access should use this command instead:&lt;br /&gt;
&lt;br /&gt;
  git clone ssh://USERNAME@synfig.git.sourceforge.net/gitroot/synfig/synfig&lt;br /&gt;
&lt;br /&gt;
You can also check out the [http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig web interface] to that repository.&lt;br /&gt;
&lt;br /&gt;
Check out [http://sourceforge.net/apps/trac/sourceforge/wiki/Git Sourceforge Git wiki page] for further references.&lt;br /&gt;
&lt;br /&gt;
== SVN repository at Sourceforge (THIS REPOSITORY HAS BEEN DISCONTINUED)==&lt;br /&gt;
&lt;br /&gt;
Anonymous access: &lt;br /&gt;
* https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/&lt;br /&gt;
* https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/&lt;br /&gt;
* https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/&lt;br /&gt;
&lt;br /&gt;
Web interface:&lt;br /&gt;
* http://synfig.svn.sourceforge.net/viewvc/synfig/&lt;br /&gt;
&lt;br /&gt;
To checkout code from the command line:&lt;br /&gt;
&lt;br /&gt;
  svn co https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/ etl&lt;br /&gt;
  svn co https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/ synfig-core&lt;br /&gt;
  svn co https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/ synfig-studio&lt;br /&gt;
&lt;br /&gt;
You can also download a [http://synfig.org/code/synfig-svn-checkout.tar.gz daily updated svn checkout] that you can update using svn up. This was created using a {{l|Subversion|procedure}} by {{l|User:Dooglus|dooglus}}.&lt;br /&gt;
&lt;br /&gt;
You can also download daily updated svn exports for [http://synfig.org/code/ETL-svn.tar.gz ETL], [http://synfig.org/code/synfig-svn.tar.gz synfig], [http://synfig.org/code/synfigstudio-svn.tar.gz synfigstudio].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Proposed workflow and other repositories ==&lt;br /&gt;
&lt;br /&gt;
Proposed git workflow:&lt;br /&gt;
&lt;br /&gt;
* Consider the '''master''' branch the stable one. &lt;br /&gt;
* Each coder should have a '''username_master''' branch where all the small changes are done. &lt;br /&gt;
* Once the '''username_master''' branch is considered stable it can be rebased/merged to '''master'''.&lt;br /&gt;
* Work on new non-trivial features/fixes on '''username_feature''' branches.&lt;br /&gt;
* Once the '''username_feature''' branch is considered stable it can be rebased/merged to '''master'''.&lt;br /&gt;
* Obviously commit trivial fixes straight to the '''master'''.&lt;br /&gt;
* If it is possible, rebase &amp;amp; rework branches to keep history more sane, linear and atomic.&lt;br /&gt;
* Releases are tagged according to following criteria:&lt;br /&gt;
** If the release consist on a few trivial set of features or bug fixes then increase the third numeration level: 0.61.09 -&amp;gt; 0.61.10&lt;br /&gt;
** If the release consist on a set of important features and/or includes non backward compatible file format, then increase the second level numeration: 0.61.09 -&amp;gt; 0.62.00&lt;br /&gt;
&lt;br /&gt;
Proposed set of git repositories:&lt;br /&gt;
&lt;br /&gt;
* admin.git - gitosis admin settings - holds groups, repos and users&lt;br /&gt;
* code/* - direct conversions from SVN&lt;br /&gt;
** code/ETL.git - ETL&lt;br /&gt;
** code/synfig.git - synfig&lt;br /&gt;
** code/synfigstudio.git - synfigstudio&lt;br /&gt;
* pkg/* - bits for various packaging systems&lt;br /&gt;
** pkg/windows.git - Windows packaging (needs separating from the code repos)&lt;br /&gt;
** pkg/macos.git - MacOS packaging (needs separating from the code repos)&lt;br /&gt;
** pkg/jhbuild.git - JHBuild moduleset (needs writing)&lt;br /&gt;
** pkg/autopackage.git - Autopackage bits (needs writing)&lt;br /&gt;
* web/* - various bits used to maintain the website&lt;br /&gt;
** web/skin.git - skin for the website&lt;br /&gt;
** web/content.git - content for the website (pending switch to ikiwiki)&lt;br /&gt;
* misc/* - various stuff needed&lt;br /&gt;
** misc/svn2git.git - the scripts used to convert the SVN repo to git&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Source_code&amp;diff=13004</id>
		<title>Dev:Source code</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Source_code&amp;diff=13004"/>
				<updated>2010-07-18T20:11:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category|Code}} {{Category|Permalink}}&lt;br /&gt;
&lt;br /&gt;
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code: &lt;br /&gt;
&lt;br /&gt;
*Using git (one repository)&lt;br /&gt;
*Using svn (three repositories). '''DISCONTINUED'''&lt;br /&gt;
&lt;br /&gt;
Once you grab the code, you will need to follow the {{l|Build Instructions|build instructions}}.&lt;br /&gt;
&lt;br /&gt;
Commit notifications to master branch are sent to [http://cia.vc/stats/project/synfig CIA] and show up in the {{l|Contact|IRC channel}}.&lt;br /&gt;
&lt;br /&gt;
While you are browsing the code, you may wish to refer to these links:&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/tracker/?atid=757416&amp;amp;group_id=144022&amp;amp;func=browse Bug tracker]&lt;br /&gt;
* [http://patches.synfig.org/groups/synfig/ Patches review board]&lt;br /&gt;
* [http://download.tuxfamily.org/synfig/api/index.html API documentation]&lt;br /&gt;
* {{l|Source Outline|source code outline}}&lt;br /&gt;
* {{l|Source Glossary|source code glossary}}&lt;br /&gt;
* {{l|Source:ETL_make_check|ETL make check failures}}&lt;br /&gt;
* {{l|Source:Layers|Mapping between layer types, classes and .cpp files}}&lt;br /&gt;
* {{l|Source:class_ValueNode|ValueNode types}}&lt;br /&gt;
* {{l|Source:BlendMethods|Blend Method enumeration values}}&lt;br /&gt;
* {{l|Interesting Readings}}&lt;br /&gt;
&lt;br /&gt;
== GIT repository at Sorceforge==&lt;br /&gt;
&lt;br /&gt;
Anonymous access: &lt;br /&gt;
&lt;br /&gt;
  git clone git://synfig.git.sourceforge.net/gitroot/synfig/synfig &lt;br /&gt;
People with commit access should use this command instead:&lt;br /&gt;
&lt;br /&gt;
  git clone ssh://USERNAME@synfig.git.sourceforge.net/gitroot/synfig/synfig&lt;br /&gt;
&lt;br /&gt;
You can also check out the [http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig web interface] to that repository.&lt;br /&gt;
&lt;br /&gt;
Check out [http://sourceforge.net/apps/trac/sourceforge/wiki/Git Sourceforge Git wiki page] for further references.&lt;br /&gt;
&lt;br /&gt;
== SVN repository at Sourceforge (THIS REPOSITORY HAS BEEN DISCONTINUED)==&lt;br /&gt;
&lt;br /&gt;
Anonymous access: &lt;br /&gt;
* https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/&lt;br /&gt;
* https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/&lt;br /&gt;
* https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/&lt;br /&gt;
&lt;br /&gt;
Web interface:&lt;br /&gt;
* http://synfig.svn.sourceforge.net/viewvc/synfig/&lt;br /&gt;
&lt;br /&gt;
To checkout code from the command line:&lt;br /&gt;
&lt;br /&gt;
  svn co https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/ etl&lt;br /&gt;
  svn co https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/ synfig-core&lt;br /&gt;
  svn co https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/ synfig-studio&lt;br /&gt;
&lt;br /&gt;
You can also download a [http://synfig.org/code/synfig-svn-checkout.tar.gz daily updated svn checkout] that you can update using svn up. This was created using a {{l|Subversion|procedure}} by {{l|User:Dooglus|dooglus}}.&lt;br /&gt;
&lt;br /&gt;
You can also download daily updated svn exports for [http://synfig.org/code/ETL-svn.tar.gz ETL], [http://synfig.org/code/synfig-svn.tar.gz synfig], [http://synfig.org/code/synfigstudio-svn.tar.gz synfigstudio].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Proposed workflow and other repositories ==&lt;br /&gt;
&lt;br /&gt;
Proposed git workflow:&lt;br /&gt;
&lt;br /&gt;
* Consider the '''master''' branch the stable one. &lt;br /&gt;
* Each coder should have a '''username_master''' branch where all the small changes are done. &lt;br /&gt;
* Once the '''username_master''' branch is considered stable it can be rebased/merged to '''master'''.&lt;br /&gt;
* Work on new non-trivial features/fixes on '''username_feature''' branches.&lt;br /&gt;
* Once the '''username_feature''' branch is considered stable it can be rebased/merged to '''master'''.&lt;br /&gt;
* Obviously commit trivial fixes straight to the '''master'''.&lt;br /&gt;
* If it is possible, rebase &amp;amp; rework branches to keep history more sane, linear and atomic.&lt;br /&gt;
* Releases are tagged according to following criteria:&lt;br /&gt;
** If the release consist on a few trivial set of features or bug fixes then increase the third numeration level: 0.61.09 -&amp;gt; 0.61.10&lt;br /&gt;
** If the release consist on a set of important features and/or includes non backward compatible file format, then increase the second level numeration: 0.61.09 -&amp;gt; 0.62.00&lt;br /&gt;
&lt;br /&gt;
Proposed set of git repositories:&lt;br /&gt;
&lt;br /&gt;
* admin.git - gitosis admin settings - holds groups, repos and users&lt;br /&gt;
* code/* - direct conversions from SVN&lt;br /&gt;
** code/ETL.git - ETL&lt;br /&gt;
** code/synfig.git - synfig&lt;br /&gt;
** code/synfigstudio.git - synfigstudio&lt;br /&gt;
* pkg/* - bits for various packaging systems&lt;br /&gt;
** pkg/windows.git - Windows packaging (needs separating from the code repos)&lt;br /&gt;
** pkg/macos.git - MacOS packaging (needs separating from the code repos)&lt;br /&gt;
** pkg/jhbuild.git - JHBuild moduleset (needs writing)&lt;br /&gt;
** pkg/autopackage.git - Autopackage bits (needs writing)&lt;br /&gt;
* web/* - various bits used to maintain the website&lt;br /&gt;
** web/skin.git - skin for the website&lt;br /&gt;
** web/content.git - content for the website (pending switch to ikiwiki)&lt;br /&gt;
* misc/* - various stuff needed&lt;br /&gt;
** misc/svn2git.git - the scripts used to convert the SVN repo to git&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev_talk:Build_Instructions&amp;diff=12773</id>
		<title>Dev talk:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev_talk:Build_Instructions&amp;diff=12773"/>
				<updated>2010-06-21T13:06:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: Created page with 'It's unclear whether ccache is necessary simply to speed things up (and hence is optional) or if it is required to avoid errors (as stated at the bottom). ~~~~'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's unclear whether ccache is necessary simply to speed things up (and hence is optional) or if it is required to avoid errors (as stated at the bottom). [[User:Jose X|Jose X]] 13:06, 21 June 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12575</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12575"/>
				<updated>2010-06-05T13:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Arrowheads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
The projection layer (a new type of transformation layer) would have two angle parameters that define how the lower layers get transformed: as if projected from a canvas angled in 3D space unto a 2D final image. By combining different encapsulations that use the projection layer, we can facilitate some 3D animation realism from simple 2D manipulations.&lt;br /&gt;
[[User:Jose X|Jose X]] 22:14, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==  New Gradient Tool icon ==&lt;br /&gt;
[3]  The Rectangle Tool and Gradient Tool have almost identical icons.  One of them should be changed.&lt;br /&gt;
Arbitrary suggestion:  Make the Rectangle's icon a rectangle instead of a square, with a solid fill, and make the Gradient's icon a coloured gradient instead of grey.&lt;br /&gt;
&lt;br /&gt;
==  Arrowheads  ==&lt;br /&gt;
[4]  I use Synfig for animations that go in instructional videos.  I currently use the Polygon tool for making arrows, but it would be a lot faster if Bline layers had a property for putting shapes like arrowheads at the ends of the path.[[User:Envergure|Envergure]] 18:17, 21 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:In addition:&lt;br /&gt;
&lt;br /&gt;
:*The ability to stroke bline paths so as to have the outline be made up of a series one or more arbitrary shapes (ie, besides lines) would also be useful since this would facilitate the animation of discrete objects that relate to each other in space and across frames.&lt;br /&gt;
&lt;br /&gt;
:*Having a shapes repository would be very useful [and with an improved synfig import mechanism that allows exported variables from imported canvases to be seen and be accessible automatically under the imported canvas' namespace -- this would facilitate the use of these .sif libraries/plugins]. And a community of people can collaborate on writing programs to help find shapes that meet certain specs: for example, just like we can write a program to find the optimal way to set up N blines to minimize squared error(?) estimation of a circle, we can write other programs to find how N blines might represent hemi-sphere and many other shapes as faithfully as possible. [Contrast with having users create standard shapes out of blines but using subjective criteria.]&lt;br /&gt;
&lt;br /&gt;
:*A special raster and vector library and set of tutorials can be created to help with the creation of tutorials for synfig documentation. Eg, include png files for &amp;quot;every&amp;quot; view of synfig (eg, every menu entry, panel view, button, etc); have arrows, boxes, bubbles, and other synfig &amp;quot;widgets&amp;quot; that are likely to be used in videos; and include good tutorials and set of instructions for using this art/animation library to build videos or simulated screenshots, etc.&lt;br /&gt;
:::Side effects of this doc project would include helping more people get involved with synfig, motivating more people be able to build such documentation/instructions for projects beyond synfig (though perhaps using synfig to create the scenes), and helping to create a standard set of pictures and best practices for synfig so that the synfig docs will tend towards uniformity (to the degree this is desirable).&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12569</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12569"/>
				<updated>2010-06-05T11:07:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Arrowheads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
The projection layer (a new type of transformation layer) would have two angle parameters that define how the lower layers get transformed: as if projected from a canvas angled in 3D space unto a 2D final image. By combining different encapsulations that use the projection layer, we can facilitate some 3D animation realism from simple 2D manipulations.&lt;br /&gt;
[[User:Jose X|Jose X]] 22:14, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==  New Gradient Tool icon ==&lt;br /&gt;
[3]  The Rectangle Tool and Gradient Tool have almost identical icons.  One of them should be changed.&lt;br /&gt;
Arbitrary suggestion:  Make the Rectangle's icon a rectangle instead of a square, with a solid fill, and make the Gradient's icon a coloured gradient instead of grey.&lt;br /&gt;
&lt;br /&gt;
==  Arrowheads  ==&lt;br /&gt;
[4]  I use Synfig for animations that go in instructional videos.  I currently use the Polygon tool for making arrows, but it would be a lot faster if Bline layers had a property for putting shapes like arrowheads at the ends of the path.[[User:Envergure|Envergure]] 18:17, 21 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:The ability to stroke bline paths with other shapes would also be useful since this would facilitate the animation of discrete objects (and not just line segments) that relate to each other.&lt;br /&gt;
&lt;br /&gt;
:Having a shapes library/repo would be very useful (with an improved import mechanism: eg, allowing exported variables from imported canvases to be seen and be accessible automatically under the imported canvas' namespace.. so as to facilitate the use of .sif libraries/plugins). And a community of people can collaborate on writing programs to help find shapes that meet certain specs (eg, just like we can write a program to find the ideal way to set up blines to minimize squared error(?), we can write other programs to find hemi-sphere and many other shapes that will look close to ideal despite using blines).&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12568</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12568"/>
				<updated>2010-06-05T07:05:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Arrowheads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
The projection layer (a new type of transformation layer) would have two angle parameters that define how the lower layers get transformed: as if projected from a canvas angled in 3D space unto a 2D final image. By combining different encapsulations that use the projection layer, we can facilitate some 3D animation realism from simple 2D manipulations.&lt;br /&gt;
[[User:Jose X|Jose X]] 22:14, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==  New Gradient Tool icon ==&lt;br /&gt;
[3]  The Rectangle Tool and Gradient Tool have almost identical icons.  One of them should be changed.&lt;br /&gt;
Arbitrary suggestion:  Make the Rectangle's icon a rectangle instead of a square, with a solid fill, and make the Gradient's icon a coloured gradient instead of grey.&lt;br /&gt;
&lt;br /&gt;
==  Arrowheads  ==&lt;br /&gt;
[4]  I use Synfig for animations that go in instructional videos.  I currently use the Polygon tool for making arrows, but it would be a lot faster if Bline layers had a property for putting shapes like arrowheads at the ends of the path.[[User:Envergure|Envergure]] 18:17, 21 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:The ability to stroke bline paths with other shapes would also be useful since this would facilitate the animation of discrete objects (and not just line segments) that relate to each other.&lt;br /&gt;
&lt;br /&gt;
:Having a shapes library/repo would be very useful (with an improved import mechanism: eg, allowing exported variables from imported canvases to be seen and be accessible automatically under the imported canvas' namespace.. so as to facilitate the use of libraries/plugins). And a community of people can collaborate on writing programs to help find shapes that meet certain specs (eg, just like we can write a program to find the ideal way to set up blines to minimize squared error(?), we can write other programs to find hemi-sphere and many other shapes that will look close to ideal despite using blines).&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12567</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12567"/>
				<updated>2010-06-05T07:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Arrowheads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
The projection layer (a new type of transformation layer) would have two angle parameters that define how the lower layers get transformed: as if projected from a canvas angled in 3D space unto a 2D final image. By combining different encapsulations that use the projection layer, we can facilitate some 3D animation realism from simple 2D manipulations.&lt;br /&gt;
[[User:Jose X|Jose X]] 22:14, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==  New Gradient Tool icon ==&lt;br /&gt;
[3]  The Rectangle Tool and Gradient Tool have almost identical icons.  One of them should be changed.&lt;br /&gt;
Arbitrary suggestion:  Make the Rectangle's icon a rectangle instead of a square, with a solid fill, and make the Gradient's icon a coloured gradient instead of grey.&lt;br /&gt;
&lt;br /&gt;
==  Arrowheads  ==&lt;br /&gt;
[4]  I use Synfig for animations that go in instructional videos.  I currently use the Polygon tool for making arrows, but it would be a lot faster if Bline layers had a property for putting shapes like arrowheads at the ends of the path.[[User:Envergure|Envergure]] 18:17, 21 May 2010 (UTC)&lt;br /&gt;
:The ability to stroke bline paths with other shapes would also be useful since this would facilitate the animation of discrete objects (and not just line segments) that relate to each other.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12481</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12481"/>
				<updated>2010-05-31T06:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: some more reworkings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking; (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking; or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas with supporting notation.&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our mappings. The rows are labeled 1, 2, 3 in column one (to represent each frame), and the value in the second column is the value the parameter takes at that frame number.&lt;br /&gt;
&lt;br /&gt;
As an example [add table diagram later], a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In this and other early sections of this page, we'll use formula string notation that might be a bit simplified from the full string syntax described later.]&lt;br /&gt;
&lt;br /&gt;
dfgdfgdfg   fdgsdfgdfgsdgf&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
=== Example 1 of Formula String with Waypoints ===&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
=== Example 2 of Formula String with Waypoints ===&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Procedure for Updating Formula after Creating Dependent Waypoint ==&lt;br /&gt;
&lt;br /&gt;
[This should cover all the conversion cases in all combination cases possible. consider sibling/cousin case vs ancestor vs decendant.]&lt;br /&gt;
&lt;br /&gt;
== Formula String Syntax in More Detail ==&lt;br /&gt;
&lt;br /&gt;
=== Basic Features ===&lt;br /&gt;
&lt;br /&gt;
=== Relationship to Synfig Conversions ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String that Shows the Automatically Generated Synfig Conversions ====&lt;br /&gt;
&lt;br /&gt;
=== Interpolation ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String Accounting for Interpolation ====&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String that Includes Parameter Linking ====&lt;br /&gt;
&lt;br /&gt;
=== Example of Formula String and the Corresponding SIF sections ===&lt;br /&gt;
&lt;br /&gt;
=== Full BNF ===&lt;br /&gt;
&lt;br /&gt;
[link to external document]&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
==== What Does the Formula Panel Look like? ====&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
[Eventually, there will be mock pictures to show all the features of formula creation/editing in action.]&lt;br /&gt;
&lt;br /&gt;
==== An Example ====&lt;br /&gt;
&lt;br /&gt;
Let's see how we can create graphically the following formula: { []:3sin(2x+4), []: }&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12480</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12480"/>
				<updated>2010-05-31T04:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking; (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking; or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas with supporting notation.&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our mappings. The rows are labeled 1, 2, 3 in column one (to represent each frame), and the value in the second column is the value the parameter takes at that frame number.&lt;br /&gt;
&lt;br /&gt;
As an example [add table diagram later], a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
fgdfgdf&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
=== Example 1 of Formula String with Waypoints ===&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
=== Example 2 of Formula String with Waypoints ===&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Formula String Syntax in More Detail ==&lt;br /&gt;
&lt;br /&gt;
=== Basic Features ===&lt;br /&gt;
&lt;br /&gt;
=== Relationship to Synfig Conversions ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String that Shows the Automatically Generated Synfig Conversions ====&lt;br /&gt;
&lt;br /&gt;
=== Interpolation ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String Accounting for Interpolation ====&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String that Includes Parameter Linking ====&lt;br /&gt;
&lt;br /&gt;
=== Example of Formula String and the Corresponding SIF sections ===&lt;br /&gt;
&lt;br /&gt;
=== Full BNF ===&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
==== What Does the Formula Panel Look like? ====&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
[Eventually, there will be mock pictures to show all the features of formula creation/editing in action.]&lt;br /&gt;
&lt;br /&gt;
==== An Example ====&lt;br /&gt;
&lt;br /&gt;
Let's see how we can create graphically the following formula: { []:3sin(2x+4), []: }&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12479</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12479"/>
				<updated>2010-05-31T04:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: Some more reworkings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking; (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking; or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas with supporting notation.&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our mappings. The rows are labeled 1, 2, 3 in column one (to represent each frame), and the value in the second column is the value the parameter takes at that frame number.&lt;br /&gt;
&lt;br /&gt;
As an example [add table diagram later], a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
fgdfgdf&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
=== Example 1 of Formula String with Waypoints ===&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
=== Example 2 of Formula String with Waypoints ===&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Formula String Syntax in More Detail ==&lt;br /&gt;
&lt;br /&gt;
=== Basic Features ===&lt;br /&gt;
&lt;br /&gt;
=== Relationship to Synfig Conversions ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String that Shows the Automatically Generated Synfig Conversions ====&lt;br /&gt;
&lt;br /&gt;
=== Interpolation ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String Accounting for Interpolation ====&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
&lt;br /&gt;
==== Example of Formula String that Includes Parameter Linking ====&lt;br /&gt;
&lt;br /&gt;
=== Full BNF ===&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
==== What Does the Formula Panel Look like? ====&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
[Eventually, there will be mock pictures to show all the features of formula creation/editing in action.]&lt;br /&gt;
&lt;br /&gt;
==== An Example ====&lt;br /&gt;
&lt;br /&gt;
Let's see how we can create graphically the following formula: { []:3sin(2x+4), []: }&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12478</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12478"/>
				<updated>2010-05-31T04:05:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: some more reworkings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking; (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking; or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas with supporting notation.&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our mappings. The rows are labeled 1, 2, 3 in column one (to represent each frame), and the value in the second column is the value the parameter takes at that frame number.&lt;br /&gt;
&lt;br /&gt;
As an example [add table diagram later], a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
fgdfgdf&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Example of Formula String that Includes Parameter Linking and Shows the Automatically Generated Synfig Conversions ==&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
[Eventually, there will be mock pictures to show all the features of formula creation/editing in action.]&lt;br /&gt;
&lt;br /&gt;
==== What Does the Formula Panel Look like? ====&lt;br /&gt;
&lt;br /&gt;
==== An Example ====&lt;br /&gt;
&lt;br /&gt;
Let's see how we can create graphically the following formula: { []:3sin(2x+4), []: }&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12477</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12477"/>
				<updated>2010-05-31T02:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Example of Formula String that Includes Parameter Linking and Shows the Automatically Generated Synfig Conversions ==&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
[Eventually, there will be mock pictures to show all the features of formula creation/editing in action.]&lt;br /&gt;
&lt;br /&gt;
==== What Does the Formula Panel Look like? ====&lt;br /&gt;
&lt;br /&gt;
==== An Example ====&lt;br /&gt;
&lt;br /&gt;
Let's see how we can create graphically the following formula: { []:3sin(2x+4), []: }&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12476</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12476"/>
				<updated>2010-05-31T02:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Creating and Editing Formulas through the Formula Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
[Eventually, there will be mock pictures to show all the features of formula creation/editing in action.]&lt;br /&gt;
&lt;br /&gt;
==== What Does the Formula Panel Look like? ====&lt;br /&gt;
&lt;br /&gt;
==== An Example ====&lt;br /&gt;
&lt;br /&gt;
Let's see how we can create graphically the following formula: { []:3sin(2x+4), []: }&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12475</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12475"/>
				<updated>2010-05-31T02:27:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Graphical Formula Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
=== The Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
A Formula Panel shows the value of a selected layer parameter using the formula system described on this page.&lt;br /&gt;
&lt;br /&gt;
It can also show a partial result when more than one parameters have been selected and these have some common values/formulas. In this case, we can determine, eg, exactly during which frames we want these multiple parameters to remain equal.&lt;br /&gt;
&lt;br /&gt;
Linking is shown by referring to the relevant parameter by name (will exporting be required?) with the easy option to see how that parameter is itself defined: when hovering the mouse over that linked parameter, a context menu pop-up can allow a Formula Neighbor Panel to be displayed for that parameter.&lt;br /&gt;
&lt;br /&gt;
A Formula Neighbor Panel is like a Formula Panel except that it is independent of whatever layer parameter may happen to be selected at that point in time (ie, it's decoupled from current selections).&lt;br /&gt;
&lt;br /&gt;
=== Creating and Editing Formulas through the Formula Panel ===&lt;br /&gt;
&lt;br /&gt;
fghfghfghg&lt;br /&gt;
You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12474</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12474"/>
				<updated>2010-05-31T02:11:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Animations Present Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a [http://en.wikipedia.org/wiki/Partition_of_a_set partitioning] of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12473</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12473"/>
				<updated>2010-05-31T02:06:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Formulas in the World of Animations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a {{l|http://en.wikipedia.org/wiki/Partition_of_a_set|partitioning}} of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas that Capture All Frame Values despite Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12472</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12472"/>
				<updated>2010-05-31T02:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to define layer parameters through a function definition (ie, a formula). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Today, creating synfig conversions (potentially with linking) can require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. [As an example, see {{l|Parabolic Shot|this tutorial}}.] We want to substitute the manual conversion procedure with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our formula system must then include all information necessary to account for any possible change over time (ie, over frames), and, since animations can introduce rather arbitrary changes in value, this can potentially lead to a very complex specification of our formula.&lt;br /&gt;
&lt;br /&gt;
We'd like each &amp;quot;formula&amp;quot; to have a string representation that is as simple as possible.&lt;br /&gt;
&lt;br /&gt;
We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a {{l|http://en.wikipedia.org/wiki/Partition_of_a_set|partitioning}} of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas in the World of Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12471</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12471"/>
				<updated>2010-05-31T01:54:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Formulas can Survive Waypoints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our &amp;quot;formula&amp;quot; must include all information necessary to account for any possible change over time (ie, over frames).&lt;br /&gt;
&lt;br /&gt;
We'd like a string representation of a &amp;quot;formula&amp;quot;. We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a {{l|http://en.wikipedia.org/wiki/Partition_of_a_set|partitioning}} of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas in the World of Animations ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12470</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12470"/>
				<updated>2010-05-31T01:53:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Waypoints Present Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our &amp;quot;formula&amp;quot; must include all information necessary to account for any possible change over time (ie, over frames).&lt;br /&gt;
&lt;br /&gt;
We'd like a string representation of a &amp;quot;formula&amp;quot;. We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Animations Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a {{l|http://en.wikipedia.org/wiki/Partition_of_a_set|partitioning}} of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12469</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12469"/>
				<updated>2010-05-31T01:52:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Waypoints Present Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our &amp;quot;formula&amp;quot; must include all information necessary to account for any possible change over time (ie, over frames).&lt;br /&gt;
&lt;br /&gt;
We'd like a string representation of a &amp;quot;formula&amp;quot;. We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Waypoints Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the value of the parameter to a constant value (for all frames), either (a1) directly or (a2) after having introduced {{l|Convert|conversions}} and linking, (b) by setting the value of the parameter to a different value in at least two frames (ie, introducing one or more dependent waypoints), using {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} or introducing the {{l|Convert#Linear|conversion frame dependency}}, either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation that takes effect for frames being animated between relevant waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints. [&amp;quot;Directly&amp;quot; means the parameter's value has no conversions or linking.]&lt;br /&gt;
&lt;br /&gt;
The motivation behind introducing a formula framework is to provide a simpler interface to the current procedure used to create conversions ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoint dependencies have been introduced, a &amp;quot;simple&amp;quot; explicit formula is not likely to describe the parameter's value at all frames. We would likely need multiple formulas, each applying to the disjoint subsets of a {{l|http://en.wikipedia.org/wiki/Partition_of_a_set|partitioning}} of all the frames.&lt;br /&gt;
&lt;br /&gt;
To see how we might be able to deal with the effects of the waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). That is, we want a &amp;quot;formula&amp;quot; to specify what single value the parameter will take at each individual frame. A single simple formula won't be correct, in general, amid animation waypoints and the associated interpolations. We'll need a bifurcation consisting of multiple formulas.&lt;br /&gt;
&lt;br /&gt;
We can represent any mapping (ie, &amp;quot;formula&amp;quot;) as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
As an example, a table with rows: &amp;quot;1&amp;quot;, &amp;quot;34.3&amp;quot;; &amp;quot;2&amp;quot;, &amp;quot;23&amp;quot;; and &amp;quot;3&amp;quot;, &amp;quot;235&amp;quot;; represents that the parameter has value 34.3 for frame 1, 23 for frame 2, and 235 for frame 3.&lt;br /&gt;
&lt;br /&gt;
[In the next section, we'll overview an example notation that can capture this information in a fairly compact fashion.]&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12468</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12468"/>
				<updated>2010-05-31T01:11:07Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a single compact formula may very likely cease to represent the value of the parameter once we have introduced animations. Our &amp;quot;formula&amp;quot; must include all information necessary to account for any possible change over time (ie, over frames).&lt;br /&gt;
&lt;br /&gt;
We'd like a string representation of a &amp;quot;formula&amp;quot;. We'd like a graphical interface for creating and manipulating a formula.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the formula form.&lt;br /&gt;
&lt;br /&gt;
== Waypoints Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value of the parameter for all time, either (a1) directly or (a2) after having introduced conversions and linking, (b) by setting the specific value of the parameter for a chosen frame using the {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} (introducing waypoints), either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation for frames between certain waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints.&lt;br /&gt;
&lt;br /&gt;
Formulas are intended to provide a simpler interface to the current procedures for conversions and linking ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoints have been introduced, a single explicit formula is not likely to describe the parameter for all frames. To see how we might be able to deal with waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). So our ideal &amp;quot;formula&amp;quot;, which normally specifies automatically the value the parameter takes at each frame, now will be augmented to cover every single change in mapping (from frame number to parameter value) each waypoint and interpolation introduces.&lt;br /&gt;
&lt;br /&gt;
We can represent any &amp;quot;formula&amp;quot; for synfig as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
SA major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12467</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12467"/>
				<updated>2010-05-31T00:47:39Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Some Issues not yet Addressed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
== Waypoints Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value of the parameter for all time, either (a1) directly or (a2) after having introduced conversions and linking, (b) by setting the specific value of the parameter for a chosen frame using the {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} (introducing waypoints), either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation for frames between certain waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints.&lt;br /&gt;
&lt;br /&gt;
Formulas are intended to provide a simpler interface to the current procedures for conversions and linking ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoints have been introduced, a single explicit formula is not likely to describe the parameter for all frames. To see how we might be able to deal with waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). So our ideal &amp;quot;formula&amp;quot;, which normally specifies automatically the value the parameter takes at each frame, now will be augmented to cover every single change in mapping (from frame number to parameter value) each waypoint and interpolation introduces.&lt;br /&gt;
&lt;br /&gt;
We can represent any &amp;quot;formula&amp;quot; for synfig as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
SA major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
: To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
::We create a 1-1 mapping with conversions as they are now. All values in the current conversion system must be specified with formulas as well. Later, for presentational purposes only, we use mathematics rules to simplify (eg, &amp;quot;3*1*sin(x)*1&amp;quot; gets shown as &amp;quot;3sin(x)&amp;quot;). This means &amp;quot;formulas&amp;quot; will be implied from the sif file and need not be stored. Doing things this way allows for backwards compatibility as much as possible and avoiding gratuitous redundancies in the sif format. [Error detection/correction redundancies should be addressed as a separate issue if desired.]&lt;br /&gt;
::As an example, the &amp;quot;add&amp;quot; conversion will be &amp;quot;A*(N+M)&amp;quot;. Note the scalar value being multiplied by the two addends just as is the case today, and, similar to as things are now, the A would have a default value of &amp;quot;1.0&amp;quot;.&lt;br /&gt;
: We note that any given waypoint, at worst, adds a single deviation and possible addition of a bifurcation entry; however, we can have many more waypoints than frames. For example, a parameter might depend on 5 other values, all of which could be animated independently and at every frame. Or eg2: any five non-overlapping subsections of the &amp;quot;formula&amp;quot; can be changed at each frame [..or equivalently, we can have multiple sibling/cousin node within the tree change at each frame.] In each of these cases, we end up with 5 times more waypoints than frames; thus, it should be clear that some waypoints won't introduce further changes in our formula system or that perhaps we should simplify multiple bifurcations when possible so as never to have more than the same number of bifurcations as there are frames. Not yet clear if it is preferable to have { [1]:33+x, [2]:343+y } or { {[1]:33, [2]:343} + {[1]:x, [2]:y} }.&lt;br /&gt;
::Still to come (hopefully) are some rules and examples. Eventually, we have to specify the precise rules for all possible scenarios.&lt;br /&gt;
: Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out interpolation modes from each waypoint.&lt;br /&gt;
::It should be an easy notational change to add this semantic information and any similar one to the &amp;quot;[..]:&amp;quot; notation introduced above. Eg, {[c,l:0]: 6, [l,c:10, c,c:20]: 5 } means that the value of the parameter starts off at 6 and changes linearly to become 5 at frame 10 and then stays at 5 thereafter (up to and past frame 20). Perhaps a better notation in cases where most of the interpolations are similar would be to consider specifying each of these few combinations pointing to the waypoints that use them, rather than repeat the combination at each waypoint. Eg, { [[c,c]] [[l,c:2, 32,123-200,205]] [0]:2323, [1]:2343, [2]:33, [3-31]:322, [32]:234, [123-200]:22, [205]:252 } to mean that waypoints 2, 32, 123-200, and 205 use linear/constant while every other waypoint uses constant/constant.&lt;br /&gt;
: We may need to augment the notation to specify waypoints explicitly (eg, adding a &amp;quot;w&amp;quot; in there somewhere), but perhaps waypoints are implied (is there any other possibility once we change values ggdfgsdfgdfg?).&lt;br /&gt;
::Yea, I think any specified values once animation has been introduced, counts as a waypoint. So this is implied mostly. Some minor rule(s) might be added for the sake of formality or to handle any degenerate case that might exist.&lt;br /&gt;
I am still learning about synfig so I may have added any number of errors to this page. [[User:Jose X|Jose X]] 00:47, 31 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12466</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12466"/>
				<updated>2010-05-30T23:32:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Waypoints Present Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
== Waypoints Present Challenges ==&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value of the parameter for all time, either (a1) directly or (a2) after having introduced conversions and linking, (b) by setting the specific value of the parameter for a chosen frame using the {{l|Doc:Animation Basics|&amp;quot;Animate Editing Mode&amp;quot;}} (introducing waypoints), either (b1) directly or (b2) after having introduced conversions and linking, or (c) through the process of interpolation for frames between certain waypoints, either (c1) directly or (c2) after having introduced conversions and linking at either of the adjacent waypoints.&lt;br /&gt;
&lt;br /&gt;
Formulas are intended to provide a simpler interface to the current procedures for conversions and linking ((a2), (b2), (c2)). As a special case, setting the value of a parameter &amp;quot;directly&amp;quot; ((a1), (b1), (c1)) also falls within the scope of a formula, namely the formula &amp;quot;= c&amp;quot;, where c is the direct constant value chosen.&lt;br /&gt;
&lt;br /&gt;
For cases (b) and (c), where waypoints have been introduced, a single explicit formula is not likely to describe the parameter for all frames. To see how we might be able to deal with waypoints, we consider that a function (in the mathematical sense) is nothing but a mapping from one set of values to another set of values. In our case here, we have a mapping from the set of frame numbers (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). So our ideal &amp;quot;formula&amp;quot;, which normally specifies automatically the value the parameter takes at each frame, now will be augmented to cover every single change in mapping (from frame number to parameter value) each waypoint and interpolation introduces.&lt;br /&gt;
&lt;br /&gt;
We can represent any &amp;quot;formula&amp;quot; for synfig as a two column table. This is the most general way to specify our formulas. The rows are labeled 1, 2, 3... (representing each frame) as the value within column one, and the value in the second column at a given row is the value the parameter takes at the frame number (at the column one value).&lt;br /&gt;
&lt;br /&gt;
.....&lt;br /&gt;
SA major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12465</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12465"/>
				<updated>2010-05-30T22:46:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
== Waypoints Present Challenges ==&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12464</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12464"/>
				<updated>2010-05-30T21:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
== Waypoints Present Challenges ==&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
== Formulas can Survive Waypoints ==&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
== Example 1 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
== Example 2 of Formula String with Waypoints ==&lt;br /&gt;
&lt;br /&gt;
As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
== Some Issues not yet Addressed ==&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
== Graphical Formula Support ==&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12463</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12463"/>
				<updated>2010-05-30T02:49:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. Please don't yet delete sections that don't make sense. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Example 1: If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Example 2: As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12462</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12462"/>
				<updated>2010-05-30T02:34:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Beware: Rough notes.. may pain the reader's mind. Will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Example 1: If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Example 2: As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12461</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12461"/>
				<updated>2010-05-30T02:32:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Rough notes.. will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Example 1: If the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Example 2: As above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12460</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12460"/>
				<updated>2010-05-30T02:31:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Rough notes.. will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. A few examples down below may help tie some things together. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Eg, if the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Eg 2, as above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12459</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12459"/>
				<updated>2010-05-30T02:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Rough notes.. will finish this initial draft later.. some sections make sense (I hope) but a few are even more sketchy. [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Eg, if the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Eg 2, as above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:New_Animation_Tools&amp;diff=12458</id>
		<title>Dev:New Animation Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:New_Animation_Tools&amp;diff=12458"/>
				<updated>2010-05-30T02:16:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Motion Tool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Animation Tools on Synfig ==&lt;br /&gt;
It may sound a bit harsh, but for a &amp;quot;2d vector animation studio&amp;quot; Synfig Studio has far too few and far too simple animation tools.  Only the first five (Normal, Smooth move, Scale, Rotate and Mirror) in the tool box can do some sort of animation.&lt;br /&gt;
&lt;br /&gt;
IMHO this needs  to change.  So I started thinking about what new tools would be useful for animation.&lt;br /&gt;
&lt;br /&gt;
== Motion Tool ==&lt;br /&gt;
The name says it all, a tool designed to easily add motion to any of Synfig's objects.&lt;br /&gt;
&lt;br /&gt;
At the moment one of the first five tools is used to move things around in animation mode in order to create waypoints, and therefore defining the animation.  While using Synfig I've notice a few things:&lt;br /&gt;
&lt;br /&gt;
* Having to jump all around the timeline&lt;br /&gt;
* Guess estimating how fast/slow will the motion be&lt;br /&gt;
* Problems trying to simulate motions in specific patterns (ie. Circular)&lt;br /&gt;
&lt;br /&gt;
Taking this into consideration the Motion Tool could work like this:&lt;br /&gt;
&lt;br /&gt;
* Only set the time to the start of the motion, the tool inserts waypoints further down the timeline automatically&lt;br /&gt;
* Either type in the speed on the Tool Options panel, or have a graphical representation of it (ducks perhaps)&lt;br /&gt;
* Allow the motion to describe an arbitrary path, the tool calculates the right position, time and number of waypoints to insert&lt;br /&gt;
* Optionally, specify a certain pattern for the motion to follow (ie. Circular)&lt;br /&gt;
[A {{l|Dev:Potential Formula Framework|page}} has been started on design for a string/gui version of functions.]&lt;br /&gt;
&lt;br /&gt;
== Morph tool ==&lt;br /&gt;
A tool that can easily morph between two shapes (Blines).&lt;br /&gt;
&lt;br /&gt;
The description makes it sound simple.  But there are a few things to consider first:&lt;br /&gt;
&lt;br /&gt;
* Does the vertexes on each shape correspond with vertexes on another?&lt;br /&gt;
* Where does the vertexes, which don't correspond, go to (in the other shape)?&lt;br /&gt;
* How do you make everything morph smoothly?&lt;br /&gt;
&lt;br /&gt;
Luckily, the code knows exactly how to do it:&lt;br /&gt;
&lt;br /&gt;
* The vertexes that do correspond in both shapes, are simply interpolated&lt;br /&gt;
* The ones that appear in one shape, but not in the other, have their Activepoint set to On in one shape and to Off in the other&lt;br /&gt;
* The Origin parameter in the Blinepoints tells which part of the other shape a vertex move towards, when there's no corresponding vertex on that shape&lt;br /&gt;
* Interpolation makes everything move smoothly&lt;br /&gt;
&lt;br /&gt;
But the truth is that Activepoints are a rather obscure feature of Synfig. The Morph tool would make them easier to use:&lt;br /&gt;
&lt;br /&gt;
* First set which shape you want to morph&lt;br /&gt;
* Select the start shape (from another Bline) and time&lt;br /&gt;
* Select the end shape and time&lt;br /&gt;
* Drag the points on the morphed shape around, changing which vertex or part they correspond to (in the corresponding shape)&lt;br /&gt;
* Vertexes are automatically interpolated or turned on/off accordingly&lt;br /&gt;
&lt;br /&gt;
== Pose tool ==&lt;br /&gt;
Also a tool to animate shapes, but its objective is to create and apply poses to shapes.&lt;br /&gt;
&lt;br /&gt;
There is a way to {{l|Reuse Animations}}, but it would be better to have an easy (and faster) to use tool for the job.&lt;br /&gt;
&lt;br /&gt;
This tool would be able to:&lt;br /&gt;
&lt;br /&gt;
* Create poses from ready made shapes&lt;br /&gt;
* Apply these poses to other shapes, animating them&lt;br /&gt;
* Deal with mismatch of the number/position of vertexes&lt;br /&gt;
&lt;br /&gt;
This tool bears many similarities with the morph tool, perhaps it might be possible to make an unified tool that does both jobs well.&lt;br /&gt;
&lt;br /&gt;
== Math/Physics tool ==&lt;br /&gt;
It's entirely possible to create mathematically defined motions in Synfig (thanks to it's convert types).  But it is also true that this features would be a bit to hard or time consuming to understand and use.&lt;br /&gt;
&lt;br /&gt;
Perhaps this tool could be subdivided in a set of modes:&lt;br /&gt;
* Free falling mode: Objects falling/flying in presence of gravity&lt;br /&gt;
* Elastic deforming: Any sort of elastic object that deforms with force&lt;br /&gt;
* Hair simulation: 2d hair simulation of some sorts&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
Perhaps this tool won't be essential in order to animate, but a few simple but cool effects would certainly add a lot to an animation.  Of course math/physics can get very complex rather fast.  So perhaps only the simplest cases would be considered, specially if they in return produce a rather stunning effect.&lt;br /&gt;
&lt;br /&gt;
== Animated Character tool ==&lt;br /&gt;
A tool that makes easier the animation of characters.&lt;br /&gt;
&lt;br /&gt;
Probably would need to be a conjunction of tools, perhaps with a number of submodes:&lt;br /&gt;
* Bones: Used to rig and then to animate a character using bones technique&lt;br /&gt;
* Morph/Pose: Use the poses and transitions that other tools generate and combine them in order to form the entire character&lt;br /&gt;
* Walk: Make your character walk with his feet firm on the ground&lt;br /&gt;
* Talk: Use poses defining phonemes to have the character talk&lt;br /&gt;
* Face: Manage facial expressions (defined by poses), control the focus point of eyes, etc&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
They can be done now using a complex conversion type but would be good if they are built in. {{l|User:Genete|Genete}} 18:46, 5 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Shear, Bend, Perspective, Noise ==&lt;br /&gt;
&lt;br /&gt;
All they would be applied to ducks. Select the points pick one of them and drag. It would work similar to the mirror or the rotate tools.{{l|User:Genete|Genete}} 18:51, 5 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Make your own Suggestions ==&lt;br /&gt;
&lt;br /&gt;
Feel free to add any other tool idea you have, or make comments on the ones already posted. The best would be to have a lot of tools ideas first, then we can see which tools are similar, and make a single unified tool that does many jobs.&lt;br /&gt;
&lt;br /&gt;
I tried to make my tool suggestions practical, imagining what would a real animator working on a project would like from it. Tools that are easy and fast to use and that accomplish a certain goal. On the other hand, I have zero experience on real world animation work, so I was just making things up as go. Imagination is a powerful thing though =).&lt;br /&gt;
&lt;br /&gt;
Latter on, I will also try to look into the implementation details, and post whatever I find here, or perhaps in a page specific to each tool. Then we can tweak the tool to fit what's possible to implement, or come up an idea on how to implement the tool. Hopefully this method will help to achieve a complete implementation, even if little by little.&lt;br /&gt;
&lt;br /&gt;
The idea is to at least end up with a well defined tool, and a good starting point for a developer to start his work.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12456</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12456"/>
				<updated>2010-05-30T02:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: moved Dev:Function Strings Brainstorm to Dev:Potential Formula Framework:&amp;amp;#32;I think this title more accurate reflects the wider scope of the discussion within.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Rough notes.. will finish initial outline later [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Eg, if the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Eg 2, as above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Function_Strings_Brainstorm&amp;diff=12457</id>
		<title>Dev:Function Strings Brainstorm</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Function_Strings_Brainstorm&amp;diff=12457"/>
				<updated>2010-05-30T02:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: moved Dev:Function Strings Brainstorm to Dev:Potential Formula Framework:&amp;amp;#32;I think this title more accurate reflects the wider scope of the discussion within.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Dev:Potential Formula Framework]]&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12455</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12455"/>
				<updated>2010-05-30T02:12:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: Initial draft description of potential future formula framework&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[Rough notes.. will finish initial outline later [[User:Jose X|Jose X]] 02:12, 30 May 2010 (UTC) ]&lt;br /&gt;
&lt;br /&gt;
We aim to associate a function definition (ie, a formula) with any given parameter (of a layer). The compact syntax of the typical mathematical notation could be an efficient way to represent the value of a parameter across all frames.&lt;br /&gt;
&lt;br /&gt;
Currently, determining the value a parameter takes at some point in time is achieved either (a) by setting the specific value manually (introducing waypoints), (b) explicitly without waypoints fgdfg once conversions and linking have been set up, or (c) interpolation .. In its most flexible form, conversions and linking require a significant amount of manual work subject to error and resulting in a nontrivial loss of time. We want to substitute the conversion and linking with the specification of formulas.&lt;br /&gt;
&lt;br /&gt;
We understand that a compact formula may very likely cease to represent the value of the parameter once we have introduced waypoints; hence, we would ideally like to mix formulas with a compact notation to describe the exceptions to the formula created by the introduction of the waypoints.&lt;br /&gt;
&lt;br /&gt;
We'd also like a graphical interface for creating and manipulating this formula. We'd like a string representation as well.&lt;br /&gt;
&lt;br /&gt;
We also want to be able to go back and forth between the sif representation of the value for a parameter and the compact formula form.&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
In order to deal with waypoints, we have to consider that the function is, in its most general form, nothing but a mapping from the set of frames (ie, the natural numbers, 1, 2, 3, .. up to the last frame number) to the set of values the given parameter will take at each frame (eg, a real value). We can represent such a mapping as a two column table. The rows are labeled 1, 2, 3... (representing each frame), and the value in the other column at a given row is the value of the associated parameter at the frame number matching the row number. A major goal, however, will be to try to use formulas and short-cuts to capture as many values of the table as possible in as compact a fashion as possible (without sacrificing readability).&lt;br /&gt;
&lt;br /&gt;
..Let's consider the case where we start off with a formula to describe the values of a parameter. As an initial description, we can consider the formula to be a function of the independent variable &amp;quot;frame&amp;quot; (aka time). ..&lt;br /&gt;
We can start off with a formula (though we can even start off with a table mapping for maximum flexibility). In the worst case scenario, after a waypoint is introduced which modifies the mapping for that paramter, we can revert to a full table form. A major focus of this page is to consider how we can try to preserve compact notations despite the introduction of waypoints...&lt;br /&gt;
&lt;br /&gt;
tree nodes.. leaves. For conversions ..&lt;br /&gt;
&lt;br /&gt;
In the most general form, at each row we can represent the value of the parameter as a formula that applies only at that frame. And each row can have a different formula. This general case is where each frame's value is defined very differently from each other for that parameter. [Note, that a value is a special case of a formula, eg, y=5 is a value and a formula.. and so is y=sin(x) @ x=6]&lt;br /&gt;
&lt;br /&gt;
Eg, row 1 having x+23sin(2*pi*x)+1 means row 1 has value 2. It seems ridiculous to represent 2 by a long complex formula that will only apply for a single frame, but the point is to recognize this general case: that we have a formula at every single row.&lt;br /&gt;
&lt;br /&gt;
The ideal case for us is if every single row has the same exact formula. In this case, rather than listing every row and associated value/formula, we can simply list that formula. This is the ideal short-hand that signifies that every single row is defined by that same formula. [For example, y=3x in mathematics means that &amp;quot;3x&amp;quot; defines how every single point is calculated. We need not specify every single value when we use this short-hand.]&lt;br /&gt;
&lt;br /&gt;
Our hope is always to reduce the large tables into small compact form by &amp;quot;refactoring&amp;quot; as much as possible. To this end, we will develop short-hand notation as necessary.&lt;br /&gt;
&lt;br /&gt;
In this initial analysis, we'll consider the case where we start with a formula and then expand from this as little as possible.&lt;br /&gt;
&lt;br /&gt;
To augment formulas, we can use { } notation to capture rows within a table mapping.&lt;br /&gt;
&lt;br /&gt;
Eg, if every single frame can be described through some version of a sine wave, then we might define the full correct mapping (taking waypoints into account) from some version of a sine wave with `{' `}' within the formula to specify parts that vary according to the table.&lt;br /&gt;
&lt;br /&gt;
Eg, if the first through fifth frames have value 3sin(x), the sixth frame has value 3sin(x+1), the seventh frame has value 3sin(2x+1), and the eigth through 100th frames have 3sin(x), then the full mapping can be described by:&lt;br /&gt;
&lt;br /&gt;
3sin( { x, [6]:x+1, [7]:2x+1} ).&lt;br /&gt;
&lt;br /&gt;
Note how much more compact and &amp;quot;almost&amp;quot; equal to a simple formula is this notation (vs. a full table of 100 rows) to capture 2 divergences from the formula (to correspond perhaps to 2+ waypoints).&lt;br /&gt;
&lt;br /&gt;
We are also using simple proven notation similar to what is used to define sparse arrays in some programming languages.&lt;br /&gt;
&lt;br /&gt;
How would synfig arrive at that compact form?&lt;br /&gt;
&lt;br /&gt;
Well, starting with a (canonical) tree representation of 3sin(x) [pic goes here], we find that that same tree lasts throughout the entire 100 frames, except that the node initially holding x gets replaced (with x+1, later with 2x+1, and then again with x). Thus, we can represent the full mapping by a formula representing the constant outside parts and one or more internal tables { } to capture the parts that did vary within the tree. If the function had changed at the root level, then our mapping would be an outer level bifurcation (more than one formula template) so as to capture all 100 rows within at least one of the bifurcation parts. Remember that the general form for any mapping for a parameter during 100 frames would be a 100 row table. [In our current case, all of those 100 rows have &amp;quot;3sin (blah)&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
Eg 2, as above but row 9 is defined by 4sin(x), row 15 by 47, and rows 66, 67, and 73 by 3sin(x+1).&lt;br /&gt;
&lt;br /&gt;
We can express this as:&lt;br /&gt;
&lt;br /&gt;
{ 3sin( { x, [6, 66-67, 73]:x+1, [7]:2x+1} ), [9]:4sin(x), [15]:47 }&lt;br /&gt;
&lt;br /&gt;
-- To be done is to find the canonical tree form and canonical string form and find precise rules for mapping one to the other. Try to prove all of this and other important statements.&lt;br /&gt;
-- We note that any given waypoint, at worst, adds a single deviation; however, we can have many more waypoints than frames (eg, multiple sibling changes within the tree at each frame).&lt;br /&gt;
-- Missing above is how to interpolate around the waypoints. We may want to add a symbol to specify the in/out of each waypoint.&lt;br /&gt;
-- We may need to augment the notation to specify waypoints explicitly, but perhaps waypoints are implied (is there any other possibility?).&lt;br /&gt;
&lt;br /&gt;
A Formula Panel would show the existing formula (as per the above notation) for a selected parameter or more than one parameter if they match (maybe even try to factor out the common portions if multiple parameters have been selected).&lt;br /&gt;
&lt;br /&gt;
A Formula Tool (or the Formula Panel) would be used to create and edit formulas. You drag and drop any of various well-defined formula components (like sin(x) or +). This would roughly pattern the conversions possible in synfig today. There would be a way to explicitly add row exceptions: &amp;quot;{ ... }&amp;quot;. The location of the drop would define how the component modified the existing partial formula being created. Instead of adding further formula components at extension points (perhaps represented by variables initially.. and representing the parameters of the related synfig conversion), we can define these as a constant value or link to another parameter.&lt;br /&gt;
&lt;br /&gt;
The formula creation GUI might have multiple views since some might be preferable over others depending on context and the synfig user.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:New_Animation_Tools&amp;diff=12454</id>
		<title>Dev:New Animation Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:New_Animation_Tools&amp;diff=12454"/>
				<updated>2010-05-29T16:59:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Motion Tool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Animation Tools on Synfig ==&lt;br /&gt;
It may sound a bit harsh, but for a &amp;quot;2d vector animation studio&amp;quot; Synfig Studio has far too few and far too simple animation tools.  Only the first five (Normal, Smooth move, Scale, Rotate and Mirror) in the tool box can do some sort of animation.&lt;br /&gt;
&lt;br /&gt;
IMHO this needs  to change.  So I started thinking about what new tools would be useful for animation.&lt;br /&gt;
&lt;br /&gt;
== Motion Tool ==&lt;br /&gt;
The name says it all, a tool designed to easily add motion to any of Synfig's objects.&lt;br /&gt;
&lt;br /&gt;
At the moment one of the first five tools is used to move things around in animation mode in order to create waypoints, and therefore defining the animation.  While using Synfig I've notice a few things:&lt;br /&gt;
&lt;br /&gt;
* Having to jump all around the timeline&lt;br /&gt;
* Guess estimating how fast/slow will the motion be&lt;br /&gt;
* Problems trying to simulate motions in specific patterns (ie. Circular)&lt;br /&gt;
&lt;br /&gt;
Taking this into consideration the Motion Tool could work like this:&lt;br /&gt;
&lt;br /&gt;
* Only set the time to the start of the motion, the tool inserts waypoints further down the timeline automatically&lt;br /&gt;
* Either type in the speed on the Tool Options panel, or have a graphical representation of it (ducks perhaps)&lt;br /&gt;
* Allow the motion to describe an arbitrary path, the tool calculates the right position, time and number of waypoints to insert&lt;br /&gt;
* Optionally, specify a certain pattern for the motion to follow (ie. Circular)&lt;br /&gt;
[A {{l|Dev:Function Strings Brainstorm|page}} has been started on design for a string/gui version of functions.]&lt;br /&gt;
&lt;br /&gt;
== Morph tool ==&lt;br /&gt;
A tool that can easily morph between two shapes (Blines).&lt;br /&gt;
&lt;br /&gt;
The description makes it sound simple.  But there are a few things to consider first:&lt;br /&gt;
&lt;br /&gt;
* Does the vertexes on each shape correspond with vertexes on another?&lt;br /&gt;
* Where does the vertexes, which don't correspond, go to (in the other shape)?&lt;br /&gt;
* How do you make everything morph smoothly?&lt;br /&gt;
&lt;br /&gt;
Luckily, the code knows exactly how to do it:&lt;br /&gt;
&lt;br /&gt;
* The vertexes that do correspond in both shapes, are simply interpolated&lt;br /&gt;
* The ones that appear in one shape, but not in the other, have their Activepoint set to On in one shape and to Off in the other&lt;br /&gt;
* The Origin parameter in the Blinepoints tells which part of the other shape a vertex move towards, when there's no corresponding vertex on that shape&lt;br /&gt;
* Interpolation makes everything move smoothly&lt;br /&gt;
&lt;br /&gt;
But the truth is that Activepoints are a rather obscure feature of Synfig. The Morph tool would make them easier to use:&lt;br /&gt;
&lt;br /&gt;
* First set which shape you want to morph&lt;br /&gt;
* Select the start shape (from another Bline) and time&lt;br /&gt;
* Select the end shape and time&lt;br /&gt;
* Drag the points on the morphed shape around, changing which vertex or part they correspond to (in the corresponding shape)&lt;br /&gt;
* Vertexes are automatically interpolated or turned on/off accordingly&lt;br /&gt;
&lt;br /&gt;
== Pose tool ==&lt;br /&gt;
Also a tool to animate shapes, but its objective is to create and apply poses to shapes.&lt;br /&gt;
&lt;br /&gt;
There is a way to {{l|Reuse Animations}}, but it would be better to have an easy (and faster) to use tool for the job.&lt;br /&gt;
&lt;br /&gt;
This tool would be able to:&lt;br /&gt;
&lt;br /&gt;
* Create poses from ready made shapes&lt;br /&gt;
* Apply these poses to other shapes, animating them&lt;br /&gt;
* Deal with mismatch of the number/position of vertexes&lt;br /&gt;
&lt;br /&gt;
This tool bears many similarities with the morph tool, perhaps it might be possible to make an unified tool that does both jobs well.&lt;br /&gt;
&lt;br /&gt;
== Math/Physics tool ==&lt;br /&gt;
It's entirely possible to create mathematically defined motions in Synfig (thanks to it's convert types).  But it is also true that this features would be a bit to hard or time consuming to understand and use.&lt;br /&gt;
&lt;br /&gt;
Perhaps this tool could be subdivided in a set of modes:&lt;br /&gt;
* Free falling mode: Objects falling/flying in presence of gravity&lt;br /&gt;
* Elastic deforming: Any sort of elastic object that deforms with force&lt;br /&gt;
* Hair simulation: 2d hair simulation of some sorts&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
Perhaps this tool won't be essential in order to animate, but a few simple but cool effects would certainly add a lot to an animation.  Of course math/physics can get very complex rather fast.  So perhaps only the simplest cases would be considered, specially if they in return produce a rather stunning effect.&lt;br /&gt;
&lt;br /&gt;
== Animated Character tool ==&lt;br /&gt;
A tool that makes easier the animation of characters.&lt;br /&gt;
&lt;br /&gt;
Probably would need to be a conjunction of tools, perhaps with a number of submodes:&lt;br /&gt;
* Bones: Used to rig and then to animate a character using bones technique&lt;br /&gt;
* Morph/Pose: Use the poses and transitions that other tools generate and combine them in order to form the entire character&lt;br /&gt;
* Walk: Make your character walk with his feet firm on the ground&lt;br /&gt;
* Talk: Use poses defining phonemes to have the character talk&lt;br /&gt;
* Face: Manage facial expressions (defined by poses), control the focus point of eyes, etc&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
They can be done now using a complex conversion type but would be good if they are built in. {{l|User:Genete|Genete}} 18:46, 5 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Shear, Bend, Perspective, Noise ==&lt;br /&gt;
&lt;br /&gt;
All they would be applied to ducks. Select the points pick one of them and drag. It would work similar to the mirror or the rotate tools.{{l|User:Genete|Genete}} 18:51, 5 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Make your own Suggestions ==&lt;br /&gt;
&lt;br /&gt;
Feel free to add any other tool idea you have, or make comments on the ones already posted. The best would be to have a lot of tools ideas first, then we can see which tools are similar, and make a single unified tool that does many jobs.&lt;br /&gt;
&lt;br /&gt;
I tried to make my tool suggestions practical, imagining what would a real animator working on a project would like from it. Tools that are easy and fast to use and that accomplish a certain goal. On the other hand, I have zero experience on real world animation work, so I was just making things up as go. Imagination is a powerful thing though =).&lt;br /&gt;
&lt;br /&gt;
Latter on, I will also try to look into the implementation details, and post whatever I find here, or perhaps in a page specific to each tool. Then we can tweak the tool to fit what's possible to implement, or come up an idea on how to implement the tool. Hopefully this method will help to achieve a complete implementation, even if little by little.&lt;br /&gt;
&lt;br /&gt;
The idea is to at least end up with a well defined tool, and a good starting point for a developer to start his work.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12453</id>
		<title>Dev:Potential Formula Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Potential_Formula_Framework&amp;diff=12453"/>
				<updated>2010-05-29T16:58:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: Stub page for ideas on&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
[This page is started as a result of some ideas and notes discussed on IRC around 2010 05 29.]&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Preferences_Dialog&amp;diff=12438</id>
		<title>Preferences Dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Preferences_Dialog&amp;diff=12438"/>
				<updated>2010-05-26T05:00:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Propose of the Setup Dialog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Setup Dialog}}&lt;br /&gt;
{{Category|Dialogs}}&lt;br /&gt;
{{Category|File Menu (Toolbox)}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
== Purpose of the Setup Dialog ==&lt;br /&gt;
&lt;br /&gt;
The Setup Dialog allows the user set certain properties and preferences that are globally adopted by the application and used by all the Documents opened or to be opened. The Setup Dialog is organized in Tabs allowing modify the properties or preferences by meaningful groups.&lt;br /&gt;
&lt;br /&gt;
== Gamma Tab ==&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Gamma.png}}&lt;br /&gt;
&lt;br /&gt;
The gamma tab controls how the color representation in Synfig Studio is managed while editing a Document. There is a gamma pattern diagram on the top to let the user visually know how the gamma modifications would look in the color space. &lt;br /&gt;
&lt;br /&gt;
In the middle there are three color sliders that control the gamma for each separate channel. Default values for those sliders are 2.2 for each color. Depending on the gamma adjustment you have in your monitor or output device, you may want to change those values to be more appropriate. &lt;br /&gt;
&lt;br /&gt;
Below those sliders there is a Black level selector. It is used to calibrate your output device to show the black color as black. Most of the time you'll need this value set to 0.0.&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous tab==&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Misc.png}}&lt;br /&gt;
&lt;br /&gt;
This tab groups some miscellaneous global preferences for the application. All of them would affect new files opened or created after they have been changed.&lt;br /&gt;
&lt;br /&gt;
=== Time Format ===&lt;br /&gt;
&lt;br /&gt;
This selection menu allows to set the time format used in the application. It would affect how all time parameters and information you see in Synfig Studio are shown. Although internally all the time values are stored as seconds, you can see the time in other formats:&lt;br /&gt;
&lt;br /&gt;
* HH:MM:SS.FF. This is a fixed format that shows always the time in hours:minutes:seconds.frames with two significant digits minimum. Examples: 123:45:58.13, 00:00:04.23&lt;br /&gt;
*(HHh MMm SSs) FFf '''default'''. This is a flexible format that would use the needed space to show the time using the correct derived unit. Examples: 123h 45m 58s 13f, 4s 23f. Notice that the second time only use the needed derived units (seconds) not using minutes or hours like in the previous type.&lt;br /&gt;
*(HHhMMmSSs)FFf. This one works exactly like the previous one but in a more compact format (no spaces). Examples: 123h45m58s13f, 4s23f.&lt;br /&gt;
* HHh MMm SSs FFf. This is like the default one but in a fixed format like the first one. Examples: 123h 45m 58s 13f, 00h 00m 04s 23f.&lt;br /&gt;
* HHhMMmSSsFFf. I think you can imagine how does this one works. Examples: 123h45m58s13f, 00h00m04s23f.&lt;br /&gt;
* FFf. This one shows all the times in frames. (There is a bug here because it doesn't work properly) Examples: 10693405f, 119f, assuming that the frames per second are set to 24.&lt;br /&gt;
&lt;br /&gt;
=== Unit System ===&lt;br /&gt;
&lt;br /&gt;
This drop down list allows change the global preference to the unit system that the user would want to use in any opened or created documents. Although all the vector dimensions are stored internally in synfig as units there are unit conversions to other systems to make editing more friendly or appropriate to the values that the user has from the model. Available Unit Systems are:&lt;br /&gt;
&lt;br /&gt;
* points (pt)&lt;br /&gt;
* units (u)&lt;br /&gt;
* pixels (px)&lt;br /&gt;
* inches (in)&lt;br /&gt;
* metres (m)&lt;br /&gt;
* centimeters (cm)&lt;br /&gt;
* millimeters (mm)&lt;br /&gt;
&lt;br /&gt;
See the {{l|Unit System|Unit System}} in action to know the equivalence between those units.&lt;br /&gt;
&lt;br /&gt;
=== Recent Files ===&lt;br /&gt;
&lt;br /&gt;
This spin button entry box allows the user to define how many recent files are shown when the {{l|Toolbox|Toolbox}}&amp;gt;File&amp;gt;Recent Files menu option is selected. Maximum value is set to 50 and minimum to 1. Default is 25.&lt;br /&gt;
&lt;br /&gt;
=== Automatic Backup Interval ===&lt;br /&gt;
&lt;br /&gt;
Synfig studio may crash (an infrequent thing lately), or you may have lost power or killed the program for any reason. Synfig Studio does a security copy of the current working document and would ask to recover it the next time you run the program. It can be set to a minimum of 1 second and does not have a maximum. Set it to 0s to disable the automatic backup. Default value is 3m.&lt;br /&gt;
&lt;br /&gt;
===Browser command ===&lt;br /&gt;
&lt;br /&gt;
This entry box allows the user select the name of your preferred browser. Set there the name of the binary to execute when Synfig Studio need to invoke the external browser (for example when clicking on the help menu items). The default value for Unix like system is &amp;quot;xdg-open&amp;quot; and &amp;quot;open&amp;quot; for Windows and MacOs. &lt;br /&gt;
&lt;br /&gt;
===Visually Linear Color Selection ===&lt;br /&gt;
&lt;br /&gt;
This [http://en.wikipedia.org/wiki/RGB_color_model#Nonlinearity Wikipedia] article talks about how color output is non-linear, that if 0 is black and 100 is white, then 50 is only about 22 percent of the brightness of white, rather than 50% as you might expect.&lt;br /&gt;
&lt;br /&gt;
In Synfig Studio there is an option (on by default) to make sure that if you ask for 50, you get 50% of the brightness of white. &lt;br /&gt;
&lt;br /&gt;
If you turn this option off, everything will go back to its non-linear, yet strangely comfortable and familiar mode.&lt;br /&gt;
&lt;br /&gt;
=== Restrict Real Value Ducks to the Top Right Quadrant === &lt;br /&gt;
&lt;br /&gt;
This is a feature that makes the manipulation of the real value ducks easier in certain situations. Real value ducks are the ones that can manage any kind of real number (if it is implemented in the layer interface). For example Circle Radius is controlled by a Real Value Duck. Also the Outlines Width are controlled by this kind of ducks. If you have to set the real value exactly to 0.0 it becomes especially difficult to do with the normal behavior of the real value ducks. If you set this parameter on, the position of the duck is restricted to be in the top right quadrant of the 2D space. In this way you can set the real value to any number and also easily reach the value of 0.0 just dragging the duck to the left bottom part of your 2D space. &lt;br /&gt;
&lt;br /&gt;
== Document Tab ==&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Document.png}}&lt;br /&gt;
&lt;br /&gt;
This tab groups some Document global preferences for the application. All of them would affect new files opened or created after they have been changed.&lt;br /&gt;
&lt;br /&gt;
=== New Document filename prefix ===&lt;br /&gt;
&lt;br /&gt;
This option sets the prefix of the newly created Documents in Synfig Studio. A sequential number, starting with 1, will be added to it for each new file you create in a Synfig Studio session. This is particularly useful if you're working in a project with several files.&lt;br /&gt;
&lt;br /&gt;
=== New Document X and Y sizes === &lt;br /&gt;
&lt;br /&gt;
In those spin buttons entries you can set the preferred X and Y dimensions of the new created documents. Again this is useful if you're working with a certain resolution and want to keep all the file exactly the same without the tedious task of editing the particular dimensions of each new created file. Image Area (in units) are calculated accordingly to the correspondence between pixels and units (60 pixels = 1 unit). Default value are X=480 and Y=270 pixels. &lt;br /&gt;
&lt;br /&gt;
There is a Set of Predefined Resolutions to automatically set the X and Y dimensions to the standards of the digital industry. Select any of them and the X and Y sizes would change automatically. Default resolution is &amp;quot;480x270 Web 480x HD&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Lock_Keyframes&amp;diff=12420</id>
		<title>Lock Keyframes</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Lock_Keyframes&amp;diff=12420"/>
				<updated>2010-05-25T02:03:52Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: fixed text/pic mismatch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 'Lock Keyframes' setting is controlled by clicking the button at the far right of the timetrack at the bottom of the canvas window.  The icon has a picture of a padlock on it, with arrows pointing left and right, and will only be visible if your canvas has a non-zero end time.  It will only be active if you're not currently using a tool which disables the timetrack, such as the bline tool or the draw tool. &lt;br /&gt;
&lt;br /&gt;
{{l|Image: LockKeyframeButton.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Clicking on the icon steps it through its 4 possible values:&lt;br /&gt;
{| border = &amp;quot;1&amp;quot;&lt;br /&gt;
| All Keyframes Locked (both arrows are lit up) || {{l|Image: Keyframe_lock_all_64.png}} &lt;br /&gt;
|-&lt;br /&gt;
| Past Keyframes Locked (left arrow is lit up) || {{l|Image: Keyframe_lock_past_64.png}}&lt;br /&gt;
|-&lt;br /&gt;
| Future Keyframes Locked (right arrow is lit up) || {{l|Image: Keyframe_lock_future_64.png}}&lt;br /&gt;
|-&lt;br /&gt;
| No Keyframes Locked (neither arrow is lit up) || {{l|Image: Keyframe_lock_none_64.png}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The setting has no effect unless the canvas is in {{l|Animate Editing Mode|animate editing mode}}.  When the canvas is in animate editing mode, however, and a parameter is changed, {{l|Waypoints|waypoints}} will be created in whichever of the immediately preceding and immediately following {{l|Keyframe|keyframes}} are indicated by its value.&lt;br /&gt;
&lt;br /&gt;
For example, if you are currently editing at 2s, and keyframes exist at 0s, 1s, 3s and 4s, then:&lt;br /&gt;
&lt;br /&gt;
*If 'lock keyframes' is set to 'All Keyframes Locked', waypoints will be created at 1s and 3s.&lt;br /&gt;
&lt;br /&gt;
{{l|Image: WaypointsLockAll.png}}&lt;br /&gt;
*If 'lock keyframes' is set to 'Past Keyframes Locked', a waypoint will be created at 1s.&lt;br /&gt;
&lt;br /&gt;
{{l|Image: WaypointsLockPast.png}}&lt;br /&gt;
*If 'lock keyframes' is set to 'Future Keyframes Locked', a waypoint will be created at 3s.&lt;br /&gt;
&lt;br /&gt;
{{l|Image: WaypointsLockFuture.png}}&lt;br /&gt;
*If 'lock keyframes' is set to 'No Keyframes Locked', no extra waypoints will be created.&lt;br /&gt;
&lt;br /&gt;
{{l|Image: WaypointsLockNone.png}}&lt;br /&gt;
&lt;br /&gt;
In all 4 cases, a waypoint will be created at the current time point, 2s.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Releases/DeveloperPreview&amp;diff=12389</id>
		<title>Releases/DeveloperPreview</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Releases/DeveloperPreview&amp;diff=12389"/>
				<updated>2010-05-21T06:44:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synfig Developer Preview = &lt;br /&gt;
&lt;br /&gt;
Tuesday, November 1, 2005 by darco&lt;br /&gt;
&lt;br /&gt;
Ok everyone, the day has come. It's time to release the Synfig source code to the world.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Bandwidth issues should be fixed.&lt;br /&gt;
&lt;br /&gt;
== A Developer Preview ==&lt;br /&gt;
&lt;br /&gt;
I am releasing the source code and some binaries for the purpose of trying to find some other individuals interested in helping me push the project forward. Don't expect to be able to do amazing things with this software just yet. It needs some work. If you are interested in helping out, let me know!&lt;br /&gt;
&lt;br /&gt;
== Where is the developer website? ==&lt;br /&gt;
&lt;br /&gt;
You are looking at it right now.&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This program needs a lot of work in the user-friendlieness department. Thus, reading the tutorial is mandatory! You can find the first tutorial [http://synfig.org/files/voria/synfig_tutorial.pdf here].&lt;br /&gt;
&lt;br /&gt;
== Binaries ==&lt;br /&gt;
&lt;br /&gt;
All binaries (including windows binaries) can be found {{l|Download|here}}.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Synfig Core requires the following libraries to build:&lt;br /&gt;
&lt;br /&gt;
* Libsigc++ 2.0&lt;br /&gt;
* Libxml++ 1.0 (although 2.x may work)&lt;br /&gt;
&lt;br /&gt;
Synfig Studio requires the following libraries to build:&lt;br /&gt;
&lt;br /&gt;
* Gtkmm 2.4&lt;br /&gt;
&lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
If you are feeling adventurous, you can try building Synfig from the source tarballs. You can find them {{l|Download|here}}.&lt;br /&gt;
&lt;br /&gt;
Having build issues? Go {{l|Build instructions|here}}.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
If you would like to report a bug, join the mailing list, make a feature request, or whatever, then check out the [https://sourceforge.net/projects/synfig/ Synfig SourceForge Project Page].&lt;br /&gt;
&lt;br /&gt;
The [http://synfig.org/api/ Synfig API Reference] is available online for your convenience (or try [http://download.tuxfamily.org/synfig/api/index.html this]).&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
All of the code released today is released under the GNU GPL. Ignore the alpha license included in the binaries. I'll change it out soon.&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks goes to:&lt;br /&gt;
&lt;br /&gt;
* '''Adrian Bentley''' (Engineer) - My business partner and good friend. Has made significant contributions to the codebase.&lt;br /&gt;
* '''Rabecha Lenhart''' (Animator) - Ninja Artist.&lt;br /&gt;
* '''William Short''' (Animator) - Too bad everyone thinks he's Mexican.&lt;br /&gt;
* '''Darrin Michelson''' (Graphic Designer) - Everyone's favorite Jew.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Whew... Well, there you go. Three years of my life. Rip it apart, people.&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Source_Outline&amp;diff=12388</id>
		<title>Dev:Source Outline</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Source_Outline&amp;diff=12388"/>
				<updated>2010-05-21T03:19:24Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: added api docs link that works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category|Code}}&lt;br /&gt;
A good reference to the ETL/synfig/synfigstudio source code is the [http://synfig.org/api/ synfig doxygen documentation] or try [http://download.tuxfamily.org/synfig/api/index.html this], which is updated daily from SVN trunk. Please note that currently the API and ABI is subject to change and breakage. We do our best to keep the file format from breaking though.&lt;br /&gt;
&lt;br /&gt;
*template&lt;br /&gt;
*gtkmm&lt;br /&gt;
**about&lt;br /&gt;
**adjust_window&lt;br /&gt;
**app&lt;br /&gt;
**asyncrenderer&lt;br /&gt;
**audiocontainer&lt;br /&gt;
**autorecover&lt;br /&gt;
**canvasoptions&lt;br /&gt;
**canvasproperties&lt;br /&gt;
**canvastreestore&lt;br /&gt;
**canvasview&lt;br /&gt;
**cellrenderer_gradient&lt;br /&gt;
**cellrenderer_time&lt;br /&gt;
**cellrenderer_timetrack&lt;br /&gt;
**cellrenderer_value&lt;br /&gt;
**childrentree&lt;br /&gt;
**childrentreestore&lt;br /&gt;
**compview&lt;br /&gt;
**devicetracker&lt;br /&gt;
**dialog_color&lt;br /&gt;
**dialog_gradient&lt;br /&gt;
**dialog_keyframe&lt;br /&gt;
**dialog_preview&lt;br /&gt;
**dialogsettings&lt;br /&gt;
**dialog_setup&lt;br /&gt;
**dialog_soundselect&lt;br /&gt;
**dialog_tooloptions&lt;br /&gt;
**dialog_waypoint&lt;br /&gt;
**dockable&lt;br /&gt;
**dockbook&lt;br /&gt;
**dock_canvases&lt;br /&gt;
**dock_canvasspecific&lt;br /&gt;
**dock_children&lt;br /&gt;
**dock_curves&lt;br /&gt;
**dockdialog&lt;br /&gt;
**dock_history&lt;br /&gt;
**dock_info&lt;br /&gt;
**dock_keyframes&lt;br /&gt;
**dock_layergroups&lt;br /&gt;
**dock_layers&lt;br /&gt;
**dockmanager&lt;br /&gt;
**dock_metadata&lt;br /&gt;
**dock_navigator&lt;br /&gt;
**dock_params&lt;br /&gt;
**dock_timetrack&lt;br /&gt;
**duck&lt;br /&gt;
**duckmatic&lt;br /&gt;
**ducktransform_rotate&lt;br /&gt;
**ducktransform_scale&lt;br /&gt;
**ducktransform_translate&lt;br /&gt;
**eventkey&lt;br /&gt;
**event_layerclick&lt;br /&gt;
**event_mouse&lt;br /&gt;
**groupactionmanager&lt;br /&gt;
**historytreestore&lt;br /&gt;
**iconcontroler&lt;br /&gt;
**instance&lt;br /&gt;
**ipc&lt;br /&gt;
**keyframeactionmanager&lt;br /&gt;
**keyframetree&lt;br /&gt;
**keyframetreestore&lt;br /&gt;
**keymapsettings&lt;br /&gt;
**layeractionmanager&lt;br /&gt;
**layergrouptree&lt;br /&gt;
**layergrouptreestore&lt;br /&gt;
**layerparamtreestore&lt;br /&gt;
**layertree&lt;br /&gt;
**layertreestore&lt;br /&gt;
**metadatatreestore&lt;br /&gt;
**mod_mirror&lt;br /&gt;
***mod_mirror&lt;br /&gt;
***state_mirror&lt;br /&gt;
**mod_palette&lt;br /&gt;
***dock_palbrowse&lt;br /&gt;
***dock_paledit&lt;br /&gt;
***mod_palette&lt;br /&gt;
**module&lt;br /&gt;
**onemoment&lt;br /&gt;
**preview&lt;br /&gt;
**renddesc&lt;br /&gt;
**renderer_bbox&lt;br /&gt;
**renderer_canvas&lt;br /&gt;
**renderer_dragbox&lt;br /&gt;
**renderer_ducks&lt;br /&gt;
**renderer_grid&lt;br /&gt;
**renderer_guides&lt;br /&gt;
**renderer_timecode&lt;br /&gt;
**render&lt;br /&gt;
**smach&lt;br /&gt;
**state_bline&lt;br /&gt;
**state_circle&lt;br /&gt;
**state_draw&lt;br /&gt;
**state_eyedrop&lt;br /&gt;
**state_fill&lt;br /&gt;
**state_gradient&lt;br /&gt;
**statemanager&lt;br /&gt;
**state_normal&lt;br /&gt;
**state_polygon&lt;br /&gt;
**state_rectangle&lt;br /&gt;
**state_redraw&lt;br /&gt;
**state_rotate&lt;br /&gt;
**state_scale&lt;br /&gt;
**state_sketch&lt;br /&gt;
**state_smoothmove&lt;br /&gt;
**{{l|state_stroke}} - handles feedback and input for the drawing tools.&lt;br /&gt;
**state_width&lt;br /&gt;
**state_zoom&lt;br /&gt;
**toolbox&lt;br /&gt;
**valuelink&lt;br /&gt;
**widget_canvaschooser&lt;br /&gt;
**widget_coloredit&lt;br /&gt;
**widget_color&lt;br /&gt;
**widget_compselect&lt;br /&gt;
**widget_curves&lt;br /&gt;
**widget_defaults&lt;br /&gt;
**widget_distance&lt;br /&gt;
**widget_enum&lt;br /&gt;
**widget_filename&lt;br /&gt;
**widget_gradient&lt;br /&gt;
**widget_sound&lt;br /&gt;
**widget_time&lt;br /&gt;
**widget_timeslider&lt;br /&gt;
**widget_value&lt;br /&gt;
**widget_vector&lt;br /&gt;
**widget_waypoint&lt;br /&gt;
**widget_waypointmodel&lt;br /&gt;
**workarea&lt;br /&gt;
**workarearenderer&lt;br /&gt;
**zoomdial&lt;br /&gt;
*synfigapp&lt;br /&gt;
**action&lt;br /&gt;
**action_param&lt;br /&gt;
**action_system&lt;br /&gt;
**actions&lt;br /&gt;
***activepointadd&lt;br /&gt;
***activepointremove&lt;br /&gt;
***activepointset&lt;br /&gt;
***activepointsetoff&lt;br /&gt;
***activepointseton&lt;br /&gt;
***activepointsetsmart&lt;br /&gt;
***activepointsimpleadd&lt;br /&gt;
***blinepointtangentmerge&lt;br /&gt;
***blinepointtangentsplit&lt;br /&gt;
***canvasadd&lt;br /&gt;
***canvasremove&lt;br /&gt;
***canvasrenddescset&lt;br /&gt;
***colorset&lt;br /&gt;
***editmodeset&lt;br /&gt;
***gradientset&lt;br /&gt;
***groupaddlayers&lt;br /&gt;
***groupremove&lt;br /&gt;
***groupremovelayers&lt;br /&gt;
***grouprename&lt;br /&gt;
***keyframeadd&lt;br /&gt;
***keyframeduplicate&lt;br /&gt;
***keyframeremove&lt;br /&gt;
***keyframesetdelta&lt;br /&gt;
***keyframeset&lt;br /&gt;
***keyframewaypointset&lt;br /&gt;
***layeractivate&lt;br /&gt;
***layeradd&lt;br /&gt;
***layerduplicate&lt;br /&gt;
***layerencapsulate&lt;br /&gt;
***layerlower&lt;br /&gt;
***layermove&lt;br /&gt;
***layerparamconnect&lt;br /&gt;
***layerparamdisconnect&lt;br /&gt;
***layerparamset&lt;br /&gt;
***layerraise&lt;br /&gt;
***layerremove&lt;br /&gt;
***layersetdesc&lt;br /&gt;
***timepointscopy&lt;br /&gt;
***timepointsdelete&lt;br /&gt;
***timepointsmove&lt;br /&gt;
***valuedescconnect&lt;br /&gt;
***valuedescconvert&lt;br /&gt;
***valuedescdisconnect&lt;br /&gt;
***valuedescexport&lt;br /&gt;
***valuedesclink&lt;br /&gt;
***valuedescset&lt;br /&gt;
***valuenodeadd&lt;br /&gt;
***valuenodeconstset&lt;br /&gt;
***valuenodedynamiclistinsert&lt;br /&gt;
***valuenodedynamiclistinsertsmart&lt;br /&gt;
***valuenodedynamiclistloop&lt;br /&gt;
***valuenodedynamiclistremove&lt;br /&gt;
***valuenodedynamiclistremovesmart&lt;br /&gt;
***valuenodedynamiclistrotateorder&lt;br /&gt;
***valuenodedynamiclistunloop&lt;br /&gt;
***valuenodelinkconnect&lt;br /&gt;
***valuenodelinkdisconnect&lt;br /&gt;
***valuenoderemove&lt;br /&gt;
***valuenoderename&lt;br /&gt;
***valuenodereplace&lt;br /&gt;
***waypointadd&lt;br /&gt;
***waypointremove&lt;br /&gt;
***waypointset&lt;br /&gt;
***waypointsetsmart&lt;br /&gt;
***waypointsimpleadd&lt;br /&gt;
**blineconvert&lt;br /&gt;
**canvasinterface&lt;br /&gt;
**cvs&lt;br /&gt;
**editmode&lt;br /&gt;
**inputdevice&lt;br /&gt;
**instance&lt;br /&gt;
**main&lt;br /&gt;
**selectionmanager&lt;br /&gt;
**settings&lt;br /&gt;
**timegather&lt;br /&gt;
**uimanager&lt;br /&gt;
**value_desc&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12387</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12387"/>
				<updated>2010-05-20T22:14:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Projection Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
The projection layer (a new type of transformation layer) would have two angle parameters that define how the lower layers get transformed: as if projected from a canvas angled in 3D space unto a 2D final image. By combining different encapsulations that use the projection layer, we can facilitate some 3D animation realism from simple 2D manipulations.&lt;br /&gt;
[[User:Jose X|Jose X]] 22:14, 20 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12386</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12386"/>
				<updated>2010-05-20T22:02:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
Having a bit of an internal model for 3d would effectively allow for canvases on different planes in 3d space to be projected onto the final 2d canvas. ..Simply, the projection layer would have (I think) two angles to specify how to project lower layers within its scope. ..This primitive implementation of a 3d model could be useful while still remaining simple.  [[User:Jose X|Jose X]] 22:02, 20 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12385</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12385"/>
				<updated>2010-05-20T21:18:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Smartrendering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12384</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12384"/>
				<updated>2010-05-20T20:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Bone Animation Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree. In the short-term, a tool like gmake might be useful for implementing this. [[User:Jose X|Jose X]] 19:26, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12383</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12383"/>
				<updated>2010-05-20T19:53:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Free drawing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree. In the short-term, a tool like gmake might be useful for implementing this. [[User:Jose X|Jose X]] 19:26, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12382</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12382"/>
				<updated>2010-05-20T19:26:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Smartrendering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree. In the short-term, a tool like gmake might be useful for implementing this. [[User:Jose X|Jose X]] 19:26, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12367</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12367"/>
				<updated>2010-05-20T07:03:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Mathematical functions to animate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12366</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12366"/>
				<updated>2010-05-20T04:24:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: /* Embedding animation on web applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12365</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12365"/>
				<updated>2010-05-20T04:20:16Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: added small comment on svg/flv export&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&gt;
'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done]&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --{{l|User:Zelgadis|Zelgadis}} 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
{{l|Image:WishList-ConvertStrings.png}}&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --{{l|User:Zelgadis|Zelgadis}} 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|Sewing BLines}}, when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see {{l|Sewing BLines#Solution}}). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --{{l|User:SvH|SvH}} 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a {{l|Motion Blur Layer}} that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. {{l|User:Genete|Genete}} 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --{{l|User:AkhIL|AkhIL}} 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --{{l|User:AkhIL|AkhIL}} 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found {{l|Releases/DeveloperPreview#Support | here}}). --{{l|User:Genete|Genete}} 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) {{l|User:Pxegeek|Pxegeek}} 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
{{l|User:ajotatxe|ajotatxe}} 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See {{l|Related Projects}} page. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --{{l|User:Zelgadis|Zelgadis}} 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- {{l|User:Dooglus|dooglus}} 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|User:Genete|Genete}} 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - {{l|How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?}} - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) {{l|User:SnapSilverlight|Snap}} 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new {{l|Region Layer|region layer}}). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev:Redraw tool}} ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|Smooth Move Tool}} ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|User:SnapSilverlight|Snap}} 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ({{l|User:Snap|SnapSilverlight}}) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|User:AkhIL|AkhIL}} 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. {{l|User:KMeist|KMeist}} 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
{{l|svg2synfig}} could be incorporated using an open source XSLT processor. --{{l|User:Dmd|Dmd}} 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 {{l|User:Genete|Genete}} 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --{{l|User:PaulWise|pabs}}&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.{{l|User:Conceit|Conceit}}&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. {{l|User:cdj05a|cdj05a}}&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
{{l|User:Hiddenghost|hiddenghost}}&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
{{l|User:Zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages {{l|User:PaulWise|pabs}} 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from {{l|Colors Dialog}} and {{l|Gradient Editor Dialog}} were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- {{l|User:Dooglus|dooglus}} 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- {{l|User:Dooglus|dooglus}} 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in {{l|Dev:Sound Layer | this}} way. --{{l|User:Genete|Genete}} 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to {{l|Media:Canvas_prop.png|this scheme}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
{{l|Media:width-proposal.png|Illustration here.}}&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. {{l|User:Genete|Genete}} 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. {{l|User:Genete|Genete}} 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --{{l|User:Zelgadis|Zelgadis}} 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---{{l|User:AkhIL|AkhIL}} 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---{{l|User:Genete|Genete}} 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
{{l|Image:Stencil 3.jpg|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. {{l|User:Genete|Genete}} 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:{{l|Image:Params-TimeTrack.png}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:richardwad1|richardwad1}}&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--{{l|User:nickholai|nickholai}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is flv). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---{{l|User:zenoscope|zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|User:Zenoscope|Zenoscope}}&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a {{l|Media:Smooth_silhoutte.png|smooth silhoutte}} around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc_talk:Reuse_Animations&amp;diff=12364</id>
		<title>Doc talk:Reuse Animations</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc_talk:Reuse_Animations&amp;diff=12364"/>
				<updated>2010-05-20T03:43:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jose X: Tutorial is a bit misleading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey dooglus! Thanks for correct my language errors. I did the page in one shot and did not review the grammar or the spelling. --[[User:Genete|Genete]] 03:45, 29 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''There is a problem with this technique. You are making copies of the entire animation poses that you have stored in the first keyframes of the time (frames 2 and 4 of the sample) and therefore you have made copies of all the other objects existing in the scene (following the example, the eyeball).''&lt;br /&gt;
&lt;br /&gt;
: Is this true?  You only make copies of any waypoints that happen to exist at that particular frame I thought? [[User:Dooglus|dooglus]] 21:04, 29 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: It is true. Keyframe duplication affects all the existing objects of the scene even if they don't have any waypoints at the duplicated keyframe. See [http://www.darthfurby.com/genete/synfig/keycopy.sifz this] file. There are two circles. The red one has its own animation at frames 12f, 1s and 2s. The black circle has its own animation at 0f, 1f and 12 f. If you go to frame 2s12f for example and duplicate the keyframe at frame 1 (called &amp;quot;black up&amp;quot;) you will see that the red circle goes to the position it has at frame 1 although it doesn't have any waypoint there.--[[User:Genete|Genete]] 05:00, 30 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: Ah yes, so I see.  That is surprising.  I suppose that is what keyframes are for though. [[User:Dooglus|dooglus]] 07:44, 30 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I am considering changing the title to &amp;quot;Creating a Sample Animation from Two Poses&amp;quot; [a more general tutorial would have more examples than just the blinking eye and perhaps be titled Creating Animations from Poses]. The current title, &amp;quot;Reuse Animations&amp;quot;, is misleading. It gives the impression you are cutting and pasting some bit of animation that appears over X frames into another (possibly overlapping) set of X frames. Eg, a mouth movement that is first captured in 6 frames gets reused elsewhere to look the same. However, here we simply create poses and then create many new distinct animations as we vary when we call each pose and how far apart. [I am assuming &amp;quot;reusing an animation&amp;quot; would be understood by a noob to be something fixed and that gets reused identically.] I am a noob, and I had trouble understanding this tutorial until I started playing with the download file and looking at the xml. If there are no objections, I may make some minor changes to the article later on this week. [[User:Jose X|Jose X]] 03:43, 20 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jose X</name></author>	</entry>

	</feed>