Jump to content

3ds Max 2018 bones/skin problems


jsunandmax
 Share

Recommended Posts

Hello, i have a 3k poly character w/ about 80 bones bound with a Skin modifier.

When i export (latest exporter from GitHub), i get no errors but when the animation plays in the viewer here:  https://sandbox.babylonjs.com/   It is 'jacked up'.

What I mean is there is clearly animation as some verts are moving around, but only a few (see image).  

 

I think i've tried all the various flags, settings etc.  Any help? 

thanks in advance,

jason

 

baddemon.jpg

Link to comment
Share on other sites

Hi @jsunandmax, happy to help out! First, can you share which DCC tool you are using? I didn't see it in your post and the export paths are different depending on which package you are using. Secondly, are you able to share out the file for us to look at, even in a private link? Debugging skinning and animation issues through forum messages is far more difficult. Obviously anything you share with us stays confidential and we don't retain any files shared for debugging purposes. If not can you share with us screen captures of your asset in your DCC tool deforming the way you expect and again in the sandbox so we can compare? The image above is very dark and I'm not sure what the original is supposed to look like so understanding where to start is difficult. Thanks for your help and we'll do whatever we can to solve your issue. 

Link to comment
Share on other sites

Thanks for the response;  couple things:

 

DCC is 3dsMax 2018.  I've attached the original .fbx file; the character deforms fine inside Max; basically what you would expect. 

When you export, the pathologies are pretty obvious, if not in my screenshot.

 

Thanks again,

jason

 

2490fa122be34ac3950e8fed33203a27.fbx.fbx

Link to comment
Share on other sites

I've had similar issues with Max. Back then the issue happened if a vertex wasn't weighted properly. A single non-weighted vertex would create artifacts. I haven't tested your file, but try weighting ALL vertices 100% to a single bone. If this solves the artifacts, you can be pretty sure that it's a weighting issue.

Edit: My issue actually looked different. Will try it later tonight.

Link to comment
Share on other sites

Our exporters should be kicking warnings about non-normalized skin weights, so if that is truly what's going on it is still likely a bug. Though I am unsure why the same FBX sent through Maya would succeed because exporting with non-normalized weights results in an invalid glTF. I'm guessing that @kcoley will know what is going on.

Link to comment
Share on other sites

awesome research and fast turnaround, thanks lads!  These clues are a great start...look forward to hearing more.

as a minor detail, i stripped the skeleton and built a new one + skin in the cloud with www.mixamo.com  and then brought back int 3DSMax and exported and THAT worked.

 

 

Link to comment
Share on other sites

I can't open your max file since I'm outdated at the 2015 version.

Deleting the cloth fixed the artifacts for me, but another thing did as well.

Can you confirm this works for you, too?:

- Select the cloth mesh

- In the skin modifier, remove all but the weighted bones, leaving you only with the backflap_.......... frontflap_... bones.

Link to comment
Share on other sites

I'm looking at your one arm animation file and the reason you don't see animation on that file is that there are two validation errors on the file with the following information:

{
  "uri": "DemonOneArm_Max.gltf",
  "mimeType": "model/gltf+json",
  "validatorVersion": "2.0.0-dev.2.5",
  "validatedAt": "2018-11-21T23:13:19.321Z",
  "issues": {
    "numErrors": 2,
    "numWarnings": 0,
    "numInfos": 3,
    "numHints": 0,
    "messages": [
      {
        "code": "MESH_PRIMITIVE_UNUSED_TEXCOORD",
        "message": "Material does not use texture coordinates sets with indices (0, 1).",
        "severity": 2,
        "pointer": "/meshes/0/primitives/0/material"
      },
      {
        "code": "MESH_PRIMITIVE_UNUSED_TEXCOORD",
        "message": "Material does not use texture coordinates sets with indices (0, 1).",
        "severity": 2,
        "pointer": "/meshes/1/primitives/0/material"
      },
      {
        "code": "NODE_EMPTY",
        "message": "Empty node encountered.",
        "severity": 2,
        "pointer": "/nodes/60"
      },
      {
        "code": "ACCESSOR_INDECOMPOSABLE_MATRIX",
        "message": "Matrix element at index 831 is not decomposable to TRS.",
        "severity": 0,
        "pointer": "/accessors/16"
      },
      {
        "code": "ACCESSOR_INDECOMPOSABLE_MATRIX",
        "message": "Matrix element at index 831 is not decomposable to TRS.",
        "severity": 0,
        "pointer": "/accessors/17"
      }
    ],
    "truncated": false
  },
  "info": {
    "version": "2.0",
    "generator": "babylon.js glTF exporter for 3ds max 2019 v1.3.9",
    "resources": [
      {
        "pointer": "/buffers/0",
        "mimeType": "application/gltf-buffer",
        "storage": "external",
        "uri": "DemonOneArm_Max.bin",
        "byteLength": 601992
      }
    ],
    "hasAnimations": true,
    "hasMaterials": true,
    "hasMorphTargets": false,
    "hasSkins": true,
    "hasTextures": false,
    "hasDefaultScene": true,
    "primitivesCount": 2,
    "maxAttributesUsed": 7
  }
}

If I export just the body of the character, the animation plays, but we still get one error in the validator:

