W

Créé le
Modifié le

304 visites

Duramen du mémoire

Aka une tentative de mise en page du mémoire

Habituellement, la mise en page du mémoire se fait plus tard, je sais mais j'ai eu une idée pour faire d'une pierre de coup. L'idée en question serait de me servir de cette mise en page pour continuer d'apprendre à utiliser Unity et tout ce qui tourne autour de la réalisation de jeu vidéo, toujours dans l'optique de mon projet de diplôme.

Mais quel rapport entre mise en page et Unity ?

Le projet serait de créer une sorte de bibliothèque 3D dans laquelle on peut se promener et lire les différents morceaux de mon mémoire (et aussi retrouver les études et articles que je cite!). L'intérêt est que ça me permettrait de travailler dans Unity à la fois un environnement 3D (modèles, shaders, textures), des notions d'interactions, de déplacement, de design d'interface pour la mise en page, etc... Mais aussi, puisque qu'Unity permet de créer des environnements supportés par les navigateurs, d'apprendre à optimiser au max pour que ce projet puisse exister sur le web. En gros, je le conçois vraiment comme un bac à sable pour que je puisse expérimenter et progresser avec ces outils.

Sommaire des updates

Création de l'environnement 3D ↩

Pour l'instant, j'ai commencé avec ce que je maitrise le mieux, c'est à dire Blender. Je suis en train de modéliser la bibliothèque mais je dois admettre que (attention hyper étonnant) je me suis un peu emporté et c'est plus ambitieux que prévu. Au départ, je m'étais dit que je ferais juste une section de bibliothèque mais au final je la modélise en entier. Je pense que ça va grandement me complexifier la tâche pour l'optimisation, mais c'est un test, je verrais bien ce qui fonctionne. En attendant voilà des screens du début et de là où j'en suis dans la modélisation:

capture-decran-2026-02-03-191524.webp
capture-decran-2026-02-12-131749.webp

C'est mon projet 3D le plus ambitieux pour l'instant mais je commence à avoir le coup de main. La structure principale de la pièce est en place, il faut maintenant que je m'attaque à la remplir.

— connais-tu la bibliothèque Sainte Geneviève ? jb
ee119fde1b190bcd0203fc3990e1c7ab.jpg
Pas du tout ! Avant de commencer, j'ai regardé pas mal de bibliothèque partout en Europe comme la bibliothèque nationale autrichienne et celle d'Einsiedeln Abbey en Suisse. Mais apparement je suis passé à côté d'une bibliothèque française qui ressemble encore plus à ce que j'ai fait... Merci !

Update 28.09.2026

Je n'ai pas mis à jour cette page pendant l'été comme j'en avais l'intention au départ mais j'ai quand même bien progressé sur le projet pendant l'été ! Il est donc temps pour une petite (grande) mise à jour.

J'ai continué pendant le mois de juillet de modéliser l'intérieur de la bibliothèque. Escaliers, étage, les fenêtres puis l'élément principal: les bibliothèques. J'en ai profité pour faire des tests sur les textures des matériaux, que je n'ai pour l'instant pas garder sur unity comme on le verra après.

capture-decran-2026-07-13-003404.webp
capture-decran-2026-07-13-014526.webp

