holodepth

Three.js · Etkileşim · Fly / FirstPerson

Fly Controls: uzayda sınırsız özgürlük

FlyControls düşüncesinin özü, bir uçuş kabını veya itkisiz uzay aracını yönetmektir: «zemin» ikincil bir referanstır; asıl deneyim, boşlukta akışkan öteleme ve dönüşle süzülmektir. İtki vektörü ile bakış vektörü birbirinden koparılabilir; böylece yan tarafa kayarken başka bir yöne bakmak mümkün olur.

Bu sayfa aynı dokümanda FirstPersonControls dilini de ele alır — çünkü tarayıcı projelerinde ikisi sıkça yan yana konumlanır: biri serbest keşif, diğeri ayakta yürüme ve nişan çizgisi. Temel çerçeve için Kontrol mantığı, nesne etrafında dönüş için OrbitControls ve serbest roll için TrackballControls sayfalarına dönebilirsiniz.

Bölümler: mekanik ve 6DOF, kullanım alanları, FirstPerson özeti, Fly vs FPS tablosu, UX ve üretim notları.

Mekanik yapı: altı serbestlik derecesi ve itki

Altı serbestlik (6DOF), üç öteleme (ileri–geri, sağ–sol, yukarı–aşağı) ile üç dönüşü (yaw, pitch, roll) kapsar. FlyControls tipik kurulumda roll’u kilitlemez; bu da uzay veya drone hissinin ayırt edici «yan yatma» yeteneğidir — yürüyen insan modelinden kökten ayrılır.

  • Girdi ayrımı: Fare veya işaretçi hareketi çoğu zaman bakış veya yön eksenini günceller; klavye (WASD) ve özel tuşlar (R/F veya Q/E gibi projeye göre değişen haritalar) itki üretir. İvme eğrisi doğrusal da olabilir, sürtünmesiz uzayda üstel ramp-up da — önemli olan kullanıcıya «patlıyorum» hissi vermemek için üst hız tavanıdır.
  • Bağımsız bakış: İleri vektör ile bakış vektörü zorunlu olarak çakışmak zorunda değildir. Süzülürken başınızı çevirerek kabini tarayabilirsiniz; hız vektörü hâlâ önceki itkiyi takip edebilir — gerçek bir simülasyonda bunu sürmek için ek görsel ipuçları (hız oku, küçük gösterge) düşünün.
  • Zemin ikincil: Y ekseni kaybolmaz ama «ayağımı yere basıyorum» varsayımı zayıftır; bu yüzden navigasyon yardımı olmadan kullanıcı büyük modellerde konumunu kaybedebilir.

Kullanım alanları: gezinti ve ölçek

Fly tarzı kontrol, «koordinatlara bağlı yürüyüş» yerine hızlı mesafe kat etme sunar; bunun bedeli yön duygusunun dağılabilmesidir.

  • Mimari ve walkthrough: Fabrika hattı, liman veya kampüs ölçeğinde çatıdan zemine tek akışta inip çıkmak mümkündür. Çarpışma yoksa bilinçli hayalet modu ile içten geçiş bazen üretim sürecinde bile istenir — son kullanıcıya açmadan önce duvarları yeniden açmayı unutmayın.
  • Devasa sahne grafikleri: Şehir maketi veya altyapı boru hattında uzun mesafe «uçuş», kamera animasyonuna göre daha ucuz deneme/yanılma ile gezinmeyi sağlar.
  • Uzay ve mikro yerçekimi: Yerçekimi vektörü tanımsız veya çok zayıfsa Fly, trackball ile birlikte en doğal tandemdir; astronot veya uydu etrafında serbest uçuş hissi üretir.

FirstPersonControls: dünyayı bir karakterin gözünden

Modern oyunların «FPS» dilinin web karşılığında FirstPersonControls, bakışı insan ölçeğinde tutmayı hedefler: baş döndürme sınırlıdır, yukarı vektör çoğu kurulumda dünya ile hizalı kalır ve kullanıcıya «zeminde duruyorum» mesajı verilir.

