/** * Remove any bones without vertices from the boneList, so that every hull * shape will contain at least 1 vertex. */ private void filterBoneList(SkeletonControl skeletonControl) { Mesh[] targets = skeletonControl.getTargets(); Skeleton skel = skeletonControl.getSkeleton(); for (int boneI = 0; boneI < skel.getBoneCount(); boneI++) { String boneName = skel.getBone(boneI).getName(); if (boneList.contains(boneName)) { boolean hasVertices = RagdollUtils.hasVertices(boneI, targets, weightThreshold); if (!hasVertices) { boneList.remove(boneName); } } } }
@Override public void visit(Spatial spatial) { SkeletonControl control = spatial.getControl(SkeletonControl.class); if (control != null) { Armature armature = skeletonArmatureMap.get(control.getSkeleton()); SkinningControl skinningControl = new SkinningControl(armature); Map<String, List<Spatial>> attachedSpatials = new HashMap<>(); for (int i = 0; i < control.getSkeleton().getBoneCount(); i++) { Bone b = control.getSkeleton().getBone(i); Node n = control.getAttachmentsNode(b.getName()); n.removeFromParent(); if (!n.getChildren().isEmpty()) { attachedSpatials.put(b.getName(), n.getChildren()); } } spatial.removeControl(control); spatial.addControl(skinningControl); for (String name : attachedSpatials.keySet()) { List<Spatial> spatials = attachedSpatials.get(name); for (Spatial child : spatials) { skinningControl.getAttachmentsNode(name).attachChild(child); } } } }
/** * Remove any bones without vertices from the boneList, so that every hull * shape will contain at least 1 vertex. */ private void filterBoneList(SkeletonControl skeletonControl) { Mesh[] targets = skeletonControl.getTargets(); Skeleton skel = skeletonControl.getSkeleton(); for (int boneI = 0; boneI < skel.getBoneCount(); boneI++) { String boneName = skel.getBone(boneI).getName(); if (boneList.contains(boneName)) { boolean hasVertices = RagdollUtils.hasVertices(boneI, targets, weightThreshold); if (!hasVertices) { boneList.remove(boneName); } } } }
skeleton = sc.getSkeleton(); for (int boneI = 0; boneI < skeleton.getBoneCount(); boneI++) { String boneName = skeleton.getBone(boneI).getName();
skeleton = sc.getSkeleton(); for (int boneI = 0; boneI < skeleton.getBoneCount(); boneI++) { String boneName = skeleton.getBone(boneI).getName();
public SkeletonDebugger addSkeleton(SkeletonControl skeletonControl, boolean guessBonesOrientation) { Skeleton skeleton = skeletonControl.getSkeleton(); Spatial forSpatial = skeletonControl.getSpatial(); return addSkeleton(skeleton, forSpatial, guessBonesOrientation); }
/** * Remove any bones without vertices from the boneList, so that every hull * shape will contain at least 1 vertex. */ private void filterBoneList(SkeletonControl skeletonControl) { Mesh[] targets = skeletonControl.getTargets(); Skeleton skel = skeletonControl.getSkeleton(); for (int boneI = 0; boneI < skel.getBoneCount(); boneI++) { String boneName = skel.getBone(boneI).getName(); if (boneList.contains(boneName)) { boolean hasVertices = RagdollUtils.hasVertices(boneI, targets, weightThreshold); if (!hasVertices) { boneList.remove(boneName); } } } }
skinData.bones = bones; skinData.skeletonControl = new SkeletonControl(skeleton); skinData.animControl = new AnimControl(skinData.skeletonControl.getSkeleton()); addToCache("skins", index, skinData, nodes.size()); skinnedSpatials.put(skinData, new ArrayList<Spatial>());
Skeleton skeleton = skin.skeletonControl.getSkeleton(); for (Bone bone : skin.bones) { if (!usedBones.contains(bone) && !equalBindAndLocalTransforms(bone)) {
skeleton = sc.getSkeleton(); for (int boneI = 0; boneI < skeleton.getBoneCount(); boneI++) { String boneName = skeleton.getBone(boneI).getName();