» 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

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.
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

~14d ago

~17d ago

joreg: The Winter Season of vvvv workshops is now over but all recordings are still available for purchase: https://thenodeinstitute.org/ws23-vvvv-intermediates/

~24d ago

schlonzo: Love the new drag and drop functionality for links in latest previews!

~1mth ago

joreg: Workshop on 29 02: Create Sequencers and Precise Clock Based Tools. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-08-create-sequencers-and-precise-clock-based-tools-in-vvvv-gamma/

~1mth ago

joreg: Workshop on 22 02: Unlocking Shader Artistry: A Journey through ‘The Book of Shaders’ with FUSE. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-12-book-of-shaders/

~2mth ago

joreg: Talk and Workshop on February 15 & 16 in Frankfurt: https://visualprogramming.net/blog/vvvv-at-node-code-frankfurt/

~2mth ago

woei: @Joanie_AntiVJ: think so, looks doable