holodepth

Three.js · Etkileşim · Hareket

Damping: dijital sürtünme ve ataletin matematiği

Damping (sönümleme), hareketin kontrolsüz sıçramasını kesen, zamana yayılmış bir direnç katmanıdır. WebGL sahnesinde kameraya uygulandığında, fare veya dokunuş «soğuk matematik» yerine kütlesi olan bir cismin itildiği hissini verir — kullanıcı bıraktığında süzülme, yeniden bastığında ise ivmenin yumuşak birikmesi bu algının omurgasıdır.

Bu sayfa kontrol işleme katmanında damping’i soyutlar; genel girdi → işleme zinciri için Kontrol mantığı · işleme, easing ve animasyon zamanı için Lerp & easing sayfasına köprü kurar — burada özellikle kamera etkileşimi ve kare süresi bağlamı öne çıkar.

Bölümler: atalet ve sürtünme, lerp ile yumuşatma, neden damping, senaryo tablosu, kare hızından bağımsızlık.

Atalet ve sürtünme: kullanıcı dilinde

Fizik motorunda kütle ve kuvvet tam model gerektirir; etkileşim kodunda ise çoğu zaman davranışsal metafor yeterlidir. Burada «atalet» kelimesi gerçek kütle hesabını değil, hız durumu ile gösterge durumu arasındaki gecikmeyi kasteden kısa bir isimlendirmedir — böylece tasarım kararları mühendislik ve UX ekibiyle ortak dilde tartışılır.

  • Atalet (inertia): Komut kesilse bile durumun bir süre daha «aynı yönde» güncellenmeye devam etmesi — örneğin hızlı bir fare jestinden sonra kameranın kısa süre süzülmesi. Çıplak konumsal lerp ile taklit edilirken aslında çoğu zaman birinci dereceden takip (hedefe yaklaşan süzgüç) kurulur; tam velocity tabanlı integrasyon şart değildir ama zihinsel model aynıdır.
  • Sürtünme / sönüm (friction benzeri): Bu süzülmenin katlanarak azalması; sonsuz kaymayı engelleyen sayısal karşı kuvvet. Gerçek sürtünmeden farklı olarak burada amaç fizik doğruluğu değil, algılanan kontrol ve istenmeyen salınımın kesilmesidir. Az sönüm «salınımlı» geçici overshoot; fazla sönüm ise yapışkanlık — ikisi de ürün tonuna göre ayarlanır.

Three.js örneğinde OrbitControls tabanlı düzenlerde yumuşatma bayrağı ve güncelleme çağrısı birlikte düşünülür — detay için OrbitControls · üretim ayarları; TrackballControls içinse momentum karakterin parçasıdır (Trackball dinamiği). İki kontrolde de «aynı rakam» farklı his verebilir; tuning sahne ölçeği ve fare hassasiyetiyle yeniden yapılır.

Yumuşak hareket: doğrusal yaklaşım

En yaygın uygulama, mevcut durumu her karede hedefe doğru küçük adımlarla yaklaştırmaktır — doğrusal ara değerleme (lerp). Sinyal işleme bakışıyla bu, basit bir düşük geçiren takip filtresidir; keskin girdi köşelerini yuvarlar. Eğri tabanlı easing ve zaman çizelgesi için ayrıca Lerp & easing sayfasına bakın — burada özellikle kare başına bir adım atan «gerçek zamanlı takip» vurgulanır.

Pozisyon veya açısal bir durum vektörü P için özet ilişki şöyle yazılır:

Pyeni = Pmevcut + (PhedefPmevcut) · α

  • α (sönüm / yakınlaşma katsayısı): 0 ile 1 arasında seçilir; küçük α «ağır» ve akışkan, büyük α ise daha keskin tepki üretir. Aynı α’nın farklı kare sürelerinde farklı zaman sabiti ürettiğini unutmayın — bu yüzden bir sonraki bölümde Δt bağlantısı kritiktir. Tek karede Δt kabarırsa yüksek α ile küçük bir aşım (hedefi sonunda geçme) görülebilir; bunu ya üstel forma geçerek ya da α’yı kare süresine göre tavanlayarak yumuşatırsınız.
  • Akış: Girdi değiştikçe Phedef sıçrar; Pmevcut ise her karede bir miktar geriden gelir. Böylece ani duruş yerine sürekli türevlenebilir bir geçiş elde edilir. Kodda Phedef’i ham girdiden, Pmevcut’u ise görüntülenen kameradan ayırmak hata ayıklamayı kolaylaştırır.
  • Dönüşler: Euler açılarında kısa yol sorunu yaşanırsa quaternion veya eksen–açı temsilinde slerp düşünülür; konum için lerp genelde yeterlidir. Öteleme ile dönüş için farklı α seçmek yaygındır: pozisyon daha «tembel», bakış daha «uyanık» kalabilir.

