» Projeter sur une geometrie en 3D
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Projeter sur une geometrie en 3D

English | Russian | Italian | English

Cet article vous fournira une approche pratique pour résoudre les problèmes liés aux sujets suivants:

Notez qu'en raison de la nature pragmatique de l'approche décrite, les résultats ne seront pas parfaits mais peuvent être satisfaisants. Tout dépend de votre patience.

Introduction

Tous les sujets mentionnés précédemment traitent du même problème: trouver la pose (position, orientation) d'un objet ou la pose et l'optique (angle d'ouverture, décalage) d'une caméra filmant cet objet.

Dans les films à effets spéciaux (spécialement 3D), les termes "match moving" ou "camera tracking" sont utilisés pour décrire le moyen de faire correspondre une scène réelle avec sa contre-partie virtuelle et les mélanger de manière invisible. Pour ce faire, une liste de logiciels existent (boujou, 3d equalizer, ...) pour faciliter la vie des truqueurs.

En ce qui concerne le graphisme informatique en temps réel, l'ARToolKit fournit une solution qui fonctionne dans certaines situations (regardez ARTK+Tracker? pour une implémentation dans vvvv) et des sociétés comme domeprojection offrent des services d'autocalibrage de projecteur. Mais aussi longtemps que vvvv n'aura pas de node pour programmer quelque chose comme ceci ou même ça, l'approche pratique du matching statique restera une bonne solution à certains problèmes.

Projection sur une surface plane

Si votre cible de projection est une surface plane, comme un mur, et que votre projecteur est à une position arbitraire, c'est à dire pas tout à fait en face de la zone sur laquelle vous voulez projeter, l'image sera déformée. En utilisant Homography (Transform 2d) vous pouvez facilement pré-déformer l'image que vous voulez projeter de manière à compenser les distorsions.

Note: Grâce à ça vous aurez toujours une image correcte projetée sur une surface plane, indépendamment de la position, de l'orientation et de l'optique du projecteur.

Projection sur une surface arbitraire

Faire correspondre manuellement un projecteur statique virtuel avec un projecteur réel

Lorsqu'on projette sur une surface arbitraire en 3D, peu importe la position et l'orientation du projecteur face à la surface, l'image finale sera très souvent distordue. Notez pourtant qu'il existe un point à partir duquel l'image projetée semblera parfaitement alignée: la position du projecteur.

Les images ci-dessous montrent une structure simple faite de 2 boîtes avec une fenêtre Windows projetée à plat. Alors que sur la photo de gauche l'image projetée est déformée, sur la photo de droite, prise depuis le point de vue du projecteur, l'image est correcte.

Après avoir vu ces images vous devriez maintenant comprendre que la clef pour une bonne image non-déformée est:

Une projection sur une surface semble non-déformée (c'est-à-dire exactement telle qu'elle est projetée) quand elle est vue du point de vue du projecteur.

Comparez également Distorted way-finding-system et 3D Painted Rooms.

Donc pour arriver à un aspect non-déformé sur une surface arbitraire, vous devez simplement fournir au projeteur une image de la surface de projection vue depuis sa propre position (celle du projecteur, vous suivez?). En d'autres termes: considérez le projecteur réel comme une caméra virtuelle, filmant une réplique virtuelle de la surface de projection réelle. Si vous projetez l'image que cette caméra virtuelle voit avec le projecteur réel, elle devrait correspondre exactement à la surface et sembler non-déformée.

Notez que tout ceci fonctionne parfaitement... en théorie, étant donné qu'il y a de bonnes chances pour que vos paramètres de scène virtuelle ne correspondent pas rigoureusement aux paramètres de projection réels; certains d'entre eux, comme l'orientation du projecteur, sont très durs à mesurer précisément. Mais peu importe, c'est ici qu'apparaissent les bidouillages manuels de ces paramètres et, avec un peu de patience et d'entraînement, ils vous donneront d'assez bons résultats.

Réplique virtuelle de la scène réelle

Créer une copie virtuelle de votre installation réelle implique 3 étapes:

  • définir l'origine pour le système de coordonnée de l'environnement réel que vous ferez correspondre avec votre AxisAndGrid (EX9) ? dans vvvv.
  • créer un modèle 3D de la surface de projection cible et le placer correctement dans votre scène virtuelle en fonction de l'origine du système de coordonnée: vous pouvez faire cela en utilisant un outil de modelage 3D externe ou les primitives géométriques de vvvv. Dans tous les cas, il est préférable d'avoir un maillage que vous pouvez ajuster manuellement avec PointEditor (3D Persistent) durant le processus de correspondance.
  • mesurer la position, l'orientation et les caractéristiques optiques du projecteur: utilisez le module Projector (EX9) et renseignez tous les paramètres que cette node offre. Cherchez des schémas tels que les suivants dans le manuel fourni avec votre projecteur, pour obtenir des informations sur le décalage et l'angle de champs de la lentille. Vous pouvez aussi trouver ici les données relatives à de nombreux modèles de projecteur.

A ce niveau vous avez une installation basique dans laquelle la scène virtuelle correspond à la situation réelle. Prenez le temps de peaufiner vos réglages sur le module Projector (EX9) ou adaptez votre maillage 3D avec PointEditor (3D Persistent) jusqu'à être satisfait de la superposition scène virtuelle/scène réelle.

tiki-download_file.php?fileId=1894ProjectionMapping_ConfigSimple-1.v4p (27.80 Kb)</a>

Texture plate alignée avec une surface

Grâce à cette configuration basique il est désormais très simple d'obtenir un effet comme dans le projet Valcucine’s skyscraper de dotdotdot. Le but ici étant de projeter des images de manière à ce qu'elles paraissent faire partie de la surface de projection, c'est-à-dire comme si elles étaient une texture intégrée à l'objet. Les textures devraient apparaître de la même manière, indépendamment de la position depuis laquelle vous regardez la surface/sculpture et de la position du projecteur.

En utilisant un projecteur ayant le même point de vue et la même optique que la caméra virtuelle, le modèle 3D correspondra parfaitement à la surface de projection. N'importe quelle texture appliquée sur le modèle 3D (dans l'exemple ci-dessous, une simple croix noir sur fond blanc) semblera non-déformée sur la surface de projection et, par conséquent, se comportera comme les textures plates qui apparaissent toujours de la même manière, indépendamment du point de vue des spectateurs.

