holodepth

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.