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); }
AnimControl control = new AnimControl(); HashMap<String, Animation> anims = new HashMap<String, Animation>(animations.size()); for (int i = 0; i < animations.size(); ++i) {
AnimControl control = new AnimControl(skeleton); HashMap<String, Animation> anims = new HashMap<String, Animation>(animations.size()); for (int i = 0; i < animations.size(); ++i) {
animControl = new AnimControl(null); jmeSpatial.addControl(animControl);
/** * No ClassCastException when clear() a Cinematic with AnimationEvent */ @Test public void clearAnimationEvent() { Cinematic sut = new Cinematic(); Node model = new Node("model"); AnimControl ac = new AnimControl(); ac.addAnim(new Animation("animName", 1.0f)); model.addControl(ac); sut.enqueueCinematicEvent(new AnimationEvent(model, "animName")); sut.initialize(null, null); sut.clear(); } }
jmeSpatial.addControl(new AnimControl(fbxNode.skeleton)); jmeSpatial.addControl(new SkeletonControl(fbxNode.skeleton));
AnimControl control = new AnimControl(); HashMap<String, Animation> animations = new HashMap<String, Animation>(); animations.put("anim", spatialAnimation);
AnimControl control = new AnimControl(); control.addAnim(animationFactory.buildAnimation());
factory.addTimeScale(20, new Vector3f(1, 1, 1)); factory.addTimeRotationAngles(20, 0, 4 * FastMath.TWO_PI, 0); AnimControl control = new AnimControl(); control.addAnim(factory.buildAnimation()); teapot.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); }
private AnimControl createAnimControl(Node parent, DAENode animationsNode, List<DAENode> geomElementList, Skeleton skeleton) { Mesh[] meshes = new Mesh[geomElementList.size()]; int index = 0; for (DAENode geomNode : geomElementList) { meshes[index] = geomNode.getParsedData(Mesh.class); index++; } Animation[] animations = createAnimations(animationsNode, skeleton); AnimControl animation = new AnimControl(skeleton); animation.setAnimations(new HashMap<String, Animation>()); for (Animation Animation : animations) { animation.addAnim(Animation); } animation.setEnabled(false); return animation; }
AnimControl ctrl = new AnimControl(animData.skeleton); ctrl.setAnimations(anims); model.addControl(ctrl);
AnimControl ctrl = new AnimControl(animData.skeleton); ctrl.setAnimations(anims); model.addControl(ctrl);
AnimControl ctrl = new AnimControl(animData.skeleton); ctrl.setAnimations(anims); model.addControl(ctrl);
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>());
animControl = new AnimControl();
animControl = new AnimControl(null); jmeSpatial.addControl(animControl);
jmeSpatial.addControl(new AnimControl(fbxNode.skeleton)); jmeSpatial.addControl(new SkeletonControl(fbxNode.skeleton));
protected void moveViaAnimation(Vector3f newPosition, Quaternion newOrientation, Vector3f newScale, float duration) { final String moveAnimName = "BasicGoodyMoveFactory"; AnimationFactory aniFactory = new AnimationFactory(duration, moveAnimName); // First add starting position/rotation/scale to timeline at index 0 aniFactory.addKeyFrameTranslation(0, myPosition); aniFactory.addKeyFrameRotation(0, getTotalRotation(getCurrentAttachedGeomBinding())); aniFactory.addKeyFrameScale(0, myScaleVec); // Now add new position/rotation/scale at duration: setNewPositionAndRotationIfNonNull(newPosition, newOrientation); if (newScale != null) { myScaleVec = newScale; } aniFactory.addTimeTranslation(duration, myPosition); aniFactory.addTimeRotation(duration, getTotalRotation(getCurrentAttachedGeomBinding())); aniFactory.addTimeScale(duration, myScaleVec); // Finally the Animation is generated and linked to the geometry via an AnimationControl Animation moveAnimation = aniFactory.buildAnimation(); AnimControl goodyControl = new AnimControl(); // Should this be retained for reuse? goodyControl.addAnim(moveAnimation); getCurrentAttachedGeometry().addControl(goodyControl); AnimChannel moveChannel = goodyControl.createChannel(); moveChannel.setAnim(moveAnimName, 0f); // Oddly, it seems this needs to be set *after* starting the animation with setAnim: moveChannel.setLoopMode(LoopMode.DontLoop); }
boneAnim.setTracks(new BoneTrack[] {boneTrack}); final AnimControl anim = new AnimControl(skeleton); anim.setAnimations(new HashMap<String, Animation>()); anim.addAnim(boneAnim);