W3C home > Mailing lists > Public > www-svg@w3.org > November 2013

Re: SVG 3D transforms

From: Jelle Mulder <pjmulder@xs4all.nl>
Date: Tue, 26 Nov 2013 07:19:48 +0800
To: www-svg@w3.org
Message-ID: <op.w64ofasspkr7a5@beauty.domain>
Tab, all

Three-dimensional transform functions and the properties ‘perspective’,  
‘perspective-origin’, ‘transform-style’ and ‘backface-visibility’ can not  
be used for the elements: <clipPath>, <linearGradient>, <radialGradient>  
and <pattern>.

I understand the reasons for this, but I was wondering the following. If  
you have an external source file linked, you <use> it and change the fills  
to discard the gradients and patterns etc. Can you then use it with  
perspective. In other words, after cleaning the offending attributes?

Is it possible to 3d transform a path and THEN use it to clip something  
after the transform? Can you 3d transform a bitmap image? Because then you  
can transform a path and clip your bitmap in it.

This also touches a use case which would make it desirable to have some  
sort of pre rendering method in order to do 3d transforms on any SVG  
content. Clippath and Mask elements will be used a lot in illustrations.  
Clippath and Masks are a delight for any serious illustrator. It's a bit  
of a bummer that all that content will not be able to be rendered using 3d  
transforms. Probably with an unwitting author being baffled why it doesn't  
work, blaming the browser/viewer first.

If there was some pre rendering method one could use, to first render and  
image of the object and do the 3d transform afterwards, we could discard  
the need for doing that on the server using imagemagick, Batik or  
Inkscape, creating some png that can be transformed.

That should be computationally fairly light work I would think and would  
allow for more complex content to be transformed.

Something like
<image xlink:href="filename.svg#object" transform="pngRender(xSize, ySize,  
aspectRatio, renderedObjectId)" />


Jelle Mulder

On Tue, 26 Nov 2013 04:55:08 +0800, Tab Atkins Jr. <jackalmage@gmail.com>  

> On Mon, Nov 25, 2013 at 1:30 AM, Nicolas Froidure
> <nfroidure@elitwork.com> wrote:
>>             Hi,
>>     I'm authoring a JS library to stream SVG Path Datas (
>> https://github.com/nfroidure/SVGPathData) and i would like to implement  
>> SVG
>> 3D transforms.
>>     When combining multiple SVG 3D transformations, should i keep the z
>> coordinate value and pass it to other transformations or should i always
>> consider that z value is 0?
> The spec for 3d transforms is
> <http://dev.w3.org/csswg/css-transforms/>, and the interaction with
> SVG specifically is
> <http://dev.w3.org/csswg/css-transforms/#svg-three-dimensional-functions>.
> ~TJ
Received on Monday, 25 November 2013 23:14:45 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:54:47 UTC