Isi kandungan:
Video: JavaFX: TimeBoxFX 2024
JavaFX mempunyai sokongan terbina dalam pemodelan 3D yang realistik. Malah, grafik adegan JavaFX bersifat tiga dimensi. Kebanyakan program JavaFX berfungsi dalam hanya dua dimensi, hanya menyatakan koordinat x dan y. Tetapi yang perlu anda lakukan untuk melangkah ke dimensi ketiga ialah menentukan koordinat z untuk menempatkan nod graf adegan anda dalam ruang tiga dimensi.
JavaFX merangkumi satu set kelas kaya yang didedikasikan untuk mencipta dan menggambarkan objek 3D dalam dunia 3D. Anda boleh membuat bentuk tiga dimensi, seperti kiub dan silinder. Anda boleh memindahkan kamera maya ke dalam ruang 3D untuk melihat objek 3D anda dari sudut yang berbeza dan perspektif yang berbeza.
Dan anda juga boleh menambah sumber pencahayaan untuk mengawal penampilan muktamad dunia maya anda. Ringkasnya, JavaFX mampu menghasilkan adegan 3D yang mengagumkan.
Tambahkan kotak 3D ke dunia Java anda
Dalam langkah ini, tambahkan objek ke dunia 3D: Dalam kes ini, kotak yang diwakili oleh kelas Kotak. Berikut adalah kod:
Kotak kotak = Kotak baru (100, 100, 100); kotak. setMaterial (blueStuff); kotak. setTranslateX (150); kotak. setTranslateY (-100); kotak. setTranslateZ (-100); akar. getChildren (). tambah (kotak);
Pembuat Kotak menerima tiga hujah yang mewakili lebar, ketinggian, dan kedalaman kotak. Dalam contoh ini, ketiga-tiga akan ditetapkan kepada 100. Oleh itu, kotak akan ditarik sebagai kiub dengan setiap sisi mengukur 100 unit.
Kotak diberikan bahan yang sama seperti silinder; maka ia diterjemahkan pada ketiga-tiga paksi supaya anda boleh melihat pandangan perspektif kotak. Angka ini menunjukkan bagaimana kotak muncul apabila diberikan. Seperti yang anda dapat lihat, wajah kiri dan bawah kotak kelihatan kerana anda menerjemahkan kedudukan kotak dan ke kanan supaya kamera boleh mendapatkan beberapa perspektif.
Putar kotak 3D
Dalam langkah ini, putar kotak untuk membuat pandangan perspektif yang lebih menarik. Terdapat dua cara untuk memutar objek 3D. Yang paling mudah ialah memanggil kaedah setRotate objek dan membekalkan sudut putaran:
kotak. setRotate (25);
Secara lalai, ini akan memutar objek pada paksi z nya. Jika ini sukar untuk digambarkan, bayangkan skewering objek dengan tong panjang yang selari dengan paksi-z. Kemudian, putar objek pada tusuk.
Jika anda ingin memutarkan objek sepanjang paksi yang berlainan, hubungi first setRotationAxis. Sebagai contoh, untuk memutar objek pada paksi xnya, gunakan urutan ini:
kotak. setRotationAxis (Putar X_AXIS); kotak. setRotate (25);
Bayangkan mengalir tusukan melalui kotak dengan tusuk selari dengan paksi-x dan kemudian berputar kotak 25 darjah.
Satu-satunya masalah dengan menggunakan kaedah setRotate untuk memutar objek 3D ialah ia hanya berfungsi pada satu paksi pada satu masa. Contohnya, katakan anda ingin memutarkan kotak 25 darjah pada kedua z- dan paksi-x. Kod berikut akan tidak mencapai ini:
kotak. setRotationAxis (Putar X_AXIS); kotak. setRotate (25); kotak. setRotationAxis (Putar Z_AXIS); kotak. setRotate (25);
Apabila kaedah setRotate dipanggil kali kedua untuk memutar kotak pada paksi z, putaran paksi-x adalah semula.
Untuk memutar lebih daripada satu paksi, anda mesti menggunakan kelas Putar sebaliknya. Anda membuat contoh Putar yang berasingan untuk setiap paksi yang anda ingin memutar objek dan kemudian tambah semua keadaan Putar ke koleksi Transforms objek melalui getTransforms (). kaedah addAll, seperti ini:
Putar rxBox = Putar baru (0, 0, 0, 0, Putar X_AXIS); Putar ryBox = Putar baru (0, 0, 0, 0, Putar Y_AXIS); Putar rzBox = Putar baru (0, 0, 0, 0, Putar Z_AXIS); rxBox. setAngle (30); ryBox. setAngle (50); rzBox. setAngle (30); kotak. getTransforms (). addAll (rxBox, ryBox, rzBox);
Pembina Rotate menerima empat parameter. Tiga pertama adalah koordinat x-, y-, dan z dari titik di dalam objek yang mana paksi putaran akan lulus. Biasanya, anda menentukan sifar untuk parameter ini untuk memutar objek di sekitar titik pusatnya. Parameter keempat menentukan paksi putaran.
Angka ini menunjukkan bagaimana kotak itu muncul selepas ia diputar.
Kotak selepas ia diputar.