public Joint readNodeAsBone(int nodeIndex, int jointIndex, int skinIndex, Matrix4f inverseModelBindMatrix) throws IOException { JointWrapper jointWrapper = fetchFromCache("nodes", nodeIndex, JointWrapper.class); if (jointWrapper != null) { return jointWrapper.joint; } JsonObject nodeData = nodes.get(nodeIndex).getAsJsonObject(); String name = getAsString(nodeData, "name"); if (name == null) { name = "Joint_" + nodeIndex; } Joint joint = new Joint(name); Transform boneTransforms = null; boneTransforms = readTransforms(nodeData); joint.setLocalTransform(boneTransforms); joint.setInverseModelBindMatrix(inverseModelBindMatrix); addToCache("nodes", nodeIndex, new JointWrapper(joint, jointIndex, skinIndex), nodes.size()); return joint; }