Neden damping kullanmalıyız?

Damping bir «süs» değildir; çoğu zaman algılanan kaliteyi belirleyen ana parametredir. Aşağıdaki gerekçeler üst üste biner — yalnızca birini seçmek yerine kademeli tuning yapılır.

  • «Robotik» hissin kırılması: Girdi kesildiği anda duran kamera, beyin için doğal olmayan bir adım fonksiyonu üretir; sönümleme bu keskinliği yuvarlar — özellikle web’de düşük veya değişken kare süresinde his daha belirginleşir. Tam tersi uçta aşırı yumuşatma, düşük gecikmeli nişan veya hassas tıklama gerektiren görevlerde «balon içinde» his yaratabilir; bu yüzden profesyonel araçlar çoğu zaman profil veya mod bazlı damping sunar.
  • Hassasiyet ve mikro titreme: Yüksek çözünürlüklü modellerde küçük el titremeleri ham Δ olarak kameraya yapışır; düşük geçiren bir takip katmanı istenmeyen yüksek frekans bileşenini süzer (tamamen kaybetmeden). Çok agresif süzme ise yavaş panolarda detayı kaçırmaya yol açar — kullanıcıya ince / kalın iki rejim veya kademeli hassasiyet kaydırması düşünün.
  • Hareket rahatsızlığı (motion sickness): Ani açı sıçramaları vestibüler uyumsuzluğu tetikleyebilir; yumuşak ivme profili konforu artırır — yine de kişiye göre hassasiyet ayarı sunmak üretim standardıdır (Fly · UX ile örtüşür). Erişilebilirlikte «azaltılmış hareket» tercihleri için damping’i seçici olarak kısaltmak veya devre dışı bırakmak da söz konusudur.
  • Girdi ve çıktı birlikte: Yumuşatma gecikme ekler; girdi eşlemesi ile aynı karede çözülürken önce ham aksiyonu güncelleyip sonra takip katmanını çalıştırmak, iptal edilen jestlerin süzülerek hayalet gibi sürmesini azaltır (Input mapping · birleşik strateji).

Senaryoya göre sönüm şiddeti

Aşağıdaki α aralıkları örnek omurgadır; sahne ölçeği ve kullanıcı testine göre ayarlanmalıdır. Önemli olan rakamı kopyalamak değil, «neden yavaş veya hızlı» sorusunu tartışmaktır.

Senaryo α tipik bandı Beklenen etki
Ürün sergileme Düşük–orta (ör. 0,02–0,08) Premium, ağır ve kontrollü vitrin hissi.
FPS / aksiyon Daha yüksek (ör. 0,12–0,25) Tepki süresi kısalır; nişan ve kaçış için çeviklik.
Fly / drone Orta (ör. 0,06–0,12) Havada süzülme; keskin duruş yerine süzülerek durma.

Aynı sahne içinde mod değişince damping politikasını da değiştirmek sık pattern’dir — kullanıcıya hangi rejimde olduğunu söylemek önemlidir (Orbit · Fly · FPS · UX).

Kare hızından bağımsızlık ve Δt

Sabit α ile çarpılan kare başına lerp, kare süresi uzayınca «yapışkan» uzar; kısalınca ise daha sertleşir — kullanıcı grafik ayarı değiştirdiğinde aynı yazılımın farklı araçlar gibi hissettirmesi çoğu zaman buradan gelir.

  • Δt ile ölçekleme: Yakınlaşma oranını zamana bağlamak için α yerine üstel yaklaşım 1 − e−Δt / τ (τ zaman sabiti) kullanılabilir; böylece 30 veya 120 Hz’de durma süresi yaklaşık aynı kalır.
  • Sabit zaman adımı: Bazı projeler fizik ile uyum için iç döngüde sabit Δt biriktirir; kamera yumuşatması da bu alt adımlara bağlanabilir — karmaşıklık artar fakat deterministik davranış kolaylaşır.
  • Üst sınır: Çok uzun kare atlamlarında Δt tavanı koymak titreme ve aşırı sıçramayı sınırlar.

Holodepth teknik notu

Hazır kontrollerde yumuşatma açıksa animasyon döngüsünde güncelleme çağrısını atlama hatası yapmayın — bir kare eksikliği his «kopması»na yol açar. Mobil güç tasarrufunda düşen kare hızını özellikle Δt bağlı çözümlerle test edin; sabit α ile bırakılan kod üretimde sürpriz üretir.