Ce premier exemple est inspiré de mon
sujet de TIPE. Il crée un tableau rempli
d'un bruit pseudo aléatoire appelé bruit de Perlin (voir
Wikipedia, ce
tutoriel
et le code en javascript) avant de s'en servir pour fixer l'altitude
des sommets d'une grille carrée. Chaque point est ensuite coloré en fonction de son altitude.
Voir le résultat dans votre navigateur
lire le code ou se contenter d'une image :
Malheureusement, le résultat n'est pas très réussi car selon le point des vue, des faces de couleurs différents s'affichent.
Ce second exemple permet d'afficher une géométrie contenu dans un fichier xml exporté par Blender.
Il est très limité, car il suppose que tous les sommets ont la même couleur, il ne tient pas
compte de l'éclairage de la scène, ne considère que le premier objet qui apparaît dans le fichier et
suppose que les normales de chaque sommets ont été précalculé. Il ne s'agit pas de réécrire
x3dom mais d'une simple démonstration qui peut lire
l'hippocampe de Centrale Nantes et la tête de Suzanna, la mascotte de Blender.
mais vous p ouvez le tester avec vos propre fichier...
Voir le résultat dans votre navigateur
lire le code ou se contenter d'une image :
Il apparaît donc que WebGL constitue une alternative puissante à Flash pour réaliser du contenu 3D sur internet, notamment en raison de ses performances. En effet, l'API est implémentée directement dans le matériel par l'intermédiaire des pilotes. La qualité graphique pourrait théoriquement atteindre celle de jeu DirectX 9 ou 10 (comme Crysis) mais il se pose les problème de vitesse de code (mais si javascript a fait d'énorme progrès ces dernières années, on le voit mal rivaliser avec du C++ compilé. Une alternative pourrait être l'utilisation de d'un système permettant l'exécution de code du code natif au sein d'un navigateur comme Google Native Client. On peut aussi se demander si la nature « chaotique » de javascript due à son paradigme orienté prototype serait bien adaptée à l'écriture de centaines de millier de lignes de code.) et l'éternel problème de bande passante, car les jeux récents nécessitent des textures haute résolution et des modèles à plusieurs millions de sommets qui occupent facilement une dizaine de gigaoctets (même si ils ne sont pas tous utilisés simultanément).
Un des avantages de WebGL est qu'il utilise une API reconnue, notamment dans le domaine professionnel et scientifique, ce qui facilite le portage de code. Une application qui pourrait par exemple en bénéficier serait Google Earth.