[3DSMax] Wrong word transformation

Hi,

I what I am doing wrong, or why no one has seen that before, but my 3DSMax Collada plugin has never exported well the relative transformations of the nodes.

Here I create a simple scene with 4 transformed cubes (with autogrid option) :

I export it to Collada, and then re-import it into Max… here is the result :

What is wrong ?

Tom

Are the four prisms parented in some way?

Could you please attach the exported COLLADA document and the original Max file?

Which export options are used?

Thanks,

At export, I checked those options :

  • Bake Matrices
  • Normals
  • Triangles
  • Sample Animation

Unchecking Bake Matrices has no effect on the result.

The objets are not parented. Here is the XML source of the file :


<?xml version="1.0" encoding="utf-8" ?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.0">
   <asset>
      <contributor>
         <author>thomas</author>
         <authoring_tool>3dsmax COLLADA exporter v2.10</authoring_tool>
      </contributor>
      <created>2006-03-08T14:52:28Z</created>
      <modified>2006-03-08T14:52:28Z</modified>
      <revision>1.0</revision>
      <unit name="feet" meter="0.0254"></unit>
      <up_axis>Z_UP</up_axis>
   </asset>
   <library_materials>
      <material id="ColorMaterial_8915052">
         <instance_effect url="#ColorMaterial_8915052-fx"></instance_effect>
      </material>
      <material id="ColorMaterial_9059592">
         <instance_effect url="#ColorMaterial_9059592-fx"></instance_effect>
      </material>
      <material id="ColorMaterial_9744666">
         <instance_effect url="#ColorMaterial_9744666-fx"></instance_effect>
      </material>
      <material id="ColorMaterial_9429079">
         <instance_effect url="#ColorMaterial_9429079-fx"></instance_effect>
      </material>
   </library_materials>
   <library_effects>
      <effect id="ColorMaterial_8915052-fx" name="ColorMaterial_8915052">
         <profile_COMMON>
            <technique sid="COMMON">
               <lambert>
                  <ambient>
                     <color>0.423529 0.0313726 0.533333 1</color>
                  </ambient>
                  <diffuse>
                     <color>0.423529 0.0313726 0.533333 1</color>
                  </diffuse>
               </lambert>
            </technique>
         </profile_COMMON>
      </effect>
      <effect id="ColorMaterial_9059592-fx" name="ColorMaterial_9059592">
         <profile_COMMON>
            <technique sid="COMMON">
               <lambert>
                  <ambient>
                     <color>0.0313726 0.239216 0.541176 1</color>
                  </ambient>
                  <diffuse>
                     <color>0.0313726 0.239216 0.541176 1</color>
                  </diffuse>
               </lambert>
            </technique>
         </profile_COMMON>
      </effect>
      <effect id="ColorMaterial_9744666-fx" name="ColorMaterial_9744666">
         <profile_COMMON>
            <technique sid="COMMON">
               <lambert>
                  <ambient>
                     <color>0.101961 0.694118 0.580392 1</color>
                  </ambient>
                  <diffuse>
                     <color>0.101961 0.694118 0.580392 1</color>
                  </diffuse>
               </lambert>
            </technique>
         </profile_COMMON>
      </effect>
      <effect id="ColorMaterial_9429079-fx" name="ColorMaterial_9429079">
         <profile_COMMON>
            <technique sid="COMMON">
               <lambert>
                  <ambient>
                     <color>0.341176 0.878431 0.560784 1</color>
                  </ambient>
                  <diffuse>
                     <color>0.341176 0.878431 0.560784 1</color>
                  </diffuse>
               </lambert>
            </technique>
         </profile_COMMON>
      </effect>
   </library_effects>
   <library_geometries>
      <geometry id="Box04-obj" name="Box04">
         <mesh>
            <source id="Box04-obj-position">
               <float_array id="Box04-obj-position-array" count="24">-35.569393 3.473245 23.903479 -35.569393 -10.620806 23.903479 -35.569393 3.473245 35.851242 -35.569393 -10.620806 35.851242 -74.810982 3.473251 23.903477 -74.810989 -10.620799 23.903477 -74.810982 3.473251 35.851238 -74.810989 -10.620799 35.851238</float_array>
               <technique_common>
                  <accessor source="#Box04-obj-position-array" count="8" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box04-obj-normal">
               <float_array id="Box04-obj-normal-array" count="72">0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0</float_array>
               <technique_common>
                  <accessor source="#Box04-obj-normal-array" count="24" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box04-obj-mapchan-1">
               <float_array id="Box04-obj-mapchan-1-array" count="36">0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0</float_array>
               <technique_common>
                  <accessor source="#Box04-obj-mapchan-1-array" count="12" stride="3">
                     <param name="S" type="float"></param>
                     <param name="T" type="float"></param>
                     <param name="R" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <vertices id="Box04-obj-vertex">
               <input semantic="POSITION" source="#Box04-obj-position"></input>
            </vertices>
            <triangles material="ColorMaterial_8915052" count="12">
               <input semantic="VERTEX" source="#Box04-obj-vertex" offset="0"></input>
               <input semantic="NORMAL" source="#Box04-obj-normal" offset="1"></input>
               <input semantic="TEXCOORD" source="#Box04-obj-mapchan-1" offset="2" set="1"></input>
               

