Πίνακας περιεχομένων:
Βίντεο: Πώς κάνω γραφικά σε Java εύκολα με το NetBeans; 2024
Το JavaFX έχει ενσωματωμένη υποστήριξη για ρεαλιστική 3D μοντελοποίηση. Στην πραγματικότητα, το γράφημα σκηνής JavaFX έχει τρισδιάστατο χαρακτήρα. Τα περισσότερα προγράμματα JavaFX λειτουργούν σε δύο μόνο διαστάσεις, καθορίζοντας μόνο τις συντεταγμένες x και y. Αλλά το μόνο που πρέπει να κάνετε για να πάτε στην τρίτη διάσταση είναι να καθορίσετε τις συντεταγμένες z για να τοποθετήσετε τους κόμβους του γραφήματος της σκηνής σας σε τρισδιάστατο χώρο.
Το JavaFX περιλαμβάνει ένα πλούσιο σύνολο κατηγοριών που είναι αφιερωμένο στη δημιουργία και την απεικόνιση 3D αντικειμένων σε 3D κόσμους. Μπορείτε να δημιουργήσετε τρισδιάστατα σχήματα, όπως κύβοι και κύλινδροι. Μπορείτε να μετακινήσετε την εικονική κάμερα μέσα στον 3D χώρο για να δείτε τα 3D αντικείμενα σας από διαφορετικές γωνίες και διαφορετικές οπτικές γωνίες.
Και μπορείτε ακόμη να προσθέσετε πηγές φωτισμού για να ελέγξετε προσεκτικά την τελική εμφάνιση των εικονικών κόσμων σας. Με λίγα λόγια, το JavaFX είναι σε θέση να παράγει εκπληκτικές τρισδιάστατες σκηνές.
Προσθέστε ένα 3D κουτί στον κόσμο Java
Σε αυτό το βήμα, προσθέστε ένα αντικείμενο στον κόσμο 3D: Σε αυτή την περίπτωση, ένα κουτί, που αντιπροσωπεύεται από την κλάση Box. Εδώ είναι ο κωδικός:
Πλαίσιο πλαισίου = νέο πλαίσιο (100, 100, 100); κουτί. setMaterial (blueStuff); κουτί. setTranslateX (150); κουτί. setTranslateY (-100); κουτί. setTranslateZ (-100); ρίζα. getChildren (). Προσθήκη (πλαίσιο).
Ο κατασκευαστής του κουτιού δέχεται τρία επιχειρήματα που αντιπροσωπεύουν το πλάτος, το ύψος και το βάθος του κιβωτίου. Σε αυτό το παράδειγμα, και τα τρία έχουν ρυθμιστεί σε 100. Έτσι, το κιβώτιο θα σχεδιαστεί ως κύβος με κάθε πλευρά να μετρά 100 μονάδες.
Το κουτί λαμβάνει το ίδιο υλικό με τον κύλινδρο. τότε, μεταφράζεται και στους τρεις άξονες έτσι ώστε να μπορείτε να έχετε μια προοπτική όψη του κουτιού. Το σχήμα δείχνει τον τρόπο εμφάνισης του κουτιού όταν αποδίδεται. Όπως μπορείτε να δείτε, τα αριστερά και τα κάτω πρόσωπα του κουτιού είναι ορατά επειδή μεταφράσατε τη θέση του κουτιού προς τα επάνω και προς τα δεξιά έτσι ώστε η κάμερα να μπορεί να αποκτήσει κάποια προοπτική.
Περιστροφή του κουτιού 3D
Σε αυτό το βήμα, περιστρέψτε το πλαίσιο για να δημιουργήσετε μια ακόμα πιο ενδιαφέρουσα προοπτική προβολή. Υπάρχουν δύο τρόποι περιστροφής ενός αντικειμένου 3D. Το πιο απλό είναι να καλέσετε τη μέθοδο setRotate του αντικειμένου και να δώσετε ένα πλαίσιο γωνίας περιστροφής:
. setRotate (25);
Από προεπιλογή, αυτό θα περιστρέψει το αντικείμενο στον άξονά του z. Αν αυτό είναι δύσκολο να γίνει ορατό, φανταστείτε το αντικείμενο με ένα μακρύ ραβδί που είναι παράλληλος προς τον άξονα z. Στη συνέχεια, γυρίστε το αντικείμενο στο σουβλάκι.
Αν θέλετε να περιστρέψετε το αντικείμενο κατά μήκος ενός άλλου άξονα, καλέστε πρώτα το setRotationAxis. Για παράδειγμα, για να γυρίσετε το αντικείμενο στον άξονά του x, χρησιμοποιήστε αυτήν την ακολουθία:
πλαίσιο. setRotationAxis (Περιστροφή X_AXIS); κουτί. setRotate (25);
Φανταστείτε να τρέχετε το σουβλάκι μέσα από το κουτί με το κλαδευτήρι παράλληλο προς τον άξονα x και στη συνέχεια περιστρέψτε το κιβώτιο 25 μοίρες.
Το μόνο πρόβλημα με τη χρήση της μεθόδου setRotate για την περιστροφή ενός αντικειμένου 3D είναι ότι λειτουργεί μόνο σε έναν άξονα κάθε φορά. Για παράδειγμα, υποθέστε ότι θέλετε να περιστρέψετε το κιβώτιο 25 μοίρες τόσο στον άξονα z όσο και στον άξονα x. Ο παρακάτω κώδικας όχι θα επιτύχει αυτό το πλαίσιο:
. setRotationAxis (Περιστροφή X_AXIS); κουτί. setRotate (25); κουτί. setRotationAxis (Περιστροφή, Z_AXIS); κουτί. setRotate (25);
Όταν η μέθοδος setRotate ονομάζεται δεύτερη φορά για την περιστροφή του πλαισίου στον άξονα z, η περιστροφή του άξονα x επαναφέρεται.
Για να περιστρέψετε σε περισσότερους από έναν άξονες, πρέπει να χρησιμοποιήσετε την κλάση Περιστροφή. Δημιουργείτε μια ξεχωριστή εμφάνιση περιστροφής για κάθε άξονα στον οποίο θέλετε να περιστρέψετε το αντικείμενο και, στη συνέχεια, προσθέστε όλα τα περιθώρια περιστροφής στη συλλογή μετασχηματισμών του αντικειμένου μέσω του getTransforms (). addAll method, όπως αυτό:
Περιστροφή rxBox = new Περιστροφή (0, 0, 0, 0, Περιστροφή, X_AXIS); Περιστροφή ryBox = νέα Περιστροφή (0, 0, 0, 0, περιστροφή, Y_AXIS); Περιστροφή rzBox = νέα Περιστροφή (0, 0, 0, 0, Περιστροφή, Z_AXIS); rxBox. setAngle (30); ryBox. setAngle (50); rzBox. setAngle (30); κουτί. getTransforms (). addAll (rxBox, ryBox, rzBox);
Ο κατασκευαστής περιστροφής δέχεται τέσσερις παραμέτρους. Οι πρώτες τρεις είναι οι συντεταγμένες x, y, και z του σημείου μέσα στο αντικείμενο μέσω του οποίου θα περάσει ο άξονας περιστροφής. Συνήθως, καθορίζετε μηδενικά για αυτές τις παραμέτρους για να περιστρέψετε το αντικείμενο γύρω από το κεντρικό σημείο του. Η τέταρτη παράμετρος καθορίζει τον άξονα περιστροφής.
Αυτό το σχήμα δείχνει πώς εμφανίζεται το πλαίσιο μετά την περιστροφή του.
Το κουτί μετά την περιστροφή του.