Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Fanfois et ses papillons
19 août 2012

WebGL, Quel livre pour débuter ?

Depuis mon dernier billet sur WebGL, je n’ai pas arrêté WebGL, bien au contraire et j’ai finalisé la bibliothèque WebGL que je devais réaliser.

Cela dit la chose ne s’est pas faite sans douleurs et il m’a fallu lire tout ce que j’ai trouvé sur le sujet. Heureusement, à part chez MS, le sujet soulève un certain intérêt et les éditeurs sortent des livres sur le sujet. Dans ce billet je vais vous donner mon opinion sur les différents livres que j’ai lus pour arriver à coder la librairie. Au moment où j’écris ce billet, il n’existe pas d’autre livre papier sur le sujet. Notez que des sorties sont en cours, typiquement Apress et O’Reilly sortent leur livre sur le sujet à la fin du mois (déjà disponible en eBook). Il est donc fort possible, et ce serait même logique, que le meilleur livre soit à venir. En effet, si les auteurs ne sont pas trop convaincus qu’ils détiennent LA vérité, ils devraient lire ce qui est déjà sorti et y prendre des (bonnes) idées.

Une remarque avant de passer aux livres eux même : ils sont TOUS en anglais. Je sais que ce blog est en français, mais là, il n’y a pas moyen de couper à l’anglais. A ce jour ma route n’a pas croisée celle d’un livre en français sur WebGL, même d’un mauvais livre sur WebGL.

Ceux qui ont lu mes billets précédents sur WebGL savent que je suis parti de du livre HTML5 Canvas Cookbook.
Concernant WebGL, ce livre est le moins détaillé du lot. La chose est totalement normale, ce n’est pas le sujet du livre. Le sujet du livre c’est principalement l’utilisation 2D du canvas et, comme nous le verrons, Packt, l’éditeur, à un livre dédié à WebGL.
A contrario, c’est le seul livre qui parle de l’aspect 2D du canvas, les autres sont exclusivement dédiés à WebGL. Comme nous l’avons vu dans les billets précédents, cela peut parfois servir. Cela nous a permis de mettre du texte sur nos panneaux.
Pour information, un collègue de bureau est parti de ce livre pour faire de la 2D. Même si son code final est assez éloigné de ce que propose le livre, le livre l’a très clairement bien aidé. Au début il a repris directement le code du livre. Après le livre montre comment résoudre certaines situations de manière simple, mais l’auteur lui-même invite ses lecteurs à se tourner vers sa solution (payante) pour une solution plus robuste et performante. Il n’est donc pas surprenant que mon collègue ait du coder quelque chose de plus performant, et à priori robuste, que ce qui est montré dans le livre.
Cela dit même si les explications d’HTML5 Canvas Cookbook sont très limités (pour ainsi dire inexistantes) concernant l’aspect WebGL, sa pièce à la Doom est sympa et son étude pas forcement inutile. De là à conseiller le livre pour s’initier à WebGL, non, plus maintenant, il y a mieux.

Compte tenu de l’ordre des parutions, j’ai ensuite lu Professional WebGL Programming: Developing 3D Graphics for the Web.
Ce livre n’est pas celui que je conseillerais comme premier livre sur WebGL car il manque à mon avis un certain nombre d’éléments que j’aurais aimé y trouver. Compte tenu du fait que le titre du livre contient "Professional", cela tend à indiquer, chez cet éditeur, que ce n’est pas un livre pour débutant mais bien pour quelqu’un qui veut aller plus au fond des choses. Bon ce n’est pas non plus un livre de 800 pages, il est donc évident que l’on n’ira pas au fond des abysses. CEla conduit à un livre curieux car ce livre contient à l’évidence un texte destiné à des "professionnels", mais il ne traite pas vraiment de certains aspects fort utiles (les bases mathématiques par exemple).
Typiquement c’est à ce jour le seul livre paru qui ait un vrai souci de robustesse et dit clairement que l’on peut très bien perdre son contexte WebGL en cours de route. Il donne d’ailleurs le code à mettre en place et donne un (bon) conseil pour éviter les problèmes. Visiblement les autres auteurs (enfin ceux dont le livre est paru le 18 aout 2012) ne sont pas au courant car ils codent exactement ce qu’il n’est pas recommandé de faire si on veut gérer facilement la situation.
Pour aider à la robustesse du code il faut un outil pour le secouer. Ce livre donne une solution (que j’ai intégré à la version débogue de ma librairie).
Vous souhaitez avoir de bonne performance, regardez comment vous rangez les données dans les tampon WebGL. Là encore seul ce livre parle de cet aspect.
En résumé, compte tenu que j’avais déjà pas mal ramé (la série de billets sur WebGL qui est antérieure à ce billet avait déjà été publiée) ce livre ne m’a pas appris grand-chose sur ce que l’on peut faire avec WebGL et je ne suis pas certain que quelqu’un qui n’a jamais fait de 3D y trouve son compte. Il m’a par contre appris à écrire du code plus robuste et professionnellement c’est très important.
Je recommande donc la lecture de ce livre pour cet aspect. Si cet aspect n’est pas important pour vous, lisez plutôt le livre du prochain paragraphe.
Pour être franc, je pense vraiment que l’éditeur a poussé l’auteur à finir le livre à une date donnée pour sortir le premier livre sur le sujet. C’est dommage, car sauf à faire rapidement une seconde édition (que je ne rachèterais pas, car j’ai la version papier du livre), la chose ne tient pas sur le moyen terme (2 mois c’est du moyen terme court).

