Scene Kit : Lion fait rugir son moteur 3D

Arnaud de la Grandière |

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.

skitched


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.

skitched


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.
avatar Florent Morin | 
Ca peut le faire.
avatar Giulietta26 | 
Article trés intéressant, merci pour le rédacteur.
avatar w3b | 
Je sens que mon x3100 va pas trop aimer
avatar boris.ca | 
je ne croyais pas mon prof de math a l'époque. Maintenant je sais que ce brave Thales et son théorème sert a faire des modèles 3D sous lion !
avatar Eurylaime | 
"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." Cette affirmation est dans l'état actuel des choses fausse, c'est un framework privé.
avatar bigham | 
Les paragraphes expliquant ce qu'est un moteur 3D et sur les différents formats 3D sont bien écrits mais quand une introduction représente 95% d'un article, c'est qu'on n'a pas grand chose à dire au final. Mais ce n'est que mon avis. Par exemple, l'article omet de mentionner une information capitale sur SceneKit. Est-ce que c'est une API privée ou publique ? En clair, est-ce que le framework est dans /System/Library/Frameworks ou PrivateFrameworks ? Si c'est une API privée, c'est plutôt difficile de la caser au même niveau que CoreAnimation ou ImageKit. Elle relèverait alors plus du cas du GraphKit qui permet de dessiner des histogrammes et camemberts mais qui est une API privée.
avatar jujuv71 | 
Ben voilà. MacGe vient de me filer mal au crâne...
avatar abstract | 
Quand je pense au temps où je me prenais la tête pour optimiser l'algorithme de Bresenham pour afficher des animations fluides en 3D... fil de fer... A cette époque on savait faire la différence entre les vrais et les autres!
avatar vintz72 | 
Et, par ailleurs, Open GL 4.1 sera-t-il supporté ? (ou au moins le 3.2 ?)
avatar Aphelion | 
Sinon c'est vrai que dans Lion il n'y a que des gagdets inutiles et qu'il va être très mauvais....(ironie..) Article intéressant en tout cas. Merci MacG.
avatar Boumy | 
Bon espérons que ce ne sera pas le xième flop d'Apple. Ça ressemble quand même à une très bonne nouvelle.
avatar Anonyme (non vérifié) | 
C'est bien beau, mais quand sort le premier logiciel exploitant les nouveautés de Snow Leopard ?
avatar pepez | 
@bigham Il utilise une api privée [u]http://gallery.me.com/cyrilperez/100269/scenekit/web.jpg?ver=13046945400001[/u]
avatar elakle | 
Article intéressant comme toujours sur macG, juste un détail : le or donc en début d'article est juste horrible à lire :)
avatar Arnaud de la Grandière | 
@ elakle : http://fr.wiktionary.org/wiki/or_donc Et le "juste horrible à lire" est lui-même tout bonnement horrible à lire ;¬p
avatar valcapri | 
@ iPantoufle : Tu as vu Final Cut X? Car il tire parti de Grand Central Dispatch, OpenCL et du 64 bits, notamment. Un logiciel tirant parti de ces fonctionnalités doit être en grande parti réécrit (ça prend du temps), et n'est peut-être pas intéressant pour tout le monde (notamment ceux qui vise le multiplateforme). Et puis Snow Léopard avait surtout comme objectif d'introduire des nouveautés au sein du noyau. Et lion a comme objectif d'introduire les fonctionnalités d'iOS dans Mac OS X. Et il ne faut pas oublier la rétro-compatibilité dans tout cela. Sinon, je trouve que c'est une bonne chose, de voir la 3D évolué sur OS X et certainement iOS. Peut-être bientôt un logiciel de modélisation 3D signé Apple?
avatar elakle | 
@nonoche Richard Descoings l'actuel directeur de Sciences Po m'a pour ainsi dire "taclé" lorsque j'ai employé cette expression devant lui, ça laisse des traces... Mea culpa
avatar Anonyme (non vérifié) | 
@ Valcapri : oui, je l'ai vu, ma carte bleue est prête mais li n'est pas encore sorti !
avatar stefhan | 
@ elakle : Je confirme !
avatar stefhan | 
Sinon purée l'article digne d'un lundi matin. On est vendredi bon sang, c'est un article digne
avatar SuperCed | 
Je trouve que cette idée est très très bonne! Offrir un moteur 3D intégré, peu de gens y ont pensé. Ce serait bien qu'il remette à jour toutes les lib QuickTime au passage, car certaines sont ancestrales (VDIG par exemple). Ca augmentera aussi le nombre de jeux sur MacOS.
avatar rva1mac | 
Je ne vois pas pourquoi une mise à jour des lib QuickTime augmenterait le nombre de jeux sur MacOS.
avatar DrFatalis | 
@Valcapri: donc Aucun logiciel n'a tiré parti des mirifiques (et vaporeuses) promesses de SL pendant toute la durée de son règne. "Les améliorations du noyau" qui ne servent à rien pour l'utilisateur, on s'en tape (elles auraient pu arriver en même temps que Lion". Encore un mensonge de Cupertino. A force de prendre les utilisateurs pour des C... (et d'en trouver qui en redemande)...
avatar Arnaud de la Grandière | 
@ DrFatalis : t'as songé à exiger le remboursement de tes 29 euros pour cette kolossale arnaque qu'est Snow Leopard?…*facepalm*
avatar Zouba | 
Désolé de revenir sur « or donc » mais Wikipédia dit « Conjonction dont on se sert pour lier un discours à un autre. » or, placé en début de texte, il ne relie rien, en quoi est-il juste alors ?
avatar sekaijin | 
ça me rappelle furieusement les annonces des Années 90 (1990 pour les jeunes) QuickTime Virtual Reality proposait un API pour faire ce genre de choses. en septembre 1997 avec je ne sais plus quelle version de MacOS8.X Apple annonçais une nouvelle API : QuickDraw 3D. bref tout ça n'est pas une nouveauté en soit. reste à voir si cette fois ce vieux rêve d'Apple de doter le MAC d'API 3D VR et autres deviendra une réalité dans l'usage. car en 1997 la techno était à la pointe de l'époque et on pouvait effectivement créer des scènes 3D mais finalement ni les developpeurs ni les utilisateur n'ont trouvé d'usage de cette API (à par quelques jeux) ce qui a changé entre temps c'est la monté en puissance des machines et si ajouter un bout de 3D à son appli en 997 impliquait un ralentissement notable de celle-ci aujourd'hui la question de l'opportunité se pose plus en terme fonctionnel (ce que ça apporte à l'application) qu'en terme de perf. A+JYT
avatar reremoon | 
Je pense qu'un tel moteur restera privé un temps, histoire qu'Apple prenne un peu d'avance et donne le ton avec l'utilisation de la 3D dans ses interfaces, puis deviendra public pour que les autres développeurs "copie" les bonnes idées de Steve... C'est une façon de conserver son rôle de meneur... En tout cas, très intéressant cet article. Merci MacGé !
avatar jean_claude_duss | 
On veux ça sur iOS... Avec scène kit builder pour importer les models 3D
avatar TequilaPhone | 
@reremoon Y'a rien à copier, c'est juste un moteur 3D bas de gamme.
avatar Anthony Nelzin-Santos | 
@DrFatalis : c'est vrai qu'il n'y a aucun logiciel tirant parti de Grand Central Dispatch, OpenCL ou du 64 bits. Aucun. Ce qu'il ne faut pas lire, sans rire.
avatar BeePotato | 
@ DrFatalis : Tu te ridiculises, là.
avatar youpla77 | 
@ beepotato : il a pas tout à fait tord... iTunes pas 64 bits, iPhoto 11 pas 64 bits et pas d'OpenCL (à part quelques effets), etc... Idem pour iMovie. Il y a des softs qui en tirent parti mais c'est quand même marginal pour le commun des mortels...
avatar bigham | 
@anthony: Des softs qui tirent parti de GCD, il est difficile de dire si il y en a beaucoup. Tous les logiciels bénéficient sous Snow Leopard de GCD car c'est le modèle de multi-threading utilisé. Maintenant, est-ce que beaucoup de logiciels sont optimisés pour GCD, plus difficile à dire. OpenCL, je serai bien incapable dans citer plus de 2. Le 64-bit, beaucoup de logiciel sont disponibles en architecture 64-bit (et Apple se traine un peu avec ses applications dans ce secteur) mais optimisé pour le 64-bit ou ayant vraiment besoin de tout l'espace d'adressage du 64-bit, là le nombre est nettement plus faible, voire très faible.
avatar Anonyme (non vérifié) | 
Dites-moi si je me trompe, mais le terme 3D est abusif : puisqu'il s'agit d'animation, des dimensions il y en a quatre ! (avec le temps)…
avatar Arnaud de la Grandière | 
@ iPantoufle : et des animations en 2D, c'est aussi abusif, puisque ça fait trois dimensions avec le temps, mais du coup on ne saurait jamais de quoi on parle. Les termes abusifs, ça peut avoir parfois du bon.
avatar davi18 | 
Je travaille en tant que dessinateur projeteur (concepteur DAO/CAO) et j'espère que ça va pousser certaines entreprises (Dassault avec CATIA et SolidWorks) et Autodesk (Inventor et 3Ds Max) à porter leurs logiciels sous Mac OS.
avatar BKN1 | 
J'étais dev sous unity et j'apprecie le geste d'Apple !!! Bravissimo! Manque plus qu'un support béton de WEBGL dans safari et isafari et je colle un poster de Steve Jobs au dessus de mon lit ! :-D
avatar bigham | 
J'ai un peu du mal à voir en quoi le fait qu'Apple s'est concocté pour son usage interne des APIs pour afficher des modèles 3D influencerait Autodesk ou Dassault. Des moteurs 3D, il y en a des centaines. Rien que pour ses démonstrations OpenGL ou GameCenter, Apple a dévelopé un moteur 3D et un pseudo-jeu.
avatar Anonyme (non vérifié) | 
merci nonoche! toujours présent et intéressant! pour moi c'est un peu du chinois à part que le 3D va faire rugir dans les chaumières! juste une question bête : ça voudra dire qu'on pourra voir les quelques DVD sortis en 3D (genre le dernier Harry Potter!) ? car les jeux c'est pas ma tasse de thé, mais les films en 3D je reste intéressée!... merci à qui saurait éclairer ma lanterne (je suis ignare en ces domaines!)
avatar bigham | 
@clochelune: Quelques éléments de réponses : 1. Des DVDs 3D, à ma connaissance, cela n'existe pas. Des Blurays 3D, oui. Or aucun Mac n'a de lecteur Bluray. 2. La 3D, dont l'on parle ici, est de l'image de synthèse qui produit une image "plate" et pas de la 3D de pauvre digne du Monstre du Lac que l'on peut voir au cinéma depuis la sortie du documentaire sur les schtroumpfhs de James Cameron.
avatar ispeed | 
@davi18 j'espère que ça va pousser certaines entreprises (Dassault avec CATIA et SolidWorks) et Autodesk (Inventor et 3Ds Max) à porter leurs logiciels sous Mac OS. Alors là il faudrait déjà qu'Apple s'intéresse vraiment au monde pro. Je pense plutôt dans le domaine gadget iPhone/iPad les gens adorent ça et Apple l'a bien compris :)
avatar Yip | 
Merci, ils sont toujours sympa ces articles qui expliquent les choses en termes compréhensibles par le commun des mortels (donc moi), j'ai bien aimé "et autres érudits adeptes du code source de la Matrice" :-D

CONNEXION UTILISATEUR