SVG images can be modified programmatically by ecmascript (javascript norm) loaded with the web page. So it is possible to declare flat SVG paths and then add a third dimension to them with javascript.
I developped a javascript API in order to be able to :
You can create your own SVG 3D icon for 0.5 USD. In order to do that, you will have to fill that form :
More explanations on the different parameters to fill can be found below, inside Explanation. You will have all the time needed and indefinite number of tries to make your creation.
That functionality has been tested with Firefox 3, javascript enabled, please use it to be sure everything will work.
Ready to buy ?
I found several javascript APIs for SVG on the web but in general they create everything from scratch in a programmatic way. Here I use the SVG elements declared in the page and I modify it, without dynamically creating new markups. The form displayed above is generated from a schema published there. The schema of the declaration of the transformations is there.
I think that is a better approach that the SVG stays visible in the web page, and declared (not programmed) as if it was usual 2D SVG elements.
Increments of the different transformations parameters are applied directly on the markups. That way, those values stay visible, and it is possible to create more complicated animations modifying those parameters with additional javascript, applied directly on the DOM.
First step is to parse the actual declared SVG. That is done by svg3d_parsing.js. Then an interval timer is set which will trigger the method transform() every 50ms (value by default).
The transform() method will parse the transformations declared and apply them on the original path declaration ("d" attribute). The new coordinates, result of the transformation, are not taken in account in the following step, that way the algorithm is more robust and it does not keep long decimal numbers resulting from the calculations. Transformations are applied from last to the first. That may be changed in the future.
Attributes available on <g> element (I am not sure getAttributeNS is supported by browsers so prefix of those attributes is hardcoded to "z:") :
Attributes available on <path> elements (same way, the prefix is hardcoded to "z:") :
Transformations available inside <path> elements (I am not sure getElementsByTagNameNS is supported by all browsers, so only the localname of the markups is read) :
All those developments are released under Cecill licence.
The project Forms Generator is available on a svn, contact me for more information. In the future, a project might be created on sourceforge.
Projects svg 3d, XSD to RelaxNG converter, javascript SAX parser, javascript RelaxNG validator, javascript datatype library are published on Google code. Project javascript SAX parser is also published on Github.