3D Model Formatları · OBJ · Limitleri
Skeleton Yok: OBJ'de Kemik–Köşe Bağının Olmaması
«Rig Blender'da duruyor, OBJ'de kol oynamıyor» export unutkanlığı değil; dosyanın joint / weight taşıyamamasıdır. Animasyon Yok zaman eksenini kapattı; bu sayfa Limitleri'nin ikinci boşluğuna geçer: iskelet deformasyonu için gerekli bağ verisi formatta yoktur.
Holodepth'te skeleton limiti, «hareket clip'i yok» cümlesinin kardeşidir ama aynı değildir. Clip olsa bile (glTF'de) skin olmadan karakter eğilmez; OBJ'de ise ne clip ne skin vardır. Bu sayfa JOINTS / WEIGHTS / inverse bind / joint hiyerarşisi yokluğunu ürün dilinde sabitler. glTF skin sözleşmesi Skinning (glTF)'de kalır; burada yalnızca «OBJ neden kukla iplerini taşımaz?» sorusu yanıtlanır.
Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «OBJ köşe konumlarını taşır; hangi kemiğin hangi ağırlıkla ekeceğini taşımaz. o/g grupları iskelet değildir. Rig'li sahneden export, o anki deforme pozu statik v listesine pişirir. Canlı skin için glTF skins gerekir. Animasyon yok zamanı, skeleton yok deform bağını kapatır.»
Bu sayfanın sınırı · komşu konularla ayrım
Bu sayfa OBJ'nin skin / skeleton taşımama limitini anlatır:
- Kemik–köşe bağı kavramının dosyada yokluğu
o/gile iskelet yanılsaması- Bake edilmiş poz vs canlı deform
- Animasyon limitiyle ilişki (çakışmadan)
- Holodepth karar ve teşhis açıları
Bilinçli olarak dışarıda bırakılan konular:
- Zaman / clip yokluğu → Animasyon Yok
- PBR yokluğu → PBR Yok
- Dosya boyutu → Büyük Dosya Boyutu
- skins[], IBM, JOINTS/WEIGHTS → Skinning (glTF)
- Morph target listesi → glTF Morph / OBJ'de yok (üst seviye not)
- Three.js SkinnedMesh API → runtime
Kısa ayrım: Skeleton Yok «kim kimi eğer?» verisi yok · Animasyon Yok «zaman örnekleri yok» · Skinning (glTF) «bağ dosyada nasıl?»
İpsiz kukla: yalnızca son şekil
Skinning, kumaş noktalarının (köşelerin) askılara (joint) hangi ağırlıkla
tutunduğunu dosyada yazar. OBJ bu tutunma tablosunu bilmez: yalnızca
sonuç geometriyi görür. Export anında kol bükülüyse bükülü köşe
koordinatları v satırına yazılır; «dirsek joint'i %70 etkilesin»
bilgisi buharlaşır.
Fotoğraftaki gülümseme, yüz kaslarının ağırlık haritası değildir. OBJ o fotoğraftır; kas bağları başka formattadır.
Taşınmayan parçalar
Canlı iskelet deformasyonu için tipik olarak gereken ve OBJ core'da bulunmayan parçalar:
- Joint node listesi / kemik hiyerarşisi
- Köşe başına joint indeksleri (JOINTS)
- Köşe başına etkilenme ağırlıkları (WEIGHTS)
- Inverse bind matrices (bind uzayı)
- Mesh ↔ skin bağlantısı
Bunların format karşılığı glTF Skinning sayfasındadır. OBJ Temel Yapı
(v/f/vn/vt) bu listeye hiçbir satır eklemez.
o / g
iskelet değildir
«Arm», «Leg» adlı obje grupları CAD veya DCC etiketidir; joint matrisi veya weight taşımazlar ( Vertex Listesi · o/g, Material Bağlantısı · o/g).
Runtime'da o Arm mesh'ini ayrı Object3D yapıp elle döndürmek
rigid parçalamadır; skinning değildir. Dirsek bölgesi yumuşak
eğilmez; kesik sınırda çatlak görünür. Holodepth: grup adını armature sanmayın.
Bake: deforme pozun statik dondurulması
Rig'li sahneden OBJ export çoğu araçta Apply / Bake edilmiş köşe konumları üretir. Sonuç doğru görünen tek pozdur; yeniden poze edilemez. «Bind pose'a dön» için orijinal rig + skin format gerekir.
Bu, Animasyon Yok sayfasındaki «tek kare fotoğraf» ile uyumludur: bake hem zamanı hem bağ tablosunu siler. Fark vurgusu: burada silinen şey özellikle kim kimi eğer bilgisidir.
Weight paint'in ineceği yer yok
Sanatçı DCC'de weight paint yapmış olsa bile OBJ yazıcı bu boyamayı diskte saklayacak alan bulamaz. Yan dosya (.json weights) veya vendor satır Wavefront core değildir; web OBJLoader okumaz.
Morph / shape key timeline da aynı ailede «yok»tur; ayrı limit gibi düşünülse de skeleton sayfasının komşusudur: her ikisi de deform kontrol verisi eksikliğidir. Canlı morph için glTF morph targets.
İki kapı birlikte okunur
Karakter web hedefinde genelde her iki limit birden aşılmalıdır: clip (zaman) + skin (bağ). Yalnızca «animasyonlu glTF» deyip skin'siz rigid mesh bırakmak veya tersi yetmez.
- Clip var, skin yok → parçalar kayar / T-pose kilitli kalabilir
- Skin var, clip yok → Idle'da doğru bind; hareket yok
- OBJ → ikisi de yok → tek poz prop
Animasyon Yok sayfası zaman kapısını; bu sayfa bağ kapısını işler. Tekrar etmeden çapraz okuyun.
Ne zaman iskeletsizlik kabul edilir?
- Mobilya, bina, ürün kabuğu — organik eğilme yok
- Scan / CAD solid — rig beklenmez
- Sahne prop'u; kamera/orbit hareketi yeter
- Ara handoff: «şu anki silueti» paylaşmak
İnsan / yaratık / soft body benzeri deform → OBJ nihai paket olmasın. Kullanım Alanları (CAD, scan, static mesh) bu ayrımı ürün dilinde sürdürür.
Kaçış yolu: glTF skins (köprü)
DCC'den doğrudan glTF/GLB export (veya FBX → glTF) joint, weight ve IBM'i korur. OBJ ara adımında rig'i «temizlemek» veri kaybıdır; geri alınamaz. Holodepth kuralı: skeleton'lu varlık OBJ aşamasından geçmesin; statik prop'lar geçebilir.
Skin dosya sözleşmesi Skinning; oynatma runtime / AnimationMixer tarafında kalır.
Holodepth perspektifleri
Armature sahnede, dosyada yok
Viewport'ta kemikler görünür; export seçeneklerinde «armature dahil» OBJ için
anlamsızdır. Kontrol: export sonrası dosyada v dışında joint
benzeri yapı aramayın — yoktur.
Parçalı rigid sahte-rig
Kol / gövde ayrı OBJ + parent rotate ile «ucu ucuna» animasyon yapılabilir; eklemde volume korunmaz. Müşteriye «skinned» demeyin; «parçalı rigid» deyin.
Teşhis maddeleri
- Hedef canlı eğilme mi, yoksa tek poz mu?
- DCC'de armature var mı — export OBJ mi seçildi?
- Dosyada weight/joint izi var mı (yoksa beklenen)?
- o/g adları joint sanılıyor mu?
- Bake poz doğru mu, yeniden poze mi isteniyor?
- glTF skin yoluna geçildi mi?
Holodepth içgörüsü
«Rig kayboldu» ticket'ında önce Blender weight paneline değil export formatına bakın. OBJ seçildiyse kayıp değil; format dışı bırakmadır. Çözüm loader ayarı değil, glTF dağıtımdır.
Bağ kapandı; sırada yüzey modeli
Limitleri'nin üçüncü boşluğu modern materyal dilidir: PBR Yok.
Format okuyucusu özeti: OBJ skin taşımaz; bake edilmiş poz taşır. o/g ≠ joint. Weight paint kaybolur. Canlı karakter için glTF skins; OBJ statik siluet handoff'ta kalsın.