public Transform getBindInverseTransform() { Transform t = new Transform(); t.setTranslation(bindPos); t.setRotation(bindRot); if (bindScale != null) { t.setScale(bindScale); } return t.invert(); }
@Override public void applyBindPose(Transform localTransform, Matrix4f inverseModelBindMatrix, Joint parent) { localTransform.fromTransformMatrix(inverseModelBindMatrix.invert()); if (parent != null) { localTransform.combineWithParent(parent.getModelTransform().invert()); } }
private static void relocateSpatial(Spatial spatial, Transform originalWorldTransform, Transform newWorldTransform) { Transform localTransform = new Transform(); localTransform.set(originalWorldTransform); localTransform.combineWithParent(newWorldTransform.invert()); spatial.setLocalTransform(localTransform); }
jmeLocalBindPose.combineWithParent(parentBindPose.invert());
attachNode.setLocalRotation(modelRot); attachNode.setLocalScale(modelScale); attachNode.getLocalTransform().combineWithParent(attachNode.getParent().getWorldTransform().invert());
public Transform getBindInverseTransform() { Transform t = new Transform(); t.setTranslation(bindPos); t.setRotation(bindRot); if (bindScale != null) { t.setScale(bindScale); } return t.invert(); }
private static void relocateSpatial(Spatial spatial, Transform originalWorldTransform, Transform newWorldTransform) { Transform localTransform = new Transform(); localTransform.set(originalWorldTransform); localTransform.combineWithParent(newWorldTransform.invert()); spatial.setLocalTransform(localTransform); }
private void setupControls() { for (SkinData skinData : skinnedSpatials.keySet()) { List<Spatial> spatials = skinnedSpatials.get(skinData); Spatial spatial = skinData.parent; if (spatials.isEmpty()) { continue; } if (spatials.size() >= 1) { spatial = findCommonAncestor(spatials); } if (skinData.parent != null && spatial != skinData.parent) { skinData.rootBoneTransformOffset = spatial.getWorldTransform().invert(); skinData.rootBoneTransformOffset.combineWithParent(skinData.parent.getWorldTransform()); } if (skinData.animControl != null && skinData.animControl.getSpatial() == null) { spatial.addControl(skinData.animControl); } spatial.addControl(skinData.skeletonControl); } for (int i = 0; i < nodes.size(); i++) { BoneWrapper bw = fetchFromCache("nodes", i, BoneWrapper.class); if (bw == null || bw.attachedSpatial == null) { continue; } SkinData skinData = fetchFromCache("skins", bw.skinIndex, SkinData.class); skinData.skeletonControl.getAttachmentsNode(bw.bone.getName()).attachChild(bw.attachedSpatial); } }
jmeLocalBindPose.combineWithParent(parentBindPose.invert());