In the last chapter, we saw how to add lights to the 3D scene. In this chapter, we will see how a moving light works.
You can add as many lights as you need. To animate the light sources, you can use predefined animations from javafx.animation package like TranslateTransition, RotateTransition etc or custom animations can be applied. In this example, I will write a custom rotation animation to get the following effect.
Moving Light Animation
We can create the rotation effect for the light source using rotateProperty. The important thing here is to specify the axis of rotation. We have the freedom to rotate the object in 360 degrees. In this example, I am rotating light source about X Axis.
AnimationTimer will be called during each frame rendered. We can update the transform properties of objects to create smooth animation. In this example, I have increased rotation angle of light source by 1 degree during each frame.
You can speedup the animation by increasing the value ‘1’ to a higher one. Animation speed can be reduced by reducing the value.
private Node[] prepareLightSource() { //Create point light pointLight.setColor(Color.RED); pointLight.getTransforms().add(new Translate(0, -50, 100)); //Set axis of rotation pointLight.setRotationAxis(Rotate.X_AXIS); //Create a small sphere to locate the light source (Light source is invisible) Sphere sphere = new Sphere(2); //Attach sphere transforms to point light. So they move/rotate together sphere.getTransforms().setAll(pointLight.getTransforms()); sphere.rotateProperty().bind(pointLight.rotateProperty()); sphere.rotationAxisProperty().bind(pointLight.rotationAxisProperty()); //Return lights return new Node[]{pointLight, sphere}; } @Override public void start(Stage primaryStage) { Box box = prepareBox(); SmartGroup group = new SmartGroup(); group.getChildren().add(box); //Add light and sphere group.getChildren().addAll(prepareLightSource()); Camera camera = new PerspectiveCamera(true); camera.setNearClip(1); camera.setFarClip(1000); camera.translateZProperty().set(-200); Scene scene = new Scene(group, WIDTH, HEIGHT); scene.setFill(Color.SILVER); scene.setCamera(camera); group.translateXProperty().set(0); group.translateYProperty().set(0); group.translateZProperty().set(0); initMouseControl(group, scene, primaryStage); primaryStage.setTitle("Genuine Coder"); primaryStage.setScene(scene); primaryStage.show(); //Create animation timer AnimationTimer timer = new AnimationTimer() { @Override public void handle(long now) { //Increase rotation angle by 1 degree during each frame. pointLight.setRotate(pointLight.getRotate() + 1); } }; //Start animation automatically during startup timer.start(); }
… [Trackback]
[…] Here you can find 81937 additional Info to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Info to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Information to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Here you will find 16872 more Info to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Information to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Find More on that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Read More here to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Find More Info here to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Here you will find 79519 more Information to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Read More Info here on that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Find More to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Read More Information here on that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Here you can find 89793 more Information to that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Info on that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]
… [Trackback]
[…] Read More here on that Topic: genuinecoder.com/javafx-3d-moving-light-animation/ […]