COMMENT SE SERVIR DU PROGRAMME LDI
1.Creer une image avec Radiance
Pour creer une image avec Radiance,
il suffit de posseder un fichier .rad.
Si vous ne savez pas en faire, allez au tutorial.
Une fois votre .rad construit, lancez ldi par ldi
Vous arrivez alors sur ce menu:
Menu:
************PRINCIPALES FONCTIONS LDI**********************
1/Creer son fichier .source
2/Creer son fichier .cam
3/Creation LDI a partir d images sources listes dans le .source et d un
.cam
23/Creation LDI sans megasplat
4/Warper LDI cree dans un ficher .ldi, avec un fichier .cam
24/Warper LDI sans megasplat
25/Warper LDI avec megasplat dans son point de vue
************PRINCIPALES FONCTIONS WARPING**********************
2/Creer son fichier .cam
5/Warper une image avec splatting imprecis mais plus sur
6/Warper une image avec un splat calcule avec les normales
7/Warper sans splat
8/Questionner
*************UTILITAIRES********************************
11/Une demo sans aucun tracas (contenue dans ./ElementsDemo)
12/Sortir du programme
13/Lancer xv
14/Creer un fichier .pdv pour radiance
15/Lancer le calcul d un fichier Radiance
16/Transformer un .pdv en .cam
17/Transformer un .cam en .pdv
18/Verifier un .z
19/Lisser une image .ppm
20/Enleve les distances zero d un fichiier .z
***********LDO*************************************************
30/Creer son fichier .sceneIBO
31/Creer un fichier .cube
32/Creer les fichiers .obj
33/Voir un seul fichier .obj
34/Projeter les fichiers .obj
41/Projeter plusieurs .obj
/************* ATTENTION ************/
Il peut etre dangereux d utiliser des .pdv donnes par la commande view
de rview. Mieux vaut utiliser des .pdv generes par ldi ou verifier avec
cat [pdv].pdv que l on a un seul ./rview d ecrit. Sinon, ldi prendrait
le
premier et Radiance le second. D ou des erreurs
Votre choix:
Vous n avez qu a taper 14,
pour creer un fichier point de vue ( .pdv).
Vous pourriez l avoir creer aussi en ayant utiliser la commande view
de rview. Attention toutefois:
je conseille vivement d employer des .pdv crees a partir du programme plutot
qu a partir de Radiance, car view n'ecrase pas les fichiers sur lesquels
il ecrit. Il ecrit seulement en fin, alors que le programme ldi lit le
debut. Ce peut etre une veritable source d erreur. Le mieux est donc de
faire un cat
du fichier .pdv genere par view, puis de donner les valeurs au programme
ldi, de sauvegarder ce point de vue et de l utiliser exclusivement.
Le programme vous demande alors le nom du fichier ou sauvegarder, et les
vecteurs Point de Vue (vp), Direction (vd), Haut (vu), et les reels Largeur
(vh) et Hauteur (vv) de la pellicule. Si tout c est bien passe, il a enregistre
le fichier en suffixe .pdv.
Ensuite, il ne vous reste plus qu a taper 15
dans le menu. Le programme vous demande le nom du ficher .rad, le nom du
fichier .pdv, et il lance le calcul. Il mettra surement des choses comme
mascene.oct: Ce fichier ou ce répertoire n'existe pas
mascene.pic: Ce fichier ou ce répertoire n'existe pas
mascene.ppm: Ce fichier ou ce répertoire n'existe pas
mais il ne faut pas s en soucier.
On peut egalement utiliser l utilitaire construire de la maniere suivante: construire Nom_du_.rad_sans_extension Nom_du_.pdv_sans_extension. Cela calcule l image, l enregistre dans [Nom_du_.rad_sans_extension]_[Nom_du_.pdv_sans_extension].ppm, transforme le .pdv en .cam et l enregistre sous [Nom_du_.rad_sans_extension]_[Nom_du_.pdv_sans_extension].cam, et enregistre aussi la profondeur. Ceci permet de gagner du temps. Attention toutefois, c est prevu pour marcher avec des images 512*512, et on peut eventuellement changer l eclairement (-av ...) en faisant une edition de construire.
Une fois le calcul termine, on peut sortir du programme (12)pour voir l image calculee ([nom.du.fichier.rad].ppm).
On notera aussi que le fichier des profondeurs est dans [nom.du.fichier.rad].z.
Il faut aussi se rappeler que le programme
ecrasera les anciennes versions [nom.du.fichier.rad].ppm et [nom.du.fichier.rad].z
si elles existent. C est pourquoi il faut,
des le calcul termine faire des cp ou des mv des fichiers .ppm et .z, et
les mettre a l abris, pour une utilisation future.Attention
toutefois:l image calculee ne peut avoir de
"pixels vides", c est a dire des pixels, ou le rayon passant n a pas trouve
d intersections. Autrement dit, il faut toujours avoir un fond dans les
images. Cela est du au fait que les pixels vides sont notes par Radiance
comme ayant une profondeur nulle, alors que le programme ldi voudrait une
profondeur superieure a DISTANCE_INFINIE (=1000). On peut donc utiliser la fonction 20 qui prend un fichier.z et enleve ses pixels vides, les remplacant par des pixels a distance DISTANCE_INFINIE.
Ainsi, on obtient de belles images, mais le programme n y est pour rien:
il se contente de lancer des executions de Radiance.
Attention :il est possible d utiliser des images venant d autre provenance que Radiance, mais il faut alors verifier qu elles ne contiennent pas de commentaires avec xv par exemple (commentaires=#...), car ces commentaires sont mal compris par le programme.
2.Etre pret a faire un Warping
Pour faire un Warping, on a besoin d un fichier .cam.
Il y a plusieurs moyens de l obtenir: Le plus simple si l on a calcule
son image avec Radiance est de lancer 16,
qui fera la conversion automatique, en nous demandant le nom du fichier
.pdv, la resolution en x et en y de l image dont le fichier calcule sera
le .cam, et le nom de sauvegarde du fichier .cam.
Sinon, et particulierement si on a pas creer son image avec Radiance, et
donc si on a pas de .pdv, on peut creer son fichier .cam a la main, ce
qui n est pas plus dur que creer un fichier .pdv, entre parentheses. Cela
se fait avec 2.
On nous demande alors le vecteur Point de Vue (From), le vecteur Point
Vise (At), le vecteur Haut (Up), la focale, la hauteur et la largeur de
la pellicule.
Ainsi, arrive a cet endroit, vous avez un
fichier .ppm, un fichier .cam et un fichier .z.
Ceux ci doivent avoir tous le meme suffixe. On a donc les fichers [nom].ppm,[nom].z
et [nom].cam.
3.Faire un Warping
Si on a les bonnes donnees a l entree, il est tres
simple de faire un Warping. Par contre, si on est pas tres confiant et
surtout si on a calcule le .z avec autre chose que Radiance, on peut verifier
son .z. Cela se fait avec la commande 18.
On nous demande alors le nom du fichier .z, les resolutions et la profondeur
maximale, qui est la profondeur derriere laquelle les points apparaissent
blanc. Cela permet de voir des details sur le premier plan (profondeur
maximale faible), ou sur l image en general (profondeur maximale de l ordre
de la profondeur maximale reelle de l image). Une fois les calculs faits,
le reultat est enregistre dans testz.pgm
que l on peut lire avec xv.
Voir un exemple de testz.ppm, representant
la profondeur du fichier visible ici.
Il ne reste alors plus qu a verifier que ca ressemble a l image dans une
sorte de noir et blanc.
Une fois que l on est sur que tout est bon, on peut lancer 5.
On nous demande alors le nom de l image, puis la camera de projection (pas
celle de l image de reference). Apres les calculs, on nous demande ou enregistrer.
Il n y a plus qu a verifier que le warping s est bien passe, avec un xv
sur l image enregistree. On peut aussi la comparer avec l image que donnerait
Radiance de ce point de vue. Si cela a reussi, on peut aussi tester avec
un Splatting(voir l explication theorique des LDI)
manuel (6) ou
meme sans Splatting (7).
4.Creer un LDI
L etape superieure au Warping est la creation de
LDI. Cela suppose d avoir plusieurs images (au moins 2), plus ou moins
complementaires (c est a dire de points de vue differents, qui montrent
les objets sous beaucoup d angles).
Il faut d abord commencer par creer un fichier .source,
par la commande 1.
On nous demande alors le nom du fichier .source a creer, le nombre d images,
puis le nom de chacune de celles ci. Une fois ce .source cree, il faut
creer le fichier .cam correspondant au point de vue de projection (voir
l explication theorique des LDI). Ensuite, on lance
la commande 3
du menu.Il faut alors donner le nom d un fichier .source. Le programme
lit alors les differents fichiers, et on peut en profiter pour verifier
qu il n affiche pas d erreurs de lecture, auquel cas il manquerait des
fichiers, ou leur chemin serait faux. Il faut ensuite donner le nom du
fichier .cam de creation de LDI, ainsi que la precision (voir l
explication theorique des LDI). Le programme calcule alors, en plus
ou moins de temps suivant le nombre d images, suivant la precision et la
resolution des images (et la machine). Une fois termine, il nous demande
ou enregistrer le ldi. Nous avons alors notre fichier .ldi.
On pourra aussi utiliser la commande 23
au lieu de 3:
celle ci ne fait pas de splatting a la creation de la LDI, et donc peut
etre plus precise, mais laisser quelques trous. Alors on pourra utiliser,
pour gommer quelques trous la commande 19,
qui lisse les parties non calculees (roses).
5.Projeter un LDI
Projeter un LDI est tout ce qu il y a de plus facile:
il suffit de faire 4,
de donner le nom du fichier .ldi, le nom du fichier .cam representant la
camera de projection, et enfin de donner le nom du fichier .ppm ou sauvegarder
l image.
On pourra utiliser la commande 24
qui ne fait pas de splatting a la projection, dans le but unique de voir
que cela ne fonctionne pas, et qu un splatting a la projection est obligatoire.
Enfin, il existe la commande 25 qui permet de warper une LDI directement dans son point de vue de creation. Cela est bien utile, car cela permet de voir les parties qui seront clippees, et donc qui disparaitront lorsque l on warpera la LDI dans un point de vue.
6.Un bel exemple de LDI
A partir des images suivantes:



D ou l image cree par le LDI, on trouve:
Sans Lissage
Avec Lissage
que l on peut comparer a ce que trouverait Radiance:

Voici les images d autres points de vue: a gauche l image trouve avec le ldi (le meme que precedement), eventuellement lissee, et a droite l image trouve par Radiance, pour comparaison. Rappelons que les parties roses sont dues aux parties non connues de l espace 3D, et donc qu un nombre plus important d images, ou meme un meilleur choix des points de vue de celles ci les feraient disparaitre pour une bonne part. De plus, il faut noter que, du fait du point de vue de creation assez proche de la scene, pour avoir une meilleure precision, une partie du volet a ete clippee, comme on le voit dans les images suivantes: il suffirait donc de prendre un point de vue de creation plus eloigne. Cela montre l importance du choix de ce point de vue.
Depuis peu, quelques ameiorations ont ete faites: certains defauts apparaissant sur ces images ont ete gomme depuis, grace a des retouches du programme. Cependant, comme elles ne sont pas fondamentales, on n a pas recalcule toutes les images.
7.Faire un IBO
Pour faire un IBO (Image Based Object), il faut avoir des images avec leur carte de profondeur et leur .cam, tout comme pour la creation d un LDI. Il faut d abord commencer par creer un .cube, qui designe le cube de creation de l IBO (voir theorie de l IBO). Pour cela, on tape 31,puis on nous demande le nom du fichier ou il faudra sauvegarder, puis les points 1, 2, 4, et 11, qui sont 4 sommets qui permettent de retrouver les autres sommets du cube. On donne alors la resolution en x et en y, puis le Epsilon, qui est le meme que celui des LDI (-1=on prend tous les points, puis s il est positif, plus il est grand, plus des doublons, c est a dire des points assez proches en distance sont supprimes, gagnant de la place, du temps mais perdant en precision). On pourra aussi utiliser l utilitaire gencub, qui s utilise ainsi gencub nom.cube xcentre ycentre zcentre demi_arrete, ou (xcentre,ycentre,zcentre) est le centre du cube, ou nom.cube est la ou on sauvegarde et ou demi_arrete est la moitie de la longueur d une arrete du cube.
Alors il faut creer un .source, avec 1, dans lequel on met les images a projeter sur l IBO.
Ensuite, il ne reste plus qu a lancer le calcul de l IBO, par la commande 32. On nous demande alors le nom du fichier .cube, puis celui du fichier .source, qui comporte les noms des images qu il faudra projeter dans l IBO. Il faut bien savoir que l IBO correspondant sera enregistre sous forme multiple:chaque LDI correspondant a chaque facette du cube sera mise dans un .obj[numero de la facette]. Ainsi, on aura un .obj1, .obj2, .obj3, .obj4, .obj5 .obj6.
8.Utiliser un IBO
Pour utiliser les IBO, on a plusieurs commandes. La premiere est 34. Elle permet de voir un seul IBO. Il suffit alors de mettre le nom de l IBO (c est a dire le prefixe des .obj?), puis le .cam correspondant au point de vue desire. Apres les calculs, on nous demande ou sauvegarder l image. Il ne reste plus qu a la regarder avec xv.
On a aussi la commande 33, qui ne projete qu un .obj?. Celle ci n a reellement d utilite que pour debugger des eventuels problemes, ou alors pour utiliser un .obj comme une simple LDI.
Enfin, on a une commande qui nous permet toutes sortes de manipulation (translation, rotation, duplication d une IBO). C est 41. Mais tout d abord, il faut creer un .sceneIBO. Pour cela, on fait 30. On nous demande alors le nom du fichier ou sauvegarder, le nombre d IBO dans la scene, puis pour chacun de ses IBO, leur nom (le prefixe des .obj?), la translation de leur centre, et la rotation par rapport a leur centre et aux 3 axes definis par: 1er axe de vecteur directeur P1P11, 2e axe de vecteur directeur P2P1, 3e axe de vecteur directeur P4P1.
Une fois ce .sceneIBO cree, on fait 41. On nous demande alors le nom du .sceneIBO, et le nom du .cam correspondant au point de vue desire. Il y a alors des calculs pour savoir l ordre dans lequel projeter.Ceci ne marche pas. Il faudra refaire cette partie du programme.. Ce que l on peut faire, c est mettre les IBO du .sceneIBO dans l ordre d apparition (le premier a etre entre dans le .sceneIBO est le premier a etre dessine. Attention a tenir compte des translations, rotations), mettre en commentaire dans le programme la fonction de tri. Alors le programme projete dans l ordre qu il devrait avoir calcule, ou qu on lui a donne de force, et nous donne une image correcte de la scene, l enregistrant dans le fichier dont on lui donne le nom.
9. Un exemple d IBO
Avec ses 5 vues d un arbre, on cree un IBO:
On le projete alors d une vue particuliere:
La premiere image est celle calculee avec l IBO, la deuxieme celle calculee avec Radiance. La presence du rose est normale: on avait passe les fichiers .z a la commande 20, pour enlever les pixels vides, comme il n y a pas de fond. Or le programme ne projete pas les pixels dont la profondeur est DISTANCE_INFINIE. Cela va permettre de faire une foret, car le noir ne recouvrira pas les autres arbres.
Si on cherche a voir l effet des rotations translations, on a ceci:
La premiere image est celle donnee au point de vue, sans rotation ni translation. La deuxieme est au meme point de vue mais avec un eloignement de l arbre. La troisieme est encore au meme point de vue, mais en ayant tourne l arbre autour de l axe des z.
Enfin, on peut constituer une foret, tout en rappelant que l on a oter l ordre, et donc que cet ordre a ete fait par l utilisateur.
Ces images sont faites avec un seul IBO, celui ci etant duplique, translate et ayant subi des rotations, d ou les arbres couches.
Note:On pourrait aussi utiliser les IBO pour notre piece. Mais cela ne fonctionne bien si les IBO ne ne chevauchent pas. Aussi, on a utilise un unique IBO. On a alors de meilleurs resultats qu une LDI, puisque l on a une totale liberte de mouvement, alors que avec une LDI, on avait de grandes parties roses lorsque l on tournait de 180 degres.
Voici une image cree avec une IBO cree avec 15 images de references, l IBO etant centree au dessus de la table:
Benoit
Chevallier
Last
modified: Tue Aug 10 16:22:55 MET DST 1999