nouvelles-technologies

Le B A BA de la 3D dans Flash

La semaine dernière j’ai eu la chance de rencontrer Jean-Marc Le Roux d’Aerys, l’éditeur du moteur 3D Minko. Cette rencontre a été pour moi l’occasion de lui poser toutes les questions que je n’avais jamais osé demander sur la 3D et sur Flash. Je vous propose donc un petit résumé de notre entretien.

Les explications qui vont suivre sont une tentative de vulgarisation de l’auteur. Si vous y voyez des erreurs ou des raccourcis dangereux, merci d’apporter votre contribution à cette tentative de vulgarisation de façon constructive dans les commentaires.

Comment fabrique-t-on de la 3D dans un navigateur ?

Pour vous la faire simple, un ordinateur est composé de couches matérielles (processeur, puces, périphériques…) et logicielles (système d’exploitation, applications, plugins…). Tout ceci forme un empilement assez complexe que l’on peut dompter avec les APIs. Les APIs sont des interfaces de programmation qui permettent d’exploiter les ressources matérielles (dans le cas qui nous intéresse, la puce graphique).

Dans le monde de la 3D, il existe deux familles d’APIs : DirectX qui ne fonctionne que sous Windows (édité par Microsoft) et OpenGL qui fonctionne sur les différents OS du marché (Windows, Mac et Linux, édité par le Khronos Group). Ces deux familles d’APIs vous permettent donc de demander à la puce graphique de calculer des objets et scènes 3D. Plus précisément, ces demandes transitent par un programme de rendu (le shader). Vous êtes parfaitement libre de développer vos propres méthodes de dialogue avec la puce ou votre propre shader, mais les APIs sont là pour vous simplifier la tâche.

Jusqu’à récemment, pour faire de la 3D dans le navigateur, il fallait passer par des plugins spécifiques (Shockwave, 3DVia…) ou par Flash et des librairies 3D pas très performantes (qui s’appuyaient sur le processeur pour calculer de la 3D). Tout à changé récemment quand le Khronos Group a décidé de travailler sur WebGL, une API javascript permettant d’accéder à OpenGL (et donc à la carte graphique). Adobe a décidé de proposer une alternative et à travaillé sur Molehill, une API qui permet de solliciter les APIs OpenGL ou DirectX depuis Flash (Flash Player 11 inaugure une nouvelle ère pour le web 3D).

En théorie, WebGL est une API plus performante, car elle limite le nombre de couches logicielles, mais elle subit le problème de fragmentation des différentes implémentations d’OpenGL sur les OS (le rendu n’est pas le même d’une version à une autre). La promesse de Molehill est donc d’harmoniser les différences d’implémentations d’OpenGL et de fournir un rendu homogène quel que soit l’OS ou le navigateur.

L’ambition d’Adobe avec Molehill est gigantesque, à commencer par les performances : Flash10 et une librairie comme PaperVision3D ne permettait pas d’animer plus de 10.000 polygones ; avec Flash 11, on peut facilement dépasser les 300.000 polygones. Pour vous donner une unité de comparaison, une scène 3D photoréaliste nécessite entre 500.000 et 700.000 polygones, nous n’en sommes donc pas très loin. L’objectif d’Adobe avec Flash 11 est donc de se démarquer d’HTML5 (et dans une certaine mesure d’iOS) en permettant des usages impossibles avec HTML (non pas en terme de performances, mais d’expérience utilisateur générale). Pour cela, les équipes d’Adobe ont formé un groupe de travail (mené par notre Thibault national) pour pouvoir développer une solution viable conjointement avec la communauté.

minko_quake3-7649858 Quake 3 dans votre navigateur avec Flash

Outre Flash, il existe d’autres technologies, à commencer par Unity3D, mais le taux d’adoption de ces plugins est beaucoup plus faible. Il n’y a donc pas de réelle comparaison possible.

Comment faire de la 3D dans Flash ?

Comme nous venons de la voir, Molehill est donc une API permettant de solliciter la puce graphique pour calculer de la 3D. Dans les faits, cette API est assez « brute » (dans le jargon, on dit « bas niveau »). Comprenez par là qu’il va falloir vous retrousser les coudes avant de sortir votre première scène 3D. Les moteurs et frameworks 3D proposent donc une alternative plus haut niveau afin d’accélérer le développement et de « démocratiser la 3D ».

Il existe un certain nombre de moteurs et frameworks que j’ai déjà évoqué sur ce blog (Away3D, Alternativa3D, PaperVisionX…). Pour résumer une longue explication, je dirais que les frameworks sont plus performants, mais nécessitent des compétences plus pointues. Les moteurs sont plus faciles d’accès, mais sont plus directifs (dans le premier cas vous mangez à la carte, dans le second vous prenez le menu). Il n’y a donc pas de bon ou mauvais choix entre les différents frameworks et moteurs, uniquement des solutions proposant des niveaux de complexité différents. Il vous faudra ainsi privilégier la performance ou la simplicité de prise en main. D’autres critères rentrent en considération comme la modularité ou le modèle économique.

