Petit tour de l'actu 3D des derniers jours...
Big Buck Bunny from Blender Foundation on Vimeo.
Les amateurs de HD iront sur le site officiel récupérer une des versions du film à télécharger (la résolution monte jusqu'à 1920x1080).
J'avoue être un peu déçu par le film final ; au niveau technique 3D, effectivement, c'est très bon, et la cohérence artistique est elle aussi maîtrisée. Mais j'attendais plus d'un projet d'une telle ampleur qu'un scénario aussi peu inventif... Bien des projets d'étudiants en école de graphisme réussissent à dépasser largement le niveau de Big Buck Bunny sur ce point. Même s'ils sont souvent graphiquement moins réussis, une bonne partie d'entre eux font preuve d'inventivité au niveau scénaristique. Ici, rien de plus qu'une histoire à la tex avery pas franchement drôle. Pour un film de cette ampleur, je trouve ça un peu dommage.

Ingrid Bergman et Song Hye Kyo par Max Edwin Wahyudi, Night Elf par Max Koret et Ella de Ziv qual
Dans mon dernier billet, je parlais de Milkscanner, un programme qui permet de scanner des objets pour obtenir une version 3D en utilisant un liquide tel que le lait.
L'idée était intéressante car peu coûteuse, mais elle posait un certain nombre de problèmes, le plus évident étant que l'on ne peut pas tremper n'importe quel objet dans du liquide.
Je suis donc allé voir du côté d'un logiciel que je connaissais depuis un certain temps sans l'avoir testé : DAVID.
DAVID utilise une approche assez classique pour scanner des objets. Une ligne laser est projetée sur l'objet ; une webcam filme le résultat et le programme analyse la déformation de la ligne pour en déduire le relief.
Fonctionnement de DAVID
Sur l'image qui précède, on place aussi un repère placé derrière l'objet ; il sert lors de la calibration de la caméra. En effet, l'objectif crée des déformations, tout comme sur un appareil photo. Le repère permet de calculer ces déformations pour ensuite les éliminer.
Après avoir scanné un objet, on peut l'exporter au format .obj ; il est aussi possible de fusionner le résultat avec d'autres scans de l'objet sous d'autres angles, pour reconstruire l'objet totalement.
L'intérêt de DAVID réside surtout dans son prix : le logiciel en lui-même est gratuit (la fonction de fusion est payante, mais d'autres logiciels gratuits permettent de s'en passer), et donne de bons résultats même avec des lasers bas de gamme. Un niveau laser de bricolage pourra donner de bons résultats !
Après quelques essais pour se faire la main, on parvient assez facilement à obtenir des résultats intéressants. Les points clés ne résident pas tant dans le matériel que dans la qualité de construction du repère et des manipulation : si les feuilles sur lesquelles sont imprimées le repère sont gondolées ou que l'angle n'est pas de 90°, si on balaie trop rapidement l'objet avec le laser ou que l'angle n'est pas assez grand, les résultats seront médiocres.
Pour preuve, voici mon premier objet scanné ; au départ, il s'agissait d'une sculpture d'éléphant.
Elephant scanné avec DAVID: Un premier test... plutôt raté.
En revoyant la conception du repère et en améliorant les conditions de travail, mais aussi en modifiant les paramètres de la caméra (exposition, luminosité, saturation, etc), j'ai rapidement pu améliorer mes résultats. L'image qui suit est un de mes derniers essais ; il s'agit d'un fossile de trilobite.
Version numérisée du fossile
Sur l'image, on note la présence de deux types de trous :
Au final, on obtient un objet en haute résolution : 250 000 vertex et 500 000 faces pour le modèle de trilobite !
Trilobite: version haute résolution d'un fossile de trilobite ( 8cm de long)
Pour des applications temps réel, j'ai enfin réduit la résolution d'un facteur 200 environ.
Trilobite: version low poly du fossile, avec texture et en temps réel.
L'objet n'est pas fini, je dois encore générer une normal map à partir de l'objet haute résolution, afin de garder un maximum de détails pour le relief.
Une seule adresse : http://www.david-laserscanner.com. Vous y trouverez le logiciel, une boutique de lasers, un forum assez réactif en cas de problème et une aide assez détaillée sur la technique.
Milkscanner est un programme créé par Friedrich Kirschner dont le but est de pouvoir créer des modèles 3D à partir d'objets réels.
Il s'agit donc d'une sorte de scanner 3D, donc, sauf que contrairement aux scanners habituels, l'investissement est ici vraiment très faible, et aucun laser n'est utilisé.
Une heigthmap issue de Milkscanner :
un point est d'autant plus proche qu'il est clair.
Le Bouddha que j'ai utilisé pour
créer la carte de profondeur qui précède
Milkscanner utilise en fait un constat simple : en plongeant un objet dans l'eau, les points situés à la limite entre partie émergée et immergée sont situés dans un même plan.
Le principe qui en découle est le suivant. On prend un objet que l'on met dans un récipient ; on place une webcam à la verticale de l'objet. On va ensuite alternativement rajouter du lait, prendre une photo, rajouter du lait, ...
La webcam sert à détecter les contours de la partie émergée de l'objet.
Si à l'étape n un point est émergé, on lui attribue le niveau de gris associé à l'étape n. En n+1, s'il est immergé, on ne le change pas : on sait que sa distance est celle du lait en n. S'il est émergé, on le met à jour avec le niveau de gris en n+1.
Ainsi, si on a un objet d'épaisseur 5 cm et que l'on rajoute approximativement 1/4 de cm de lait à chaque étape, on obtient une image comportant une vingtaine de niveaux de gris. Un point sera d'autant plus éloigné qu'il est foncé.
La précision dépend directement de la résolution de la webcam et du nombre de niveaux de mesures.
Histoire de rendre les explications plus concrètes, voici deux vidéos de Friedrich Kirschner.
Tout d'abord, Milkscanner utilisé sur un petit objet :
Sur l'écran, on voit l'interface du logiciel : à gauche la vue de la webcam avec le contour de la partie émergée, à droite la heightmap en cours de construction.
Un inconvénient de la méthode étant que des objets clairs peuvent se confondre avec la luminosité du lait, il est possible d'utiliser un liquide foncé, comme dans cette vidéo :
Milkscanner a l'avantage d'être simple dans son principe et d'utiliser un matériel très peu cher.
Les inconvénients sont malheureusement nombreux :
Suite du vieux Work In Progress de modélisation d'une orchidée sous Wings3D : voici quelques captures du résultat en temps réel.
Le moteur 3D utilisé est Demoniak3D, déjà évoqué ici à plusieurs reprises ; j'ai rajouté un shader assez basique (modèle de phong avec un soupçon de normal mapping).
J'ai aussi modifié les textures afin de rectifier en partie certains raccords.



Plusieurs idées sonc actuellement envisagées pour la version temps réel finale :
Sarracenia - modélisation sous wings 3D
Je suis bien entendu preneur de toute remarque ou suggestion. ;-)
Pour les curieux, voila le rendu brut sans shader, à comparer à ce qui précède :
Rendu sous Demoniak3D sans shader
Rendu sous Demoniak3D sans shader
On voit clairement l'apport du shader : il apporte des ombres douces au modèle, et rend plus visible certains volumes.
L'effet de normal mapping est aussi présent, mais peu visible. Ceci est compréhensible dans le sens où les pétales sont relativement plates à la base : l'effet ne pouvait donc pas être prononcé dans le cadre d'un rendu qui se veut réaliste.
En enlevant la texture tout en laissant le normal mapping, on voit son effet sur la lumière :
Effet de normal mapping (dos de la fleur)