Hello @Craig_Portnoy
You can simply offset the root transform/groupe node from the outliner and put it into the new possition. The joint will follow along. Now to avoid your current skinned asset having the offset created by that manipulation you can run the following you your selected geometries…
# maya imports
from maya import cmds
# gets skin cluster nodes from you selection
skin_nodes = cmds.ls(selection=True, type="skinCluster")
if not skin_nodes:
cur_sel = cmds.ls(selection=True, type="transform")
for sel in cur_sel:
try:
skin_nodes.append([x for x in cmds.ls(cmds.listHistory(sel), exactType="skinCluster")][0])
except IndexError:
continue
# reste skin cluster nodes
for skin in skin_nodes:
plugs = cmds.listConnections("{}.matrix".format(skin), source=True, destination=False, plugs=False, connections=True)
for idx in range(0, len(plugs), 2):
index = plugs[idx].split("[")[-1].split("]")[0]
if not cmds.getAttr("{}.bindPreMatrix[{}]".format(skin, index)):
continue
wi_matrix = cmds.getAttr("{}.worldInverseMatrix[0]".format(plugs[idx+1]))
cmds.setAttr("{}.bindPreMatrix[{}]".format(skin, index), wi_matrix, type="matrix")
This is roughly made…