Scopri Mixos AIScopri di più

Come esportare animazioni 3D per il web e i motori di gioco

Per esportare animazioni 3D per il web o un motore di gioco, usa glTF — GLB è la sua forma binaria a file singolo — o FBX. Entrambi memorizzano la gerarchia dei nodi, gli scheletri, i pesi della skin e le clip con keyframe. glTF è lo standard aperto che i browser e la maggior parte dei motori leggono nativamente; FBX è il formato di interscambio consolidato delle pipeline di Maya, 3ds Max, Unity e Unreal. Ciò che sopravvive al trasferimento dipende dall'esportatore, quindi constraint, IK e movimento procedurale vengono prima “baked” in keyframe.

Di

La risposta breve

Fai il bake di tutto ciò che il formato non può memorizzare — IK, constraints, driver e simulazioni — in keyframe, controlla i nomi e le lunghezze delle clip, quindi esporta GLB per il web e la maggior parte dei motori moderni, o FBX dove una pipeline lo richiede. Transform, animazione scheletrica e pesi delle shape key vengono trasferiti; i controlli del rig, le curve personalizzate e i valori dei materiali keyframati di solito no. Apri il file nel target prima di farci affidamento.

Passo dopo passo

  1. 1

    “Bake” ciò che il formato non può memorizzare

    I formati di file memorizzano i keyframe, non i sistemi che li hanno creati. I risolutori IK, i constraint, i driver, le espressioni e le simulazioni devono essere campionati in keyframe ordinari prima dell'esportazione, altrimenti il file arriverà senza movimento dove si trovavano. In Studio, “Bake IK” nel pannello Rigging e “Animate ▸ Bake motion to keyframes…” per i driver fanno entrambi questo.

  2. 2

    Nomina e taglia le clip

    I motori importano ogni animazione nel file come una clip separata, per nome. Dai alle clip nomi che un programmatore riconoscerà — Walk, Idle, Open — e controlla la lunghezza di ciascuna, perché una clip con un keyframe fuori posto venti fotogrammi dopo la fine riprodurrà venti fotogrammi di nulla.

  3. 3

    Scegli il formato

    GLB per il web e per Godot, Blender, three.js e Babylon.js, che leggono glTF nativamente; Unity lo legge tramite un package come glTFast, e anche Unreal lo importa. FBX dove la pipeline è costruita attorno ad esso — Maya, 3ds Max e molti progetti Unity e Unreal.

  4. 4

    Esporta

    In Studio, File ▸ Esporta modello 3D… e scegli GLB o glTF — oppure FBX, che trasporta l'animazione di oggetti e scheletri e i pesi di skinning, ma non gli shape-key o le mappe di texture. Ogni clip nella scena viene scritta, con quella su cui stavi lavorando per prima. Esporta per il web… produce una pagina, un embed, un componente React o un modulo three.js che riproduce l'animazione.

  5. 5

    Verifica nel target

    Importa il file nel motore o nel viewer a cui è destinato e riproduci ogni clip. Controlla la scala, la direzione, il looping e se il movimento eased è ancora fluido — i problemi elencati di seguito si manifestano qui o per niente.

glTF e GLB per l'animazione

glTF 2.0 memorizza l'animazione come canali, ciascuno mirato alla traslazione, rotazione o scala di un nodo, o ai pesi del morph-target (shape-key) di una mesh. Ogni canale campiona i keyframe con interpolazione LINEAR, STEP o CUBICSPLINE, i tempi sono memorizzati in secondi anziché fotogrammi e le rotazioni sono quaternioni. Le mesh skinned trasportano i loro joint, le matrici di inverse bind e fino a quattro pesi per vertice per set.

Questo è intenzionalmente ristretto, motivo per cui glTF si carica quasi ovunque senza conversione. Qualsiasi cosa al di fuori di esso — un colore di materiale keyframe, l'intensità di una luce, la lunghezza focale di una telecamera — richiede un'estensione come KHR_animation_pointer, e il supporto per le estensioni varia tra i motori. glTF è anche in metri e con Y-up per definizione, quindi raramente arriva con la dimensione sbagliata.

FBX per l'animazione

FBX è il formato proprietario di Autodesk ed è stato il predefinito per il trasferimento di personaggi riggati e animati tra DCC e motori di gioco per due decenni. Memorizza scheletri, skinning, blend shape, take multipli e un frame rate, e Mixamo, Unity e Unreal lo “parlano” tutti fluentemente.

