Babylon.js · XR
Teleportation: uzayı atlarken yönünüzü kaybetmemek
Işınlanma ( teleport), kullanıcıyı sürekli kaydırarak yürümek yerine geçerli bir zemine tek adımda taşıyan locomotion biçimidir. Çoğu uygulama kontrolcüden çıkan bir parabolik veya düz ışın ile hedef noktayı seçer; motor sahne grafiğindeki kamera takımını ( rig) yeni konuma taşır — fizik gövdesi varsa onu da birlikte güncellemeniz gerekir.
Holodepth Three.js tarafında benzer davranış çoğu zaman elle yazılmış ışın ve zemine çarpışma ile kurulur; Babylon.js tarafında hazır yardımcılar düşünülür — taşınan şey geçerli iniş testi + kullanıcı rahatlığı + transform güncellemesi üçlüsüdür; «aynı örnek kod» beklemeyin.
Özet: dört doğrulama
| Konu | Soru | Belirti |
|---|---|---|
| Hedef yüzey | Zemin hangi katmanda izinlidir? | Duvara veya boşluğa ışınlanma. |
| Menzil | Maksimum mesafe ve yükseklik? | Ufuk çizgisinde kaybolan işaretçi. |
| Rahatlık | Ani poz değişiminde kararma? | Baş dönmesi, mide bulantısı şikâyeti. |
| Gövde | Kamera mı yoksa karakter kökü mü taşınıyor? | Tıkanma veya zeminin altına düşme. |
Parabolik ışın ve iniş noktası
Yer değiştirmeyi ön izlemek için düz ışın yerine çoğu kurulumda yerçekimi eğrisi ( parabolic arc) kullanılır: yörünge önünüzdeki alçak mobilyayı görsel olarak «üzerinden atlar», hedef halkası yalnızca yere düşen noktada durur. Eğrinin tepe yüksekliği, örneklenen nokta sayısı ve çizgi rengi kullanıcıya niyeti okutur; geçerli iniş ise yine sahne geometrisine karşı yapılan Raycast (veya eşdeğeri) ile kesinleşir. Özetle: çizgi kullanıcıya gösterilen tasarım katmanıdır; isabet ise doğrulama katmanıdır — ikisini birbirinin yerine koymayın. Düz ışın ve parabol arasında mod değiştiriyorsanız menzil ve hangi katmanların filtreleneceği listesini tek yardımcıda toplayın; aksi halde bir modda serbest bırakılan hedef diğerinde sessizce reddedilir (hangi yüzeyin «teleport edilebilir» olduğu bölüm 2’de ele alınır).
Geçerli zemin ve engellenen bölgeler
Parabol nereye «değeceğini» gösterir; o noktanın oyunda kabul edilip edilmeyeceği ayrı bir politikadır. Her üçgen yüzey yürünebilir sayılmaz: duvar, tavan, merdiven gövdesi, süs örgüsü veya etkileşim alanı genelde listeden çıkarılır. Pratikte bir katman maskesi, özel materyal veya meta veri etiketi ile yalnızca «teleport zemini» işaretlenir; reddedilen yüzeyler hem ön izlemede grileştirilebilir hem de sunucu/istemci tarafında aynı kuralla tutulmalıdır. İçerik üretimini kolaylaştırmak için yürünebilir bölgeleri tek materyal veya tek örgü altında toplamak yaygındır; açık dünya veya çok katlı yapılarda ayrıca navigasyon örgüsü ( navmesh) ile «yalnızca geçerli poligonlar» kısıtlanabilir. Bu bölüm yörünge matematiğini (bölüm 1) tekrar etmez; yalnızca «neresi yasal iniş» sorusunu yanıtlar.
Zemin ile uyum
Oturum WebXR setup · referans uzayı ayarı yer tabanlı ( floor) ise kullanıcı genelde başlangıçta ayakları zeminde beklenir. Işınlanma sonrası gövde birim yükselmiş veya zemine gömülmüş görünüyorsa suçu çoğu zaman yalnızca ölçekte aramayın: iniş yüzeyinin normali yanlış varsayıldığında veya kök dönüşümü iki kez uygulandığında ( double transform) ofset birikir. Referans uzayı ile sahne kökünüzün hizasını kurulumda doğrulayın; görsel parabol ile aynı raycast yolunu kullanın ki ön izleme ile gerçek iniş çakışsın.
Kamera takımı ve fizik gövdesi
Geçerli bir iniş bulunduktan sonra poz, çoğu projede yalnızca kamera düğümüne yazılarak taşınmamalıdır: fizik gövdeli bir karakterde kamera zeminde görünürken impostor birkaç metre geride kalabilir ( kopuk poz). Işınlanma anında rig kökünü, kamera ofsetini ve varsa Physics impostor merkezini aynı karede ve aynı dünya uzayında güncelleyin; birini fizik adımına ertelemek genelde bir karelik sapma veya sürtünme titremesi üretir. Bu bölüm rahatlık karartması (bölüm 4) veya girdi (bölüm 5) ile karıştırılmamalıdır; yalnızca «görünen beden» ile «çarpışan beden»in birlikte taşınmasıdır.
- Görünüm: baş ( HMD) takipçisi ile gövde kökü aynı vektörle ötelenir; oda içi dönüş için yalnızca yaw döndürülüp pitch/roll sabit tutuluyorsa bu kural rig hiyerarşisinde açıkça kodlanmalıdır.
- Fizik: teleport sonrası doğrusal ve açısal hızları sıfırlamak yaygındır; aksi halde önceki yürümenin ivmesi yeni konumda ani sıçrama veya tünelleme hatası gibi yan etkiler doğurur (ani görüş sıçraması için bölüm 4).
Rahatlık: kararma ve ani sıçrama
Konum tek karede metrelerce değişince vestibüler uyumsuzluk riski doğar; bu yüzden üretimde sıkça kısa bir ekran kararması ( fade to black) veya vignette benzeri kenar karartma ile görüş kapatılır, poz bölüm 3’te anlatıldığı gibi kararma süresinde güncellenir, sonra görüntü yumuşak biçimde açılır. Süre ve opaklık eğrisi proje tonuna göre ayarlanır; önemli olan, kullanıcının net görürken yer değiştirmemesidir. Aynı sahneye smooth locomotion (sürekli kaydırma) de ekliyorsanız iki locomotion biçiminin toplam hareket yükünü ve dönüş hızını ayrı ayrı sınırlamak gerekir — bu sayfa sürekli yürümeyi anlatmaz; yalnızca teleportun ani sıçramaya karşı zamansal maskeleme ihtiyacına odaklanır.
Menzil ve girdi eşlemesi
Ön izlemeyi hangi düğme veya eksen tetiklediği cihazdan cihaza değişir; semantik tarafta genelde başparmak çubuğu yukarı ( thumbstick up) veya select benzeri bir «niyet» olayı kullanılır — ayrıntı için Controller input sayfasındaki olay ve gamepad ayrımına bakın. Menzil ise girdi katmanından bağımsız olarak dünya biriminde (ör. metre) sabitlenmelidir; sahne veya karakter ölçeği ile kullanıcı kökü ölçeği çarpıştığında aynı sayısal menzil ya ufukta kaybolur ya da zeminin altına «çivelenmiş» gibi görünür. Parabol eğrisinin görsel uzunluğu (bölüm 1) ile reddedilen yüzey listesi (bölüm 2) aynı menzil sabitini paylaşmalıdır; böylece «basıyorum ama gitmiyor» hissi yarı ölçek yarı filtreden kaynaklanmaz.
Three.js ile üst üste okuma
Çakışmayı önleyen çerçeve
Three.js örneklerinde zemine ışınlama çoğu zaman elle örneklenmiş parabol, ışın–üçgen veya düzlem kesişimi ve elle yazılmış «geçerli yüzey» bayraklarıyla birleştirilir; Babylon.js tarafında aynı yörünge → çarpışma → politika → rig güncellemesi zinciri çoğu kez XR yardımcılarında toplanır. Kütüphane değişse de taşımanız gereken zihinsel model budur; tek satır API kopyası yerine zincirin her halkası için hangi kodun otorite olduğunu seçin. Bölüm 1–3’te anlatılan tuzaklar ( eğriyi gerçek çarpışmayla karıştırmak, reddedilen yüzeyleri iki yerde farklı tanımlamak, kamera ile impostoru ayırmak, yanlış yüzey normali veya çift transform) motor bağımsız kalır; Three’den geçerken bu sayfayı referans sözleşme listesi gibi kullanabilirsiniz.
Sıradaki: oturum kurulumu
Yer değiştirme kuralları netleştikten sonra güvenli bağlam ve referans uzayı için WebXR setup sayfasına geçebilirsiniz. Önceki adım: Performance constraints.