Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Afficher les murs

Par Monsieur Spi, le 05 janvier 2010

Menu général

Correction optique

A ce stade la projection subit une distorsion visuelle nommée « Fish Eye effect ».
Cela est dû au fait que plus un objet est éloigné et plus le rayon parcours de distance.
Ce comportement est tout à fait normal puisque tous les rayons partent d’un seul point.
Ceux du bord sont plus longs que ceux du centre alors que le mur est partout à la même distance.
La vision humaine est en mesure de corriger ce défaut à l’aide d’une lentille bombée au sein de l'œil.
Mais un écran d’ordinateur est parfaitement plat, il n’est donc pas équipé pour corriger ce défaut.

Pour mieux comprendre en quoi consiste cette distorsion jetez un œil à cette page : Distorsion optique

base19.jpg

Nous allons devoir simuler l’effet d’une lentille correctrice chargée modifier les bords du champ visuel.
En clair, replacer tous les points à la même distance pour qu’ils semblent alignés.

Pour cela il faut multiplier la distance calculée par le cosinus de l'angle entre le rayon et la droite perpendiculaire au mur touché.

base20.jpg

Afficher les murs

A chaque fois qu’un rayon touche un mur, on calcule la distance corrigée.
A l’aide de la distance on peut connaître la hauteur de la colonne à projeter.

    Hauteur de la colonne projetée = (taille d’un mur / distance de la colonne) * distance de la projection

base21.jpg

Hauteur de la colonne

Nous obtenons le produit en croix suivant :

    (hauteur de la colonne projetée / distance de l’écran ) = ( taille du mur / distance de la colonne )

Le monde est fait de cubes ayant tous la même taille (64).
On connaît la distance entre la caméra et l’écran de projection (277).
On peut donc simplifier l’équation par :

    hauteur de la colonne projetée = 64 / distance de la colonne * 277
    (ou comme nous l’avons vu plus haut : hauteur = (277*64)/distance)

Prenons un exemple.

Supposons que le rayon touche un mur à la colonne 200 et à une distance de 330.
La hauteur de la colonne sera de 64/330*277= 54
Le milieu de la projection est défini à 100.
Le milieu de cette tranche doit correspondre avec le milieu de la projection.
Le haut du mur est donc à une hauteur max de 100-(54/2)=73

base22.jpg

La suite

Détecter les murs < page précédente - page suivante > Texturer les murs