holodepth

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.