Babylon.js · XR
WebXR setup: oturum ve referans uzayı
WebXR, tarayıcı üzerinden başlık veya el cihazlarıyla sürükleyici veya artırılmış gerçeklik oturumu açmanızı sağlayan web standardıdır. «Kurulum» burada tek bir düğme değil; güvenli bağlam, kullanıcı jesti ile oturum talebi, uygun referans uzayı ( reference space) seçimi ve sahne–kamera–işleme döngüsünün bu moda uyumu demektir.
Holodepth Three.js tarafında benzer rol çoğu zaman WebXRManager ve özel renderer yollarıyla anlatılır; Babylon.js tarafında soyutlama çoğu zaman sahne düzeyinde bir XR deneyimi oluşturucusu üzerinden düşünülür — matematik ( pose, izlemeli görünüm) ortaktır, kütüphane yüzeyi farklıdır.
Özet: dört önkoşul
| Önkoşul | Soru | Belirti |
|---|---|---|
| Güvenli bağlam | HTTPS veya localhost? | XR hiç açılmıyor. |
| Özellik sorgusu | Tarayıcı WebXR sunuyor mu? | Düğme gri / sessizce reddediliyor. |
| Kullanıcı jesti | Oturum tıklamadan mı başlıyor? | Tarayıcı politikası izin vermez. |
| Referans uzayı | Zemin ve baş nerede? | Sahne göğsünüzün altında veya gökte. |
Güvenli bağlam ve yetenek sorgusu
Özel yapı: WebXR yalnızca güvenli bağlamda ( secure context) kullanılabilir — üretimde HTTPS, geliştirmede çoğu zaman localhost. Ardından navigator.xr nesnesi ile isSessionSupported çağrısı, hedeflediğiniz oturum modunun ( immersive-vr, immersive-ar) cihazda gerçekten desteklenip desteklenmediğini söyler; destek yoksa kullanıcıya düşen mesajı önceden tasarlayın — sessiz başarısızlık destek taleplerini artırır.
navigator.xr yoksa tarayıcı WebXR sunmuyordur; bu durumda isSessionSupported çağırmadan önce varlık kontrolü yapın. VR ve AR için ayrı sorgu sonuçları çıkabilir — tek düğmeyle «hem XR hem değil» mesajı kullanıcıyı yanıltır; hangi modun hedeflendiğini arayüzde açık etiketleyin. Ağ proxy veya karışık içerik ( mixed content) güvenli bağlamı bozduğunda hata ayıklama genelde ağ sekmesinde başlar, sahne kodunda değil.
Açık geri bildirim
«Desteklenmiyor» durumunda yalnızca düğmeyi pasifleştirmek yetmez; kısa neden ( HTTPS gerekir, tarayıcı sürümü, mod desteklenmiyor) ve varsa masaüstü alternatifi yazın. Sessiz gri düğme, kullanıcıyı destek kanalına yönlendiren en pahalı yoldur.
- Bağlam: üretimde zorunlu HTTPS; içerik güvenliği politikası ihlallerini kontrol edin.
- Sorgu: hedef mod için isSessionSupported; sonucu durum olarak saklayın.
- Ürün: destek yok mesajı + isteğe bağlı düşük özellikli önizleme ( inline veya 2B) aynı ekranda planlanabilir.
Oturum talebi ve isteğe bağlı özellikler
Özel yapı: requestSession çağrısında zorunlu ve isteğe bağlı ( optionalFeatures) özellikler ayrılır — örneğin el izleme veya ek görüntü katmanları her cihazda yoktur. İsteğe bağlı özellik reddedildiğinde oturum yine açılabilir; hangi yolların «yok sayılır» kabul edildiğini kodda kontrol edin, aksi halde kontrolcü beklerken donmuş sanılırsa aslında geri dönüş ( fallback) eksiktir.
Zorunlu özellik reddedilirse oturum genelde hiç açılmaz; isteğe bağlı reddi ise «kısmi yetenek» durumudur — bu iki yolu kullanıcıya ve animasyon / fizik kodunuza farklı yansıtın. Oturum açıldıktan sonra el ve düğme semantiği Controller input · giriş kaynağı sayfasında derinleşir — burada yalnızca talep anındaki özellik sözleşmesi sabittir.
Kullanıcı jesti
Oturum çoğu zaman doğrudan sayfa yükünde değil, kullanıcı etkileşimi ( tıklama) sonrası başlatılmalıdır — otomatik giriş çoğu tarayıcıda engellenir. Aynı jest zinciri, masaüstünde odak ve kısayol kurallarıyla çakışmaması için Control system · odak ile birlikte düşünülebilir; XR düğmesi ayrı bir net tıklama alanına sahip olsun.
- Zorunlu: olmadan açılmayacak özellikler; reddedilirse anlaşılır hata.
- İsteğe bağlı: reddedilebilir; açıldıktan sonra yetenek bayraklarıyla dallanın.
- Jest: requestSession çağrısını kullanıcı olayının içinde tutun.
Referans uzayı: baş ve zemin sözleşmesi
Özel yapı: referans uzayı, dünya koordinatlarının «nerenin sıfır» ve «hangi yön yukarı» olduğunu tanımlar — örneğin yer tabanlı ( local-floor) seçim zemini ayak altına oturtur; yalnız izleyici ( viewer) bağlı uzay başın etrafında kayar. Yanlış seçim, içerik dizaynınızın sabit Y eksenine göre yapıldığı halde kullanıcıda göğüs hizasında yüzmesine yol açar; içerik kökünü referansla birlikte yeniden düşünün.
Oturum modu (AR zeminde düzlem, VR odada hacim) referans beklentisini değiştirir; aynı sahne grafiğini taşımadan önce «kök örgüyü nereye kilitleyeceğinizi» belgeleyin. Baş ve el pozlarının otoritesi sonraki konuda Controller input · duruş ve hedef ışın ile birleşir — burada yalnızca dünya sıfırının sözleşmesi özetlenir.
- Zemin: local-floor ile içerik ayak hizası; oturmadan önce kalibrasyon gecikmesine tolerans.
- Baş: viewer bağlı uzayda içerik başla birlikte sürer; sabit dünya istiyorsanız kökü düzeltin.
- Tasarım: Y-up içerik varsayımını referansla çakıştırmayın; prototipte ölçü birimi sabitleyin.
Sahne döngüsü ve kamera takımı
Özel yapı: XR etkinleşince izlemeli kamera ve denetleyici pozları her karede güncellenir; klasik fare ile dönen arşiv ( arc rotate) ile aynı varsayımları taşımaz. Render döngünüz ( Render döngüsü · güncelleme ve çizim) içinde hangi kod yollarının XR içinde devre dışı kalacağını ( örneğin masaüstü kamera kumandası) bilinçli ayırın — çift kontrol «titreyen» görünüm üretir.
Aynı karede hem eski orbit hem yeni baş pozu uygulanıyorsa kamera iki kaynaktan çekilir; bunu tek dalda çözmek için Controller input · masaüstü ile XR ayrımı sayfasındaki ayrım düşüncesini kurulum aşamasında planlayın — burada yalnızca «döngüde hangi yol aktif» uyarısı verilir. Motor duraklatma veya sekmesi arka planda kalma ( Motor ömrü · duraklatma) XR oturumunda farklı sınıf hatalara yol açabilir; ayrı test edin.
Tek otorite
XR açıkken baş ve el pozu kazanır; masaüstü kamera betiği ya tamamen atlanmalı ya da açıkça «yalnız masaüstü modu» bayrağına bağlanmalıdır. İkisini aynı karede birleştirmeyi denemeyin.
- Masaüstü: fare ve klavye varsayılanı; orbit / gezinme açık olabilir.
- XR: baş ve el izleri otorite — kamera takip kodunu tekilleştirin.
- Döngü: güncelleme aşamasında mod ayrımı; çift kontrol titremesini profil ile doğrulayın.
Üretim ve cihaz parçalanması
Özel yapı: aynı sayfa Quest, telefon kartonu ve masaüstü tarayıcıda farklı yetenekler sunar; kademeli güçlendirme ( progressive enhancement) şarttır — çekirdek deneyim ( dönüp bakmak), gelişmiş özellik ( el kemikleri) mümkünse açılır. Bu sayfa donanım listesi vermez; özellik bayraklarını ve kullanıcı bildirimlerini tasarım dokümanınıza yazın.
Üretimde geliştirici kısayolları ve deneysel oturum bayrakları tek bir «her zaman açık» anahtarda birleşmemelidir; yapı bayrakları ve derleme ayrımı disiplini Debug visualization · üretimden çıkarma ile aynı hatadır — o sayfa çizim içindir, fakat «canlıda fazladan yüzey açmama» ilkesi XR için de geçerlidir. Pencere ve güvenli alan düşüncesi Responsive UI · güvenli alan ile örtüşür; karton ve başlık cihazında aynı düğme yerleşimi çalışmayabilir.
- Çekirdek: düşük yetenekli cihazda bile anlamlı ilk kare ve çıkış yolu.
- Genişletme: el iskeleti, ek katman — açıldıysa kullanıcıya kısaca bildirin.
- Belge: destek matrisi ve bayrak tablosu; kod yorumuna değil tasarım dokümanına yazın.
Three.js ile üst üste okuma
Three.js tarafında WebXRManager genelde renderer ve özel ön/arka yüz yollarıyla aynı cümlede geçer; siz yine de oturum açma, referans uzayı seçimi ve kare başına poz güncellemesini ayrı başlıklarda düşünürsünüz. Babylon.js'te bu sayfadaki önkoşullar sahne deneyimi soyutlamasıyla hizalanır — taşınan beceri tablo yazmak, satır satır API kopyalamak değildir.
Çakışmayı önleyen çerçeve
Three.js öğretilerinde WebXRManager ve özel renderer oturumu sık anlatılır; Babylon.js sahnesi kendi XR deneyimi soyutlamasıyla benzer ihtiyacı karşılar — taşınan fikirler oturum yaşam döngüsü, referans uzayı ve kamera poz güncellemesidır; satır satır aynı kod değildir.
Oturum öncesi güvenli bağlam ve jest ( 1, jest kutusu) her iki ekosistemde de aynı tarayıcı politikasına tabidir. Döngü ve kamera ayrımı bu sayfada ( 4); Three tarafındaki benzer «tek otorite» düşüncesi Controller input · Three okuması ile tamamlanabilir.
- Ortak: güvenli bağlam, jest, referans uzayı, poz güncellemesi.
- Three: WebXRManager + renderer yolu; sıra sizin köprünüzde görünür.
- Babylon: sahne deneyimi katmanı; bu sayfanın 1–5 başlığı kontrol listesi olarak kullanılır.
Sıradaki: sahne ile etkileşim
Oturum ve referans uzayı netleştikten sonra nesne seçimi ve tutma için XR interaction sayfasına geçebilirsiniz. Önceki adım: Teleportation.