blendercolladaskeletal-animationskeletal-mesh

What is a node extra technique in Collada?


I am parsing the 1.4.1 Collada(exported from Blender), and I have noticed under the library_visual_scenes section, some nodes have extra technique sections.

Looking online, its not really clear what these are used for, or how I can use them. I assume they are used to transform the bone... but I am not sure. And why is this even needed!? Why is it just not baked into the bone matrix itself?

Example:

<node id="Armature_femaleLThigh" name="femaleLThigh" sid="femaleLThigh" type="JOINT">
            <matrix sid="transform">-0.9970781 0.002205959 -0.07635591 0.1638527 0.003207254 0.9999106 -0.01299338 0.3053502 0.07632041 -0.01320031 -0.9969959 0.8346263 0 0 0 1</matrix>
            <node id="Armature_femaleLCalf" name="femaleLCalf" sid="femaleLCalf" type="JOINT">
              <matrix sid="transform">0.9932371 0.1157223 -0.009409941 5.092525 -0.1157309 0.9932806 -3.67943e-4 -1.14292e-5 0.009304143 0.001454476 0.9999557 3.33786e-6 0 0 0 1</matrix>
              <node id="Armature_femaleLFoot" name="femaleLFoot" sid="femaleLFoot" type="JOINT">
                <matrix sid="transform">0.1140624 -0.991138 -0.06808402 4.458811 0.9934708 0.1139541 0.005483917 9.53674e-7 0.002323155 -0.0682651 0.9976645 2.38419e-7 0 0 0 1</matrix>
                <extra>
                  <technique profile="blender">
                    <layer sid="layer" type="string">0</layer>
                    <roll sid="roll" type="float">-1.571044</roll>
                    <tip_x sid="tip_x" type="float">5.96046e-7</tip_x>
                    <tip_y sid="tip_y" type="float">4.347153</tip_y>
                    <tip_z sid="tip_z" type="float">0.9915916</tip_z>
                  </technique>
                </extra>
              </node>
              <extra>
                <technique profile="blender">
                  <layer sid="layer" type="string">0</layer>
                  <roll sid="roll" type="float">-1.509084</roll>
                  <tip_x sid="tip_x" type="float">-0.02554714</tip_x>
                  <tip_y sid="tip_y" type="float">-0.4897394</tip_y>
                  <tip_z sid="tip_z" type="float">4.431761</tip_z>
                </technique>
              </extra>
            </node>
            <extra>
              <technique profile="blender">
                <layer sid="layer" type="string">0</layer>
                <roll sid="roll" type="float">-1.50752</roll>
                <tip_x sid="tip_x" type="float">-0.06722211</tip_x>
                <tip_y sid="tip_y" type="float">0.02900314</tip_y>
                <tip_z sid="tip_z" type="float">5.091998</tip_z>
              </technique>
            </extra>
          </node>

Thank you!


Solution

  • Extra element is program / library / application specific. In your case Blender exported Blender specific options (techniques or else).

    For instance if Blender re-import the file then Blender will read all these parameters and will configure the scene. Probably without profile="blender" Blender can't understand the technique in extra is belongs to Blender or not.

    So basically, it holds application-specific configurations or extended configurations (extensions). You can put your custom data to there and probably most loaders will ignore them.