edix_tp_htrdr(7f) edix_tp_htrdr(7f)

edix_tp_htrdr - TP pour installer et faire tourner htrdr

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.).

Le but est de réaliser un film d'animation avec htrdr. https://web.lmd.jussieu.fr/~nvillefranque/pub/galerie/movie.mp4

  • 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

  • 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

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/.

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.

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 !

  • 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.

  • Programmer le coucher du soleil
  • Produire une séquence d'images

  • Repartir des travaux précédents
  • Programmer la trajectoire de la caméra
  • Produire une séquence d'images

  • 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

2026-01-25 UNIX