Home Website Youtube GitHub

EPIC_Spine module and the EPIC_Arm module joint orient issues

NOTE: Original post from @Taylor_Wright

I’m having a lot of weird joint orient issues, both with the EPIC_Spine module and the EPIC_Arm module.

For the spine module, the spine joints never directly orient towards their children. There is always an offset in the child’s TranslateZ.

For the arm module, the lower arm, lowerarm twist, and hand all have erroneous translations and joint orients.

The lowerarm twist is particularly egregious:

I can attach my guide file if needed, but I can’t see anything wrong with it.

Hello @Taylor_Wright

I am checking with the metahuman template. Not sure if I understand the problem.
Are you asking to point the joint to the next one?
For example in this image is the X axis

some sample data showing the error and the correct position will help. The image attached looks good to me.

the forearm roll will twist a little to interpolate the hand and elbow orientation
image

this is more visible with more roll joints
image

Hey Miquel,
Sorry, I could only post one image but Chris has now opened up my permission so I will post more.

Yes, I would expect parents joints to orient towards their children. I have never had this issue in the past with other Spine module (usually we use the spine_ik_02 module).

image

Each child joint has an offset in the .tz. It’s not what I would expect to happen.

For the arms, this is all at rest pose:

image

The lowerarm and the hand have the same orientation. However, the lowerarm twist is cocked at 45 degrees off the axis. This is definitely not what I would expect and I haven’t seen this with the other arm modules. Also, the lowerarm and hand itself have odd joint orients:
image

I would expect only a rotation of the Z, with none on the X. Ideally there would only be one axis of rotation along the arm plane.

2 Likes

Thanks for the info @Taylor_Wright I will check this more carefully ASAP

@Taylor_Wright EDIT: I think, I have found the source for the translation values in the arm
is related to the way the roll is calculated using the rollspline solver and the little value that we have in the joint orient (x axis in your example)
image

EDIT: the values were always there in other components using the spline roll solver


However, the position is the correct

For example freeTangents arm and legs use the maya IK spline, this will not have that value

I will keep checking this to see if I can get the value only in one axis

Thank you, I appreciate it!

Hello @Taylor_Wright

I have fixed the offset in the roll bones.

still working in the other stuff

2 Likes

Awesome! Thank you, this will be a huge help.

@Taylor_Wright I have opened a ticket for this and I will start to commit the changes soon

@Taylor_Wright about the spine joint orientation I think is is correct. Or at less is what I expect from the component design and implementation
Here is an image comparing Epic spine, Epic Cartoon spine, and S Shape spine

The joint orientation is based in the curve tangent that drives it, not like the spline roll solver that aims to the next joint.
the spine_ik_02 is built always straight so maybe you didn’t note it?

Anyway I will review it to see if I can aim at less the last joint of the chest

added a little change to get a less the last joint of the spine section, oriented to the chest joint (Note that the chest joint is named spine_05 or similar)

This is awesome, thank you Miquel!

1 Like

Hello Miquel !
I’m have this issue even in the last version of mgear from github (4.0.19) and Maya 2023.
I was wondering where can I get your fix or how can I have the EPIC_Spine Cartoon with no translation in lateral side.


It’s really important for me to have a good orientation of the spine.
Also, I’m having little scale value when i’m moving ik controlers, even if the max and min stretch are set to 1.
So I made a script to disconnect all the scale inputs of the joints to avoid weird situations, but I would like to know if there is any consequence to this (except not having stretch and squash that I won’t use).

Thank you in advance and looking forward to know a solution about joint orients ! :slight_smile:

Maybe i’ve found a fix :
Contraint select two “_scl_ref” and apply a aim constraint with those parameters :
image


So now, orientations on the bones are good. But it’s tricky and may broke or slow down the rig, I guess, so I hope that it won’t create weird behaviors…
Here is the script I will use to orient the joints :

sel = cmds.ls("*scl*")
lObjList = []
for obj in sel:
	if "spine" in obj.lower() and "constraint" not in obj.lower():
		lObjList.append(obj)
		print(obj)
lObjList.sort(reverse=True)
for i in range(len(lObjList) - 1):
	cmds.aimConstraint(lObjList[i], lObjList[i + 1], aimVector=[0, 1, 0], upVector=[1, 0, 0],
					   worldUpVector=[0, 0, -1])