Three.js · İleri konular · WebXR
WebXR nedir? Gerçekliğin genişletilmesi
WebXR, tarayıcı üzerinden hem sanal gerçeklik (VR) hem de artırılmış gerçeklik (AR) donanımlarına erişim sağlayan modern bir web standardıdır. Tek bir API yüzeyi üzerinden hem başlık takılı VR gözlükleri hem de akıllı telefonlardaki AR oturumları gibi farklı cihaz sınıfları yönetilebilir — ayrıntılı cihaz matrisi ve tarayıcı tablosu için dış kaynaklara (ör. Can I use · WebXR) başvurmak gerekir.
Bu sayfa WebXR Device API öğreticisi veya Three.js
kurulum rehberi değildir; Holodepth haritasında «neden var?» ve «hangi kavramlar bir arada
düşünülür?» sorularına yanıt verir. Klasik kare üretim bandı
Render pipeline
metninde; düz ekran döngüsü ve requestAnimationFrame disiplini
Animasyon döngüsü · rAF
bölümünde anlatılır — burada tekrarlanmaz.
VR, AR ve XR şemsiyesi
VR (Virtual Reality)
Kullanıcıyı tamamen dijital bir görsel ve işitsel alana taşır; fiziksel çevre genelde görsel olarak izole edilir. Web bağlamında bu, tarayıcının «güvenli oturum» (session) ve kullanıcı izni çerçevesinde yürür — yani teknik olarak mümkün olsa da etik ve ergonomi ayrı bir tasarım yüküdür.
AR (Augmented Reality)
Dijital içeriği gerçek dünya görüntüsünün üstüne bindirir: telefon kamerası, dünya takibi veya şeffaf optik gibi yollarla «gerçekliği zenginleştirme» hedeflenir. AR’de ışık, ölçek ve çevresel engeller VR’den farklı bir güven ve konfor sorusu getirir.
XR (Extended Reality)
VR ile AR’yi ve aradaki geçiş modlarını kapsayan şemsiye terimdir. WebXR adındaki «XR» kısmı, aynı API ailesinin farklı donanım kişiliklerine uyum sağlama iddiasını taşır.
WebXR mimarisinin temelleri
Holodepth projelerinde WebXR entegrasyonunu düşünürken üç taş sıkça birlikte anılır: oturum, poz ve XR karesi ile yürütülen çizim döngüsü. Aşağıda her biri kısaca çerçevelenir; veri sözleşmesi ve GPU tarafı hikâyesi yine Shader mantığı ile tamamlanır — burada yalnızca XR zaman çizelgesi vurgulanır.
A · Session (oturum) yönetimi
Her sürükleyici deneyim bir XRSession ile başlar; tarayıcı cihazın VR / AR yeteneğini sorgular, kullanıcıdan izin ister ve uygun moda geçirir. Oturum yaşam döngüsü (başlat, duraklat, sonlandır) üretim kalitesinde durum makinesi gibi yönetilmelidir — ayrıntılı akış diyagramı bu Holodepth sayfasının kapsamı dışındadır.
B · Poz takibi (pose tracking)
WebXR, baş ve eller (veya denetleyiciler) için uzaydaki konum ve yönelim bilgisini düzenli aralıklarla sunar. 6DoF (six degrees of freedom) ifadesi, yalnızca bakış yönünü değil; ileri–geri, sağa–sola ve yukarı–aşağı öteleme özgürlüklerinin de takip edildiğini anlatır — cihaz sınıfına göre izlenen serbestlikler değişebilir.
C · Render döngüsü: XRFrame
Sürükleyici modda çizim, klasik pencere
requestAnimationFrame ritminden farklı olarak çoğu zaman
XRSession.requestAnimationFrame
ile yürütülür; böylece görüntüleme, gözlük veya cihazın panel yenileme
hızı (ör. 72 Hz, 90 Hz, 120 Hz) ile daha sıkı hizalanabilir.
«Her zaman kusursuz senkron» demek doğru olmaz; fakat hedef, motion-to-photon
latency’yi kontrol altında tutmaktır. Düz ekran rAF
düşüncesi için
Animasyon döngüsü
metnine dönün.
// Kavramsal iskelet — gerçek projede özellik tespiti, kullanıcı gesti ve
// referans uzayı (reference space) kurulumu zorunludur.
function onXRFrame(time, frame) {
// frame: XRFrame — görüntüleyici pozu, görüntüleme modu, girdi kaynakları …
xrSession.requestAnimationFrame(onXRFrame);
}
xrSession.requestAnimationFrame(onXRFrame);
Holodepth teknik notu
Örnek yalnızca döngü yüzeyini gösterir; üretim kodunda nesne adları, desteklenen oturum modları ve güvenlik politikaları tarayıcıya göre değişir. Resmi sözleşme ve güncel imza için MDN · WebXR Device API birincil kaynaktır.
Holodepth ve sürükleyici deneyim tasarımı
WebXR kullanırken tasarım felsefesi «ekrana bakmak»tan mekânda var olmaya kayar; bu, kullanıcı arayüzü ve etkileşim kararlarını baştan yeniden düşündürür.
Mekânsal arayüz (Spatial UI)
Menüler yalnızca 2B paneller değil; kullanıcının etrafında konumlanan 3B nesneler olarak tasarlanabilir. Okunabilirlik (tipografi mesafesi), sabitlenme (başa kilitli mi, dünyaya mı bağlı?) ve odak yorgunluğu aynı anda yönetilmelidir.
Etkileşim: tıklama yerine tutma ve işaret
Fare tıklamasının yerini tutma, fırlatma veya işaret gibi el ve denetleyici hareketleri alabilir. Bu, girdi gecikmesinin yanı sıra hedefleme toleransı ve geri bildirim (ses, titreşim, görsel onay) tasarımını zorunlu kılar.
Ölçek: metre cinsinden dünya
Nesnelerin boyutu çoğu zaman metre cinsinden düşünülür; böylece kullanıcı nesnenin devasa veya küçük olduğunu bedensel olarak tahmin edebilir. Birimler ve eksen alışkanlığı için Koordinat sistemleri köprüsü faydalıdır — burada eksen matematiği tekrar edilmez.
Teknik zorluklar ve optimizasyon
XR deneyimleri, aynı sahneyi düz monitörde çizmeye kıyasla çoğu zaman daha pahalı bir grafik bütçesi ister — yalnızca çözünürlük değil, gecikme ve stereo maliyeti aynı anda hesaba katılır.
Stereo rendering
GPU, çoğu VR kurulumunda sol ve sağ göz için ayrı görüşler üretmek zorundadır; pratikte bu, çağrı başına işin kabaca ikiye yakınlanması anlamına gelebilir (motor ve içerik optimizasyonuna bağlıdır). Makro pipeline dilini Render pipeline metninde bulursunuz; burada yalnızca «neden pahalı?» sorusunun XR cevabı verilir.
FPS, gecikme ve hareket rahatsızlığı
Gecikme (latency) ve titreme, kullanıcıda hareket rahatsızlığı (motion sickness) riskini artırır. Bu yüzden birçok ekipte «90 FPS estetikten önce gelir» cümlesi hedef cümlesi olarak kullanılır — fakat gerçek cihaz bütçesi 72 Hz ile başlayabilir; önemli olan, seçilen hızda kararlı kare süresi ve kabul edilebilir hareket–görüntü gecikmesidir. Genel kare hızı düşüncesi için FPS mantığı sayfasına bakın; burada tekrarlanmaz.
WebGPU ile hedeflenen düşük ek yük yolu, bazı projelerde XR bütçesine katkı sağlayabilir — fakat «WebGPU açtım, XR otomatik ucuzladı» varsayımı doğru değildir; okuma için WebGPU girişi yeterli üst bağlantıdır.