0 0 9 2 1 11 3 2 10 3 2 10 1 3 8 0 0 9 4 4 8 5 5 9 7 6 11 7 6 11 6 7 10 4 4 8 0 8 4 1 9 5 5 10 7 5 10 7 4 11 6 0 8 4 1 12 0 3 13 1 7 14 3 7 14 3 5 15 2 1 12 0 3 16 4 2 17 5 6 18 7 6 18 7 7 19 6 3 16 4 2 20 0 0 21 1 4 22 3 4 22 3 6 23 2 2 20 0 </p>
            </triangles>
         </mesh>
      </geometry>
      <geometry id="Box03-obj" name="Box03">
         <mesh>
            <source id="Box03-obj-position">
               <float_array id="Box03-obj-position-array" count="24">-25.585957 -36.108139 29.238312 -12.774834 -36.108139 29.238312 -25.585957 -36.108139 42.035553 -12.774834 -36.108139 42.035553 -25.585957 -61.400620 29.238312 -12.774834 -61.400620 29.238312 -25.585957 -61.400623 42.035553 -12.774834 -61.400623 42.035553</float_array>
               <technique_common>
                  <accessor source="#Box03-obj-position-array" count="8" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box03-obj-normal">
               <float_array id="Box03-obj-normal-array" count="72">0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0</float_array>
               <technique_common>
                  <accessor source="#Box03-obj-normal-array" count="24" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box03-obj-mapchan-1">
               <float_array id="Box03-obj-mapchan-1-array" count="36">0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0</float_array>
               <technique_common>
                  <accessor source="#Box03-obj-mapchan-1-array" count="12" stride="3">
                     <param name="S" type="float"></param>
                     <param name="T" type="float"></param>
                     <param name="R" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <vertices id="Box03-obj-vertex">
               <input semantic="POSITION" source="#Box03-obj-position"></input>
            </vertices>
            <triangles material="ColorMaterial_9059592" count="12">
               <input semantic="VERTEX" source="#Box03-obj-vertex" offset="0"></input>
               <input semantic="NORMAL" source="#Box03-obj-normal" offset="1"></input>
               <input semantic="TEXCOORD" source="#Box03-obj-mapchan-1" offset="2" set="1"></input>
               