{
  "uri": "DemonOneArmBody_Max.gltf",
  "mimeType": "model/gltf+json",
  "validatorVersion": "2.0.0-dev.2.5",
  "validatedAt": "2018-11-21T23:36:54.474Z",
  "issues": {
    "numErrors": 1,
    "numWarnings": 0,
    "numInfos": 2,
    "numHints": 0,
    "messages": [
      {
        "code": "MESH_PRIMITIVE_UNUSED_TEXCOORD",
        "message": "Material does not use texture coordinates sets with indices (1).",
        "severity": 2,
        "pointer": "/meshes/0/primitives/0/material"
      },
      {
        "code": "NODE_EMPTY",
        "message": "Empty node encountered.",
        "severity": 2,
        "pointer": "/nodes/59"
      },
      {
        "code": "ACCESSOR_INDECOMPOSABLE_MATRIX",
        "message": "Matrix element at index 831 is not decomposable to TRS.",
        "severity": 0,
        "pointer": "/accessors/7"
      }
    ],
    "truncated": false
  },
  "info": {
    "version": "2.0",
    "generator": "babylon.js glTF exporter for 3ds max 2019 v1.3.9",
    "resources": [
      {
        "pointer": "/buffers/0",
        "mimeType": "application/gltf-buffer",
        "storage": "external",
        "uri": "DemonOneArmBody_Max.bin",
        "byteLength": 466064
      },
      {
        "pointer": "/images/0",
        "mimeType": "image/png",
        "storage": "external",
        "uri": "UVmap2017255_baseColor.png",
        "image": {
          "width": 1024,
          "height": 1024,
          "format": "RGBA",
          "bits": 8
        }
      }
    ],
    "hasAnimations": true,
    "hasMaterials": true,
    "hasMorphTargets": false,
    "hasSkins": true,
    "hasTextures": true,
    "hasDefaultScene": true,
    "primitivesCount": 1,
    "maxAttributesUsed": 6
  }
}

Max_OneArmAnimationBodyOnly.thumb.png.323cff32bd2c801d368ff47fc5cab29a.png

Interestingly, the FBX I ran through Maya for export results in no errors, but one warning and the animation plays correctly. The difference is that the Maya export does not have the NODE_EMPTY error which I am sure is the problem here. Exporting the body only and the cloth only from the one-arm animation file results in a NODE_EMPTY warning in each case. Unfortunately, with the cloth only export I can't see if the animation is working. 

{
  "uri": "DemonTestMaya2019.gltf",
  "mimeType": "model/gltf+json",
  "validatorVersion": "2.0.0-dev.2.5",
  "validatedAt": "2018-11-21T23:41:03.318Z",
  "issues": {
    "numErrors": 0,
    "numWarnings": 1,
    "numInfos": 2,
    "numHints": 0,
    "messages": [
      {
        "code": "UNSUPPORTED_EXTENSION",
        "message": "Unsupported extension encountered: 'KHR_lights'.",
        "severity": 1,
        "pointer": "/extensionsUsed/0"
      },
      {
        "code": "MESH_PRIMITIVE_UNUSED_TEXCOORD",
        "message": "Material does not use texture coordinates sets with indices (1).",
        "severity": 2,
        "pointer": "/meshes/0/primitives/0/material"
      },
      {
        "code": "MESH_PRIMITIVE_UNUSED_TEXCOORD",
        "message": "Material does not use texture coordinates sets with indices (1).",
        "severity": 2,
        "pointer": "/meshes/1/primitives/0/material"
      }
    ],
    "truncated": false
  },
  "info": {
    "version": "2.0",
    "generator": "babylon.js glTF exporter for maya 2018 v1.2.6",
    "extensionsUsed": [
      "KHR_lights"
    ],
    "resources": [
      {
        "pointer": "/buffers/0",
        "mimeType": "application/gltf-buffer",
        "storage": "external",
        "uri": "DemonTestMaya2019.bin",
        "byteLength": 9452252
      },
      {
        "pointer": "/images/0",
        "mimeType": "image/png",
        "storage": "external",
        "uri": "UVmap2017.png",
        "image": {
          "width": 1024,
          "height": 1024,
          "format": "RGBA",
          "bits": 8
        }
      }
    ],
    "hasAnimations": true,
    "hasMaterials": true,
    "hasMorphTargets": false,
    "hasSkins": true,
    "hasTextures": true,
    "hasDefaultScene": true,
    "primitivesCount": 2,
    "maxAttributesUsed": 7
  }
}

At this point I think we need to call in our glTF expert @bghgary as he will be able to make more sense of the errors than I can. 

Link to comment
Share on other sites

Raggar, yep that did the trick!   What was the issue?  Only one skin supported and those bones had membership in multiple object/skins or something?

(this is a found mesh i'm using for testing, so i didnt create)

thanks so much!!

jason


 

ps.  I did notice that if i change the timeline to, say 200-400 and hit export, no animations were exported.  (skin babylon values still set to default 1-100).   I would have expected it to take the 1-100 values, but instead nada.

 

 

 

Link to comment
Share on other sites

11 hours ago, jsunandmax said:

Raggar, yep that did the trick!   What was the issue?  Only one skin supported and those bones had membership in multiple object/skins or something?

(this is a found mesh i'm using for testing, so i didnt create)

thanks so much!!

jason


 

ps.  I did notice that if i change the timeline to, say 200-400 and hit export, no animations were exported.  (skin babylon values still set to default 1-100).   I would have expected it to take the 1-100 values, but instead nada.

 

 

 

I honestly have no idea. Your issue was different than mine. It was sort of a brute-force approach finding a solution.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...