- From: Steve Withall <steve@withallyourequire.com>
- Date: Mon, 16 Nov 2009 19:54:21 +1100
- To: www-svg@w3.org
Esteemed experts,
I'd like to make some comments on the "SVG Transforms 1.0, Part 2:
Language" document, draft dated 11 March 2009:
1. Section 2: The references to 'Z position' confound me. Does that mean
that specifying z-order by a proper Z co-ordinate rather than an
index is on the cards? I would argue strongly in favour of doing so.
An index serves no purpose except ordering, but a *position* can
be used for all kinds of purposes (as I was attempting to argue in my
previous email).
Also, since transforms will use proper Z positions, to use artificial
integers for z-ordering (rather than positions) would introduce an
inconsistency. And every inconsistency makes something harder to learn.
2. Section 2: I see no need for special elements (layeredG or g3d).
3. Sections 2.1, 2.2: I'm confused when you refer to 'properties'. Are
'transform-origin' and 'perspective' intended to be defined in the 'style'
attribute (or from a style sheet)? If so, that doesn't seem natural to
me: these aren't style-related at all.
4. Section 2.1: Whenever I see a property or attribute that contains
multiple values, I ask myself whether it could be achieved another
way. Multi-values are a pain to animate. In the case of
'transform-origin',
if this were an attribute, its value could be a property list
(eg. transform-origin="ox:0; oy:100; oz=50"). If <animate> and
<set> were made a little more intelligent, it would be easy to
animate a single value within a property list for any attribute.
5. Section 2.1: Naming things 'o' is to be avoided whenever possible,
because of possible confusion with '0' (that's a zero), especially
things with numeric values. Can't you use another letter? Why not
call these plain x, y and z?
6. Section 3: I think you should maintain more backward compatibility.
Can't you maintain *complete* backward compatibility if you:
(a) Introduce rotate3D() for 3D rotations, and keep rotate() as
it is (for 2D rotations).
(b) Make the <cz> values optional in rotateX() and rotateZ().
Since the bulk of SVG documents are purely 2D, you shouldn't impose
a burden on their authors for 3D features that they don't want to
use. So in addition to backward compatibility you shouldn't force
authors of 2D documents to do more work (supply more values).
7. General: I don't like matrices, and I daresay the vast majority of
SVG document authors don't either. You should make it as intuitive
as possible for a non-techo to specify rotations in 3D - especially
about a horizontal or vertical axis.
8. General: Following on from point 7, this specification is crying out
for some examples. Devise what you consider to be a range of common
cases and show the sources of the elements that implement them.
Until you do that it won't be possible for a reader (reviewer)
to judge how easy this stuff will be to write.
Now a few things that go beyond the scope of this specification:
9. This specification addresses just the transform extensions
themselves. By implication that means it affects just graphical
elements. But that need not be so. The case that interests me
is <animateMotion> along a path 'tilted' in three dimensions, which
I think can be achieved straightforwardly (famous last words!).
Your perspective stuff is able to define the tilt. For example, you
could have collection of objects 'orbit' together in a horizontal
plane. I hasten to add that the path itself will still be defined
in 2D.
10. Also on a wider note, I'd prefer to be able to express 3D effects
in terms of what I want to achieve, rather than having to calculate
all the details and then express them in terms of transforms
(which are, let's face it, an unintuitive implementation contrivance
when you go beyond the trivial). That is, I'd like the software do
the tedious calculation of perspectives, say to align graphical
elements relative to a virtual horizon.
11. Another feature that could be added is adjusting the rendered size
of elements according to their z positions - so as an animation
moves an element 'outwards' it appears to get bigger. Again, this
should be done without the document author having to do the hard work.
Regards, Steve.
Received on Monday, 16 November 2009 08:54:59 UTC