0 0 9 2 1 11 3 2 10 3 2 10 1 3 8 0 0 9 4 4 8 5 5 9 7 6 11 7 6 11 6 7 10 4 4 8 0 8 4 1 9 5 5 10 7 5 10 7 4 11 6 0 8 4 1 12 0 3 13 1 7 14 3 7 14 3 5 15 2 1 12 0 3 16 4 2 17 5 6 18 7 6 18 7 7 19 6 3 16 4 2 20 0 0 21 1 4 22 3 4 22 3 6 23 2 2 20 0 </p>
            </triangles>
         </mesh>
      </geometry>
      <geometry id="Box02-obj" name="Box02">
         <mesh>
            <source id="Box02-obj-position">
               <float_array id="Box02-obj-position-array" count="24">-23.185331 -13.116779 58.922890 -5.923672 -13.116779 58.922890 -23.185331 3.001753 58.922890 -5.923672 3.001753 58.922890 -23.185331 -13.116779 83.684761 -5.923672 -13.116779 83.684761 -23.185331 3.001753 83.684761 -5.923672 3.001753 83.684761</float_array>
               <technique_common>
                  <accessor source="#Box02-obj-position-array" count="8" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box02-obj-normal">
               <float_array id="Box02-obj-normal-array" count="72">0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0</float_array>
               <technique_common>
                  <accessor source="#Box02-obj-normal-array" count="24" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box02-obj-mapchan-1">
               <float_array id="Box02-obj-mapchan-1-array" count="36">0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0</float_array>
               <technique_common>
                  <accessor source="#Box02-obj-mapchan-1-array" count="12" stride="3">
                     <param name="S" type="float"></param>
                     <param name="T" type="float"></param>
                     <param name="R" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <vertices id="Box02-obj-vertex">
               <input semantic="POSITION" source="#Box02-obj-position"></input>
            </vertices>
            <triangles material="ColorMaterial_9744666" count="12">
               <input semantic="VERTEX" source="#Box02-obj-vertex" offset="0"></input>
               <input semantic="NORMAL" source="#Box02-obj-normal" offset="1"></input>
               <input semantic="TEXCOORD" source="#Box02-obj-mapchan-1" offset="2" set="1"></input>
               

0 0 9 2 1 11 3 2 10 3 2 10 1 3 8 0 0 9 4 4 8 5 5 9 7 6 11 7 6 11 6 7 10 4 4 8 0 8 4 1 9 5 5 10 7 5 10 7 4 11 6 0 8 4 1 12 0 3 13 1 7 14 3 7 14 3 5 15 2 1 12 0 3 16 4 2 17 5 6 18 7 6 18 7 7 19 6 3 16 4 2 20 0 0 21 1 4 22 3 4 22 3 6 23 2 2 20 0 </p>
            </triangles>
         </mesh>
      </geometry>
      <geometry id="Box01-obj" name="Box01">
         <mesh>
            <source id="Box01-obj-position">
               <float_array id="Box01-obj-position-array" count="24">-35.569389 -36.108135 0 9.192568 -36.108135 0 -35.569389 22.485931 0 9.192568 22.485931 0 -35.569389 -36.108135 58.922894 9.192568 -36.108135 58.922894 -35.569389 22.485931 58.922894 9.192568 22.485931 58.922894</float_array>
               <technique_common>
                  <accessor source="#Box01-obj-position-array" count="8" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box01-obj-normal">
               <float_array id="Box01-obj-normal-array" count="72">0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 0 1.000000 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0 -1.000000 0 0</float_array>
               <technique_common>
                  <accessor source="#Box01-obj-normal-array" count="24" stride="3">
                     <param name="X" type="float"></param>
                     <param name="Y" type="float"></param>
                     <param name="Z" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <source id="Box01-obj-mapchan-1">
               <float_array id="Box01-obj-mapchan-1-array" count="36">0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0 0 0 0 1.000000 0 0 0 1.000000 0 1.000000 1.000000 0</float_array>
               <technique_common>
                  <accessor source="#Box01-obj-mapchan-1-array" count="12" stride="3">
                     <param name="S" type="float"></param>
                     <param name="T" type="float"></param>
                     <param name="R" type="float"></param>
                  </accessor>
               </technique_common>
            </source>
            <vertices id="Box01-obj-vertex">
               <input semantic="POSITION" source="#Box01-obj-position"></input>
            </vertices>
            <triangles material="ColorMaterial_9429079" count="12">
               <input semantic="VERTEX" source="#Box01-obj-vertex" offset="0"></input>
               <input semantic="NORMAL" source="#Box01-obj-normal" offset="1"></input>
               <input semantic="TEXCOORD" source="#Box01-obj-mapchan-1" offset="2" set="1"></input>
               

