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?
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.
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.