Par ordre chronologique, j’ai ensuite lu un livre, que je recommande très chaudement à tous ceux qui ont un peu (voir totalement) oublié leur cours de mathématique du lycée (au moins en section scientifique). Comme il n’est pas sur WebGL, je le saute (temporairement), et je passe à WebGL Beginner's Guide.
J’ai acheté ce livre (en eBook) pratiquement le jour de sa sortie (la semaine suivante en fait). Dans ces conditions j’ai soumis quelques erreurs à l’éditeur car la section errata était encore vierge. Je n’ai pas trouvé que les erreurs dans le texte étaient très gênantes, j’ai d’ailleurs "oublié" d’en signaler certaines car elles n’affectaient en rien le sens du texte et tenaient plus de l’erreur de typographie. Par contre j’avais trouvé inadmissible que le code qui accompagnait le livre ne tourne pas pour les chapitres 3 et 8. J’étais d’autant plus énervé que j’ai acheté ce livre pour le code du chapitre 8 (le "picking"). En effet, si je savais ce qu’il fallait coder (merci la toile), je voulais une implémentation de référence, mon passé JavaScript étant relativement mince. Je tiens à signaler que je n’ai trouvé que 3 bogues (dont un, celui du chapitre 8, est lié un une modification faites par quelqu’un qui a dû trouver un "else" inutile et l’a enlevé tardivement dans le cycle de "relecture", car on trouve dans le livre une version du code sans la suppression malheureuse), que je les ai signalés à l’éditeur et que ce dernier a mis à jour le code que vous pourrez récupérer chez lui en une semaine. Compte tenu du fait que la semaine en question était celle du 15 Août, je trouve que ce délais est tout à l’honneur de l’éditeur, Packt, qui a tout de même dû lire le mail d’un charlot aigri qui lui disait que son code était naze, constater que le charlot n’en était peut-être pas un, valider la correction proposé par le charlot (et en profiter pour corriger la gestion du contrôle graphique concerné), mettre à jour son site, et, chose qui fait toujours plaisir aux charlots aigris, lui envoyer un mail pour lui dire que le code corrigé était en ligne.
Cela étant dit, actuellement, c’est le livre que je conseillerais pour découvrir WebGL. Il couvre pratiquement tout ce qui est nécessaire pour faire une première application WebGL. Si je l’avais lu avant d’écrire les billets sur WebGL, il m’aurait manqué certains éléments comme le "billboard", qui est très important pour la librairie que je devais réaliser. Il m’aurait également manqué un moyen pour passer d’un mode de caméra à l’autre. Avec l’approche du livre, on a bien deux gestions différentes de la caméra, mais la façon dont sont introduites les deux méthodes (ordre des matrices rotation et translation dans la multiplication) ne permet pas d’envisager de passer de l’une à l’autre de manière transparente. La chose est évidemment possible, et le livre donne presque la solution avec la façon dont est gérée la caméra dans la classe dédié à cette dernière. Cela dit, je ne pense pas qu’un lecteur qui n’aurait que le livre comme source d’information y arriverait (mais en aurait-il besoin ?). Il faut disposer d’un autre éclairage pour y parvenir. A la différence du livre précédant, ce livre fait fini. Les exemples de code sont mieux dans le sens où il présente des pages nettement mieux finies au niveau de l’aspect visuel. Dommage que ne soient pas abordés les aspects débogue, perte de contexte WebGL, et optimisation des tampons WebGL, ce qui vous obligera à lire le livre précédent.

