Une maison de poupée en bois et une bibliothèque OpenSCAD
Lorsque les enfants ont eu l’âge de jouer aux poupées ou aux figurines, j’ai commencé à envisager d’acheter ou de construire une maison de poupée en bois. Mon père et mon grand-père avaient construit ensemble une grande maison pour Barbie à ma soeur. Mais je ne voulais pas reproduire la même chose. Je voulais un design à la fois épuré et pourtant un peu plus travaillé que la traditionnelle maison à trois étages que l’on retrouve dans beaucoup de chambres d’enfant.
En parcourant un peu l’interweb, j’ai trouvé quelques produits au design intérressant :
Mais une maison de poupée m’a particulièrement interpellé : celle de l’entreprise polonaise Boomini (qui a depuis cessé ses activités).
Le design de cette maison de poupée est tellement malin et beau, et il correspondait tellement à ce que je voulais, que je n’ai même pas essayé de faire ma propre version. J’ai donc plutôt entrepris de fabriquer cette maison de poupée, en faisant les découpes et collages moi-même à l’aide des outils que j’ai en ma possession.
Voici le rendu final de la maison, une fois terminée :
Faire des plans pour les découpes de bois
Les différentes mesures, proportions et systèmes de montage n’étaient pas difficiles à deviner à partir des photos trouvées sur internet. Mais le plus difficile était de calculer correctement les inclinaisons des coupes que je devais faire pour chaque pente du toit de la maison. Il me fallait un outil sur lequel modéliser ma maison en 3D et ensuite qui me permette de générer facilement un plan à plat avec les dimensions de chaque pièce, les angles de coupe et si possible l’agencement optimal des pièces sur un panneau de bois donné.
Ma préférence pour les outils open-source et ma « légère » attirance pour le code (déformation professionnelle…) m’ont fait me diriger vers OpenSCAD.
Mode de rendu 3D/2D
En m’inspirant des travaux de Scott Bezek, j’ai commencé à créer un prototype qui permet facilement de basculer entre une vue 3D et une vue 2D de toutes les pièces séparées. Les modules d’OpenSCAD permettent de décrire séparément chaque pièce et de les réutiliser pour le rendu 3D, « flat » (c’est-à-dire les pièces 3D mais toutes agencées côte à côte sur le plan XY) et 2D grâce à la fonction projection.

Toit
Modéliser la forme de toit que je souhaitais avec OpenSCAD n’est vraiment pas difficile. Mais pouvoir présenter toutes les pentes de ce toit, individuellement et en conservant les angles de coupe, c’était une autre histoire… Après être passé par plusieurs techniques différentes, j’ai trouvé que l’utilisation de polygon (pour décrire la forme de la tranche de ma pente) + linear_extrude me permettait de simplifier le code.
Aussi, la mise en place d’une « chaîne de pentes » (une pente est dessinée relativement à l’extrémité de la pente précédente) m’a permis de m’épargner des calculs fastidieux de positionnement de chaque pente les unes par rapport aux autres.
Après avoir réécrit plusieurs fois cette partie du code, j’ai finalement réussi à en extraire une bibliothèque OpenSCAD Dollhouse.
Masques

Pour gagner du temps et profiter des opérateurs booléens d’OpenSCAD, j’ai permis à mon toit d’être utilisé comme un masque, afin de faire prendre la forme du toit à ce qui se trouve en dessous. C’est très rapide et satisfaisant. Le problème, c’est qu’il n’est pas possible d’afficher automatiquement les dimensions issues d’une opération booléenne, directement dans le rendu…
Dimensions
Depuis le début de ce projet, je souhaitais pouvoir afficher les dimensions directement sur le modèle 3D ou 2D, et que celles-ci se mettent à jour automatiquement si le modèle change. Pour atteindre mon objectif, j’ai d’abord commencé à utiliser la bibliothèque Dimensional drawings, puis comme elle ne répondait pas à tous mes besoins, j’ai finalement créé ma propre bibliothèque OpenSCAD New Dimensions pour afficher les dimensions, les angles et les labels sur mes rendus.
Bien qu’utile, il reste certains cas où il est trop laborieux de calculer la dimension d’un élément, et donc d’utiliser la bibliothèque pour l’afficher. Dans ces cas-là, la meilleure solution que j’ai trouvée est d’exporter le rendu 2D en SVG ou DXF et l’importer dans Inkscape ou QCAD/LibreCAD pour y ajouter les dimensions.
Escaliers

Pour modéliser les escaliers et en exporter un plan à plat, je suis allé au plus simple et ai ajouté un module Stairs dans ma bibliothèque Dollhouse. De la même manière que pour le toit, on peut utiliser un escalier comme un masque à soustraire avec l’opérateur difference.
Sources
Les sources de ce projet et des deux librairies sont disponibles sous license GPLv3 sur Codeberg :
Perspectives
Je n’ai pas encore eu l’occasion de réaliser d’autres maisons de poupée et donc je ne sais pas si la bibliothèque me permettra d’être plus efficace, mais je sais déjà ce que j’aimerais ajouter comme fonctionnalités :
- toits de forme pyramidale (à base triangulaire, carrée ou polygone régulier)
- escaliers en colimaçon
- meubles miniatures