İçindekiler:
Video: Sıfırdan Java 123 - Decision Tree Mantığı 2024
Birkaç kısa adımda JavaFX'te üç boyutlu dünyayı gösteren basit bir 3D programı oluşturmaya başlayabilirsiniz (bir örnek aşağıda gösterilmiştir). Gördüğünüz gibi bu 3D alan dört şekilden oluşur: bir küre, bir küp, bir silindir ve bir piramit. Bu kısa liste bir silindirin nasıl çalıştırılacağını gösterir.
Düşünce Kepinizi takın; çünkü bu örnek zaman zaman oldukça tekniktir ve 3D dünyayla ilgili konulardan birçoğu, özellikle 3D programlamayla ilk deneyiminiz olursa, kafa karıştırıcı olabilir.
Birinci adım: Bir silindir ekleyin
Bu adımda, dünyanıza temel bir 3B nesne ekleyin. JavaFX, ekleyebileceğiniz üç temel şekle sahiptir: silindirler, kutular ve küreler. Bir silindir ekleyerek başlayın:
Silindir tüpü = yeni silindir (100, 50); kök. GetChildren (). (Silindir) ekleyin;
Silindir sınıfı yapıcısı iki bağımsız değişkeni kabul eder: silindirin yarıçapı ve yüksekliği. Bu örnek kabaca yaklaşık olarak bir hokey disk şekli olan dört kat daha geniş bir silindir oluşturuyor; Sonra, silindiri sahnenin kök düğümüne ekler.
Bu noktada, silindir dünyada var, ancak görünür değil. 2D şekiller hakkında bildiklerinize dayanarak, bir dolgu rengi (setFill) veya bir kontur rengi (setStroke) ekleyerek onu görünür kılmaya çekinmiş olabilirsiniz. Ancak bu 3D nesnelerin işlevi böyle değildir. Bir sonraki adımda, sahnede görülebilmesi için silindirin yüzeyine nasıl malzeme uygulanacağını keşfedersiniz.
İkinci adım: Bir malzeme oluşturun
Bir 3B nesnenin yüzlerini oluşturma, düz, iki boyutlu nesneler oluşturmaktan daha karmaşıktır. 2B nesne için, yalnızca bir Paint nesnesi setFill yöntemiyle uygular. Boya basit bir renk, degrade renk veya bir görüntü olabilir.
3B nesneler için boya uygulamayın. Bunun yerine, PhongMaterial sınıfının temsil ettiği Phong malzemesi adlı özel bir nesne uygularsınız. 1970'lerde öncü bir bilgisayar grafik uzmanı olan Bui Tuong Phong'dan bir Phong materyali, 3B nesnenin yüzlerinin gerçekçi bir biçimde oluşturulduğu araçları sağlar.
Aşağıdaki kod mavi iki tonuyu temel alan basit bir Phong malzemesi oluşturur ve ardından silindire malzeme uygular:
PhongMaterial blueStuff = new PhongMaterial (); blueStuff. setDiffuseColor (Renkli LIGHTBLUE); blueStuff. setSpecularColor (Renkli MAVİ); Silindir. setMaterial (blueStuff);
Phong malzemesi silindire uygulandıktan sonra, silindir resimde görüldüğü gibi sahnede görülecektir.
Phong malzemeli 3D silindir.Üçüncü adım: Silindiri çevirin
Şüphesiz silindirin çok üç boyutlu görünmediğini fark ettiniz. Bunun nedeni, kenar-on'a baktığınızdan dolayı: Kamera, x ve y eksenlerinin kesiştiği noktaya doğru işaret ediyor ve silindir, o noktanın üzerinde ortalanıyor.
Silindirle ilgili biraz perspektif elde etmek için, x, y ve z koordinatlarını tercüme ederek 3B uzayında farklı bir konuma taşıyabilirsiniz. Örneğin:
silindir. setTranslateX (-200); Silindir. setTranslateY (200); Silindir. setTranslateZ (200);
Burada, silindir 200 ünite sola, 200 ünite aşağı ve 200 ünite kameradan uzaklaştı. Sonuçta elde edilen görüntü, burada görebileceğiniz gibi silindir benzeri görünüyor.
Çevirilen 3D silindir.Bu şekilde, silindir, üst yüzeyin bir kısmını görebilmek için ileri doğru döndürülmüş gibi görünüyor. Ancak bu durum böyle değil. Aslında olan şey, artık silindirin kenarına bakmadığınız.
Bunun yerine, silindir fotoğraf makinesinin altında olduğu için üstüne bakıyorsunuz. Böylece, üst yüzü biraz görebilirsiniz. Ayrıca taraftan baktığınızda, neden biraz eğik görünüyorsa açıklar.