Le sue debolezze sono le stesse che lo rendono flessibile: le convenzioni di unità e assi variano a seconda dell'esportatore, quindi un FBX da uno strumento può arrivare cento volte troppo grande o sdraiato sulla schiena, e i dettagli differiscono tra le versioni SDK. Molti file da Maya e Mixamo sono in centimetri, mentre glTF è in metri.

Cosa viene trasferito e cosa no

Trasferito in modo affidabile: trasformazioni degli oggetti, animazione scheletrica sulle ossa, pesi degli shape-key e la struttura della clip. Solitamente perso: IK e constraint, driver ed espressioni, controlli rig personalizzati e valori keyframe di materiale, luce e lente della telecamera. “Bake” il primo gruppo di perdite in keyframe; per il secondo, verifica se il target supporta un'estensione o necessita che l'effetto venga ricostruito.

Le curve sono l'aspetto più delicato. Gli esportatori differiscono nel mantenere le tangenti di Bézier, scrivere dati cubic-spline o campionare la curva in keyframe. Un esportatore che scrive solo i keyframe impostati, con interpolazione lineare tra di essi, appiattisce un forte easing tra keyframe ampiamente distanziati. Se l'easing esatto è importante nel motore, aggiungi keyframe all'interno dell'easing o “bake” il movimento al frame rate.

Esportare animazioni da Mixos Studio

Le esportazioni GLB e glTF di Studio trasferiscono le trasformazioni degli oggetti con keyframe e i pesi degli shape-key, mantengono la gerarchia della scena in modo che ogni oggetto si animi nel proprio spazio locale e scrivono ogni clip della scena. Un personaggio riggato viene esportato come mesh skinnata — i suoi joint, le matrici di bind inverse e fino a quattro pesi d'osso per vertice — così il corpo si deforma nella destinazione invece di restare fermo mentre le ossa si muovono. Anche l'esportazione FBX di Studio mantiene la gerarchia — il pivot di ogni oggetto, i joint dello scheletro, i pesi di skinning e ogni clip, campionata a ogni frame — ma trasporta i materiali solo come colore base, senza mappe di texture, e non trasporta gli shape-key. I target OBJ, STL e USDZ non trasportano animazioni, e la finestra di dialogo di esportazione lo indica prima del download.

Due limiti sono importanti da conoscere. In GLB e glTF i keyframe vengono scritti nei momenti in cui li imposti e interpolati linearmente tra di essi nel file — l'easing dell'editor delle curve non viene incorporato — quindi aggiungi un keyframe all'interno di un lungo easing se un motore deve riprodurlo esattamente; l'FBX viene campionato a ogni frame, quindi il suo easing si conserva. E i valori keyframe di materiale, luce e telecamera rimangono nella scena, perché il glTF “core” non ha un canale per essi. Il file di scena .mxs mantiene tutto ciò che un formato modello non può — generatori, modificatori, animazione e impostazioni di rendering — per quando la destinazione è Studio stesso. L'esportazione è inclusa in un piano a pagamento; animare e visualizzare in anteprima sono gratuiti.

Domande frequenti

GLB o FBX è migliore per l'animazione?

GLB per il web e per i motori che leggono glTF nativamente, come Godot e three.js — è uno standard aperto, metrico e coerente tra gli strumenti. FBX dove una pipeline è costruita attorno ad esso, in particolare Maya, 3ds Max e molti progetti Unity e Unreal. Entrambi supportano l'animazione scheletrica e gli shape key.

glTF supporta l'animazione?

Sì. glTF 2.0 anima la traslazione, rotazione e scala dei nodi e i pesi dei morph-target, con interpolazione lineare, a gradini o cubic-spline, e supporta le mesh skinned. Animare altre proprietà, come i valori dei materiali, richiede un'estensione.

Perché la mia animazione esportata non si muove?

Di solito perché il movimento proviene da qualcosa che il formato non memorizza — un risolutore IK, un constraint, un driver o una simulazione — e non è stato “baked” in keyframe prima dell'esportazione. L'altra causa comune è che il motore non riproduce la clip: la maggior parte richiede che la clip sia assegnata o impostata per l'autoplay.

Perché la mia animazione ha la dimensione sbagliata o è ruotata nel motore?

Convenzioni di unità e assi. glTF è sempre in metri e con Y-up; FBX dipende dall'esportatore ed è spesso in centimetri. Imposta le opzioni di unità e assi all'esportazione, o applica una singola scala all'importazione, piuttosto che correggerla per ogni clip.

Posso esportare animazioni da un browser?

Sì. Mixos Studio esporta scene animate come GLB o glTF con ogni clip, o come pagina web o modulo three.js che le riproduce. Animare è gratuito; l'esportazione è inclusa in un piano a pagamento.