Περιγραφή¶
Μοντελοποίηση 3D, κινούμενα σχέδια, αποτύπωση και οργάνωση διαδικασίας μετά-την-παραγωγή.
Blender 4.3.2¶
Χρήση γραφικού περιβάλλοντος¶
Για να χρησιμοποιήσουμε το γραφικό περιβάλλον, ανοίγουμε ένα Desktop session, όπου θα βρούμε το Blender 4.3.2
στο μενού Applications
-> Graphics
. Όταν ανοίξει το πρόγραμμα, εφόσον δεν έχουμε θέσει δικά μας startup preferences (αρχείο ~/.config/blender/4.3/config/startup.blend
) θα δούμε το default αρχικό project, το οποίο περιέχει μία πηγή φωτός, έναν γκρίζο κύβο και την "κάμερα" στη default τοποθεσία. Οι ρυθμίσεις rendering που ενδεχομένως έχουμε επιλέξει παραμένουν (αρχείο ~/.config/blender/4.3/config/userpref.blend
) ανεξαρτήτως αν ξεκινάμε καινούριο project. Μπορούμε να αποθηκεύσουμε αυτό το υποτυπώδες project από το μενού File
-> Save
με το όνομα test.blend
ως δοκιμαστικό αρχείο εισόδου για το batch rendering που θα δούμε στη συνέχεια.
Note
Για να δούμε πώς περίπου πρέπει να φαίνεται η εικόνα στην έξοδο του rendering, μπορούμε να κάνουμε μια γρήγορη δοκιμή από το μενού Render
-> Render Image
. Αν έχουμε φτιάξει animation, θα βγει μόνο το πρώτο καρέ.
Warning
Δεν συνίσταται η εκτέλεση υπολογιστικά απαιτητικού rendering με την εφαρμογή desktop.
Χρήση batch mode (CPU)¶
Για υπολογιστικά απαιτητικό rendering, το Blender θα χρησιμοποιηθεί χωρίς γραφικό περιβάλλον (με το flag --background
) και θα υποβληθεί στο slurm ως εργασία batch. Το script υποβολής της εργασίας θα έχει την ακόλουθη μορφή:
SLURM submission script
#!/bin/bash
#SBATCH --partition=batch
#SBATCH --job-name=blender-4.3.2-case
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=20
#SBATCH --time=30:00
module load blender/4.3.22
blender --background test.blend --engine CYCLES --render-format PNG \
--use-extension 1 --render-output //rendered --render-frame 1 \
--threads $SLURM_CPUS_PER_TASK -- --cycles-device CPU
Στο $HOME
μας στο login node, δημιουργούμε ένα νέο φάκελο όπου τοποθετούμε τα αρχεία εισόδου και το script υποβολής της εργασίας, έστω blender-4.3.2-case.sh
.
# mkdir blender-4.3.2-case
# cd blender-4.3.2-case
Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh>
ως εξής:
# sbatch blender-4.3.2-case.sh
Παρακολουθούμε με την εντολή squeue
την εξέλιξη της εργασίας.
Eφόσον η εργασία έχει εκκινήσει μπορούμε να ελέγχουμε την πρόοδο της επίλυσης μέσω όσων αρχείων εξόδου δεν είναι binary (όσων δηλαδή δεν είναι εικόνες, βίντεο, κλπ). Π.χ.:
# tail -f *.out
Στο παράδειγμά μας, η έξοδος θα είναι μία εικόνα png στο αρχείο ~/blender-4.3.2-case/rendered0001.png
και το αρχείο ~/blender-4.3.2-case/slurm-XXXXXXX.out
(όπου XXXXXXX
το job id της εργασίας μας) το οποίο θα περιέχει ανά πάσα στιγμή το κείμενο που θα βλέπαμε στην οθόνη μας εάν εκτελούσαμε το script τοπικά.
Χρήση batch mode (GPU)¶
Προκειμένου το Blender να χρησιμοποιήσει GPU rendering σε HPC cluster, δεν μπορούν να ακολουθηθούν οι οδηγίες από την τεκμηρίωση του ίδιου του λογισμικού, διότι προϋποθέτουν ότι θα χρησιμοποιήσουμε το γραφικό περιβάλλον στον ίδιο υπολογιστή όπου θα κάνουμε και το rendering. Στην περίπτωσή μας, για την ενεργοποίηση της/των GPU θα πρέπει να χρησιμοποιήσουμε το πακέτο python bpy
του Blender. Η λύση που δίνουμε βασίζεται σε απάντηση που δόθηκε σε αντίστοιχη ερώτηση στο υποφόρουμ για το Blender του StackExchange.
Καταρχάς προκειμένου να εγκαταστήσουμε τοπικά το bpy
θα πρέπει να κατασκευάσουμε ένα περιβάλλον venv σύμφωνα με τις οδηγίες. Συγκεκριμένα:
$ module load gcc/13.2.0-i python/3.11 # Δείτε τη σημείωση στο τέλος για την έκδοση python
$ python -m venv blender_venv
$ source blender_venv/bin/activate
$ pip install --upgrade pip
$ pip install bpy
Υπενθυμίζεται ότι η παραπάνω διαδικασία θα γίνει μόνο μία φορά.
Ύστερα τοποθετούμε στο φάκελο της εργασίας μας το python script blender.py. Στο script αυτό θα δώσουμε είσοδο είτε CUDA
(για χρήση αποκλειστικά GPU) είτε CUDA+CPU
(για χρήση GPU και CPU), όπως ακριβώς θα δίναμε την είσοδο στο argument --cycles-device
του Blender. Φυσικά μπορεί σε αυτό το σημείο να θέλετε να τροποποιήσετε τον κώδικα όπως σας εξυπηρετεί, συμβουλευόμενοι τη σχετική τεκμηρίωση (links στην αρχή της σελίδας).
Το script μας σε αυτήν την περίπτωση θα είναι το εξής:
SLURM submission script
#!/bin/bash
#SBATCH --partition=ampere
#SBATCH --job-name=blender-4.3.2-case-gpu
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=2
#SBATCH --gres=gpu:4
#SBATCH --time=30:00
module load blender/4.3.22 gcc/13.2.0-iqpfkya cuda
source blender_venv/bin/activate
blender --background test.blend --engine CYCLES --threads $SLURM_CPUS_PER_TASK \
--python-use-system-env --python blender.py --render-format PNG \
--use-extension 1 --render-output //renderedGPU --render-frame 1 -- CUDA+CPU
Παρατηρήστε την προσθήκη των arguments --python-use-system-env --python blender.py
στη δεύτερη σειρά της εντολής blender
, ενώ το argument που προορίζεται για το script δίνεται τελευταίο, μετά το --
(προσέξτε το κενό).
ΠΡΟΣΟΧΗ
Εδώ για λόγους απλότητας κατασκευάσαμε το venv μας με την ίδια έκδοση python που είναι bundled με το blender 4.3 (δηλαδή την python 3.11). Εάν θέλουμε να χρησιμοποιήσουμε άλλη έκδοση python, τότε θα πρέπει κάθε φορά που ενεργοποιούμε το venv να προσαρμόζουμε και την python που θα χρησιμοποιεί το blender. Θα πρέπει λοιπόν στο script μας αμέσως μετά τη γραμμή source blender_venv/bin/activate
να προσθέσουμε τη γραμμή export BLENDER_SYSTEM_PYTHON=$(which python)
.