public static Skeleton createSkeleton(FbxNode skeletonHolderNode) { if (skeletonHolderNode instanceof FbxLimbNode) { throw new UnsupportedOperationException("Limb nodes cannot be skeleton holders"); } List<Bone> bones = new ArrayList<Bone>(); for (FbxNode child : skeletonHolderNode.getChildren()) { if (child instanceof FbxLimbNode) { createBones(skeletonHolderNode, (FbxLimbNode) child, bones); } } return new Skeleton(bones.toArray(new Bone[0])); }
private void applySkinning() { for(FbxBindPose pose : bindMap.values()) pose.fillBindTransforms(); if(limbMap == null) return; List<Bone> bones = new ArrayList<>(); for(FbxNode limb : limbMap.values()) { if(limb.bone != null) { bones.add(limb.bone); limb.buildBindPoseBoneTransform(); } } skeleton = new Skeleton(bones.toArray(new Bone[bones.size()])); skeleton.setBindingPose(); for(FbxNode limb : limbMap.values()) limb.setSkeleton(skeleton); for(FbxSkin skin : skinMap.values()) skin.generateSkinning(); // Attach controls animControl = new AnimControl(skeleton); sceneNode.addControl(animControl); SkeletonControl control = new SkeletonControl(skeleton); sceneNode.addControl(control); }
skeleton = new Skeleton(bones); blenderContext.setSkeleton(armatureObject.getOldMemoryAddress(), skeleton); } else {
bone.setBindTransforms(Vector3f.ZERO, Quaternion.IDENTITY, Vector3f.UNIT_XYZ); bone.setUserControl(true); skeleton = new Skeleton(new Bone[]{ bone });
public static Skeleton createSkeleton(FbxNode skeletonHolderNode) { if (skeletonHolderNode instanceof FbxLimbNode) { throw new UnsupportedOperationException("Limb nodes cannot be skeleton holders"); } List<Bone> bones = new ArrayList<Bone>(); for (FbxNode child : skeletonHolderNode.getChildren()) { if (child instanceof FbxLimbNode) { createBones(skeletonHolderNode, (FbxLimbNode) child, bones); } } return new Skeleton(bones.toArray(new Bone[0])); }
/** * Internal use only. */ public Control cloneForSpatial(Spatial spatial) { try { AnimControl clone = (AnimControl) super.clone(); clone.spatial = spatial; clone.channels = new ArrayList<AnimChannel>(); clone.listeners = new ArrayList<AnimEventListener>(); if (skeleton != null) { clone.skeleton = new Skeleton(skeleton); } // animationMap is cloned, but only ClonableTracks will be cloned as they need a reference to a cloned spatial for (Entry<String, Animation> animEntry : animationMap.entrySet()) { clone.animationMap.put(animEntry.getKey(), animEntry.getValue().cloneForSpatial(spatial)); } return clone; } catch (CloneNotSupportedException ex) { throw new AssertionError(); } }
/** * Internal use only. */ @Override public Control cloneForSpatial(Spatial spatial) { try { AnimControl clone = (AnimControl) super.clone(); clone.spatial = spatial; clone.channels = new ArrayList<AnimChannel>(); clone.listeners = new ArrayList<AnimEventListener>(); if (skeleton != null) { clone.skeleton = new Skeleton(skeleton); } // animationMap is cloned, but only ClonableTracks will be cloned as they need a reference to a cloned spatial for (Entry<String, Animation> animEntry : animationMap.entrySet()) { clone.animationMap.put(animEntry.getKey(), animEntry.getValue().cloneForSpatial(spatial)); } return clone; } catch (CloneNotSupportedException ex) { throw new AssertionError(); } }
skeleton = new Skeleton(bones); } else if (qName.equals("animation")) { animations.add(animation);
skeleton = new Skeleton(bones); } else if (qName.equals("animation")) { animations.add(animation);
skeleton = new Skeleton(bones); } else if (qName.equals("animation")) { animations.add(animation);
private void applySkinning() { for(FbxBindPose pose : bindMap.values()) pose.fillBindTransforms(); if(limbMap == null) return; List<Bone> bones = new ArrayList<>(); for(FbxNode limb : limbMap.values()) { if(limb.bone != null) { bones.add(limb.bone); limb.buildBindPoseBoneTransform(); } } skeleton = new Skeleton(bones.toArray(new Bone[bones.size()])); skeleton.setBindingPose(); for(FbxNode limb : limbMap.values()) limb.setSkeleton(skeleton); for(FbxSkin skin : skinMap.values()) skin.generateSkinning(); // Attach controls animControl = new AnimControl(skeleton); sceneNode.addControl(animControl); SkeletonControl control = new SkeletonControl(skeleton); sceneNode.addControl(control); }
Skeleton skeleton = new Skeleton(bones);
this.skeleton = new Skeleton(bones.values().toArray(new Bone[0])); skeleton.setBindingPose(); for(long limbId : bones.keySet()) {
@Override public void write(JmeExporter e) throws IOException { super.write(e); OutputCapsule c = e.getCapsule(this); c.write(1, "version", 1); SavableUtil.write(c, pmdModel, "pmdModel"); c.write(skeleton, "skeleton", new Skeleton()); c.writeStringSavableMap(skinMap, "skinMap", new HashMap<String, Skin>()); // c.write(skinBoneWeightArray, "skinBoneWeightArray", null); // c.write(skinBoneArray, "skinBoneArray", null); c.write(edgeSize, "edgeSize", 1.0f); c.write(pmdGeometryArray.length, "pmdGeometryArrayLength",0); c.write(skinTargets.length, "skinTargetsLength",0); if (skinTargets != null && skinTargets.length > 0) { PMDSkinMesh mesh = skinTargets[0]; c.write(mesh.getSkinvb2(),"skinvb",null); // c.write(mesh.getSkinnb2(),"skinnb",null); c.write(mesh.getBuffer(Type.TexCoord),"skintb",null); } c.write(skinArray, "skinArray", null); // SavableUtil.write(c, skinPosArrayOrig,"skinPosArray"); // SavableUtil.write(c, skinNormalArrayOrig, "skinNormalArray"); // c.write(skinBoneArray, "skinBoneArray", null); // c.write(skinBoneWeightArray, "skinBoneWeightArray", null); }
PMDNode newPMDNode = (PMDNode)super.clone(); newPMDNode.skeleton = new Skeleton(skeleton); for(int i=0;i<skeleton.getBoneCount();i++) { Bone newBone = newPMDNode.skeleton.getBone(i);
} else { clone.skeleton = new Skeleton(skeleton);
Skeleton skeleton = new Skeleton(boneArray); PMDMesh meshes[] = meshList.toArray(new PMDMesh[meshList.size()]);
Skeleton skeleton = new Skeleton(jmeBones); skeleton.setBindingPose();
bone.setBindTransforms(new Vector3f(0, 0, 0), new Quaternion(Quaternion.IDENTITY), new Vector3f(Vector3f.UNIT_XYZ)); Skeleton skeleton = new Skeleton(new Bone[] {bone}); skeleton.setBindingPose(); skeleton.updateWorldVectors();