English Version
Home Design 3D
Anecdote: Quelques jours après le tournage de cette vidéo, l’interface utilisateur de la partie impression 3D a complètement changé.
Home Design 3D est l’une des applications mobile et PC/Mac les plus lucratives pour Koalabs et Anuman Interactive.
Home Design 3D est un logiciel disponible publiquement qui vous permet de dessiner votre maison ou votre appartement, avec très peu de limites: vos murs peuvent aller dans n’importe quelle direction, vous pouvez placer les meubles où vous voulez, et vous pouvez ensuite visiter votre projet dans une vue 3D, et même simuler un cycle jour/nuit et les saisons si vous le souhaitez.
Elle a été programmée en C++ avec Qt, avec OpenGL comme renderer.
Vers 2014/2015, un partenariat a été signé avec Fabzat, une entreprise située près de Bordeaux qui fournit un service permettant de commander un modèle imprimé en 3D depuis une application, et de la livrer au domicile de l’utilisateur.
C’est à ce moment là que j’ai rejoint le projet.
Pour Fabzat, Home Design 3D était la première application permettant à l’utilisateur de créer un modèle complètement librement, il y a donc fallu surmonter de nombreux défis pour que la feature fonctionne.
Ajouter la possibilité d’imprimer en 3D
Déjà disponible dans le commerce au moment où j’ai rejoint le projet, Home Design 3D n’a au départ pas du tout été pensé pour l’impression 3D: le sol est un simple plan sans aucune épaisseur, beaucoup de triangles non visibles dans les murs et les meubles sont absents pour optimiser l’espace de stockage et le rendu, surtout sur les premières machines peu puissantes avec laquelle l’application était compatible, et le design des meubles contient souvent des parties très fines, réalistes mais qui se casseraient si elles étaient imprimées telles-quelles.Tout cela est non seulement incompatibles avec les logiciels des imprimantes 3D, qui nécessitent absolument que toutes les formes soient fermées, et la réalité de livrer un modèle imprimée en 3D, même dans un emballage de bonne qualité, vous risquez de recevoir une maquette cassée.
1ère étape: Adapter l’architecture
Il y avait plusieurs choses à faire avant de pouvoir assembler une maison imprimable, même si ça ne concernait que les sols et les murs:- Il n’y avait pas de face sur le dessous des murs, car la caméra ne peut jamais aller sous le sol, mais ça empêched de les imprimer, j’ai donc ajouté cette face
- Dans chaque salle, le sol n’était qu’un plan: je l’ai transformée en un volume fermé en ajoutant des faces sur les côtés et dessous
- Il y avait quelques bugs quand les murs se rejoignaient (certaines faces disparaîssaient), qu’on ne pouvait plus laisser passer pour l’impression 3D.
2ème étape: Adapter les meubles
Pour chaque meuble, Fabzat nous a aidé à en créer une version "imprimable", qui paraîssait plus "dodue" (c’est le terme officiel) dans l’aperçu de la maquette dans l’application, mais qui rend étonnamment bien une fois imprimée.Pour ne pas atteindre la limite des 100Mo sur iOS (quand on l’atteint, par défaut, l’App Store vous demande de télécharger l’application par WiFi plutôt que par vos données mobiles), vu qu’il y avait environ 1200 objets à ce moment-là (~30Mo une fois bakés), avec l’aide d’autres membres de l’équipe Home Design, nous avons fait en sorte que l’application télécharge la version imprimable du meuble à la volée, seulement si nécessaire.
3ème étape: Assembler le tout
Mon travail a ensuite été de créer un algorithme qui:- Trouve toutes les salles interconnectées dans un projet, et les traite comme 1 maquette: s’il y a 2 bâtiments séparés dans le projet de l’utilisateur, on sait qu’il faudra imprimer 2 maquettes. Il n’y avait pas encore de notion de "bâtiment" dans le code d’Home Design. Il y avait également une taille maximale pour la maquette imposée par la taille de l’imprimante elle-même, nous devions donc si nécessaire couper un bâtiment en plusieurs maquettes, et laisser l’utilisateur les réassembler. Cette dernière feature a été laissée de côté, car il y avait trop de cas à gérer (certains membles pouvaient être collés à un mur d’une maquette et l’empêcher de pouvoir l’"enfiler" dans l’autre partie...) qu’on ne pouvait pas résoudre dans les temps
- Trouver tous les meubles, et les remplacer par leur version "imprimable"
- Exporter toute la géométrie ainsi récupérée dans un seul fichier .obj (l’un des formats compatibles avec les imprimantes 3D qui nous permet de conserver les textures, que l’imprimante de Fabzat est capable d’imprimer)
- Trouver toutes les textures utilisées et les mettre à côté de l’.obj dans une archive. L’application permet à l’utilisateur de teinter une texture avec une couleur; le seul moyen safe d’exporter des textures ainsi modifiées était de les "pré-teinter" avant de les assembler.
- Uploader l’archive vers les serveurs de Fabzat. Ils gèrent la suite de la commande.
4ème étape: Rendre le tout joli
Pour rendre la feature utilisable, j’ai du faire une interface utilisateur qui:- Montre un aperçu de la maquette qui sera imprimée
- Permet à l’utilisateur d’entrer son adresse de livraison, ainsi que quelques configurations pour la maquette: à quelle échelle elle doit être imprimée (ce qui affecte le prix), etc.
- Expliquer à l’utilisateur pourquoi la maquette imprimée sera différente de celle qu’il voit dans la vue principale de l’application.