I have a question about the usage of sid’s in Collada files.
In the specification doc it says:
‘… Then follows one or more sub-identifiers. Each is preceeded by a literal ‘/’ character as path separator. The sub-identifiers are taken from a child of the element identified by the first part. For nested elements, multiple sub-identifiers may be used to idenfiy the path to the targetted element.’
And I’ve seen in the xsd that only certain collada node types can have an sid attribute.
Following is two code examples. In both I want to reference the YFOV parameter of the camera.
In the first example there are no sids for <technique> <optics> and <program> elements, in the second example these have sids.
The second example is invalid according to the xsd.
The first has two param1 and param2 sids making it impossible to reference these using the first example, thankfully the yfov has a sid of param0 and can be uniquely identified using ‘cameraShape1-lib/param0’. If sids on technique, optics and program are not allowed then the first example is bugged and each param should have a unique sid.
The spec seems to state that technique,optics and program should have sids on them (’…multiple sub-identifiers may be used to identify the path to the targetted element’) so that you can reference the yfov with something like this:
‘cameraShape1-lib/technique1/optics0/param0’
But the xsd doesn’t allow this.
So which example is correct?
‘cameraShape1-lib/technique1/optics0/param0’
or
‘cameraShape1-lib/param0’???
Examples:
<library type="CAMERA">
<camera id="cameraShape1-lib" name="cameraShape1">
<technique profile="MAYA">
<optics>
<program url="PERSPECTIVE">
<param name="VERTICAL_APERTURE" type="float" flow="IN">1.13284</param>
<param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">2.0955</param>
<param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
</program>
</optics>
</technique>
<technique profile="COMMON">
<optics>
<program url="PERSPECTIVE">
<param name="YFOV" type="float" flow="IN" sid="param0">18.3855</param>
<param name="ZNEAR" type="float" flow="IN" sid="param1">1.e-002</param>
<param name="ZFAR" type="float" flow="IN" sid="param2">1000.</param>
</program>
</optics>
</technique>
</camera>
</library>
<library type="CAMERA">
<camera id="cameraShape1-lib" name="cameraShape1">
<technique profile="MAYA" sid="technique0">
<optics sid="optics0">
<program url="PERSPECTIVE" sid="program0">
<param name="VERTICAL_APERTURE" type="float" flow="IN">1.13284</param>
<param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">2.0955</param>
<param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
</program>
</optics>
</technique>
<technique profile="COMMON" sid="technique1">
<optics sid="optics0">
<program url="PERSPECTIVE" sid="program0">
<param name="YFOV" type="float" flow="IN" sid="param0">9.34899</param>
<param name="ZNEAR" type="float" flow="IN" sid="param1">1.e-002</param>
<param name="ZFAR" type="float" flow="IN" sid="param2">1000.</param>
</program>
</optics>
</technique>
</camera>
</library>