Skinning issue after importing to SFM

Started by Pipann, August 06, 2016, 10:02:18 AM

Previous topic - Next topic

Pipann

Hey guys, here I am again.

So I recently got a new PC rig and finished up reinstalling everything from scratch, including 3ds Max 2016 and WWMT. Was working on a model for a character and every so often I test her on SFM.

Now after I finished skinning, I ran into issues with her neck. I've never seen anything like it before. In 3ds Max, she's fine and all the bones work like intended.



But then I exported her, and get this as a result:





I've read from posts made in 2014 on steam that this issue happened before and they comcluded it lies somewhere with WWMT during export. Could I have forgotten something in the settings while installing?

Currently using the Wall Worm SDM exporter as exporter plugin, since Wall Worm Pro always gives me issues for some reason and the free version doesn't. I'll share more settings if requested.

wallworm

The common culprits are:


  • Some vertices have more than 3/4 bones weighted to a vertex
  • There are bones that get compiled away by studiomdl.exe*
  • You are using a version of 3ds Max prior to Max 2014
  • There are topology-dependent modifiers (like OpenSubdiv) that are on the model but turned off (and the modifier has a bug that still changes vertices under the hood when off)

*#2 happens sometimes. My best guess is that studiomdl.exe sometimes removes bones that are never animated in an optimization pass... and some of the weights get sent to the wrong bone or are skipped).

As usual, send me the scene and I will see if I can isolate the culprit.

What specific issues are you experiencing with WW Pro? I know that I use WW Pro for all compiles and have compiled hundreds of models in the last few months without incident. If there is an issue, I need to know about it or I cannot fix it.

Pipann

Hey, thanks for the quick reply. I fixed my own problem already, just to run into the next. :P

It turns out the head and neck bone weren't properly linked. Her weird neck is fixed now, but the bodygroups for her coat/dress are now rotated by 90 degrees.



Now I've seen this problem before, but never really understood why it happened or how to fix it aside from rotating the model in 3ds Max. But this is different since only part of the body is rotated.

wallworm

This probably means that the bodygroup models are not using the same hierarchy of bones as the root model.

This is important:

When using Bodygroups, make sure that none of the WWMT Helpers use the Rotated Origin, most should NOT use the Local Origin option, and make sure that each WWMT helper uses all the same bones. While you can turn on the rotated origin and local origin, you must really understand how those functions work and all the parts must remain consistent. But generally, for characters, they should all just be off.

Pipann

Thanks. I'll try what I can and let you know what happens next.

Pipann

Ok, from what I saw, it seems like WWMT exported bones that don't exist anymore?

I actually renamed them at some point, but somehow in the bodygroup it retained the old names, so now it has double the amount. Very strange. Some bones have also moved from their original positions so skinning is further warped.


(purple diamonds mark bones)

Should I redo the skinning completely? I wouldn't have a single clue how else to fix this. Remember, I don't have that much experience.

Pipann

Renaming the bones back to their original names unbroke the model. But look who's back?



This is so confusing! xD

wallworm

#7
I'm completely confused about everything going on here. You will probably need to explain the entire process of your exporting and compiling from A-Z. My intuition tells me that you are not using WWMT Helpers or you are making a change in one bodygroup and compiling just that bodygroup.... but if you recompile the model where some SMD/DMX have one set of bone names and another set was created separately, it can lead to the issue that the bones are not the same. Remember that if you change any bones (in naming or hierarchy) then you need to re-export every single SMD/DMX that the model is using in all of the different bodygroups--and compile all the bodygroups again before recompiling the main model again. If using a WWMT Helper for your setup, you can simply recompile via the WWMT export/compile button. If not using a WWMT helper, then you need to do it all manually.

EDIT: One hint is that Bodygroup WWMT can contain bones that are not in your skin. If you select a WWMT Helper, open the Modify tab and scroll to the bottom of the modify tab for the Models, Attachements & Bones rollout, you can see if there are bones assigned to the WWMT that might not be in the current skin modifier. Sometimes you can have bones in a setup that you don't want and this might be a place they are assigned and you might not know; also, in the WWMT Functions rollout, you can find other nodes in the Meshes list.

