Target a float_array?

The COLLADA 1.41 spec says some things about target syntax:

The array-access syntax can be used to express fields only in one-dimensional vectors and two-dimensional matrices.

Back when I was writing loading code, I took that to mean that float_arrays weren’t valid targets. I was surprised today to see that ColladaMax would effectively output vertex animation by animating a float_array.

It shouldn’t cause much trouble either way, but I’m curious if my (mis)interpretation is shared or whether the usefulness of being able to animate float arrays is useful enough that it doesn’t matter. Are other tools doing the same sort of thing?

Strictly speaking, that is correct but for a different reason. If you look at the complete syntax specification on page 18 and compare it with the schema for the <source> element you will find that you cannot target a <source> or its children because they all lack sid attributes.

The design reason for this is that <source> elements lack semantics and targeting values inside of them for animation purposes implies semantics. Ie why would you animate a value unless you knew what the value is for? Since the <source> element does not have semantics (the <input> element provides semantics) it doesn’t make much sense to try to animate them.

Feeling Software has stated that they consider it a vendor extension although they have not posted the details yet.

It is a source of trouble and incompatibility to have implementations that violate the specification, in this case the address syntax section. It weakens the standard. This particular issue has come up in the Khronos working group and is being resolved. Look for our conclusions in the upcoming 1.4.1b release notes update.

The COLLADA DOM is adding a conformant sid resolver class to help automate this operation and the COLLADA Coherency Checker is adding a conditioner to check for sid violations.

The COLLADA 1.5 schema will introduce strongly typed SID and SIDREF datatypes to help catch invalid data in this regard.