Programmation Java: ajouter, animer et éclairer des objets en 3D

Créer un monde virtuel en 3D est plus facile que jamais dans JavaFX. Dans cet exemple, vous apprendrez à ajouter une sphère à votre programme JavaFX, l'animer, et d'ajouter une source de lumière à elle.

Sommaire

Première étape: Ajouter une sphère

Tout d'abord, ajouter une sphère, représenté par le Sphère classe. La Sphère constructeur accepte un seul paramètre, qui indique le rayon de la sphère. Par exemple, ces lignes de créer une sphère dont le rayon est de 100, et ensuite traduit pour le déplacer au large de la pointe de votre monde virtuel de centre:

Sphère Sphère = new Sphere(100)-sphere.setTranslateX(-180)-sphere.setTranslateY(-100)-sphere.setTranslateZ(100)-root.getChildren().add(sphere)-

Plutôt que d'appliquer le même matériau de Phong bleu pour la sphère, vous pouvez faire quelque chose de plus intéressant: appliquer un matériau Phong construit à partir d'une image d'une projection cylindrique de la terre en utilisant ce code:

Image earthImage = new Image ("file: earth.jpg") - PhongMaterial earthPhong = new PhongMaterial () - earthPhong.setDiffuseMap (earthImage) -sphere.setMaterial (earthPhong) - 



Cette figure montre la sphère résultant.

Une sphère d'une saillie cylindrique de la terre appliqué en tant que matériau de Phong.
Une sphère d'une saillie cylindrique de la terre appliqué en tant que matériau de Phong.

Vous pouvez envelopper toute image autour d'une sphère (ou tout autre objet en 3D, d'ailleurs) en utilisant cette technique. Vous pouvez également obtenir l'image de ce programme à partir de Wikipedia. Il suffit de chercher Projection Behrmann puis télécharger le fichier. (Utiliser Windows Paint pour recadrer les bords de l'image un peu parce que l'image est disponible sur Wikipedia a une petite bordure autour des bords.)

Étape deux: Animer les objets

Ouf! Votre monde virtuel en 3D a maintenant un objet: une sphère qui ressemble à la terre. Vous pouvez également ajouter d'autres objets à ce moment.

Dans cette étape, ajouter une animation à tous les objets pour les faire tourner. Chaque objet devient simple RotationTransition animation. Tout d'abord, la sphère:

RotateTransition rt4 = new RotateTransition()-rt4.setNode(sphere)-rt4.setDuration(Duration.millis(9000))-rt4.setAxis(Rotate.Y_AXIS)-rt4.setByAngle(360)-rt4.setCycleCount(Animation.INDEFINITE)-rt4.setInterpolator(Interpolator.LINEAR)-rt4.play()-

Après le jouer méthode est appelée, la sphère commence à tourner, faire un tour complet autour de son axe z toutes les trois secondes.

La sphère tourne autour de l'axe des y, créant l'impression que le monde est renouvelable. Pour la sphère, la vitesse est réglée à une révolution toutes les 10 secondes.

Étape trois: Ajouter une source de lumière

La dernière étape dans cette incursion dans le monde de la programmation 3D est d'ajouter une source de lumière. La source de lumière va changer le look de la scène, comme indiqué ici.

Pour ajouter la source de lumière, utiliser le code suivant:

Votre monde en 3D avec une source de lumière.
Votre monde en 3D avec une source de lumière.

Lumière PointLight = new PointLight(Color.WHITE)-light.setTranslateX(-1000)-light.setTranslateY(100)-light.setTranslateZ(-1000)-root.getChildren().add(light)-

La PointLight classe définit une source de lumière qui provient d'un point spécifique de la scène et projette de la lumière de la couleur donnée (dans ce cas, le bon vieux blanc). Pour créer l'effet d'éclairage, de déplacer la lumière en traduisant ses coordonnées 1000 à la gauche, 100 vers le bas, et 1.000 unités vers l'utilisateur. Le résultat jette belles ombres sur les derrières des objets de filature.


» » » » Programmation Java: ajouter, animer et éclairer des objets en 3D