Dire que de tout temps, l'homme a voulu proposer des objets et des environnements en 3D sur Internet serait une introduction aussi banale qu'exagérée. Mais ce ne serait pas non plus totalement faux. En effet, dans le sens employé ici, Internet est synonyme de World Wide Web, concept né comme moi en 1990, et il ne faudra attendre que quatre ans pour que ne soit proposé le premier standard permettant la description de scène en 3D en vue de les transmettre sur le web. Voyons quelques une des différentes solutions développées au fil du temps.
Cette solution précoce (le premier brouillon date du 2 novembre 1994), c'est le VRML ou Virtual Reality Modeling Language. Il s'agit d'un langage purement descriptif, qui permet dans sa première version de placer des objets dans l'espace en décrivant leur forme et leur couleur dans un format textuel dont voici un exemple :
#VRML V2.0 utf8 # D'après The VRML 2.0 Sourcebook # http: # Copyright [1997] By # Andrea L. Ames, David R. Nadeau, and John L. Moreland Group { children [ Background { skyColor [ 0 0 0.8 ] } PointLight { location 3.0 3.0 3.0 ambientIntensity 0.6 }, # Draw the hut walls Shape { appearance DEF White Appearance { material Material { ambientIntensity 0.2 diffuseColor 0.10 0.10 0.10 specularColor 0.80 0.80 0.80 shininess 0.16 } } geometry Cylinder { height 2.0 radius 2.0 } }, # Draw the hut roof Transform { translation 0.0 2.0 0.0 children [ Shape { appearance USE White geometry Cone { height 2.0 bottomRadius 2.5 } } ] } ] }
Ce code produit l'image suivante (cliquez pour en voir une version plus grande).
Comme le suggère la première ligne de commentaire ci-dessus, ce langage connaîtra par la suite une version 2 nommée de façon plus impressionnante VRML97 qui deviendra la norme ISO 14772. Celle-ci supporte l'animation d'objet, les textures vidéos et un langage de script s'apparentant à Javascript afin de rajouter de l'interactivité aux scènes créées. Malgré ses qualités techniques, le VRML ne remportera jamais un grand succès, peut-être parce que, trop en avance sur son temps, ses fichiers de description étaient trop larges pour les bandes passante de l'époque.
Il a néanmoins été utilisé par la NASA pour présenter son robot Mars pathfinder (même si aujourd'hui, les fichiers semblent ne plus exister), ou par plusieurs sociétés pour simuler des environnements de discussion 3D, comme Black Sun.
Microsoft lança en 1998 un projet conçurent, chromEffects qui tirait parti de XML mais qui fut annulé au bout de seulement quelques mois.
Malgré l'échec de chromEffects, l'idée d'utiliser XML ne fut pas perdue pour Web3D, le consortium chargé, comme son nom ne l'indique pas de la manière la plus explicite qu'il soit, de gérer les standards de la 3D sur Internet (et qui tenait sa 16e conférence annuelle à Paris du 20 au 22 juin 2011). Ainsi en 2004, X3D, forme évoluée de VRML97 fut adoptée comme norme ISO 19775/19776/19777. Fondamentalement, il s'agit toujours d'un langage déclaratif mais qui utilise des balises xml, ce qui lui donne cette charmante concision, et qui a bénéficié de toutes les avancées réalisées dans le domaine de l'infographie depuis des années comme les réflexions temps réel, la Screen Space Ambient Occlusion, etc.
Voici le code pour afficher un triangle dans l'espace et le résultat.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "http://www.web3d.org/specifications/x3d-3.2.dtd"> <X3D profile="Interchange" version="3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.2.xsd"> <Scene> <Shape> <IndexedFaceSet coordIndex="0 1 2"> <Coordinate point="0 0 0 1 0 0 0.5 1 0"/> </IndexedFaceSet> </Shape> </Scene> </X3D>
Bien sûr, il possible de créer ce genre de fichier à partir d'un programme de modélisation
3D comme Blender. À titre
d'exemple, l'hippocampe ci-dessous est crée par code.
On peut voir une variété
d'autres exemples sur le site officiel du Web3D, comme un texte qui tourne autour
de la terre (et heureusement que la taille de bande passante n'est plus un facteur si
critique, parce qu'on ne peut pas dire que ce soit
très léger.)
Les progrès réalisés en terme de performance que de fonctionnalités de la part de Javascript
et de la balise canvas
dans le cadre de HTML5 ont amené la conception d'une
nouvelle solution. Développée par le
consortium Khronos
(qui est notamment responsable de l'évolution de l'API OpenGL), elle est différente des deux
précédentes car elle n'est plus déclarative mais impérative. Elle expose l'API
OpenGL ES 2 dans un élément
canvas
qui peut ensuite être manipulée en Javasript.
Les deux approches ne sont pas exclusives et pour profiter de la vitesse et de la mise en œuvre simplifié de WebGL avec la richesse descriptive de X3D (qui inclue des fonctionnalités avancées sur l'animation réaliste du corps humain ou sur la visualisation de données géospatiales) a donné naissance à X3DOM, une couche qui permet d'interpréter le contenu X3D à travers Web3D.
Comme le laisse suggérer le faible nombre de dates retenues, cette page ne représente qu'une partie de l'histoire de la 3D sur internet. Il n'a ainsi pas été fait mention de la méthode qui consiste à utiliser une applet Java pour faire de l'OpenGL, ni des divers formats proposés par Khronos, Adobe ou diverses sociétés de CAO, ni des moteurs de jeux fonctionnant dans un navigateur comme Unity, Panda, Burster, etc. On trouvera (évidemment) plus de précisions sur Wikipédia.