Using Offset Parent Matrix for games

What is the use of OPM in the game rigs, should i use it? Is it working properly? I’m asking because i saw that there is a problem about baking OPM values into actual transform matrix, so this breakes the character’s movement in game engines (maybe i’m doing something wrong?).

The major issue with OPM is that fbx has no idea about it - so if you export an fbx of a hierarchy that uses OPM, all the joints will be collapsed to world zero. At least this was the case in maya 2022.
Major shame as it is a great bit of functionality ( especially if you are used to rigging in 3dsMax - I miss the controller stack :sob: )
I also believe there are other bugs to do with rotation in general.

I have a growing library of scripts for dealing with OPM. Haven’t gotten too deep into exporting to Unreal (yet) but, at least for my workflow, I have my rig with all transforms baked into the OPM in bind pose, and a simple script that can transfer the translate and rotate values back and forth between OPM and local transforms. So it should be as simple as transferring those values back onto the local transform on export to the engine.

Now you’ve got me curious, cuz at least for Unreal, it definitely has the same concept as an OPM built into the transforms, so I would also want to see if it’s able to transfer (issues with FBX notwithstanding)

Hmm, so the work is still up to us for carrying OPM to outside.

Yes anything with OPM is on the user to deal with. Also if anyone uses FBX and the Time Editor then you are also out of luck if your rig is using OPM.

1 Like

Yes i wish i thought of that before building a rig based on OPM :frowning:

Actually i’ve noticed that, as FBX also says here; Screenshot_1
if you bake the animation, it bakes the OPM too. At least for game engines (i tested for unreal) this is a solution (just works for bones).

Shame, they updated it just enough to give that error message, but not to actually support it within the format itself…

1 Like

I don’t see the problem using offset parent matrix in game rigs
as long as you maintain a clear hierarchical separation between
the Maya control rig and the exported deformation rig.

you can use all the DCC bells and whistles you want on the control rig
but at the end of the day you export only the deformation rig,
as separate hierarchy of skinned joints, driven by the control rig via simple parent constraints.

2 Likes

Yes but I’m OCD and I like zero-ing out everything, including the export skeleton :rofl:

rig in 3DsMax then - a zeroed out transform stack is a joy I didn’t know I would miss until I started using maya :sob:

Make a new joint-skeletal skinned rig constrain by Origin rig , is good method.

1 Like

After couple years of screwing around with matrix nodes in maya, I decided to author the new rigs utilizing them instead of constraints for obviouse performance reasons.

Good news is I worked around the issue utilizing “decompose matrix” node as a bridge instead of direct “offsetParentMatrix” connections.

The rig seems to perform well and The other good side effect of it has been it’s Unreal/Houdini compatible back and fourth.

All the transformations and rigging logic and systems happen with general matrix nodes and the operations they offer, and the final one finally gets plugged into a “decompose matrix” at the end which drives the bakable/exportable skeleton.

Let me know if I could help out with any specifics, cheers