Web ve oyun engine'leri için 3D animasyon nasıl dışa aktarılır
Web veya bir oyun engine'i için 3D animasyon dışa aktarmak için glTF — GLB, bunun tek dosyalı binary biçimidir — veya FBX kullanın. Her ikisi de node hiyerarşisini, skeleton'ları, skin weight'lerini ve keyframe'lenmiş klipleri depolar. glTF, tarayıcıların ve çoğu engine'in doğal olarak okuduğu açık bir standarttır; FBX ise Maya, 3ds Max, Unity ve Unreal pipeline'larının köklü değişim formatıdır. Aktarımda neyin kalacağı dışa aktarıcıya bağlıdır, bu nedenle constraint'ler, IK ve procedural hareketler önce keyframe'lere bake edilir.
Kısa cevap
Formatın depolayamadığı her şeyi — IK, constraint'ler, driver'lar ve simülasyonlar — keyframe'lere bake edin, kliplerin adlarını ve uzunluklarını kontrol edin, ardından web ve çoğu modern motor için GLB veya bir pipeline'ın beklediği yerlerde FBX olarak dışa aktarın. Transform'lar, iskelet animasyonu ve shape-key ağırlıkları aktarılır; rig kontrolleri, özel curve'ler ve key'lenmiş materyal değerleri genellikle aktarılmaz. Güvenmeden önce dosyayı hedefte açın.
Adım adım
- 1
Formatın depolayamadıklarını bake edin
Dosya formatları, onları oluşturan sistemleri değil, keyframe'leri depolar. IK solver'lar, constraint'ler, driver'lar, expression'lar ve simülasyonlar dışa aktarmadan önce sıradan key'lere örneklenmelidir, aksi takdirde dosya, bulundukları yerde hareket olmadan gelir. Studio'da, Rigging panelindeki Bake IK ve driver'lar için Animate ▸ Bake motion to keyframes… seçenekleri bunu yapar.
- 2
Klipleri adlandırın ve kırpın
Motorlar, dosyadaki her animasyonu ismine göre ayrı bir klip olarak içe aktarır. Kliplere bir programcının tanıyacağı isimler verin — Walk, Idle, Open — ve her birinin uzunluğunu kontrol edin, çünkü bitişten yirmi kare sonra fazladan bir anahtar içeren bir klip, yirmi karelik boşluk oynatacaktır.
- 3
Formatı seçin
Web için ve glTF'yi doğal olarak okuyan Godot, Blender, three.js ve Babylon.js için GLB kullanın; Unity bunu glTFast gibi bir paket aracılığıyla okur ve Unreal da içe aktarır. Pipeline'ın etrafında inşa edildiği yerlerde FBX tercih edin — Maya, 3ds Max ve birçok Unity ve Unreal projesi gibi.
- 4
Dışa Aktar
Studio’da, Dosya ▸ 3D modeli dışa aktar… seçeneğini tıklayın ve animasyon taşıyan iki hedef olan GLB veya glTF'yi seçin. Sahnedeki her klip, üzerinde çalıştığınız klip ilk olmak üzere yazılır. Web için dışa aktar… seçeneği, animasyonu oynatan bir sayfa, gömülü içerik, React bileşeni veya three.js modülü üretir.
- 5
Hedefte kontrol edin
Dosyayı ait olduğu motor veya görüntüleyiciye aktarın ve her klibi oynatın. Ölçeği, bakış yönünü, döngüyü ve yumuşatılmış hareketin hala yumuşak olup olmadığını kontrol edin — aşağıdaki sorunlar ya burada ortaya çıkar ya da hiç çıkmaz.
Animasyon için glTF ve GLB
glTF 2.0, animasyonu kanallar olarak depolar; her kanal bir node'un translation, rotation veya scale'ini ya da bir mesh'in morph-target (shape-key) ağırlıklarını hedefler. Her kanal, LINEAR, STEP veya CUBICSPLINE interpolasyon ile keyframe'leri örnekler, zamanlar frame yerine saniye olarak depolanır ve rotation'lar quaternion'lardır. Skinned mesh'ler, joint'lerini, inverse bind matrix'lerini ve set başına vertex başına dört adede kadar ağırlığı taşır.
Bu kasıtlı olarak dar bir kapsamdır, bu yüzden glTF neredeyse her yerde dönüştürme olmadan yüklenir. Bunun dışındaki her şey — key'lenmiş bir materyal rengi, bir ışığın yoğunluğu, bir kameranın odak uzaklığı — KHR_animation_pointer gibi bir extension gerektirir ve extension'lar için destek engine'ler arasında değişir. glTF ayrıca tanım gereği metre ve Y-yukarıdır, bu yüzden nadiren yanlış boyutta gelir.
Animasyon için FBX
FBX, Autodesk'in tescilli formatıdır ve yirmi yıldır rigged, animasyonlu karakterleri DCC'ler ve oyun engine'leri arasında taşımak için varsayılan olmuştur. Skeleton'ları, skinning'i, blend shape'leri, birden fazla take'i ve bir frame rate'i depolar ve Mixamo, Unity ve Unreal hepsi bu dili akıcı bir şekilde konuşur.
Zayıf yönleri, onu esnek kılanlarla aynıdır: birimler ve eksen kuralları dışa aktarıcıya göre değişir, bu nedenle bir araçtan gelen bir FBX yüz kat daha büyük veya sırtüstü yatmış olarak gelebilir ve detaylar SDK versiyonları arasında farklılık gösterir. Maya ve Mixamo'dan gelen birçok dosya santimetre cinsindendir, glTF ise metre cinsindendir.
Neler aktarılır, neler aktarılmaz
Güvenilir şekilde aktarılanlar: object transform'ları, kemikler üzerindeki skeletal animasyon, shape-key ağırlıkları ve klip yapısı. Genellikle kaybedilenler: IK ve constraint'ler, driver'lar ve expression'lar, özel rig kontrol'leri ve key'lenmiş materyal, ışık ve kamera lens değerleri. İlk grup kayıpları key'lere bake edin; ikincisi için, hedefin bir extension'ı destekleyip desteklemediğini veya efektin yeniden inşa edilmesi gerekip gerekmediğini kontrol edin.
Curve'ler daha incelikli bir konudur. Dışa aktarıcılar, bezier tangent'larını koruyup korumadıkları, cubic-spline verisi yazıp yazmadıkları veya curve'ü key'lere örnekleyip örneklemedikleri konusunda farklılık gösterir. Yalnızca ayarladığınız key'leri, aralarında linear interpolasyon ile yazan bir dışa aktarıcı, geniş aralıklı key'ler arasındaki güçlü bir ease'i düzleştirir. Eğer engine'de tam easing önemliyse, ease içine key'ler ekleyin veya hareketi frame rate'te bake edin.
Mixos Studio'dan animasyon dışa aktarma
Studio'nun GLB ve glTF dışa aktarımları, keyframe'lenmiş object transform'larını ve shape-key ağırlıklarını taşır, her object'in kendi local space'inde canlanması için sahne hiyerarşisini korur ve sahnedeki her klibi yazar. FBX, OBJ, STL ve USDZ hedefleri animasyon taşımaz ve dışa aktarma iletişim kutusu indirmeden önce bunu belirtir.
Bilmeye değer iki sınırlama vardır. Key'ler, onları ayarladığınız zamanlarda yazılır ve dosya içinde aralarında linear olarak interpolate edilir, bu nedenle bir engine'in onu tam olarak yeniden üretmesi gerekiyorsa uzun bir ease içine bir key ekleyin. Ve key'lenmiş materyal, ışık ve kamera değerleri sahnede kalır, çünkü temel glTF'in bunlar için bir kanalı yoktur. .mxs sahne dosyası, bir model formatının yapamayacağı her şeyi — generator'lar, modifier'lar, animasyon ve render ayarları — hedef Studio'nun kendisi olduğunda saklar. Dışa aktarma ücretli bir plan dahilindedir; animasyon ve önizleme ücretsizdir.
Sıkça sorulan sorular
Animasyon için GLB mi yoksa FBX mi daha iyidir?
Web için ve Godot ile three.js gibi glTF'i doğal olarak okuyan engine'ler için GLB — açık bir standarttır, metrik tabanlıdır ve araçlar arasında tutarlıdır. FBX ise, özellikle Maya, 3ds Max ve birçok Unity ve Unreal projesinde pipeline'ın etrafında inşa edildiği yerlerde kullanılır. Her ikisi de skeletal animasyon ve shape key'leri taşır.
glTF animasyonu destekler mi?
Evet. glTF 2.0, node'un translation, rotation ve scale'ini ve morph-target ağırlıklarını linear, step veya cubic-spline interpolasyon ile canlandırır ve skinned mesh'leri destekler. Materyal değerleri gibi diğer özelliklerin canlandırılması bir extension gerektirir.
Dışa aktardığım animasyon neden hareket etmiyor?
Genellikle hareketin formatın depolamadığı bir şeyden — bir IK solver, bir constraint, bir driver veya bir simülasyon — gelmesi ve dışa aktarmadan önce keyframe'lere bake edilmemesidir. Diğer yaygın neden ise engine'in klibi oynatmamasıdır: çoğu, klibin atanmasını veya otomatik oynatılmaya ayarlanmasını gerektirir.
Animasyonum engine'de neden yanlış boyutta veya dönmüş durumda?
Birim ve eksen kuralları. glTF her zaman metre ve Y-yukarıdır; FBX ise dışa aktarıcıya bağlıdır ve genellikle santimetredir. Dışa aktarma sırasında birim ve eksen seçeneklerini ayarlayın veya klip başına düzeltmek yerine içe aktarırken tek bir scale uygulayın.
Bir tarayıcıdan animasyon dışa aktarabilir miyim?
Evet. Mixos Studio, animasyonlu sahneleri her kliple birlikte GLB veya glTF olarak ya da bunları oynatan bir web sayfası veya three.js modülü olarak dışa aktarır. Animasyon yapmak ücretsizdir; dışa aktarma ücretli bir plan dahilindedir.
Bir sahneyi canlandırın ve GLB olarak dışa aktarın — her klip, web'in ve çoğu engine'in doğal olarak okuduğu formatta.