Dans un article précédent, je vous exposais les possibilités de compatibilité de WebGL avec les navigateurs. A l’heure actuelle, cette technique n’est utilisée réellement que pour des expérimentations, ou des jeux. Or le besoin est plus large, et une autre barrière peut être rencontrée que beaucoup de développeurs connaissent : Celle de la compétence utilisateur. En effet, autant les formats 2d et les fichiers de données sont à peu près génériques permettant au client de s’y retrouver, autant les formats 3d sont aussi variés qu’il y a de logiciels d’édition 3d, jetant l’utilisateur dans une confusion et une perplexité sans fond, supérieure même à celle des formats vidéo sur le web avant l’apparition de youtube et dailymotion.
Le but de cet article est d’exposer les moyens de transformation de fichier 3d afin de permettre l’exploitation de n’importe quel fichier 3d à destination de toutes les plateformes web.
J’utilise mon éditeur propriétaire, comment je convertis mon fichier vers le web ?
La variété des éditeurs 3d, outre une saine concurrence tirant la technicité vers le haut, pose le problème de l’export. En effet, même si le format WebGL, avec des librairies comme Three.js, tendent à devenir un standard, encore faut-il que l’on puisse arriver à converger vers ce format, et fournir des maillages 3d exploitables sur toutes les plateformes.
Une première technique peut consister en l’utilisation des formats compatibles pour Three.js : ctm, collada, obj, blender, stl, vrml… Three.js possède une vaste collection de formats d’entrée notamment ceux basés sur du texte ou du xml. Toutefois, cela pose deux inconvénients : tout d’abord les formats encodés ne sont généralement pas supportés, comme les formats 3dsmax, maya, ou autre, qui représentent d’ailleurs la plus grande partie du marché des éditeurs, et par ailleurs, la transformation et le résultat de tels fichiers dans un navigateur peuvent s’avérer gourmands en mémoire et en processeur, surtout sur du mobile.
Donc il faut que j’installe quelque chose sur mon ordinateur ?
Il convient donc de se tourner vers un format natif comme le json de Three.js mais reste alors à assurer la conversion vers ce format. Là encore deux possibilités s’offrent à nous.
La première consiste à demander au client de convertir le format 3d avec son éditeur vers un format json Three.js, via un script ou programme externe ou un greffon, et fort heureusement, les principaux éditeurs sont couverts. C’est toutefois délicat au sens où l’utilisateur n’est pas forcément le producteur de contenu et qu’il ne possède pas forcément le logiciel d’édition. Plus embêtant encore, la sortie de l’export sans aucune retouche est un maillage tout aussi complexe qu’au départ, donc qui peut présenter encore des lenteurs dans l’exploitation sur mobile, il convient donc de faire une étape de simplification du maillage, aussi appelée décimation ou quadrification. Cela consiste à éliminer les points superflus au regard d’une marge de tolérance. Malheureusement, cette possibilité n’est pas forcément aisée sur les logiciels 3d, souvent cachée dans des sous sous sous menus, avec des options ésotériques que seuls les initiés comprennent.
Je n’y entends rien c’est trop compliqué à exporter ces fichiers 3d
La deuxième solution consiste à déplacer et automatiser cette étape de conversion côté serveur. Ainsi, on maîtrise les paramètres de conversion. Pour ne parler que des projets libres (question d’éthique personnelle 🙂 ), blender et meshlab peuvent être scriptés en ligne de commande et possèdent tous les imports et exports adéquats. De plus, il devient alors possible de simplifier automatiquement le maillage dans les tailles adéquates pour du mobile.
Il n’est pas plus simple d’utiliser un service externe ?
Il existe aujourd’hui quelques sites qui incluent toute cette chaîne de traitements comme sketchfab, mais les conditions de gratuité sont généralement assez contraignantes et non exploitables dans le cas d’une pme qui souhaiterait mettre un catalogue de produit en version 3d. De plus, on est assez loin de la pérennité d’un youtube ou d’un dailymotion, donc rien ne garantit que ces services seront toujours là dans un an.
Et bien alors, qu’attendez-vous pour nous permettre de l’utiliser ?
En conclusion, il est aujourd’hui possible de donner à l’utilisateur non averti la possibilité de mettre en ligne des fichiers 3d, afin que le grand public puisse les consulter. Plus que la possibilité, les labs d’Adfab sont en train de mettre plusieurs extensions au point pour la plupart des projets Open Source afin de rendre le téléchargement et la visualisation en ligne d’objet 3d aussi simple que de la video, et ce sans dépendance externe à des service tiers. La suite au prochain numéro 🙂
Sources :
http://threejs.org
http://www.shapeways.com/tutorials/polygon_reduction_with_meshlab
http://wiki.blender.org/index.php/Doc:2.6/Manual/Modifiers/Generate/Decimate