Rendering
Rendering |
Précédent |
C’est de loin cette opération qui coûte le plus cher en temps. Et je me suis arrangé pour qu’elle coûte le moins cher possible en argent.
Les deux premières séquences ont été « rendues » chez la « ferme de rendering » Ranchcomputing.com , une société française. Le calcul a été fait en quelques minutes et m’a coûté entre 10 et 15€ .
Pour la troisième, qui comprend 1220 images, cela m’aurait coûté trop cher de le demander à la ferme de rendu. J’ai commandé des VPS (serveurs privés virtuels) chez des fournisseurs d’infrastructure :
• un chez OVH (société française, 3.59€ par mois),
• un chez LWS (société française, 5.96€ par mois (VPS plus puissant mais promo)),
• quatre chez AWS (société américaine, facturation à la durée vraiment utilisée, 2.50€ ).
Et j’ai partagé le travail entre ces 6 serveurs.
L’opération m’a pris environ une semaine. Mais c’est du temps « elapsed », les serveurs n’ont pas tourné à 100 % du temps, car je préparais les jobs de façon manuelle.
On pourrait peut-être réduire ce temps en automatisant la préparation des jobs.
Préparation des serveurs
Je vous expose ici comment on doit préparer un serveur pour faire du rendu d’images avec Blender.
Lorsqu’on demande un serveur, on choisit le système d’exploitation (« OS ») que l’on désire. Personnellement je prends Linux Ubuntu 20.04 LTS, car je le connais, il est gratuit, et cela me permet de « bricoler » dessus, d’installer ce que je veux.
Car en effet, on récupère notre serveur, avec l’OS qu’on a demandé, mais rien n’est installé dessus . Il faut notamment installer Blender.
Mise à jour de l’OS
Il faut commencer par mettre à jour l’OS, car en général les prestataires ne fournissent pas la toute dernière version, ils n’arrêteraient pas de courir après. Donc taper :
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt autoremove
$ sudo apt clean
Il faut d’ailleurs faire cette opération régulièrement, si vous gardez vos serveurs longtemps.
Installation de Blender
Pour installer Blender, taper la commande :
$ sudo apt install blender
Si vous avez installé la version 20.04 LTS de Ubuntu, la commande ci-dessus installera la version 2.82 de Blender. Ce n’est pas la dernière version, mais c’est suffisant pour faire du rendu d’images.
Ce n’est pas grave qu’on n’ait pas la même version que celle qu’on a utilisée pour la CAO et la préparation de la simulation (2.91).
Mais si vous le souhaitez, vous pouvez aussi utiliser la 2.91 en « non installé » pour le rendering, vous indiquerez la string de l’exécutable dans les fichiers de commandes des jobs.
Fichiers de commandes pour les calculs de rendu
Sur les serveurs, nous allons lancer les calculs de rendu grâce à des jobs batch, qui tourneront 24h/24, sans affichage.
Nous obtiendrons une série d’image .png, à raison de 24 par seconde de simulation. Nous rapatrierons nos images sur notre PC, pour faire le montage de la vidéo.
Préparons un fichier de commande Render.sh qui contient :
echo "Procédure pour générer la vidéo d'un fichier Blender"
#
echo "Date de debut:"
date
blender --background aa_1920_bake.blend --render-output //aa --render-frame 1..1220 > sorties.txt 2> err.txt
echo "Date de fin:"
date
La simulation « bakée » est contenue dans le fichier aa_1920_bake.blend . Les paramètres « 1..1220 » signifient que l’on va demander à calculer les images 1 à 1220. Vous allez partager le travail entre les serveurs. Par exemple si vous avez deux serveurs, vous allez mettre « 1..610 » pour l’un, et « 611..1220 » pour l’autre.
Il faut ensuite, pour chacun des serveurs :
• envoyer les fichiers Render.sh et aa_1920_bake.blend sur le serveur,
• se connecter sur le serveur,
• donner les droits d’exécution au fichier Render.sh, en tapant la commande :
$ chmod 755 Render.sh
• lancer le job en tapant la commande :
$ at -f Render.sh now
Ensuite, on peut se déconnecter, et se reconnecter de temps en temps, pour voir si les jobs avancent.
Il m’a fallu en moyenne 18mn pour « rendre » une image de 1920x1080 pixels, sur une instance MC2 « t2.micro » de AWS : processeur x386 monocore, 2.5GHz.