Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: world transform of skinned meshes

  1. #1

    world transform of skinned meshes

    I'm having trouble trying to figure out where the world transform of a skinned mesh is located. (When I say "world transform" I mean the position and rotation of the skinned mesh within the scene).
    I have found 5 different ways that this information can be stored:
    Sometimes it's stored within the skeleton root node.
    Sometimes it's stored as a parent node of the controller, which is also a parent of the skeleton.
    Sometimes it's stored in a "disembodied joint" which is a parent of the skeleton (but not the controller)
    And sometimes it's stored within the controller node
    As you can see it's a nightmare trying to figure out a scheme that will handle all cases.

  2. #2
    Member
    Join Date
    Feb 2005
    Location
    San Jose, CA
    Posts
    63

    Re: world transform of skinned meshes

    In general, the world tranform of a "instance_controller" (or skinned mesh) is the transformation stack starting from the <visual_scene> going through one or more <node> hierarchy to your <instance_controller>. All <translate>, <rotate>, <scale>, <matrix>, <skew>, <lookat> elements in this stack will contribute to the world tranfrom of that <instance_controller>.

    Sometime, you might find your <instance_controller> inside the <library_nodes>. These library of <node> might be referenced by <instance_node> somewhere in your <visual_scene>. In that case, your world transfrom will be the transformation stack from <visual_scene> to <instance_node> + the stack from that referenced <node> to your <instance_controller>.

    The parent of a skeleton or the "location of a skeleton node" does not contribute to the world transform of the <instance_controller>. Note that you can use more than one <skeleton> in a <instance_controller>.

    Let me know when you find more nightmares.
    Herbert

  3. #3

    Re: world transform of skinned meshes

    Hi uclahklaw,
    Thanks for your quick answer.
    The way that you say that the world transform is stored certainly sounds like the it ought to work, unfortunately that's not the way the plugins do things.
    For example the Max plugin *never* exports the controller with any parent node. The world transfrom is normally in a parent node of the skeleton.
    You can see this by downloading this skinned mesh:
    http://www.sharecg.com/v/3839/3d-model/ ... -character
    When you export to collada you will see something like this:
    Code :
      <library_visual_scenes>
        <visual_scene id="armored_swordman_idle.max" name="armored_swordman_idle_max">
          <node id="armored_swordman-node" name="armored_swordman" type="NODE">
            <instance_controller url="#armored_swordman-mesh-skin-skin">
              <skeleton>#Bip01_Pelvis-node</skeleton>
    ...
            </instance_controller>
          </node>
          <node id="Bip01-node" name="Bip01" type="NODE">
            <matrix>0.000000 1 0 0.367488 -1 0.000000 0 5.45991 0 0 1 113.387 0 0 0 1</matrix>
            <node id="Bip01_Pelvis-node" name="Bip01_Pelvis" sid="Bone1" type="JOINT">
    ...
    If you move the skinned mesh in the scene Bip01-node will change.
    Sometimes the Max plugin does other wierd stuff, like using a joint to store the world co-ordinates. Other plugins behave differently as I mentioned above.

  4. #4
    Senior Member
    Join Date
    Aug 2004
    Location
    California
    Posts
    771

    Re: world transform of skinned meshes

    Quote Originally Posted by captainfreedom
    The way that you say that the world transform is stored certainly sounds like the it ought to work, unfortunately that's not the way the plugins do things.
    Unfortunately true as tools have different limitations and software bugs but we are striving for consistency and interoperability.
    Quote Originally Posted by captainfreedom
    For example the Max plugin *never* exports the controller with any parent node. The world transform is normally in a parent node of the skeleton.
    IIRC, Max always does world-space skinning so part of that export methodology makes sense. The second part sounds like the exporter is taking a short cut (it's a bug) in setting up the coordinate system relationships for its skeletons and skin meshes.

  5. #5
    Senior Member
    Join Date
    Jul 2004
    Location
    Santa Clara
    Posts
    356

    Re: world transform of skinned meshes

    Wondering if you had tried the 'nextgen' exporter and find the same issue?

  6. #6

    Re: world transform of skinned meshes

    the 'nextgen' exporter is only half finished. It crashes if you try to export a skinned mesh

  7. #7

    Re: world transform of skinned meshes

    did you post a bug report on sourceforge for the nextgen problem? Are you using the latest version? Do you have sample files to prove your bug?

  8. #8

    Re: world transform of skinned meshes

    I assume the nextgen plugin is a work in progress and the skinned mesh part isn't finished

  9. #9

    Re: world transform of skinned meshes

    Give it a try. Skinned meshes are fully supported.

  10. #10

    Re: world transform of skinned meshes

    Well, I did give it a try and it crashes. If you try to export the skinned mesh in the max file linked above you will see.

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •