3B nesneleri 2B görünümde yansıtma

Flash Player 10 ve üstü, Adobe AIR 1.5 ve üstü

flash.geom paketindeki PerspectiveProjection sınıfı, 3B alanda görüntüleme nesneleri hareket ettirilirken basit perspektif uygulanmasının basit bir yolunu sağlar.

3B alanınız için açıkça bir perspektif projeksiyonu oluşturmazsanız, 3B motor, kökte varolan varsayılan bir PerspectiveProjection nesnesini kullanır ve tüm alt öğeleriyle doldurulur.

PerspectiveProjection nesnesinin 3B alanı nasıl görüntülediğini tanımlayan üç özellik şunlardır:

  • fieldOfView

  • projectionCenter

  • focalLength

fieldOfView ile focalLength birbirine bağlı olduğundan, bunlardan herhangi birinin değerinin değiştirilmesi otomatik olarak diğerinin de değerini değiştirir.

fieldOfView değeri verildiğinde focalLength öğesini hesaplamak için kullanılan formül şudur:

focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)

Genellikle, fieldOfView özelliğini açıkça değiştirirsiniz.

Görüş alanı

PerspectiveProjection sınıfının fieldOfView özelliğini işleyerek, izleyiciye yaklaşan 3B görüntüleme nesnesin daha büyük ve izleyiciden uzaklaşan nesnenin de daha küçük görünmesini sağlayabilirsiniz.

fieldOfView özelliği, perspektif projeksiyonunun kuvvetini belirleyen 0 ile 180 derece arasında bir açı belirtir. Bu değer arttıkça, z ekseni etrafında hareket eden görüntüleme nesnesine uygulanan deformasyon daha güçlü olur. Düşük bir fieldOfView değeri, çok küçük bir ölçeklemeye neden olur ve nesnelerin alanda yalnızca hafifçe geriye hareket ediyor gibi görünmesini sağlar. Yüksek bir fieldOfView değeri, daha fazla deformasyon ve daha büyük çapta bir hareket görünümü sağlar. 179.9999... derece maksimum değeri, oldukça ileri derecede balıkgözü kamera merceği efektiyle sonuçlanır. fieldOfView için maksimum değer 179.9999... ve minimum değer 0.00001... şeklindedir. Tam 0 ve 180, geçersiz değerlerdir.

Projeksiyon merkezi

projectionCenter özelliği, perspektif projeksiyonunda ufuk noktasını temsil eder. Bu, sahne alanının sol üst köşesindeki varsayılan kayıt noktasına (0,0) uzaklık olarak uygulanır.

Bir nesne, izleyiciden uzağa hareket ediyormuş gibi göründükçe, ufuk noktasına doğru eğer ve sonunda gözden kaybolur. Sonsuz uzunlukta bir holü düşünün. Hole tepeden baktığınızda, duvarların kenarları holün aşağısındaki bir ufuk noktasında birleşir.

Ufuk noktası, sahne alanının merkezindeyse, hol, merkezdeki bir noktaya doğru kaybolur. projectionCenter özelliğinin varsayılan değeri, sahne alanının merkezidir. Örneğin, öğelerin sahne alanının solunda ve 3B alanın da sağda görüntülenmesini istiyorsanız, projectionCenter öğesini, sahne alanının sağındaki bir noktaya ayarlayarak bu noktayı 3B görüntüleme alanınızın ufuk noktası yapabilirsiniz.

Odak uzaklığı

focalLength özelliği, görüş açısının başlangıç noktası (0,0,0) ile görüntüleme nesnesinin z eksenindeki konumu arasındaki mesafeyi temsil eder.

Odak uzaklığı, dar bir görünüme ve nesneler arasında sıkıştırılmış mesafelere sahip bir telefoto lensine benzer. Kısa bir odak uzaklığı, çok fazla deformasyonlu geniş bir görünüm elde etmenizi sağlayan geniş açılı lense benzer. Orta büyüklükte bir odak uzaklığı, gözle görünen boyuta yaklaştırır.

Genellikle görüntü nesnesi hareket ettikçe perspektif dönüştürmesi sırasında focalLength dinamik olarak yeniden hesaplanır ancak siz bunu açıkça da ayarlayabilirsiniz.

Varsayılan perspektif projeksiyonu değerleri

Kökte oluşturulan varsayılan PerspectiveProjection nesnesi şu değerlere sahiptir:

  • fieldOfView: 55

  • perspectiveCenter: stagewidth/2, stageHeight/2

  • focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )

Kendi PerspectiveProjection nesnenizi oluşturmadığınızda kullanılan değerler bunlardır.

projectionCenter ve fieldOfView öğesini değiştirme amacıyla kendi PerspectiveProjection nesnenizi başlatabilirsiniz. Bu durumda, yeni oluşturulan nesnenin varsayılan değerleri, 500 x 500 varsayılan sahne alanı boyutu esas alınarak şunlardır:

  • fieldOfView: 55

  • perspectiveCenter: 250,250

  • focalLength: 480.24554443359375