İçindekiler:
Video: Java Ders-4 (3D Görüntü Oluşturma Örnek) 2024
JavaFX, gerçekçi 3D modelleme için yerleşik bir desteği vardır. Aslında, JavaFX sahne grafiği doğasında üç boyutludur. Çoğu JavaFX programı yalnızca x ve y koordinatlarını belirterek yalnızca iki boyutta çalışır. Ancak, üçüncü boyuta geçmek için yapmanız gereken tek şey, sahnenizdeki grafiğin düğümlerini üç boyutlu alanda yerleştirmek için z-koordinatlarını belirtmektir.
JavaFX, 3D dünyalarda 3B nesnelerin oluşturulması ve görüntülenmesi için ayrılmış zengin bir set içerir. Küpler ve silindirler gibi üç boyutlu şekiller oluşturabilirsiniz. 3B nesnelerinize farklı açılardan ve farklı perspektiflerden bakmak için sanal kamerayı 3B alanı çevirebilirsiniz.
Ve sanal dünyaların nihai görünümünü dikkatli bir şekilde kontrol etmek için ışık kaynakları bile ekleyebilirsiniz. Kısacası, JavaFX şaşırtıcı 3D sahneler üretebilir.
Java dünyanıza bir 3D kutu ekleyin
Bu adımda, 3D dünyasına bir nesne ekleyin: Bu durumda, Box sınıfı ile temsil edilen bir kutu. İşte kod:
Kutu kutusu = yeni Kutu (100, 100, 100); Kutu. setMaterial (blueStuff); Kutu. setTranslateX (150); Kutu. setTranslateY (-100); Kutu. setTranslateZ (-100); kök. GetChildren (). (Kutu) ekleyin;
Box kurucusu, kutunun genişliğini, yüksekliğini ve derinliğini temsil eden üç bağımsız değişkeni kabul eder. Bu örnekte, üçü de 100 olarak ayarlanmıştır. Böylece, kutu her tarafı 100 ünite olacak şekilde küp şeklinde çizilecektir.
Kutuya silindirle aynı malzeme verilir; Sonra kutunun perspektif görünümünü elde edebilmeniz için üç eksene de çevrilir. Şekilde, işlendiğinde kutunun nasıl göründüğü gösterilmektedir. Gördüğünüz gibi, kutusunun sol ve alt yüzleri görülebilir, çünkü kameranın perspektif kazanabilmesi için kutunun üstünü ve sağını tercüme ettiniz.
3D kutuyu döndür
Bu adımda, daha ilginç bir perspektif görünümü oluşturmak için kutuyu döndürün. Bir 3B nesneyi döndürmenin iki yolu vardır. En basit şey, nesnenin setRotate yöntemini çağırmak ve bir dönme açısı sağlamaktır:
kutusu. setRotate (25);
Varsayılan olarak, bu nesneyi z ekseni üzerinde döndürecektir. Bunun görselleştirilmesi zorsa, nesneyi z-eksenine paralel olan uzun bir çubuk ile şişirmeyi hayal edin. Ardından, nesneyi şişta döndürün.
Nesneyi farklı bir eksen boyunca döndürmek istiyorsanız, önce setRotationAxis öğesini çağırın. Örneğin, nesneyi x ekseni üzerinde döndürmek için şu sırayı kullanın:
kutusu. setRotationAxis (Döndür, X_AXIS); Kutu. setRotate (25);
Şişeyi, x-eksenine paralel olarak şişeyle kutudan geçirdiğinizi ve ardından kutuyu 25 derece döndürdüğünüzde düşünün.
Bir 3B nesneyi döndürmek için setRotate yöntemini kullanmanın tek problemi, bir defada yalnızca bir eksen üzerinde çalışmasıdır. Örneğin, kutuyu hem z hem de x ekseni üzerinde 25 derece döndürmek istediğinizi varsayalım. Aşağıdaki kod değil bunu başarır:
kutusu. setRotationAxis (Döndür, X_AXIS); Kutu. setRotate (25); Kutu. setRotationAxis (Döndür, Z_AXIS); Kutu. setRotate (25);
Z ekseni üzerinde kutuyu döndürmek için ikinci kez setRotate yöntemi çağrıldığında, x ekseni dönüşü sıfırlanır.
Birden fazla eksende döndürmek için bunun yerine Rotate sınıfını kullanmalısınız. Nesneyi döndürmek istediğiniz her eksene ayrı bir Döndürme örneği oluşturursunuz ve ardından Döndüren tüm örnekleri, getTransforms () aracılığıyla nesnenin Dönüşümler koleksiyonuna eklersiniz. Bu gibi addAll yöntemi:
Döndür rxBox = yeni Döndür (0, 0, 0, 0, Döndür; X_AXIS); Döndür ryBox = yeni Döndür (0, 0, 0, 0, Döndür, Y_AXIS); Döndür rzBox = yeni Döndür (0, 0, 0, 0, Döndür, Z_AXIS); rxBox. setAngle (30); ryBox. setAngle (50); rzBox. setAngle (30); Kutu. getTransforms (). addAll (rxBox, ryBox, rzBox);
Döndüren yapıcı dört parametre kabul eder. İlk üç, dönme ekseninin geçeceği cismin içindeki noktanın x, y ve z koordinatlarıdır. Genellikle, nesneyi merkez noktası etrafında döndürmek için bu parametreler için sıfırlar belirtirsiniz. Dördüncü parametre rotasyon eksenini belirtir.
Bu şekil, kutu döndürüldükten sonra nasıl göründüğünü gösterir.
Döndükten sonra kutu.