Lumières et Ombres

Tout shading (ce qui inclut l'éclairage et l'ombrage) que vous appliquez au modèle virtuel est un effet de surface orientée et, en tant que tel, se comporte comme une texture plate sur le modèle. Des effets comme ceux utilisés dans Lightstrive et les Séries de Sculptures Augmentées de Pablo Valbuena peuvent être obtenus de cette manière.

L'Illusion de la 3D

Des effets de fausse 3D comme la projection à la mairie de La Hague de Pablo Valbuena, la projection à la Nuit Blanche de Bruxelles de AntiVJ et quelques unes des projections d'easyweb contiennent une autre bizarrerie dont vous devriez être conscient

Alors qu'avec la configuration précédente ces effets sont relativement faciles à atteindre en ajoutant simplement des extensions 3D à votre modèle virtuel, pour le spectateur cela ne fonctionne vraiment que depuis le point de vue de la caméra virtuelle. Comme cet exemple nous le montre, lorsqu'elle est vue depuis le point de vue du projecteur, la texture semble être extrudée de la boîte. Lorsqu'elle vue depuis un point de vue totalement différent, l'illusion disparaît.

Mais peu importe, dans la plupart des cas cela ne représentera pas un problème majeur dans la mesure où notre oeil, habitués à la TV et au cinéma, et notre cerveau sont relativement tolérants à de tels défis visuels (du moins tant que l'on ne s'éloigne pas trop de la position idéale). Comparez également les peintures au sol de John Beever.

La Perspective de la Caméra Virtuelle est Différente de la Position du Pojecteur Réel

Avec certaines configurations il est impossible de faire correspondre la position du projecteur réel avec la position de la caméra virtuelle ou du projecteur virtuel:

  • soit parce que vous désirez que votre scène virtuelle soit vue depuis une position où votre projecteur réel ne pourra être placé
  • soit parce que vous souhaitez que plusieurs projecteurs réels partagent une perspective virtuelle unique.

Dans ces cas-là, vous aurez besoin de deux passes d'affichage:

  • la première affiche la scène vue depuis la perspective désirée
  • la seconde affiche la scène vue depuis la position du projecteur réel PENDANT que le résultat de la première passe est projetée sur le modèle 3D depuis la perspective de la caméra virtuelle.

Exemples:

Projeter sur deux côtés d'une bâtiment avec une perspective

Dans cette configuration, l'idée était de projeter (entre autres) des effets d'illusion 3D sur la façade du FH Schwäbisch Gmünd.

En sachant que ce type d'effet ne fonctionne que depuis une seule perspective, une vue "spectateur" a été choisie de manière à ce que les deux côtés de la façade soit visibles. C'est à dire au milieu des deux projecteurs réels utilisés.

Voici un patch montrant la configuration basique:
tiki-download_file.php?fileId=1893ProjectionMapping_2Projecteurs.rar (11.44 Kb)</a>

L'image ci-dessus démontre que l'illusion de 3D ne fonctionne que depuis la position du spectateur/caméra virtuelle. Pour plus d'informations sur les résultats des 5 jours d'atelier à Schwäbisch Gmünd, regardez ici.

Configuration de Projection sur 360°

Dans une situation de projection sur 360° toutes les caméras doivent être placées à la même position. Alors que cela est possible dans une scène virtuelle, vous ne pouvez pas placer plusieurs projecteurs physiques de manière rigoureusement identique dans une scène réelle.

Pour une démonstration approfondie d'installation de projection sur 360°, reportez_vous à ceci:
tiki-download_file.php?fileId=1698small 360 degree setup.zip (35.95 Kb)</a>

anonymous user login

Shoutbox

~19h ago

microdee: @mrboni: try the help patches next to the dll

~20h ago

joreg: @apnoe try the Lumax (Devices) node (only in x86 builds)

~21h ago

mrboni: @microdee - just dragged the dll into b32.1

~23h ago

apnoe: anyone some experience with v and ilda / laser controlling? is it possible to send to an usb / ilda interface from v?

~23h ago

fleg: open call still open till friday. international arists are invited to apply! bit.ly/1rRXI1R

~2d ago

microdee: @mrboni: storing-and-setting-paramters can you link the patch here? probably i forgot to reset the stream somewhere

~2d ago

mrboni: @stix - is a workaround but you can split the dx11 geometry using a gsfx in here dx11-modules-and-shaders-addition-ii and rebuild as dx9

~2d ago

mrboni: @microdee - cant find the thread for some reason, but your rawobject.dll aint working- "Unable to read beyond the end of the stream"

~2d ago

StiX: alternative to intersect nodes in dx11?

~2d ago