Pitch ve yaw kısıtları

Yaw genelde tam tur serbesttir; pitch ise boyun anatomisine yaklaştırılarak çoğu projede yaklaşık −90° ile +90° arasında kesilir — gökyüzüne bakıp sonra gerisin geri omurgayı kırmış gibi devam etmek yerine, bakış konforlu bir konuda kalır.

Pointer Lock API

Sürekli dönüş için fare imlecinin ekranda kalması gerekir; pointer lock imleci görünmez yapıp göreceli hareket (movement delta) üretir. Kaçış için Esc veya özel bir düğme sunmak erişilebilirlik için kritiktir — kullanıcı tuşa bastığında kilidin kalktığından emin olun.

Yatay hareket sabitliği

«İleri» tuşuna basıldığında saf matematiksel yön, kameranın baktığı vektör olabilir; fakat yürüme modunda bu vektör çoğu zaman zemin düzlemine projeksiyon ile düzleştirilir — böylece kullanıcı gökyüzüne bakarken «havada süzülüyorum» yerine zeminde ilerler (physics character controller ile birleştirildiğinde bu varsayım güçlenir). Fly modunda ise projeksiyon kaldırılıp tam 3B itki kullanılır; iki mod arasındaki farkı net etiketlemek şarttır.

Kritik ayrım: Fly mı, FPS mi?

Doğru seçim «hangisi daha havalı?» değil; kullanıcıya hangi uzamsal sözleşmeyi öğretmek istediğinizdir.

Özellik Fly Controls FirstPerson Controls
Yerçekimi / zemin Tipik olarak zayıf veya yok; uçuş modu. Genelde güçlü; yürüyüş düzlemi ve ayakta durma hissi.
Eksen kilidi Roll dahil tam serbestlik mümkün. Yukarı ekseni dünya ile hizalı kalır; roll pratikte sıfır.
Öğrenme eğrisi Daha dik; yön kaybı riski yüksek. Geniş oyuncu kitlesi için tanıdık.
Parlak senaryolar Uzay, drone, hayalet mimari gezinti. FPS tarzı oyunlar, müze içi walkthrough, ürün içi vitrin.

Uygulama ipuçları ve UX

Holodepth çizgisinde bu kontrolleri yayımlarken teknik doğruluk kadar konfor politikası da ürün kalitesidir.

  • Hareket hastalığı (motion sickness): Web üzerinde FPS tarzı hızlı yaw, vestibüler uyumsuzluk yaratabilir. Çözüm seti: düşük başlangıç hassasiyeti, isteğe bağlı FOV sınırı, kısa süreli ivme yumuşatması ve kullanıcı ayarında «konfor modu». Kamera sarsıntısı (camera shake) ekliyorsanız şiddeti ayarlanabilir yapın.
  • Çarpışma: Varsayılan kontrol kodları duvara sürtünmez; müze veya ofis gezintisinde gerçekçilik için basit bir raycast tabanlı süpürme, kapsül gövde veya hafif fizik katmanı eklenmelidir. Aksi halde duvarların içinden geçmek güven ilişkisini zedeler.
  • Girdi tamponu: Aynı karede fare deltasını okuyup klavye durumunu birleştiren yapı tutarlı olmalıdır; tuşların «basılı tutuldu» halini kare başına bir kez özetlemek, çift sayım ve titremeyi azaltır. Öncelik sırası (ör. menü açıkken hareketi kes) erken netleştirilmelidir.

Holodepth teknik notu

Fly ve FPS arasında geçiş yapan uygulamalarda mod etiketini arayüzde gösterin («Serbest uçuş» / «Yürüyüş»); kullanıcı hangi fizik kurallarının geçerli olduğunu bilmezse hızlıca hayal kırıklığına düşer. Mobil tarayıcıda pointer lock desteği sınırlı olabilir; dokunmatik için alternatif iki parmak davranışını veya sanal joystick’i ayrı doğrulayın.