Or donc, Apple ne prépare rien de moins qu'un petit moteur 3D parmi les nouvelles fonctionnalités de Mac OS X 10.7 (lire Scene Kit, une nouvelle API 3D dans Lion).
Quid d'OpenGL? En réalité, sans la surcouche d'un moteur 3D digne de ce nom, OpenGL ne vous mènera pas bien loin : il s'agit d'un framework de bas niveau, c'est à dire le dernier rempart entre votre code et le matériel, qui n'est capable que de piloter la carte graphique (ou d'émuler les fonctions qu'elle ne prend pas en charge), afin d'afficher des primitives : point, ligne, ou polygone. A charge du développeur de bâtir tout le reste avant l'affichage, et ce ne sont pas les fonctions indispensables qui manquent en matière de 3D.
Ainsi, pour en arriver au point d'afficher un simple modèle 3D réalisé dans un logiciel de modélisation quelconque, il faut en passer par l'implémentation du format de fichier sur lequel le développeur aura jeté son dévolu, la lecture et la conformation de ses données, le chargement des textures, faire le produit en croix des sommets de chaque facette pour déterminer si sa normale (c'est à dire la droite orthogonale au plan défini par la facette) est orientée de manière à être visible par la caméra à l'aide d'un autre calcul, la projection des points sur le plan de la surface d'affichage, perspective incluse, à l'aide du théorème de Thales, la sélection des facettes à afficher (afin d'éviter que celles qui se trouvent en dehors du champ de vision, ou que celles qui sont masquées par d'autres, ne soient calculées pour rien), l'application de la texture suivant des cordonnées UV sur chaque facette (avec filtrage tri-linéaire pour éviter sa pixelisation), et les effets divers tels que l'illumination de l'objet. Pour cette dernière, on peut utiliser divers algorithmes existants (les modèles d'illumination de Lambert, Gouraud, Phong…) et y ajouter des subtilités ou non telles que le bump mapping, qui simule des reliefs sur une surface, ou encore les ombres portées, parmi bien d'autres choses encore. Et il ne s'agit là que du simple affichage d'un seul modèle statique, sans même évoquer des fonctions autrement plus complexes à mettre en œuvre…
Le fait qu'OpenGL soit si proche du matériel offre comme avantage une grande souplesse pour le développeur, qui peut ainsi sortir des sentiers battus quant à la façon d'afficher ses modèles 3D, mais également le lourd inconvénient d'avoir à réinventer la roue (et dans notre cas la roue nécessite de solides bases de géométrie dans l'espace et la maîtrise de concepts mathématiques et d'algorithmes relativement pointus). En somme, la 3D reste hors de portée des développeurs les moins chevronnés, ou du moins elle a de quoi décourager les moins déterminés. Précisons toutefois qu'OpenGL bénéficie sur Mac d'une légère surcouche, Core OpenGL, qui simplifie son intégration avec les autres frameworks du système.
C'est là qu'interviennent les moteurs 3D : ces surcouches prennent en compte tout ou partie des besoins en matière de 3D : importation de modèles 3D à partir de formats de fichier standards, gestion de l'affichage, de l'animation, des collisions, intégration d'un modèle physique, etc.
Il existe nombre moteurs 3D plus ou moins aboutis et prêts à l'emploi : le monde des jeux vidéo connaît quelques gloires comme l'Unreal Engine, l'Id Tech 5, ou le CryENGINE 3, qui ajoutent également nombre de fonctions dédiées au seul genre du jeu. Il s'agit là de moteurs commerciaux mais il en existe également dans le monde du logiciel libre.
Naturellement, ces moteurs suivent leurs propres rythmes de développement, et restent indépendants des plateformes sur lesquelles ils fonctionnent, ce qui peut parfois poser quelques problèmes. Scene Kit n'aura pas cet inconvénient puisqu'il fait partie du système d'exploitation. Toutefois, cet "agnosticisme" des moteurs 3D relativement à la plateforme d'exécution présente l'avantage de permettre de réaliser la majeure partie du développement une fois pour toutes, le portage d'une plateforme à l'autre étant réduit à sa portion congrue, à savoir tout ce qui ne relève pas du moteur 3D à proprement parler.
En l'état, Scene Kit ne fonctionne donc que sur Lion, mais comme pour d'autres frameworks de Mac OS X il y a fort à parier qu'il fera son apparition dans une future version d'iOS, ce qui devrait lui offrir une force de traction suffisante pour être adopté par un certain nombre de développeurs.
Les formats 3D ont leur tour de Babel
Le format de fichier que Scene Kit permet d'importer nativement est le COLLADA : créé au sein de Sony Computer Entertainment Inc pour la PlayStation 3, et depuis placé sous l'égide du Khronos Group (le consortium qui gère également d'autres standards ouverts tels qu'OpenGL et OpenCL), ce format est sans doute celui qui est le plus largement supporté dans le monde de la 3D aujourd'hui. Il faut ici expliquer qu'à l'inverse d'autres formes de médias, comme l'image, le son voire la vidéo, les modèles tri-dimensionnels ont connu bien des affres avant qu'un standard industriel ne fasse vraiment l'unanimité. Et pour cause, puisque l'agencement des données dépend directement de la manière dont chaque logiciel de 3D mesure son univers : le sens de stockage des points composant une facette, horaire ou anti-horaire, inversera la direction de leur normale : l'extérieur devient l'intérieur, et réciproquement. Les logiciels peuvent également être "gauchers" ou "droitiers", en fonction de l'agencement des axes x,y et z selon lesquels toutes les coordonnées sont rapportées.
Un logiciel 3D pourra donc stocker les données d'une manière ou de l'autre, quand bien même le fait-il dans un format standard. Et il n'est pas rare d'avoir à inverser les normales d'un modèle à son ouverture, voire de passer d'une "main" à l'autre. Mais les formats standards eux-mêmes se sont succédés à mesure de l'augmentation des capacités des logiciels : en 1982, le DXF d'AutoCAD était l'espéranto des premières heures, mais celui-ci n'intègrait strictement que les modèles en eux-mêmes, et leur géométrie : pas de textures ni de lumières, et encore moins d'animations. Et comme AutoDesk a mis un certain temps avant de publier les spécifications du DXF, nombre d'implémentations du format, dans d'autres logiciels, ont été hasardeuses.
Le DXF a connu nombre d'héritiers et de prétendants à son titre : pour n'en citer que quelques uns, on trouve le format OBJ de Wavefront qui peut intégrer lumières et textures, le VRML, conçu pour le web bien trop tôt, le 3DS de 3D Studio Max (d'AutoDesk encore) qui intègre les animations, Macromedia avant de fusionner avec Adobe y était allée de sa contribution avec SW3D, et Apple elle-même a mis au point le 3DMF pour feu QuickDraw 3D.
Certains formats ne gèrent que les facettes triangulaires, d'autres ne gèrent pas les courbes NURBS ou Bézier, etc. Difficulté supplémentaire, une bonne partie de ces formats existe en deux parfums : binaire (plus compact mais incompréhensible pour un simple mortel) ou en texte ASCII (plus lourd mais lisible par les scribes et autres érudits adeptes du code source de la Matrice).
Dernier tenant de cette longue lignée, le COLLADA offre une grande souplesse : sa dernière itération en date, la version 1.5.0, permet de gérer nombre de paramètres : cibles de morphing pour l'animation, peau pour les personnages, dynamique des solides, support des matériaux d'OpenGL ES, effets de shaders pour les langages de programmation Cg, GLSL et HLSL, cinématique inverse, ou encore représentation des limites en ont fait le succès. Le format COLLADA est aujourd'hui géré par la majorité des logiciels 3D : Maya, 3DS Max, Vue, Poser, LightWave, Cinema 4D, mais également Google Earth ou Photoshop CS5 pour n'en citer que quelques uns. Snow Leopard lui-même gère ce format en standard, puisqu'il permet de manipuler des fichiers COLLADA tant dans Coup d'œil que dans Aperçu.
Scene Kit ou la 3D pour tous
Apple poursuit là une progression cohérente, puisque elle avait précédemment mis au point d'autres frameworks visant à simplifier le travail des développeurs pour aider à améliorer la qualité de leurs applications : Core Animation permet de faire des animations complexes en quelques lignes de code simples, Image Kit permet la manipulation d'image sans rien connaître des matrices de convolution, et de même Scene Kit met la 3D à la portée de tous les développeurs. Outre l'importation de modèles 3D au format COLLADA, Scene Kit permet également leur manipulation (position, orientation, redimensionnement…), et leur affichage dans OpenGL. Avec ce cadeau surprise dans Mac OS X 10.7, Apple permettra donc une utilisation plus vaste de la 3D, qui pourra être mise à profit par plus de développeurs. Si le succès de Core Animation peut être un indice de celui de Scene Kit, cela promet de très belles applications à venir, à plus forte raison lorsque ce framework sera mis à disposition sur iOS.