Quelques tests de lumières sur Blender (pas hyper utile mais c'était pour tester les matériaux):

capture-decran-2026-07-13-142943.webp

Premiers aller-retours avec Unity ↩

A ce stade là de la modélisation, j'avais ma structure principale donc je voulais voir déjà ce que ça pouvait donner sur Unity. Et surtout commencer à tester l'environnement web de Unity !

Comme je m'y attendais, je rencontre déjà de nombreux bugs principalement du au fait que je suis loin de maitriser à 100% la modélisation pour un moteur de jeu. Unity me signale des erreurs et j'ai des blocs entiers qui disparaissent, comme mes arches et le sol de l'étage :

capture-decran-2026-07-13-151609.webp

Deuxième gros problème, mon fichier fbx qui contient les modèles 3D est beaucoup trop lourd et Unity n'arrive même pas à build la version web.

Pour régler ces deux problèmes, il n'y a qu'une solution: reprendre la topologie de tous les modèles qui posent problèmes tout en les allégeants. Mes arches en particulier étaient, en effet, beaucoup trop complexes dans leur topologie (à savoir plusieurs millions de polygones chacune, ce qui provoquait des lags insupportables voir des crashs sur blender). Je passe donc un long moment à refaire, décimer, en m'aidant un maximum des modificateurs de blender pour gagner du temps. C'est long, je fais beaucoup d'aller retour mais je finis par avoir un fichier plus léger, et (presque) plus aucune erreur dans Unity.

capture-decran-2026-09-28-193030.webp

Ce passage m'a permis de bien cerner l'importance de modèle 3D « propre » et léger, optimisé au maximum pour le jeu vidéo. Et on arrive au moment de satisfaction le plus incroyable, quand j'arrive enfin à lancer tout ce beau monde sur mon navigateur.

capture-decran-2026-07-15-195237.webp

Il met un peu de temps à se lancer (et c'est toujours le cas snif) mais ça fonctionne !
Je continue donc ma modélisation en ajoutant les livres, disques durs (encore une étape hyyyyper longue), des chaises, tables, ordinateurs et les panneaux solaires. J'apprends aussi à bake les lumières dans Unity pour pas que le navigateur n'ait à les recalculer en permanence. L'aspect de la scène est un peu modifiée mais au moins on optimise un peu plus la fluidité. (Je passe rapidement dessus mais j'ai eu des problèmes avec les textures à ce moment qui on nécessité à nouveau de nombreux aller retours).

capture-decran-2026-07-15-021100.webp
capture-decran-2026-07-15-021044.webp
capture-decran-2026-07-22-162357.webp
capture-decran-2026-07-30-224217.webp

Je fais une petite pause avec les livres pour modéliser un robot archiviste. Ce sera un pnj avec lequel on pourra interagir pour avoir des informations sur la bibliothèque et sur le mémoire. Il devrait aussi y avoir des robots jardiniers pour les plantes mais on verra d'abord le reste (faut que je me mette des priorités y a un projet de diplôme à faire aussi).

capture-decran-2026-09-28-195509.webp
Il est un peu gouffy je l'aime bien. Il porte les livres dans sa bouche.

Systèmes d'interaction et de lecture ↩

Après avoir poser la structure 3D globale dans Unity, il était temps de pouvoir interagir avec ce monde. Je pose d'abord une caméra à la première personne avec un controller pour que l'on puisse se balader dans la bibliothèque.

La deuxième étape est de créer un système d'interaction. Je n'ai pas de screenshots parce que c'est vraiment juste du code et des objets 3D qu'on relie au dit-code. Le joueur peut interagir avec un disque dur et un livre pour l'instant. Le disque dur peut être remis à sa place, jeter ou lu sur un ordinateur. Le livre peut être lu.

La troisième chose que j'ai faite c'est de créer des interfaces et un système de lecture. C'était plus compliqué car j'avais deux systèmes différents, voilà comment ça fonctionne (en gros): Le système de lecture est activé soit par le Book Reader pour les livres qui va lire les Book Data, soit par le Computer Reader pour les disques dur qui va lire les HardDrive Data. Book Data et Hard Drive Data sont reliés à Document Data ce qui permet à un disque dur et à un livre de lire le même document mais avec une mise en page différente : page par page pour le livre et document continu pour l'ordinateur.
Pour l'instant c'est moche mais je voulais que tout fonctionne avant de passer au design d'interface.

Voilà donc à quoi ressemble le projet pour l'instant après cet été fort en Blender et Unity:


(les sacadements c'est pas des bugs j'ai juste filmé en controlant avec mon pad mais promis c'est fluide)

Importateur PDF ↩

Au début de ce projet j'avais comme idée de créer un importateur de PDF vers Unity. Le but c'était d'automatiser l'import du PDF de mon mémoire (puis d'autres plus tard) pour éviter de devoir tout copier/coller manuellement. Je ne savais même pas si c'était vraiment faisable ahah mais je me suis dit qu'en code tout est possible, reste à savoir si c'est à ma portée.
Il se trouve que si (yay). J'ai trouvé une librairie externe du magnifique nom de PDFPig. Elle permet de lire les données d'un PDF, de les différencier (textes, images, titres, etc.) puis de les extraire. Exactement ce qu'il me fallait.
Comme j'avais déjà créer mes éléments Heading, Paragraph et Image, je n'avais plus qu'à, en gros, relier PDFPig à mon système de DocumentData. « Plus qu'à ». Évidemment c'était pas aussi simple (j'aimerais). Mais heureusement pour moi la documentation de PDFPig est plutôt complète (et merci pour mon niveau d'anglais) et j'ai réussi à trouver des tutos qui expliquaient comment PDFPig fonctionne. Petite parenthèse mais je me rends vraiment compte à quel point j'aurais pas pu faire un dixième de ce que j'ai fait depuis le début si je comprenais rien à l'anglais. On a besoin de plus de doc en français !

Bref, je vais pas rentrer dans tous les détails du code mais j'ai réussi à faire fonctionner tout ce beau monde à grand renfort de consol.debug. J'ai presque lâché une larmichette quand ça a fonctionné. Donc au moment où j'écris, mon importateur est capable de reconnaitre le texte et les images puis de créer un DocumentData en reprenant l'ordre texte/image. Il me créée ce document en respectant la création des PageData qui correspondent aux véritables pages du PDF. Et pour que tout soit vraiment nickel, je lui fait créer un dossier où il me range tout ça proprement.

capture-decran-2026-10-23-221302.webp

Pour la suite, il faut que je rajoute la détection des titres et des notes de page/légendes d'image. Je n'ai pas encore créer FootnoteElement. Mais je me dis que maintenant que j'ai compris comment tout ça fonctionnait, ça devrait plutôt bien se passer. Bon après avec le code on sait jamais, c'est le côté fun, parfois ça marche plus et tu passes des heures à te demander ce qui a bien pu changer :D

Expérimentations UI ↩

En parallèle, j'ai commencé à expérimenter avec l'UI. J'ai changé le curseur, la font et j'ai expérimenté avec l'interface de l'ordinateur. A retravailler bien sur, mais je voulais déjà comprendre comment on passait d'un design fixe fait sur Affinity ou MoebiusXBin (le retour!!) à une interface qui est responsive. En soit je pourrais faire des interfaces fixes mais je préfère qu'elles s'adaptent à la taille de l'écran de l'utilisateur. Puis au moins j'apprends à le faire, se sera toujours ça de gagner pour plus tard. Il s'avère que l'outil d'UI d'Unity est inspiré de ce qui se fait en web donc je suis pas complètement perdu.e.

capture-decran-2026-10-23-003248.webp

Mon mémoire tout en bloc dans la fenêtre de l'ordinateur en attendant que je peaufine mon importateur.

capture-decran-2026-10-23-003233.webp

Pour la suite, je voudrais vraiment me concentrer sur le fait d'avoir une expérience de lecture qui soit agréable. Donc rajouter un menu de navigation du mémoire, peut être avoir une interface qui prend toute la fenêtre plutôt puis une mise en page qui fonctionne. Je me rends compte que je vais vraiment recréer une mise en page web dans une bibliothèque virtuelle 3D sur Unity. Si ça c'est pas faire ultra compliqué pour un truc que j'aurais pu faire simplement, je sais pas ce que c'est :D
Bon après la bibliothèque et l'importateur de PDF ont un intérêt à long terme. J'aime beaucoup l'idée d'avoir un espace virtuel et accessible sur le web dans lequel on puisse retrouver plein de ressources que j'ai trouvé ou écrites. Mais se sera un objectif pour le moi post-diplôme !