| edix_tp_htrdr(7f) | edix_tp_htrdr(7f) |
NOM
edix_tp_htrdr - TP pour installer et faire tourner htrdr
DESCRIPTION
Cette page décrit l'étape d'installation avant la partie calcul. Si on est sur edix, on ne devrait pas avoir à faire l'installation soi-même. La première partie pourrait être sortie d'ici et devenir un TP d'installation de htrdr (intéressant pour se former à l'environnement de développement, star-build etc.).
DEROULE
Le but est de réaliser un film d'animation avec htrdr. https://web.lmd.jussieu.fr/~nvillefranque/pub/galerie/movie.mp4
PREMIERE ETAPE
- Tous les étudiants font les étapes d'installation et de prise en main
- On prend le temps d'expliquer les concepts et commandes rencontrées : Makefile, wget, tar, export, mkdir, cp, sed, source, CTRL+C, man star-build, htrdr, htpp
DEUXIEME ETAPE
- Chaque groupe a un exercice différent à faire.
- Le groupe suivant part des résultats du groupe précédent.
- Exemple de séquence d'exercices - ça peut être autre
chose :
- G1 : coucher de soleil
- G2 : trajectoire caméra
- G3 : montage
INSTALLATION
Installation
Ouvrir un terminal, créer un répertoire de travail et installer htrdr
cd ~
mkdir TP_film
cd TP_film
git clone https://nastar.laplace.enseeiht.fr/git/edstar/star-build.git
cd star-build
make BUILD=src/htrdr_0.11.sh install
Le logiciel htrdr et ses dépendances sont en train d'être compilées. Cela peut prendre un peu de temps. Si on veut continuer à travailler pendant que ça compile, on peut ouvrir un autre terminal.
cd ~/TP_film
wget https://www.meso-star.com/projects/htrdr/downloads/htrdr-Atmosphere-Starter-Pack-0.8.0.tar.gz
tar xvf htrdr-Atmosphere-Starter-Pack-0.8.0.tar.gz
L'archive contenant les données du Starter-Pack est en train d'être décompressée. Cela peut prendre quelques minutes.
Une fois que htrdr a été compilé, le terminal dans lequel on a lancé la commande make nous rend la main. On peut alors aller vérifier que l'installation s'est bien passé :
cd ~/TP_film/star-build # si on y est pas déjà
cd local
ls # on doit voir des répertoires lib/ bin/ etc/ ...
ls lib/ # les librairies (bibliothèques) = dépendances de htrdr
ls bin/ # les binaires (programmes exécutables)
cd bin/ # on y va
./htrdr-atmosphere # on lance le logiciel htrdr-atmosphere
La commande échoue avec un message disant que la librairie rsys n'a pas été trouvée :
./htrdr-atmosphere: error while loading shared libraries: librsys.so: cannot open shared object file: No such file or directory
c'est normal. Au lancement de htrdr-atmosphere, le programme ld qui se charge de faire le lien entre l'exécutable et ses dépendances, demande au shell courant où sont les bibliothèques dont htrdr a besoin. Or, comme on ne lui a rien dit, le shell courant ne sait pas où ces bibliothèques ont été installées. Le shell va chercher ces fichiers dans des répertoires particuliers, qui sont listés dans la variable d'environnement LD_LIBRARY_PATH. ( Note : quand on tape une commande, le shell cherche un fichier exécutable du même nom dans les répertoires listés dans la variable PATH. )
echo $LD_LIBRARY_PATH
on voit que dans la liste des répertoires, il n'y a pas celui qui contient les dépendances de htrdr, à savoir ~/TP_film/star-build/local/lib/ Pour que le shell trouve ces bibliothèques, il faut enrichir la variable d'environnement LD_LIBRARY_PATH en rajoutant le chemin vers notre répertoire ~/TP_film/star-build/local/lib/. On peut le faire à la main, ou alors on peut utiliser le fichier htrdr.profile dans le répertoire local/etc, qui regroupe toutes les commandes à exécuter pour enrichir notre environnement, de façon à ce que le shell courant ait toutes les infos dont il a besoin :
source ~/TP_film/star-build/local/etc/htrdr.profile
A chaque fois qu'on ouvrira un nouveau terminal, il faudra retaper cette commande pour enrichir l'environnement local, visible par le shell qui tourne dans ce terminal. Une fois qu'on a exécute la commande source on peut vérifier que la variable d'environnement LD_LIBRARY_PATH a bien été mise à jour
echo $LD_LIBRARY_PATH
echo $PATH
on a aussi le répertoire contenant les fichiers binaires qui a été ajouté à la variable PATH. Ca veut dire qu'on a plus besoin d'être dans le répertoire ~/TP_film/star-build/local/bin/ pour exécuter htrdr-atmosphere ( Note : comme on a pas besoin d'être dans le répertoire /bin/ pour exécuter les commandes ls, cd, cat... ). On peut donc retourner dans notre répertoire de travail et lancer htrdr-atmosphere :
cd ~/TP_film
htrdr-atmosphere
La commande fonctionne mais aucun calcul n'est lancé car on a pas fourni les données nécessaires à ce calcul, c'est ce que signifie le message
> missing the path of the gas optical properties file -- option '-a'
suivi de la liste des options possibles pour htrdr-atmopshere. On peut aussi obtenir la liste des options en faisant
htrdr-atmosphere -h
Et regarder le manuel fourni avec le logiciel :
man htrdr-atmosphere
Bref, aucun calcul n'a été fait mais l'installation du logiciel a bien fonctionné puisque htrdr-atmosphere nous répond. Les données que nous allons utiliser sont dans le répertoire htrdr-Atmosphere-Starter-Pack-0.8.0/.
PREMIER CALCUL
Mettre le chemin absolu vers le répertoire htrdr-Atmosphere-Starter-Pack-0.8.0/ dans une variable SPK
export SPK=~/TP_film/htrdr-Atmosphere-Starter-Pack-0.8.0
Lancer un calcul avec les propriétés atmosphériques décrites dans le fichier $SPK/ecrad_opt_prop.txt :
htrdr-atmosphere -a $SPK/ecrad_opt_prop.txt
Le calcul est lancé et son résultat est affiché, par défaut, dans le terminal. Rediriger la sortie de la commande htrdr-atmosphere dans un fichier, soit en utilisant le chevron > soit en utilisant l'option -o de htrdr-atmopshere :
htrdr-atmosphere -a $SPK/ecrad_opt_prop.txt -o image.txt
cat image.txt
On voit qu'on a bien le même contenu dans le fichier image.txt que ce qui avait été affiché dans le terminal lors de la première exécution. C'est du texte. Le format de sortie de htrdr est documenté dans la page de manuel htrdr-image. Pour visualiser cette information sous forme d'image (et non de texte), on utilise le logiciel htpp qui a été installé en même temps que htrdr :
htpp -o image.ppm image.txt
display image.ppm
On peut se référer à la page de manuel de htpp pour comprendre sa syntaxe et comment il fonctionne. display est une commande de la suite logicielle ImageMagick qui devrait être installée sur vos machines, sinon essayer feh ou eog. On voit une image noire en bas et très bruitée bleutée en haut. C'est dû aux paramètres par défaut utilisés par htrdr. Par exemple l'option -i qui donne les propriétés de l'image, a comme valeurs par défaut une définition de 320x240 pixels, avec un seul photon simulé par pixel. On pourrait jouer à rajouter les options une par une pour construire petit à petit la commande htrdr permettant de réaliser une jolie image, mais ici le choix est de partir d'un script distribué avec le Starter-Pack, qui donne un exemple de commande complète.
CALCUL IMAGE VILLE
Pour éviter d'avoir plein de fichier en vrac, nous allons travailler dans un répertoire TP0
cd ~/TP_film
mkdir TP0
cd TP0
On va copier le script city.sh du Starter Pack, là où on est :
cp $SPK/city.sh .
cat city.sh
( Note : le caractère . désigne le répertoire courant. On demande donc à la commande cp de copier le fichier "ici" )
Le script city.sh regroupe différentes instructions : la définition de variables atmosphere, clouds, ground... camera, image etc. puis un appel à la commande htrdr-atmosphere.
Modifier le chemin vers le starter pack dans le script city.sh
sed -i "s,^path=.*,path=$SPK,g" city.sh
Lancer le calcul
bash city.sh
C'est trop long !
EXERCICES
- Interrompre le calcul
- Enlever les nuages de la scène
- Réduire le nombre de chemins et/ou de pixels
- Voir ce que ça change sur le temps de calcul
Mode collectif : réfléchir en équipe à la stratégie de production : compter les ressources dont on dispose, mesurer le temps que prend le calcul d'une image en fonction de sa définition et du nombre de photons simulés par pixels, se mettre d'accord sur une définition cible et un nombre d'images que l'on va vouloir produire pour le film. L'idée étant qu'à ressources constantes, on peut faire un long film avec des petites images bruitées, ou un film plus court avec des images plus résolues. Le premier groupe fait ce travail et prend des décisions pour les groupes suivants. Penser qu'on peut faire une première version de travail du film, avec des images peu résolues, et laisser des instructions aux groupes suivants pour qu'ils refassent les calculs avec des images plus résolues. Pour ça, il faut que les scripts qui auront été développés par un groupe soient accessibles (trouvables, lisibles, compréhensibles, exécutables...) pour les groupes suivants.
1. Le soleil se couche
- Programmer le coucher du soleil
- Produire une séquence d'images
2. La caméra se déplace
- Repartir des travaux précédents
- Programmer la trajectoire de la caméra
- Produire une séquence d'images
3. Monter le film
- Repartir des travaux précédents
- Ecrire une page de titre et une page de crédits
- Assembler les images à l'aide d'un Makefile
VOIR AUSSI
| 2026-01-25 | UNIX |