Community
3ds Max Animation and Rigging
Welcome to Autodesk’s 3ds Max Forums. Share your knowledge, ask questions, and explore popular 3ds Max animation topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

"Warning: Non-Orthogonal Matrix Support" message appears when exporting CAT rig from 3ds Max

4 REPLIES 4
Reply
Message 1 of 5
harriet8GAP7
434 Views, 4 Replies

"Warning: Non-Orthogonal Matrix Support" message appears when exporting CAT rig from 3ds Max

Hi! I have a problem with the "Warning: Non-Orthogonal Matrix Support" message appearing when exporting a CAT rig from 3ds Max to .fbx. I understand that this is because I have CAT Bones that have been non-uniformly scaled. I have googled the crap out of this and come across many possible solutions that didn't help me, but the most helpful has been https://knowledge.autodesk.com/support/3ds-max/troubleshooting/caas/sfdcarticles/sfdcarticles/Warnin... . From that support page I have downloaded the script Fix_CAT_BoneScale.ms and have used it as directed and have managed to successfully reduce the number of non-uniformly scaled bones down from ten bones to only four. But four bones are still giving me errors - two neck bones, one spine bone and the head bone. I have tried, as step 6 in the support document suggests, to run the script on each bone within the rig from the highest bone within the hierarchy, but it still doesn't fix those four bones. Strangely, the spine bone and the head both actually have scales of 100, 100, 100 but are throwing up errors anyway. As for the two neck bones, they do have non-uniform scales such as 100, 99.996, 100.004, and if I try to manually enter a scale of 100, it just jumps back to the previous value. Screenshots and max file are attached.

4 REPLIES 4
Message 2 of 5
leeminardi
in reply to: harriet8GAP7

First off, I do not have a fix.  I did do a little investigation work.  I wrote two scripts.  The first I call transform_checker.

m = $.transform
x = m.row1
y = m.row2
z = m.row3
p = m.pos
format "\nlenghts x = %,  y = %,  z = %" (length x) (length y) (length z)
format "\nangles xy = %,  yz = %,  zx = %" (acos (dot x y)) (acos (dot y z)) (acos (dot z x))

It outputs the length for each axis of the selected object and the angles between principal axes.  For Cat_Neck001 it looks like this:

lenghts x = 1.0,  y = 1.0,  z = 1.0OK

angles xy = 89.998,  yz = 89.9961,  zx = 89.9995OK

This leads me to believe that the problem is less a scaling problem and more that the primary axes are not perpendicular.  The precision of max is at the most 7 significant digits.   After some analysis I've come to the conclusion that about 6 are carried in an object's matrix (e.g., zx = 89.9995).

I wrote the following script to be a "matrix fixer".

m = $.transform
x = m.row1
y = m.row2
z = m.row3
p = m.pos
xn = normalize(x)
yn = normalize(cross z x)
zn = normalize(cross x yn)
mnew = (matrix3 xn yn zn p)
format "\nOld matrix = %" m
format "\nNew matrix = %" mnew
format "\nangles new matrix xy = %,  yz = %,  zx = %" (acos (dot xn yn)) (acos (dot yn zn)) (acos (dot zn xn))
$.transform = mnew

 Although the new matrix mnew is an orthogonal matrix with principal angles of 90°, I could not determine how to get Cat_Neck001 to accept the new values.

Interestingly, I create a box with the default orthogonal matrix and used a Substitute modifier to replace the Neck object.  In doing so the box took on the non-orthogonal qualities of the Neck object. The chain of bones seems to lock the matrix. 

I then totally unlinked Neck from the bone chain but still could not edit its transform.   

lee.minardi
Message 3 of 5
harriet8GAP7
in reply to: leeminardi

Thank you for your investigating, I really appreciate it, and I thank you on behalf of my daughter who made the cat. That is interesting that the rotations of those neck bones are also non-uniform. It sounds like no script is going to be able to fix them, however my daughter was able to send the max file to her lecturer who fixed the rig using XForm, and it is now able to be exported to .fbx and imported to Unity. However she lost her animation work and is now redoing that.

Message 4 of 5
domo.spaji
in reply to: harriet8GAP7

She shouldn't lost her animation.

That spine bones aren't animatable by default, more precisely, by default dont have PRS controller and can't have "bad keys"

Can inherit some bad transforms from hub parent though (pelvis and ribcage)

 

In Setup mode neither bone have PRS controller...

That's why you cant change existing values

Position and rotation are always 0 and scale 100 (well, should be)

Message 5 of 5
domo.spaji
in reply to: domo.spaji

That all is for default mode, in non default mode all values can be changed "normally"

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report