Que penser des livres à paraître prochainement (en fait dispo en eBook) ?
Même si je ne les ai pas intégralement lus, simplement rapidement parcourus, la simple lecture de leur table des matières montre une différence fondamentale. Les deux livres s’orientent vers l’utilisation d’une ou plusieurs librairies JavaScripts s’occupant pour vous des basses œuvres. La présentation de ce qu’est le graphisme 3D est réalisé au pas de charge, dans le premier chapitre. Cela peut être assez violent pour un lecteur novice en 3D. Il me semble donc qu’un novice n’a pas intérêt à commencer avec ces deux livres, sauf à vouloir faire des belles choses qui en mette plein la vue sans trop bien comprendre comment ça marche, grâce aux librairies.
Il est probable que beaucoup plébisciterons cette approche qui permet très certainement d’obtenir le meilleur ratio temps passé à coder / résultat obtenu. Malheureusement, si ce que l’on souhaite c’est savoir ce qui se passe vraiment, ce n’est pas la bonne solution.
Par contre, les lire dans un second temps, ou un premier si on connait déjà OpenGL, est probablement une bonne chose.
Je vous livrerais un avis plus complet dès que je les aurais fini (dans un mois ?).

Ma recommandation actuelle (18 aout 2012) est donc :

  1. WebGL Beginner's Guide est LE livre pour débuter en WebGL.
  2. Si vous voulez améliorer la robustesse de votre code, lisez également Professional WebGL Programming: Developing 3D Graphics for the Web. En plus de cela, la présentation étant différente, cela vous permettra sans doute d’éclaircir certains points que le premier livre n’avait pas totalement illuminés.

Maintenant il y a un pavé, un gros pavé, que j’ai lu entre ces deux livres, qui peut rendre des services à tous ceux qui veulent vraiment comprendre ce qui se passe. Ce livre n’est pas un livre sur WebGL. Ce n’est pas non plus un livre sur OpenGL. C’est un livre sur les mathématiques nécessaires pour faire de la 3D sur un ordinateur (surtout les matrices mais pas que). Il s’agit de 3D Math Primer for Graphics and Game Development, 2nd Edition.
Si vous avez du mal avec les maths (ou l’anglais) passez votre chemin.
Si par contre le problème n’est pas votre compréhension générale des maths mais votre mémoire, ce livre est fait pour vous. Enfin presque. Les auteurs ont pris un parti qui m’a surpris et surtout qui n’est pas celui de OpenGL et donc de WebGL. S’ils expliquent la relation entre les deux formulations d’un vecteur, ligne ou colonne, ils ont choisis la version ligne. En bon petit écolier des années 1960-1970, j’ignorais complètement que l’on pouvait utiliser des vecteurs lignes, mes études scientifiques ne m’ont fait côtoyer que les vecteurs colonnes. Cela n’empêche pas le livre d’être une source réelle d’informations, même si nous, pauvre "WebGListe", devront reprendre toutes les formules vu que WebGL utilise les vecteurs colonnes et que tout est donc "à l’envers".

Bon WebGL.

Publicité
Publicité
Commentaires
X
Bonjour,<br /> <br /> <br /> <br /> Je tiens à préciser que mon livre, "Webgl : guide de développement d'applications web 3D", n'est nullement une traduction de "WebGL for Beginners". D'une part je n'ai pas lu ce dernier ouvrage, et d'autre part j'ai écris mon livre en me basant uniquement sur mon expérience. Mon but était d'écrire un livre couvrant à la fois les spécificité de WebGL, et à la fois la programmation 3D dans son ensemble, en abordant les algorithmes les plus courants. Il s'adresse aux développeurs web, ayant un niveau intermédiaire en javascript, pour les amener au niveau de développeur 3D. Mon livre ne s'appuie sur aucun framework.<br /> <br /> <br /> <br /> Pour débuter avec WebGL, vous pouvez également essayer mes tutos intéractifs, sur http://www.webglacademy.com .<br /> <br /> <br /> <br /> Bien cordialement,<br /> <br /> Xavier
N
Bonjour, <br /> <br /> Merci pour vos conseils concernant les livres sur WebGL, je débute dans le sujet, et je suis justement à la recherche de livres intéressants. J'ai noté les deux premiers que vous avez conseillé. Mais je souhaitais savoir si vous avez trouvé d'autres livres sortis après 08/2012 ? Et est-ce que vous avez lu : WebGL Guide de développement d'applications web 3D de Xavier Bourry? c'est le seul que j'ai trouvé en français et j'ai l'impression que c'est un peu une traduction de WebGL For Beginners? Je me trompe?
Fanfois et ses papillons
Publicité
Archives
Publicité