accueil Companime / console compaDome /  logiciels 1/2
détail des calculs           accès au source

Logiciels pour manipuler un champ de 180°

Fabrication des images

- en prise de vue réelle: la seule solution réaliste consiste à utiliser une caméra équipée d'une optique fisheye.
        L'image obtenue est circulaire, en perspective curviligne. Nous l'appellerons image-fisheye.

- en imagerie de synthèse :
      soit en temps réel (simulateur, jeu) : il faut un logiciel interactif rapide utilisant openGL ou DirectX.
            Comme ces derniers ne travaillent qu'en perspective classique on utilise l'astuce de la camera-cube décrite plus loin.
      soit en différé (animation image par image) : un logiciel tel que PovRay sait faire des images fisheye, mais "lentement".

Projection des images

- projecteur équipé d'un fisheye : il projette directement des images-fisheye.
       En imagerie de synthèse, l'image 180° donnée par la caméra-cube est adaptée en temps réel, par ordinateur, au moyen d'un maillage cube-fisheye.

- projecteur équipé d'un miroir sphérique : il projette des images spéciales que nous appellerons images-warpées.
        Imagerie de synthèse : l'image 180° donnée par la caméra cube est "warpée" en temps réel, par ordinateur, au moyen d'un maillage cube-miroir.
        Vues réelles : la solution consiste à "warper" des images-fisheye, en temps réel, par ordinateur, en combinant maillage-fisheye et maillage-miroir.


projection avec fisheye dans l'axe :
le maillage est unique

projection avec fisheye hors de l'axe (off axis) :
le maillage varie selon la configuration

projection avec miroir sphérique:
le maillage varie selon la configuration


La caméra-cube

Les outils logiciels 3D rapides (librairies graphiques OpenGL ou DirectX) associés aux cartes graphiques très performantes développées pour les jeux, ne connaissent que la projection en perspective classique.
Comme il est impensable de se priver de leurs performances temps réel (penser aux jeux vidéo), on contourne la difficulté en prenant successivement plusieurs images depuis le même point de vue dans des directions différentes.
Ces images sont ensuite déformées(warping) et assemblées pour produire une image qui pourra être projetée sur la coupole.
On place donc la caméra (virtuelle) classique au centre d'un cube et on prend plusieurs photos en cadrant successivement chaque face du cube (supposée transparente pour laisser voir le paysage).
Suivant la technique choisie on prendra 3, 4 ou 5 photos.
Le cas le plus simple est celui avec 5 photos : une photo de face, une vers la gauche, une vers la droite, une vers le haut et une vers le bas (simple mais avec gaspillage puisqu'on n'utilise en fait que la moitié des 4 faces latérales).

maillage-cube
un maillage est appliqué sur chaque face considérée comme une texture.
Ce maillage sera mis en correspondance avec un des maillage ci-contre

maillage-fisheye
(ne pas tenir compte des couleurs)

maillage-miroir

Les logiciels

Il y a deux classes de base spécifiques :
- CPanCamera la caméra-cube
- CMesh qui construit et applique les divers maillages sous controle de la classe CPanCamera.
CMesh propose en plus deux grilles polaires : polaire-fisheye et polaire-miroir qui sont utilisées comme mire pour ajuster le système.

caractéristiques communes

Les logiciels sont adaptés à mon matériel : projecteur 1280x720, écran ordinateur 1280x1024 ou plus. Il est toutefois facile d'adapter le source des logiciels.
J'utilise la sortie bi-écrans de la carte graphique (ATI ou NVIDIA).
Les deux écrans constituent un bureau étendu, donc une unique et grande image.
Une "case à cocher" permet d'afficher l'image soit sur la zone ordinateur, soit sur la zone projecteur.

mode "grand bureau"

L'ensemble de fichiers (exécutables et données) doit être placé dans un répertoire \comPanrama\, situé à la racine du disque utilisé.

comPanConfig

Sert à définir la configuration d'un système à miroir.
(un système à fisheye centré n'a qu'une configuration possible).



La configuration du système est enregistrée dans le fichier \comPanrama\panconfig.txt
Elle est lue ou enregistrée par les boutons : LIRE la configuration ou ENREGISTRER la configuration.
La case à cocher sur Projecteur , à gauche, envoie l'image soit sur le projecteur, soit sur l'écran ordinateur, au dessus de la boite de dialogue.
Le groupe type de maillage détermine la grille à afficher.
Le groupe cadrage  détermine la mise en page.
Les trois groupes Miroir, Coupole, Projecteur permettent d'entrer la configuration physique du système en centimètres.
Il n'est pas simple de localiser le centre du miroir ni celui de la coupole.
La meilleure façon de procéder est de projeter la grille Miroir polaire sur la coupole et d'ajuster les paramètres pour obtenir la grille la plus satisfaisante à l'oeil (coincidence du centre de la grille avec celui de la coupole etc.)
Un choix de référentiels est proposé : l'origine des distances est prise soit au centre du miroir, soit au centre de la coupole.
Cocher le radio bouton référentiel choisi désiré.

comPanCamera

C'est un programme simple de démonstration et pouvant servir de base de développement.



Il peut travailler en mode Miroir (qui nous intéresse ici) ou en mode Fisheye (destiné au système Panrama).
Il affiche diverses scène 3D :
- la scene 0 est un ensemble d'objets classiques
- la scene 1 est une structure 3D
- la scène 2 est vide
(un système de "plugins" permettant d'ajouter facilement des scènes est à l'étude)
Le groupe Pilote permet de déplacer la scène par rapport à la caméra (ou l'inverse, tout est relatif).
Rappelons l'orientation des axes selon openGL :
X horizontal, de gauche à droite.
Y vertical, vers le haut.
Z horizontal, en profondeur, valeurs négatives en face, positives dans notre dos.
Groupe rotations : autour de Y (vers la gauche ou vers la droite) et autour de X (bascule en avant ou en arrière)
Groupe translation : suivant les trois axes.
A la souris : cliquer avec le bouton gauche dans la boite de dialogue;
En déplaçant la souris on effectue les mêmes rotations.
Le bouton afficher la grille affiche la grille utilisée par dessus l'image.

scene 0 
scene 1 

comPanFisheye

Il permet d'afficher des images ou des video(.avi) format fisheye sur une console à miroir.
Il combine les maillages-cube-fisheye et cube_miroir.
(ce paragraphe est en cours de rédaction)

Les logiciels sont écrits avec l'environnement MFC Visual 6 de Windows. Cela concerne surtout la boite de dialogue car les classes CMesh et CPanCamera sont simplement en C++ et facilement portable sur tout autre système.

Ils sont téléchargeables ici (avec le source) sous la licence CeCILL qui est une adaptation au droit français de la licence Open Source.