break; case "Pose": FbxBindPose pose = new FbxBindPose(this, e); obj = pose; bindMap.put(pose.id, pose);
public FbxBindPose(SceneLoader scene, FbxElement element) { super(scene, element); if(type.equals("BindPose")) { for(FbxElement e : element.children) { if(e.id.equals("PoseNode")) { long nodeId = 0; double[] transform = null; for(FbxElement e2 : e.children) { switch(e2.id) { case "Node": nodeId = (Long) e2.properties.get(0); break; case "Matrix": transform = (double[]) e2.properties.get(0); break; } } Matrix4f t = buildTransform(transform); t.scale(new Vector3f(scene.unitSize, scene.unitSize, scene.unitSize)); nodeTransforms.put(nodeId, t); } } } }
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); }
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); }
public FbxBindPose(SceneLoader scene, FbxElement element) { super(scene, element); if(type.equals("BindPose")) { for(FbxElement e : element.children) { if(e.id.equals("PoseNode")) { long nodeId = 0; double[] transform = null; for(FbxElement e2 : e.children) { switch(e2.id) { case "Node": nodeId = (Long) e2.properties.get(0); break; case "Matrix": transform = (double[]) e2.properties.get(0); break; } } Matrix4f t = buildTransform(transform); t.scale(new Vector3f(scene.unitSize, scene.unitSize, scene.unitSize)); nodeTransforms.put(nodeId, t); } } } }
break; case "Pose": FbxBindPose pose = new FbxBindPose(this, e); obj = pose; bindMap.put(pose.id, pose);