In questo video, realizzato con la versione 4.2 di Blender, vi mostro un paio di script Python che consentono di esportare il contenuto di una scena Blender in FBX, incluse le Textures, per tutti i file Blender presenti in una cartella.



Trascrizione del video

Salve a tutti! In questo video, realizzato con la versione 4.2 di Blender, vi mostro un paio di script Python che consentono di esportare il contenuto di una scena Blender in FBX, incluse le Textures, per tutti i file Blender presenti in una cartella.

Gli script sono due proprio perché uno script si occupa dell'esportazione per il file sul quale viene eseguito, mentre il secondo script si occupa di eseguire il primo su tutti i file Blender presenti nella cartella.

Ho realizzato questi script per una mia esigenza specifica e mi rendo conto che si tratta di un caso davvero particolare, tuttavia il tutorial può essere esteso ad altri casi, perché in effetti viene mostrato come eseguire uno script, fornendogli tra l'altro dei parametri, senza nemmeno dover aprire Blender, per cui in effetti si può utilizzare questo metodo anche con operatori e strumenti diversi da quello utilizzato in questo caso!

In particolare, è possibile esportare il contenuto di una scena blend in un file fbx utilizzando la funzione export scene fbx del modulo operators, specificando il nome del file di destinazione e altri parametri, come indicato dalla documentazione di tale operatore nel manuale di Blender.

A me interessa soprattutto esportare anche le Textures dei materiali dei modelli, utilizzando cioè l'opzione Embedded con la modalità Copy attivata, come ho spiegato nel mio tutorial su come esportare in fbx i modelli con le textures.

I due parametri che dobbiamo specificare, oltre al nome del file di destinazione, sono quindi Path Mode, che deve avere valore Copy, ed embed textures, che deve avere valore True.

La chiamata di funzione dello script export embedded fbx sarà quindi: bpy ops export scene fbx, filepath = sys argv -1, path mode = copy, embed textures = True.

Questa è l'unica istruzione, dopo l'importazione dei moduli bpy e sys, da mettere nel file export embedded fbx. Il nome del file è quindi quello passato come parametro allo script, mentre il Path Mode ed Embed Textures consentono di memorizzare, all'interno del file FBX, anche le immagini utilizzate come Textures.

Se volessimo eseguire questo script su un solo file blend, non dovremmo far altro che scrivere in riga di comando la seguente istruzione:

blender filename.blend --background --python export_embedded_fbx.py -- filename.fbx

Tuttavia, io voglio eseguire questo script per tutti i file Blender presenti nella cartella, che possono essere tantissimi, per cui non voglio dover sostituire manualmente i nomi dei file ogni volta!

Ci serve quindi un altro script o un file batch che esegua per noi quell'istruzione su ogni file Blender che riesce a trovare nella cartella corrente.

Una soluzione semplice consiste nello scrivere le seguenti istruzioni in un altro file Python, che chiameremo ad esempio batch export embedded fbx.

Dopo aver importato i moduli os e subprocess, che ci servono per accedere ai file su disco e ad avviare l'altro script Python, recuperiamo il percorso della cartella corrente depositandolo nella variabile script_dir.

Fatto ciò, ricaviamo un elenco di tutti i file Blender presenti nella cartella corrente.

A questo punto avviamo il ciclo che, per ogni file Blender presente nell'elenco, esegue lo script Python export embedded fbx, passandogli come parametro sia il nome del file Blender corrente che il nome del file di output, provvisto del suffisso EMBEDDED e dell'estensione fbx.

Dopo aver salvato entrambi i file su disco, non ci resterà altro da fare che eseguire lo script batch export embedded fbx per ottenere il risultato voluto.

Bene, spero che questo breve video possa esservi utile! A presto!

Cerca nei Tutorial

Cerca inserendo una frase o più parole chiave, separate da virgole.

Modelli 3D, tutorial e risorse di computer grafica di Francesco Milanese. Le licenze d’uso dei modelli 3D sono acquistabili tramite gli store esterni indicati nelle rispettive pagine, secondo le condizioni di licenza applicabili. Francesco Milanese — Partita IVA: 06321250877. Contatti: info@francescomilanese.com


INFORMATIVA ESTESA SULL'UTILIZZO DEI COOKIES