Dans ce paysage, Minko est un moteur 3D qui repose sur un framework (donc qui allie facilité d’accès et souplesse). C’est une bibliothèque open-source associée à des extensions. La promesse de Minko est donc de rendre la 3D dans Flash plus simple (pour les éditeurs) et plus accessible (pour les agences et annonceurs). L’objectif ultime étant de fournir un environnement de production 3D qu’un développeur Flash saura appréhender facilement. Ne ratez sous aucun prétexte la très belle démo avec la Citroën DS3.

minko_citroen-7572548 Très belle représentation 3D dans Flash avec Minko

Minko propose en plus un système d’extensions particulièrement bien conçu pour pouvoir étendre les capacités : moteurs physiques (ex : JigLib Flash), moteur de particules… Plusieurs démos sont disponibles sur leur chaine Youtube : AerysInnovation.

Quels usages pour la 3D dans Flash ?

Après toutes ces explications techniques, nous en venons donc tout naturellement aux usages de la 3D dans Flash, et ils sont nombreux :

  • Les jeux, qu’ils soient sociaux, causal, serious, mobiles ou même les advergames. Flash est aujourd’hui la technologie de référence pour distribuer des jeux en ligne. Molehill et les moteurs 3D, vont permettre de rajouter une troisième dimension (ex : le jeux RobotZ sur Facebook).
  • Le commerce en ligne et le v-marketing. La troisième dimension est ainsi un atout précieux pour mettre en valeur les produits (vue 3D) ou pour plonger les internautes dans des univers immersifs (et restituer plus fidèlement les codes ou les valeurs d’une marque).
  • La réalité augmentée. J’ai déjà eu l’occasion de vous parler de la librairie Flair Toolkit, mais il en existe d’autres (dont la très prometteuse In2AR).
  • L’événementiel. Développer une interface 3D pour une borne ou une surface tactile n’est pas à la portée du premier venu. Par contre, donner la possibilité à des agences qui n’ont « que » des compétences Flash va permettre de démocratiser ce type d’opérations (nous en revenons donc à cette notion de démocratisation de la 3D).

Rajoutons à cela la possibilité de porter des applications Flash en dehors du navigateur. Oui c’est bien d’iOS dont je suis en train de parler. Apple a toujours fait barrage à Adobe pour accepter Flash sur l’iPhone ou l’iPad, mais les dernières versions de la Creative Suite permettent de compiler du Flash en application iOS. Cette solution permettrait donc d’étendre les possibilités de distribution d’un jeu ou d’une développement Flash. Je ne m’attarde pas trop sur le sujet car les choses vont beaucoup bouger dans le courant de l’année…

Quelles évolutions pour la 3D dans Flash ?

Flash 11 n’est pas encore sorti (nous ne connaissons toujours pas la date de lancement officiel), mais les équipes d’Adobe travaillent d’arrache-pied pour finaliser une première version officielle à la fois stable et performante. La suite du chantier 3D va se faire conjointement avec la communauté, l’objectif d’Adobe étant de faire évoluer Molehill pour apporter le plus de valeur ajoutée aux développeurs et éditeurs de moteurs 3D. Cela veut dire à la fois de meilleures performances, mais également des outils de production plus… productifs.

Ceci étant dit, le gain de performances entre Flash 10 et 11 est gigantesque, mais il y a tout de même des limites à ce que l’on peut faire avec Flash. L’effort ne va donc pas se focaliser sur la performance pure, mais sur l’expérience utilisateur. L’avis de Jean-Marc Le Roux est ainsi très tranché : Il n’y a ainsi que très peu d’intérêt à reproduire ce qui existe déjà (par exemple porter dans Flash des jeux traditionnels). La valeur ajoutée réside plus dans des applications et expériences qui n’existaient pas avant, d’où l’intérêt de simplifier (démocratiser) l’accès à la 3D aux équipes créatives et non le restreindre aux développeurs qui maitrisent la programmation « bas niveau ».

Sur ce point-là, nos avis convergent, car j’avais exprimé une posture similaire lors de l’annonce du lancement de Native Client par Google (une technologie ultra-performante mais trop « bas niveau » pour mobiliser un écosystème viable).

Autre possibilité d’évolution : marier la 3D traditionnelle avec la 3D stéréoscopique (celle qui nécessite des lunettes). Là encore, il y a beaucoup à faire, mais nous avons encore un peu de temps car le marché n’est pas encore prêt.

Conclusion

Donc comme vous l’aurez compris, la 3D dans le navigateur ne fait que démarrer. Nous pouvons sans nous tromper dire que 2011 marque un tournant dans le portage des applications 3D au sein du navigateur (qui est possible depuis une dizaine d’années avec Shockwave). Un tournant qui va permettre aux applications 3D de séduire le grand public.

Paradoxalement, les avancées technologiques en cours de finalisation vont ouvrir d’innombrables opportunités pour faire de la 3D dans ET en dehors du navigateur. Une fois ces avancées stabilisées, reste encore à la communauté le travail d’appropriation pour faire émerger de nouveaux usages et de nouvelles expériences. Oui décidément l’année 2011 va être passionnante…