Table des matières:
Vidéo: Cool 2D and 3D graphics with JavaFX 2024
JavaFX supporte la modélisation 3D réaliste. En fait, le graphe de scène JavaFX est de nature tridimensionnelle. La plupart des programmes JavaFX fonctionnent en deux dimensions, spécifiant seulement les coordonnées x et y. Mais tout ce que vous avez à faire pour entrer dans la troisième dimension est de spécifier les coordonnées z pour placer les nœuds de votre scène dans un espace tridimensionnel.
JavaFX comprend un riche ensemble de classes dédiées à la création et à la visualisation d'objets 3D dans les mondes 3D. Vous pouvez créer des formes tridimensionnelles, telles que des cubes et des cylindres. Vous pouvez déplacer la caméra virtuelle dans l'espace 3D pour regarder vos objets 3D sous différents angles et différentes perspectives.
Et vous pouvez même ajouter des sources d'éclairage pour contrôler soigneusement l'apparence finale de vos mondes virtuels. En résumé, JavaFX est capable de produire des scènes 3D étonnantes.
Ajouter une boîte 3D à votre monde Java
Dans cette étape, ajoutez un objet au monde 3D: dans ce cas, une boîte, représentée par la classe Box. Voici le code:
Box box = new Box (100, 100, 100); boîte. setMaterial (blueStuff); boîte. setTranslateX (150); boîte. setTranslateY (-100); boîte. setTranslateZ (-100); racine. getChildren (). ajouter (boîte);
Le constructeur Box accepte trois arguments représentant la largeur, la hauteur et la profondeur de la boîte. Dans cet exemple, tous les trois sont mis à 100. Ainsi, la boîte sera dessinée comme un cube avec chaque côté mesurant 100 unités.
La boîte reçoit le même matériau que le cylindre; Ensuite, il est traduit sur les trois axes afin que vous puissiez avoir une vue en perspective de la boîte. La figure montre comment la boîte apparaît lors du rendu. Comme vous pouvez le voir, les faces gauche et inférieure de la boîte sont visibles parce que vous avez traduit la position de la boîte vers le haut et vers la droite pour que la caméra puisse prendre du recul.
Rotation de la boîte 3D
Dans cette étape, faites pivoter la boîte pour créer une vue en perspective encore plus intéressante. Il existe deux façons de faire pivoter un objet 3D. Le plus simple est d'appeler la méthode setRotate de l'objet et de fournir un angle de rotation:
. setRotate (25);
Par défaut, cela fera tourner l'objet sur son axe z. Si cela est difficile à visualiser, imaginez que vous inclinez l'objet avec un long manche parallèle à l'axe z. Ensuite, faites tourner l'objet sur la brochette.
Si vous voulez faire pivoter l'objet le long d'un axe différent, appelez d'abord setRotationAxis. Par exemple, pour faire tourner l'objet sur son axe x, utilisez cette séquence:
. setRotationAxis (Rotation.X_AXIS); boîte. setRotate (25);
Imaginez que vous faites passer la brochette à travers la boîte avec la brochette parallèle à l'axe des x, puis faites tourner la boîte de 25 degrés.
Le seul problème avec l'utilisation de la méthode setRotate pour faire pivoter un objet 3D est qu'il ne fonctionne que sur un axe à la fois. Par exemple, supposons que vous souhaitiez faire pivoter la boîte de 25 degrés sur les axes z et x. Le code suivant ne sera pas accomplir ceci:
boîte. setRotationAxis (Rotation.X_AXIS); boîte. setRotate (25); boîte. setRotationAxis (Rotate. Z_AXIS); boîte. setRotate (25);
Lorsque la méthode setRotate est appelée la deuxième fois pour faire pivoter la boîte sur l'axe z, la rotation de l'axe des x est réinitialisée.
Pour effectuer une rotation sur plusieurs axes, vous devez utiliser la classe Rotation à la place. Vous créez une instance Rotate distincte pour chaque axe sur lequel vous souhaitez faire pivoter l'objet, puis ajoutez toutes les occurrences Rotate à la collection Transforms de l'objet via getTransforms (). Méthode addAll, comme ceci:
Rotate rxBox = new Rotate (0, 0, 0, 0, Rotation, X_AXIS); Rotate ryBox = new Rotate (0, 0, 0, 0, Rotation, Y_AXIS); Tournez rzBox = new Rotate (0, 0, 0, 0, Rotation, Z_AXIS); rxBox. setAngle (30); ryBox. setAngle (50); rzBox. setAngle (30); boîte. getTransforms (). addAll (rxBox, ryBox, rzBox);
Le constructeur Rotate accepte quatre paramètres. Les trois premiers sont les coordonnées x, y et z du point dans l'objet à travers lequel l'axe de rotation passera. Généralement, vous spécifiez des zéros pour ces paramètres afin de faire pivoter l'objet autour de son point central. Le quatrième paramètre spécifie l'axe de rotation.
Cette figure montre comment la boîte apparaît après la rotation.
La boîte après la rotation.