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:
|
|
|