0 0 9 2 1 11 3 2 10 3 2 10 1 3 8 0 0 9 4 4 8 5 5 9 7 6 11 7 6 11 6 7 10 4 4 8 0 8 4 1 9 5 5 10 7 5 10 7 4 11 6 0 8 4 1 12 0 3 13 1 7 14 3 7 14 3 5 15 2 1 12 0 3 16 4 2 17 5 6 18 7 6 18 7 7 19 6 3 16 4 2 20 0 0 21 1 4 22 3 4 22 3 6 23 2 2 20 0 </p>
            </triangles>
         </mesh>
      </geometry>
   </library_geometries>
   <library_visual_scenes>
      <visual_scene id="unnamed_scene" name="unnamed_scene">
         <node id="Box01" sid="Box01" name="Box01">
            <matrix>1 0 0 -13.1884 0 1 0 -6.8111 0 0 1 0 0 0 0 1</matrix>
            <instance_geometry url="#Box01-obj">
               <bind_material>
                  <technique_common>
                     <instance_material symbol="ColorMaterial_9429079" target="#ColorMaterial_9429079"></instance_material>
                  </technique_common>
               </bind_material>
            </instance_geometry>
         </node>
         <node id="Box02" sid="Box02" name="Box02">
            <matrix>1 0 0 -14.5545 0 1 0 -5.05751 0 0 1 58.9229 0 0 0 1</matrix>
            <instance_geometry url="#Box02-obj">
               <bind_material>
                  <technique_common>
                     <instance_material symbol="ColorMaterial_9744666" target="#ColorMaterial_9744666"></instance_material>
                  </technique_common>
               </bind_material>
            </instance_geometry>
         </node>
         <node id="Box03" sid="Box03" name="Box03">
            <matrix>1 0 0 -19.1804 0 -4.37114e-008 -1 -36.1081 0 1 -4.37114e-008 35.6369 0 0 0 1</matrix>
            <instance_geometry url="#Box03-obj">
               <bind_material>
                  <technique_common>
                     <instance_material symbol="ColorMaterial_9059592" target="#ColorMaterial_9059592"></instance_material>
                  </technique_common>
               </bind_material>
            </instance_geometry>
         </node>
         <node id="Box04" sid="Box04" name="Box04">
            <matrix>-1.62921e-007 -4.37114e-008 -1 -35.5694 -1 7.12149e-015 1.62921e-007 -3.57378 0 1 -4.37114e-008 29.8774 0 0 0 1</matrix>
            <instance_geometry url="#Box04-obj">
               <bind_material>
                  <technique_common>
                     <instance_material symbol="ColorMaterial_8915052" target="#ColorMaterial_8915052"></instance_material>
                  </technique_common>
               </bind_material>
            </instance_geometry>
         </node>
      </visual_scene>
   </library_visual_scenes>
   <scene>
      <instance_visual_scene url="#unnamed_scene"></instance_visual_scene>
   </scene>
</COLLADA>

Regards,
Tom

Is there a good reason why you are not checking the “object-space” export option?

COLLADA is not interested in world-space geometries so the importer doesn’t handle them, but some users requested that export. Maybe the export option should be inverted in meaning to make more sense. For now, always use the “object-space” export option.

Sincerely,

Well, it seems that I has mistaken on default export options.

But even if the object-space options isn’t checked, shouldn’t be any extra 3DMAX saying that the transformations are word-space ? Thus, any importer could import well the world-space DAE file, thanks to some intepretation of the extra parameters.

Anyway, I just found strange that the export and import of Max were not bijective.

Thanks,
Tom