Three.js · Çoklu model · Object3D · Pivot
Pivot yönetimi: Hareketin ağırlık merkezini kontrol etmek
Pivot, bir Object3D düğümünde dönüş (rotation) ve ölçek (scale) işlemlerinin
bağlandığı yerel köktur: yerel koordinatların başlangıcı
(0, 0, 0)dır. Kısaca aynı açı değerleri bile, pivot neredeyse hareketin
«hangi nokta etrafında» gerçekleşeceğini o noktadan belirler.
position çocuğu ebeveynin uzayında kaydırır; rotation ve
scale ise o düğümün yerel başlangıcına göre uygulanır. Bu sayfada sıra
şöyle: önce tipik pivot hatasının belirtisi, sonra modeli yeniden export etmeden
düzeltme (grup ve geometri), ardından nesne türüne göre beklentiler; en sonda pivotun
ölçeğe etkisi ve tek bakışta özet tablo yer alır — böylece üst başlık tanımı kalır,
alt bölümler birbirinin yerine geçmez.
Ebeveyn–çocuk zinciri ve menteşe gibi bağların kurulması için Model parenting; birden fazla kökü sahnede birleştirme için Scene graph · runtime sayfalarına bakın — burada yalnızca «dönüş/ölçek referansını nereye koyuyorum?» sorusu işlenir.
Yanlış pivot = yanlış fizik (rotation sorunları)
Geometrik merkez, görsel denge için kullanışlıdır; dönüş ekseni olarak seçmek ise çoğu mekanik parçada yanlıştır. Pivot, «cismin ağırlık merkezi nerede?» sorusunun cevabı değil; «kısıt (menteşe, mil, eklem) nerede ve etrafında ne dönüyor?» sorusunun cevabıdır.
- Belirti: Kanat, kol veya kapı gibi uzun formlar, beklediğiniz menteşe/eklem yerine gövdenin ortasından dönüyorsa pivot genelde merkeze sabitlenmiştir.
- Algı: Matematiksel olarak geçerli bir dönüş bile, kısıtla örtüşmediğinde inandırıcılığı düşürür; izleyici hatayı adlandırmasa da hareketi «havada» hisseder.
Pivot Playground aşağıda tek bir kapı levhası ile iki durumu üst üste gösterir: aynı animasyon açısı, farklı dönüş referansı. İsterseniz orbit ile sahneyi çevirin; pivot işaretini açıp kapatarak eksenin nerede olduğunu netleştirin.
Canlı lab · Kapı menteşesi · r170
| Durum | Etki |
|---|---|
| Wrong | Kapı ortadan döner; menteşe hissi yoktur. |
| Correct | Kanat menteşe ekseninde açılır. |
Aşağıdaki bölümde aynı fikri kodla (grup sarmalayıcı / geometri
translate) genelleştiririz; senaryolar başlığında kapı dışındaki örnekler (mil,
eklem zinciri) özetlenir.
Modelleme hatalarını runtime’da düzeltmek
Kaynak dosyada pivotu düzeltmek en temizidir (Blender, Maya, 3ds Max vb.). Stok
glTF / FBX modellerinde ise kök sıklıkla
dünya öncülüğünde (0, 0, 0)’a yapışık veya geometriyle hizasız kalır.
Pivot Playground’daki
Correct düzeni, aşağıdaki grup yönteminin birebir görselidir.
İki teknik yol aynı soruya farklı cevap verir: biri sahne hiyerarşisinde yeni kök ekler,
diğeri vertex verisini oynatır.
A. Grup (wrapper) stratejisi
THREE.Group ile sarmalamak, geometriyi veya dosyayı değiştirmeden pivotu
taşır: dönüş artık grubun yerel kökünde uygulanır.
- Boş bir
THREE.Groupoluşturup dünya veya ebeveyn uzayında, dönmesi gereken eksen üzerinde konumlandırın. - Modeli (mesh veya alt sahne grafiği) grubun çocuğu yapın.
- Çocuğun
position(ve gerekirserotation) değerleriyle gövdeyi öyle kaydırın ki gerçek dönüş hattı grubun(0,0,0)’ına denk gelsin.
Sonuç: Animasyonu gruba verirsiniz; alt model stok halinde kalabilir. Undo ve takım çalışması açısından genelde tercih edilen yoldur.
B. Geometriyi öteleme
(BufferGeometry.translate)
mesh.geometry.translate(x, y, z), düğümün position’ını
değiştirmeden köşeleri (vertices) kaydırır; yerel kök ile örgü
arasındaki ilişki kalıcı olarak değişir. Aynı BufferGeometry örneğini paylaşan
birden fazla mesh varsa hepsi etkilenir; bounding hesaplarını gerekiyorsa yenileyin.
Örnek kod kesiti
Aşağıdaki blok, yerel ötelemeden sonra sınırları güncellemeyi hatırlatır; sözdizimi
renkleri sitenin Prism teması ile (prism-holodepth.css) uygulanır.
// Örnek: geometriyi yerelde x ekseninde kaydırma
mesh.geometry.translate(offsetX, 0, 0);
mesh.geometry.computeBoundingSphere(); // gerektiğinde sınırları güncelleyin
Kritik kullanım senaryoları
Burada her satır farklı bir kısıt türüne karşılık gelir: menteşe (doğrusal eks), eklem zinciri (hiyerarşi), dönme simetrisi (dairesel gövde). Aynı «pivotu doğru yere koy» ilkesi, uygulama alanına göre farklı geometrik hedef demektir.
Kapılar ve pencereler
Dönüş ekseni, kanadın menteşe doğrusu ile çakışmalıdır; pivotu yan veya üst/alt köşeye
taşımak için pratikte çoğunlukla grup
stratejisinde anlatılan Group yolu kullanılır. Pencerelerde
menteşe yönü farklı olsa da kural aynıdır: yerel Y veya X
hangisi «açılım ekseni»yse, kök o eksen üzerinde sabit kalmalıdır.
Mekanik parçalar (dişliler ve robot kolları)
Burada mesele tek bir parçanın merkezi değil, zincirdeki her eklem için ayrı köktür: omuz, dirsek, bilek düğümlerinin her birinin pivotu ilgili mafsalın dönüş merkezine oturmalıdır. Üst eklem döndüğünde alttakilerin taşınması parenting ile gelir; yanlış pivot ise «kol gövdeden kopmuş» gibi bağımsız dönüşler üretir.
Dönen objeler (pervaneler ve tekerlekler)
Silindirik gövdelerde hedef geometrik simetridir: dönüş ekseni, dairenin geometrik merkezinden ve mümkünse kütle dağılımının dengelediği noktadan geçmelidir. Küçük bir eksen kayması, yüksek hızda gözle görülür yalpalama (wobble) üretir; burada menteşe değil, mil hizalaması ön plandadır.
HoloDepth teknik notu: Pivot ve scale etkisi
Üst bölümlerde pivotu dönüş ekseni olarak düşündük. Aynı yerel kök, scale
uygulandığında da büyümenin hangi yöne «yaslandığını» belirler; bu
animasyon tasarımıdır; üstteki «yanlış pivot» teşhisiyle aynı şey değildir; burada
bilinçli görsel tercih söz konusudur.
- Kök gövdeyle çakışıkken ölçek genelde daha simetrik görünür.
- Kök zemine yakınsa büyüme yukarı doğru «kalkan» hissi verir (ağaç, bina, bar dolumu).
- Kök bir kenara yakınsa ölçek, o kenardan uzaklaşan yöne doğru genişler (panel açılımı, kapı pervazına yaslanan büyüme vb.).
UI öğelerinde kök sıklıkla sol üst veya merkez seçilir; burada amaç fizik değil hizadır — tablodaki UI satırıyla uyumludur.
HoloDepth özet stratejisi
Tablo yalnızca karar özeti içindir; kapı ile dairesel dönen gövde ayrımı
senaryolar bölümünde, grup ile
translate ayrımı runtime düzeltme bölümünde, ölçek hissi pivot ve scale bölümünde
ayrıntılandı.
| Obje tipi | İdeal pivot konumu | Uygulama yöntemi |
|---|---|---|
| Karakter | Ayak tabanlarının tam ortası | Zemine tam basması için; genelde grup veya iskelet kökü. |
| Kapı | Menteşe kenarı (dikey aks) | Gerçekçi açılma için; Group sarmalayıcı veya geometri
translate.
|
| Pervane | Geometrik merkez | Yalpalama olmaması için; merkezleme modelde veya ölçümle doğrulanır. |
| UI paneli | Genellikle sol üst veya merkez | Hizalama kolaylığı için; yerel (0,0,0) tasarım kararına bağlıdır.
|