Pipann

Quote from: wallworm on August 06, 2016, 12:38:31 PM
I'm completely confused about everything going on here. You will probably need to explain the entire process of your exporting and compiling from A-Z. My intuition tells me that you are not using WWMT Helpers or you are making a change in one bodygroup and compiling just that bodygroup.... but if you recompile the model where some SMD/DMX have one set of bone names and another set was created separately, it can lead to the issue that the bones are not the same. Remember that if you change any bones (in naming or hierarchy) then you need to re-export every single SMD/DMX that the model is using in all of the different bodygroups--and compile all the bodygroups again before recompiling the main model again. If using a WWMT Helper for your setup, you can simply recompile via the WWMT export/compile button. If not using a WWMT helper, then you need to do it all manually.

Right here with ya... I have been using the WWMT helper. :/ I've been doing things the same way as I did with my last character model and from what you've shown me in the past, or at least as exact as I remember. Things went well up until I got across this. So I'm just as confused as you are. I'm having another friend look at it, but he only knows about 3ds Max and not wall worm. Explaining from A to Z is gonna be a while. I don't even half remember some of the things I did or tried.

Optionally I could just get rid of the bodygroup thing and add two models to the workshop, one with her dress and one with her labcoat. SFM accepts more than one model in a single submission, so it's definitely possible. It's not the ideal solution, I know, but if it fixes things, I'll gladly accept it.

Anyways...

Quote from: wallworm on August 06, 2016, 12:38:31 PMEDIT: One hint is that Bodygroup WWMT can contain bones that are not in your skin. If you select a WWMT Helper, open the Modify tab and scroll to the bottom of the modify tab for the Models, Attachements & Bones rollout, you can see if there are bones assigned to the WWMT that might not be in the current skin modifier. Sometimes you can have bones in a setup that you don't want and this might be a place they are assigned and you might not know; also, in the WWMT Functions rollout, you can find other nodes in the Meshes list.

OK, selected the helper and went to modify tab. I got the following error popup:

"-- Type error: Call needs function or class, got: undefined"

Do you want me to just send you the file then?

wallworm

Yes, send the file, but make sure to first hit F11 and copy the entire error message and paste here.

Also, what version of WW Pro do you have installed?

Pipann

QuoteWelcome to MAXScript.

-- Error occurred in wwmt loop
--  Frame:
--   obj: undefined
--   tempWWMT: undefined
--   wwmt: $wwmt_coat_001
--   called in sanitize()
--  Frame:
--   tmpArray: #()
--   called in updateItemsList()
--  Frame:
--   called in wwmts.set()
--  Frame:
--   val: $wwmt_coat_001
>> MAXScript Scripted Plugin Handler Exception:
-- Type error: Call needs function or class, got: undefined <<
-- Error occurred in wwmt loop
--  Frame:
--   obj: undefined
--   tempWWMT: undefined
--   wwmt: $wwmt_coat_001
--   called in sanitize()
--  Frame:
--   tmpArray: #()
--   called in paramRollout.open()
--  Frame:
>> MAXScript Rollout Handler Exception:
-- Type error: Call needs function or class, got: undefined <<
-- Error occurred in wwmt loop
--  Frame:
--   obj: undefined
--   tempWWMT: undefined
--   wwmt: $wwmt_coat_001
--   called in sanitize()
--  Frame:
--   tmpArray: #()
--   called in paramRollout.open()
--  Frame:
>> MAXScript Rollout Handler Exception:
-- Type error: Call needs function or class, got: undefined <<

I don't have Pro installed at the moment. I thought I did, but seems like I downloaded the free version by accident instead. It's version 2.852 (free) at this moment. Right now kinda afraid to download Pro again. I don't wanna accidentally mess up my current settings and ending up having to set everything up again.

What was your email address again? :)

Pipann

Ok we solved it.

Turns out the head bone and head mesh were using the same name. "head" D'oh!

Changing the name for the head's mesh fixed her neck.

SMF spam blocked by CleanTalk