instance_articulated_system bindings

hi all, the redundancy collada is providing in instance_articulated_system seems a little confusing. It seems that information provided by <bind> can be converted to use <newparam>, and vice versa.

The articulated system examples provided in this forum use <newparam> only…

so my quesiton is, why was a <bind> tag created in the collada spec?

thank you,

In general, COLLADA bind elements are used within instance elements to declare information that is unique to that instantiation. i.e. per-instance data.

In the case of instance_articulated_system, the bind element maps a new symbolic name to an existing parameter or constant value. This is intended to be useful in very complex hierarchies of articulated systems.

hi marcus,

Isn’t this exactly what <newparam> does when a SIDREF is specified?

Not exactly.

In kinematics, bind declares an alias in the current scope for a preexisting parameter, constant value, or object. It doesn’t create a new parameter. It’s like a C++ reference or const-reference.

newparam declares a new parameter in the current scope and in the case of SIDREF, it’s like a C++ pointer to a preexisting variable. If you change the value of this newparam, you are (only) changing what (other parameter) it refers to.