<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Hackerspace au Mans</title><link href="https://haum.org/" rel="alternate"></link><link href="https://haum.org/feeds/all.atom.xml" rel="self"></link><id>https://haum.org/</id><updated>2026-01-22T19:25:00+01:00</updated><entry><title>Insoler des cyanotypes à l'imprimante mSLA</title><link href="https://haum.org/cyanotype_msla.html" rel="alternate"></link><published>2026-01-22T19:25:00+01:00</published><updated>2026-01-22T19:25:00+01:00</updated><author><name>JackDesBwa</name></author><id>tag:haum.org,2026-01-22:/cyanotype_msla.html</id><summary type="html">&lt;p class="first last"&gt;Hacker une imprimante mSLA pour insoler des cyanotypes&lt;/p&gt;
</summary><content type="html">&lt;div class="section" id="cyanotype"&gt;
&lt;h2&gt;Cyanotype&lt;/h2&gt;
&lt;p&gt;Connaissez-vous le cyanotype ? Il s'agit d'une méthode photographique facile
d'accès, à la chimie simple à manipuler sans danger et surtout au rendu très
caractéristique avec ses tons bleutés.&lt;/p&gt;
&lt;p&gt;La solution chimique, préalablement enduite sur un support et séchée à l'abri de
la lumière, est exposée aux ultraviolets, puis lavée à l'eau claire. Les parties
insolées forment un bleu de Prusse stable qui teinte le support tandis que le
reste de la partie photosensible n'ayant pas reçu les UV est évacuée au rinçage.
L'image apparaît donc en négatif, avec les parties exposées plus foncées.&lt;/p&gt;
&lt;p&gt;Usuellement, cette technique est utilisée pour faire des herbiers en exposant un
papier sensibilisé à travers les végétaux dont l'ombre s'imprime sur la feuille.
Ou en imprimant au préalable un négatif qui sera développé par contact, au
soleil ou sous une lampe à UVs. Mais comment pourraient faire des hackers ?&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="le-detournement"&gt;
&lt;h2&gt;Le détournement&lt;/h2&gt;
&lt;p&gt;Imprimer un négatif, voire plusieurs empilés pour obtenir suffisamment
d'opacité, il faut bien admettre que c'est peu pratique et même un gâchis de
ressources si l'on ne tire pas des séries de la même image. À ce compte-là,
autant sortir l'image directement avec l'imprimante.&lt;/p&gt;
&lt;p&gt;Là entre en jeu l'imprimante 3D mSLA, autrement appelée imprimante à résine,
car elle insole une résine photosensible qui durcit au contact des UVs. Et c'est
dans ce dernier mot que la liaison se fait : la machine dispose d'une source UV,
d'un système optique pour avoir un éclairement uniforme, d'un écran à haute
définition pour masquer sélectivement les parties à protéger des UVs, bref un
peu tout ce qu'on aimerait utiliser pour insoler nos cyanotypes !&lt;/p&gt;
&lt;p&gt;Malheureusement, les UVs générés par la machine ne sont pas optimaux pour la
chimie du cyanotype. Cependant en pratique, allonger le temps d'exposition
contrecarre la réaction plus lente avec ces UVs ci. Pour donner un ordre d'idée,
avec mon papier dont la solution a été enduite plusieurs mois avant ce test et
gardé au noir depuis, les temps choisis allaient de 4 minutes pour les valeurs
claires à 51 minutes pour les valeurs foncées.&lt;/p&gt;
&lt;p&gt;La réelle difficulté est de trouver la méthode pour produire le bon fichier à
faire manger à la machine.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;p&gt;&lt;em&gt;Une grille d'étalonnage permet d'évaluer les temps nécessaires.&lt;/em&gt;&lt;/p&gt;
&lt;img alt="" src="/images/cyanotype_msla/grid.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="uvtools"&gt;
&lt;h2&gt;UVtools&lt;/h2&gt;
&lt;p&gt;Nous pourrions réaliser un modèle 3D spécialement créé pour qu'une fois découpé
en tranches par les logiciels habituels pour l'impression 3D, le rendu soit
celui voulu. Mais ce serait un maillage incroyablement dense et avec
potentiellement de la perte de résolution lors des conversions, voire une perte
volontaire en particulier pour ne pas faire tomber à genoux les processeurs et
la RAM lors des opérations. Mais soyons plus astucieux.&lt;/p&gt;
&lt;p&gt;Dans mon cheminement pour ce projet, j'avais choisi une imprimante de chez
ELEGOO car elle acceptait un format de fichier documenté publiquement, et
j'avais même commencé à coder dans le but de produire un fichier spécialisé pour
cette tâche. Finalement, j'ai découvert l'outil &lt;a class="reference external" href="https://github.com/sn4k3/UVtools"&gt;UVtools&lt;/a&gt; qui permet de faire
beaucoup de choses en plus de ce que nous cherchons à faire ici et sur quasiment
toutes les imprimantes du marché.&lt;/p&gt;
&lt;p&gt;Il s'agit d'un couteau suisse pour l'examen et la manipulation des fichiers
d'impression 3D mSLA. Il ne les crée pas lui-même depuis zéro, mais peut
analyser, changer de format, éditer les couches, etc. Dans notre cas, il servira
à remplacer les tranches d'un fichier créé par un autre logiciel par les
tranches de notre choix.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="preparation-du-fichier"&gt;
&lt;h2&gt;Préparation du fichier&lt;/h2&gt;
&lt;p&gt;La première étape est de créer un fichier pour notre imprimante à l'aide d'un
logiciel de découpe traditionnel d'impression résine. Un simple cube fera
l'affaire puisqu'au final ses couches seront effacées. Nous pouvons aussi
récupérer un des fichiers exemple de la machine. À vrai dire, c'est tout un tas
de paramètres indépendants du modèle comme les dimensions de la machine qui
seront réellement utiles à UVtools.&lt;/p&gt;
&lt;p&gt;Maintenant, importons le fichier généré dans UVtools. Après le temps de
chargement et surtout de décodage, nous pouvons aller dans le menu
&lt;cite&gt;Actions &amp;gt; Remove layers&lt;/cite&gt; au-dessus du canevas, puis remplir le formulaire pour
effacer toutes les couches.&lt;/p&gt;
&lt;p&gt;La création des couches appropriées pour l'insolation du cyanotype est facilitée
par un outil intégré &lt;cite&gt;Tools &amp;gt; Lithophane&lt;/cite&gt;. Évidemment nous ne voulons pas créer
une &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Lithophanie"&gt;lithophanie&lt;/a&gt; à proprement parler puisque nous n'utiliserons pas de résine,
mais les couches pour les produire s'avèrent avantageusement exactement les
mêmes que celles voulues ici.&lt;/p&gt;
&lt;p&gt;Nous voulons en particulier cocher les options &lt;cite&gt;Separate gayscale pixels&lt;/cite&gt; pour
avoir un masquage binaire jouant sur le temps d'exposition et non sur la
transparence du masquage présentant un contrôle plus incertain de la quantité
d'UVs délivrés et n'étant pas compatible avec toutes les machines, et
&lt;cite&gt;One layer per threshold level&lt;/cite&gt; pour avoir autant de couches que nécessaire et
non comprimer la dynamique sur un nombre restreint de couches comme l'impose la
physique à une lithophanie.&lt;/p&gt;
&lt;p&gt;Petite subtilité : si l'imprimante a des pixels non carrés, il faut appliquer
une anamorphose au préalable à l'image qui sera donnée à l'outil car UVtools ne
gère pas cela automatiquement. Dans mon cas, les pixels étant de 19µm de large
pour 24µm de haut, j'ai étiré la largeur de l'image par un facteur 24/19.&lt;/p&gt;
&lt;p&gt;L'inversion des couleurs (négatif) peut se faire dans l'image ou par une option
à cocher.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;p&gt;&lt;em&gt;Interface de UVtools pour générer des lithodphanies&lt;/em&gt;&lt;/p&gt;
&lt;img alt="" src="/images/cyanotype_msla/uvtools.webp" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="insolation"&gt;
&lt;h2&gt;Insolation&lt;/h2&gt;
&lt;p&gt;Plaçons le papier sensibilisé sur l'écran de l'appareil, bien à plat, et lançons
l'impression. L'imprimante se calibre, monte et descend le plateau (retiré) puis
se plaint de ne pas avoir détecté de résine. Heureusement ce modèle
d'imprimante permet de forcer la poursuite avec une boîte de dialogue sur
l'écran de contrôle. Un deuxième échec du nivellement automatique du plateau
apporte une alerte qu'il est également possible d'ignorer et ça y est,
l'insolation a lieu.&lt;/p&gt;
&lt;p&gt;Voici en accéléré le motif qui est affiché sur l'écran, avec en blanc les zones
où les UVs vont atteindre le papier. Remarquez comme chaque pixel stoppe
l'insolation à des temps différents selon la valeur cible de l'image.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;p&gt;&lt;em&gt;Motif exposé (vidéo).
Il s'agit d'une photographie du cloître de l'abbaye de Fontevraud en 2018.&lt;/em&gt;&lt;/p&gt;
&lt;video controls preload="none" width="800" height="480"&gt;
  &lt;source src="/images/cyanotype_msla/insolation.mp4" type="video/mp4"&gt;
&lt;/video&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="resultat"&gt;
&lt;h2&gt;Résultat&lt;/h2&gt;
&lt;p&gt;Et voilà ce que ça donne :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="/images/cyanotype_msla/cyanotype.jpg" /&gt;
&lt;/div&gt;
&lt;p&gt;En bonus, une vue en détail de très très près, au niveau du toit de l'abbatiale
visible à travers la première arche dans sa partie droite. La résolution est
fortement limitée par les fibres du papier :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="/images/cyanotype_msla/detail.jpg" /&gt;
&lt;/div&gt;
&lt;p&gt;Et voilà, nous avons réussi à tirer un cyanotype à partir d'une photographie
numérique, sans passer par un négatif sur film transparent.&lt;/p&gt;
&lt;/div&gt;
</content><category term="hack"></category><category term="hack"></category></entry><entry><title>CAO 3D opensource - Retours d’expérience</title><link href="https://haum.org/cao-3D-opensource-retours-d-experience.html" rel="alternate"></link><published>2025-04-12T18:30:00+02:00</published><updated>2025-04-12T18:30:00+02:00</updated><author><name>manu</name></author><id>tag:haum.org,2025-04-12:/cao-3D-opensource-retours-d-experience.html</id><summary type="html">&lt;p class="first last"&gt;Retours d’expérience sur quelques logiciels opensource de CAO 3D&lt;/p&gt;
</summary><content type="html">&lt;div class="section" id="contexte"&gt;
&lt;h2&gt;Contexte&lt;/h2&gt;
&lt;p&gt;Je transitionne depuis SolidWorks. C’est un super outil que j’utilisais
de manière professionnelle en bureau d’étude pour dessiner des ouvrages
métalliques.&lt;/p&gt;
&lt;p&gt;Maintenant que j’ai quitté le milieu, je me suis mis à la recherche
d’outils opensource pour continuer à dessiner en 3D.&lt;/p&gt;
&lt;p&gt;Principalement, je cherche un ou des outils permettant d’atteindre ces
buts:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;avoir un format ouvert et non limité à la version que j’utilise : le
modèle de SolidWorks, c’est qu’un modèle créé avec SolidWorks 2015,
enregistré dans SolidWorks 2016 (sans changement), n’est plus éditable
dans SolidWorks 2015. Il faut donc avoir la même version pour
collaborer et la licence n’est pas donnée (même s’il existe une
licence “Maker” en abonnement, ce n’est pas pérenne)&lt;/li&gt;
&lt;li&gt;pouvoir versionner mes modèles avec Git ou un outil plus adapté.
SolidWorks a un module “PDM” qui coûte un bras, et qui fonctionne bien
en entreprise, mais je doute que ce soit possible d’en faire une
instance quelque part.&lt;/li&gt;
&lt;li&gt;avoir un outil stable sur lequel je puisse compter.&lt;/li&gt;
&lt;li&gt;l’outil doit me permettre de réaliser des modèles modulaires et
paramétriques.&lt;/li&gt;
&lt;li&gt;l’outil doit être disponible sous Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J’ai donc testé quelques logiciels opensource pour tenter de répondre à
ces besoins, réalisant quelque chose de similaire à
&lt;a class="reference external" href="https://gridfinity.xyz/"&gt;Gridfinity&lt;/a&gt;. L’idée est de pouvoir, d’une
manière ou d’une autre donner un nombre de modules et de générer grille
et boîte. L’idée est simple, mais permet de valider les points suivants
:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;pouvoir faire des éléments distincts (des pièces, ou &lt;em&gt;parts&lt;/em&gt;) et les
réutiliser&lt;/li&gt;
&lt;li&gt;idéalement, pouvoir utiliser des éléments déjà existants et créer un
assemblage avec&lt;/li&gt;
&lt;li&gt;pouvoir entrer des paramètres quelque part et voir le modèle s’adapter&lt;/li&gt;
&lt;li&gt;exporter le modèle fini pour le partager, l’importer dans d’autres
outils ou juste bouffer de la place sur mon disque&lt;/li&gt;
&lt;li&gt;écrire un comparatif d’outils &lt;span class="del"&gt;en prenant l’apéro
tranquilou&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ces comparatifs, je ne vais pas parler de l’interface du logiciel,
sauf si c’est tout à fait nécessaire.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="freecad-en-v1"&gt;
&lt;h2&gt;FreeCAD (en v1)&lt;/h2&gt;
&lt;p&gt;J’ai découvert &lt;a class="reference external" href="https://www.freecad.org/"&gt;FreeCAD&lt;/a&gt; à l’époque où je
dessinais professionnellement avec Sketchup pour les rendus, donc
autours de 2012.&lt;/p&gt;
&lt;p&gt;De temps à autre, j’y passais quelques heures pour voir comment le
logiciel évoluait, mais je n’ai jamais eu le courage de “faire le pas” :
trop compliqué. Et quand je suis passé à SolidWorks en 2014 : pas assez
intuitif, pas assez stable pour en faire mon outil de dessin.&lt;/p&gt;
&lt;p&gt;La version 1, sortie en 2024, a gommé une bonne partie des soucis que
j’avais pu rencontrer sur mes derniers essais : référencer un élément
dans un autre est maintenant &lt;em&gt;gérable&lt;/em&gt; : si l’élément d’origine change
et que la référence n’est plus possible, on ne finit pas avec un modèle
tout cassé, juste un modèle à reprendre : supprimer les anciennes
références et remplacer par des nouvelles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les pour :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;c’est proche de SolidWorks sur la manière de construire : on dessine
des &lt;em&gt;esquisses&lt;/em&gt; (dessins 2D, avec côtes contraintes) et on applique
des opérations dessus.&lt;/li&gt;
&lt;li&gt;il y a un système de création d’assemblage, où l’on peut placer des
pièces les une par rapport aux autres, en appliquant des contraintes.&lt;/li&gt;
&lt;li&gt;il y a un système de &lt;strong&gt;modules&lt;/strong&gt;, permettant d’ajouter des
fonctionnalités&lt;/li&gt;
&lt;li&gt;les formats d’exports sont variés (dont du STEP)&lt;/li&gt;
&lt;li&gt;il est possible d’importer pas mal de formats différents et de bosser
avec (ex : prendre un STL comme base et faire une empreinte dedans)&lt;/li&gt;
&lt;li&gt;il y a un module de mise en plan pour, par exemple, générer des PDF
pour revue, fabrication en ateliers ou de demandes de devis&lt;/li&gt;
&lt;li&gt;il est possible de nommer des cotes dans une &lt;em&gt;esquisse&lt;/em&gt; et y faire
référence ailleurs (autre esquisse, opération, …)&lt;/li&gt;
&lt;li&gt;il est possible de référencer des valeurs d’opérations (ex:
&lt;tt class="docutils literal"&gt;extrusion1.Length&lt;/tt&gt;)&lt;/li&gt;
&lt;li&gt;il est possible d’écrire des macros en Python&lt;/li&gt;
&lt;li&gt;il y a des modules très intéressants (pour générer de la visserie, des
filetages, des engrenages, etc…)&lt;/li&gt;
&lt;li&gt;il y a un module “feuille de calcul” (sans troller SolidWorks, là
c’est intégré, pas besoin d’Office360 en sus). Il est possible de
nommer les cellules et de les utiliser en référence dans les modèles.
Il est aussi possible de l’utiliser comme liste de &lt;em&gt;variantes&lt;/em&gt; d’une
même pièce. C’est top pour centraliser le côté paramétrique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Les contre :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;au sein d’une même &lt;em&gt;esquisse&lt;/em&gt;, il n’est pas possible d’utiliser une
référence déclarée dans ce dernier. C’est ultra pénible, on se
retrouve par exemple à faire 3 segments de lignes de même longueur
plutôt que de pouvoir faire un &lt;tt class="docutils literal"&gt;la_cote / 3&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;le résolveur de contraintes n’est pas parfait et il m’arrive
régulièrement d’avoir à reprendre toute une pièce étape par étape,
parce qu’un changement de paramètre a résulté en un point invalide (ex
: un point à 20mm &lt;em&gt;à droite&lt;/em&gt; de l’axe Y se retrouve à 20mm &lt;em&gt;à gauche&lt;/em&gt;
après recalcul). Il y a des astuces pour améliorer la situation, mais
je trouve que c’est difficile à appréhender &lt;em&gt;avant&lt;/em&gt; d’avoir le souci.&lt;/li&gt;
&lt;li&gt;éditer une &lt;em&gt;esquisse&lt;/em&gt; de “début” de pièce fait que l’ensemble de la
pièce est recalculée à chaque modification (sans quitter l’édition),
rendant l’ensemble lent sur des pièces/assemblages de petite taille :
bouger une côte ? Recalcul. Ajouter une ligne ? Recalcul. etc… Et ça,
même si toutes les autres opérations sont désactivées.&lt;/li&gt;
&lt;li&gt;il n’est pas possible de piloter le logiciel en ligne de commande
(&lt;em&gt;CLI&lt;/em&gt;) : générer des variantes de pièce entraine une modification
manuelle des paramètres (ou une sélection de variante), suivi d’un
export manuel, et c’est pénible.&lt;/li&gt;
&lt;li&gt;j’ai rencontré pas mal de crashes, surtout en appliquant des
contraintes sur des assemblages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Du coup, j’ai voulu passer à de la création de modèle basée sur du code.
Pour plusieurs raisons :&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Le code, c’est versionnable et ça ne prend pas de place&lt;/li&gt;
&lt;li&gt;Le code, c’est révisable (il existe des outils de comparaison de
modèles 3D, qui coûtent certainement une blinde parce que c’est sur
devis)&lt;/li&gt;
&lt;li&gt;Le code, c’est logiquement manipulable de l’extérieur : prendre un
bout par-ci, composer avec ce machin-là&lt;/li&gt;
&lt;li&gt;Je m’attends, peut-être à tort, à une stabilité supérieure à celle
d’un outil graphique où on clique partout pour dessiner sur ce que
l’on voit (sans basher, c’est compliqué de faire un outil efficace,
stable, simple &lt;em&gt;avec une UI&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Donc : &lt;strong&gt;OpenSCAD&lt;/strong&gt; !&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="openscad"&gt;
&lt;h2&gt;OpenSCAD&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://openscad.org/"&gt;OpenSCAD&lt;/a&gt; est un outil de création de modèle
3D où on tape du code, utilisant la
&lt;a class="reference external" href="https://fr.wikipedia.org/wiki/G%C3%A9om%C3%A9trie_de_construction_de_solides"&gt;CSG&lt;/a&gt;
: Géométrie de construction de solides.&lt;/p&gt;
&lt;p&gt;L’idée de base, c’est d’appliquer des opérations simples sur des formes
simples pour en faire des modèles complexes.&lt;/p&gt;
&lt;p&gt;Je suis une quiche en maths, donc je n’ai pas creusé sur un usage
avancé.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les pour :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;la syntaxe est simple et compréhensible (OpenSCAD a son propre
langage)&lt;/li&gt;
&lt;li&gt;l’éditeur de code est &lt;span class="del"&gt;pourri&lt;/span&gt; simple, mais OpenSCAD
supporte le rechargement automatique : du coup, j’édite avec un autre
éditeur qui me donne de l’auto-complétion, tout en gardant l’aperçu du
résultat dans la fenêtre d’OpenSCAD&lt;/li&gt;
&lt;li&gt;l’apprentissage des commandes de base est facile : il y en a peu&lt;/li&gt;
&lt;li&gt;via la CLI, on peut exporter des modèles et des aperçus en png&lt;/li&gt;
&lt;li&gt;il est possible d’organiser son code en modules, c’est cool :)&lt;/li&gt;
&lt;li&gt;la communauté a créé &lt;a class="reference external" href="https://openscad.org/libraries.html"&gt;plein de
librairies&lt;/a&gt; pour aider à la
construction (ex : &lt;a class="reference external" href="https://github.com/BelfrySCAD/BOSL2/"&gt;BOSL2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;c’est facile de débugger visuellement son code : un &lt;tt class="docutils literal"&gt;#&lt;/tt&gt; devant une
ligne et la forme associée apparait en rouge dans la prévisualisation&lt;/li&gt;
&lt;li&gt;FreeCAD est compatible : ouvrez un fichier OpenSCAD avec et il
reconstruira au mieux le modèle&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Les contre :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;on ne manipule que des formes primitives (cubes, sphères, cylindres,
etc.). À moins d’utiliser des librairies, le moindre chanfrein demande
un peu de réflexion et quelques lignes de code.&lt;/li&gt;
&lt;li&gt;pas de &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/B-Rep"&gt;B-Rep&lt;/a&gt; pour l’export
(donc, pas de STEP), uniquement des maillages (stl, obj, amf…)&lt;/li&gt;
&lt;li&gt;il n’est pas possible d’assigner des résultats à des variables (ex :
générer une sphère et s’en re-servir). Donc au bout d’un moment, c’est
lent&lt;/li&gt;
&lt;li&gt;le rendu peut être extrêmement lent sur des pièces qui ont un peu de
manipulations.&lt;/li&gt;
&lt;li&gt;il n’y a pas de système de gestion de dépendence, donc suivant le
moment où vous avez récupéré une librairie, vous n’aurez pas les mêmes
résultats que le collègue qui a une autre version. À moins de la
versionner (en entier, ou d’utiliser des &lt;em&gt;submodules&lt;/em&gt; Git). Une
tentative a été faite d’utiliser le service de RubyGems pour ça, mais
même si sur le principe ça fonctionne, ça reste bancale (et pollue
RubyGems avec des packages openscad)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un bout de code OpenSCAD :&lt;/p&gt;
&lt;pre class="code openscad literal-block"&gt;
&lt;span class="nb"&gt;union&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;translation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;box_wall_thickness&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;assembly_play&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="c1"&gt;// Base&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;translation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;translation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;roundedCube&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;slot_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;slot_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;slot_height&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;slot_radius&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sidesonly&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="l"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nb"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;slot_height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;box_wall_thickness&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;chamferedRoundedBox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;box_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;box_width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;box_wall_thickness&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;box_radius&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Bon moi, je veux du Step :)&lt;/p&gt;
&lt;p&gt;Donc: &lt;strong&gt;CadQuery&lt;/strong&gt; !&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="cadquery"&gt;
&lt;h2&gt;CadQuery&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://cadquery.readthedocs.io/en/latest/"&gt;CadQuery&lt;/a&gt; (&lt;a class="reference external" href="https://github.com/CadQuery/cadquery"&gt;dépôt
Git&lt;/a&gt;), c’est du Python. Donc
bah, on peut s’imaginer la facilité de gestion de dépendances, la
modularité, le partage de librairies, etc…&lt;/p&gt;
&lt;p&gt;Par contre, c’est juste une librairie ; il faut un éditeur pour afficher
les aperçus : &lt;a class="reference external" href="https://github.com/CadQuery/CQ-editor"&gt;cq-editor&lt;/a&gt; ou
un &lt;a class="reference external" href="https://marketplace.visualstudio.com/items?itemName=bernhard-42.ocp-cad-viewer"&gt;plugin pour
VSCode&lt;/a&gt;
(si vous utilisez VSCodium comme tout être humain sensé, c’est plus
pénible : vous allez devoir utiliser le &lt;a class="reference external" href="https://github.com/bernhard-42/vscode-ocp-cad-viewer"&gt;dépôt
Git&lt;/a&gt;, et vous
débrouiller pour les dépendences. Mais c’est faisable)&lt;/p&gt;
&lt;p&gt;Le moteur de rendu, c’est OpenCascade, comme pour FreeCAD, donc on parle
maintenant de &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/B-Rep"&gt;B-Rep&lt;/a&gt;, à la
différence d’OpenSCAD&lt;/p&gt;
&lt;p&gt;Tous les exemples sont assortis d’une visualisation 3D, c’est top !&lt;/p&gt;
&lt;p&gt;Coté syntaxe, le principe, c’est de chaîner ses méthodes, et pour le
coup, je ne trouve pas ça très naturel, donc j’ai arrêté très
rapidement.&lt;/p&gt;
&lt;p&gt;Petits bouts de code quand même :&lt;/p&gt;
&lt;pre class="code py literal-block"&gt;
&lt;span class="n"&gt;thickness&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;# Une plaque verticale de 2x2x0.5mm, avec un trou de 0.5mm centré&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Workplane&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;front&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;thickness&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;faces&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&amp;gt;Z&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thickness&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;pre class="code py literal-block"&gt;
&lt;span class="c1"&gt;# Un truc étrange, dans les exemples&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="n"&gt;cq&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Workplane&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;origin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;circle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;revolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;180&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;center&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;workplane&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;extrude&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;next&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Mais &lt;strong&gt;Build123d&lt;/strong&gt; alors !&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="build123d"&gt;
&lt;h2&gt;Build123d&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://build123d.readthedocs.io/"&gt;Build123d&lt;/a&gt; (&lt;a class="reference external" href="https://github.com/gumyr/build123d"&gt;dépôt
Git&lt;/a&gt;), c’est toujours dessiner en
3D, en python, mais avec deux approches : un mode &lt;em&gt;builder&lt;/em&gt;, similaire à
OpenSCAD, et un mode &lt;em&gt;algebra&lt;/em&gt;, plus proche de la programmation
procédurale.&lt;/p&gt;
&lt;p&gt;Le moteur de rendu, c’est aussi OpenCascade, comme pour CadQuery et
FreeCAD, donc on fait aussi du B-Rep.&lt;/p&gt;
&lt;p&gt;Pour le moment, je suis dans le process de terminer le modèle
“Gridfinity”, donc je n’ai pas encore fait de génération en CLI, mais à
priori, c’est possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les pour :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;la doc est bien faite, assortie &lt;a class="reference external" href="https://build123d.readthedocs.io/en/latest/introductory_examples.html"&gt;d’exemples
3D&lt;/a&gt;,
de rendus et de tutos&lt;/li&gt;
&lt;li&gt;vu qu’on code pour faire du B-Rep, on peut exporter (entre autres) du
STEP o/&lt;/li&gt;
&lt;li&gt;on peut faire des screenshots de qualité (leur doc en contient plein)&lt;/li&gt;
&lt;li&gt;je trouve la syntaxe sympa, et suivant le besoin, bosser avec un mode
ou l’autre, c’est chouette&lt;/li&gt;
&lt;li&gt;le débug se fait plutôt facilement (pas aussi aisé qu’avec OpenSCAD,
celà dit)&lt;/li&gt;
&lt;li&gt;on peut assigner des résultats à des variables pour éviter des
re-calculs&lt;/li&gt;
&lt;li&gt;pour les préviews, il y a &lt;a class="reference external" href="https://github.com/jdegenstein/jmwright-CQ-Editor"&gt;un fork de
cq-editor&lt;/a&gt; qui
prend en charge les modèles Build123d en plus des modèles CadQuery
(j’utilise, avec un éditeur à côté, comme pour OpenSCAD). Le “bundle”
sur github inclut quelques librairies supplémentaires. Sinon, le
&lt;a class="reference external" href="https://marketplace.visualstudio.com/items?itemName=bernhard-42.ocp-cad-viewer"&gt;plugin
VSCode&lt;/a&gt;
pour CadQuery supporte aussi Build123d&lt;/li&gt;
&lt;li&gt;on peut écrire des tests (je ne me suis pas penché là-dessus, mais
bon, un gros point en plus)&lt;/li&gt;
&lt;li&gt;Il y a des sélecteurs pour à peu près tout (vertices, arêtes, faces)
et des méthodes pour réaliser des opérations dessus (yay ! des
chanfreins &lt;em&gt;faciles&lt;/em&gt; !)&lt;/li&gt;
&lt;li&gt;on peut partir avec des primitives et les manipuler, comme dans
OpenSCAD&lt;/li&gt;
&lt;li&gt;on peut dessiner soi-même des lignes en spécifiant leurs points, puis
appliquer des opérations dessus&lt;/li&gt;
&lt;li&gt;on peut importer des formats 2D et bosser dessus (j’ai vu passer des
exemples avec du SVG)&lt;/li&gt;
&lt;li&gt;il est possible de créer des modèles avec CadQuery et les continuer
avec build123D&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Les contre :&lt;/strong&gt;&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;le temps d’apprentissage est plus long qu’avec OpenSCAD, je jongle
encore avec la doc et mon code&lt;/li&gt;
&lt;li&gt;j’ai pu noter des différences de comportement pour la même méthode,
suivant qu’on soit en mode &lt;em&gt;builder&lt;/em&gt; ou &lt;em&gt;algebra&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;comprendre pourquoi une opération n’est pas possible n’est pas
toujours simple&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rien n’est parfait. Il y a certainement d’autres soucis ou points de
friction, mais pour le moment, &lt;em&gt;ça va&lt;/em&gt; dans l’ensemble&lt;/p&gt;
&lt;p&gt;Une plaque avec un trou, en mode &lt;em&gt;builder&lt;/em&gt; :&lt;/p&gt;
&lt;pre class="code py literal-block"&gt;
&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;thickness&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;80.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;60.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;10.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;center_hole_dia&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;22.0&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;BuildPart&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;ex2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="n"&gt;Box&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;thickness&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;    &lt;span class="n"&gt;Cylinder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;center_hole_dia&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thickness&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Mode&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SUBTRACT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;La même en mode &lt;em&gt;algebra&lt;/em&gt; :&lt;/p&gt;
&lt;pre class="code py literal-block"&gt;
&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;thickness&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;80.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;60.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;10.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;center_hole_dia&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;22.0&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;ex2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Box&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;thickness&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ex2&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="n"&gt;Cylinder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;center_hole_dia&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thickness&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="autres"&gt;
&lt;h2&gt;Autres&lt;/h2&gt;
&lt;p&gt;Il existe d’autres outils pour faire de la 3D paramétrique, j’ai pu
essayer un peu un plugin pour Blender : &lt;a class="reference external" href="https://www.cadsketcher.com/"&gt;CAD
Sketcher&lt;/a&gt;. C’est prometteur si vous
êtes à l’aise avec Blender, et ce n’est pas mon cas.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://www.astocad.com"&gt;AstoCAD&lt;/a&gt; est un fork de FreeCAD, payant,
qui reverse ses correctifs et améliorations au projet après un certain
temps. C’est un abonnement à l’année, je n’ai donc pas essayé, trouvant
le prix trop élevé &lt;em&gt;juste pour tester&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Je suis tombé sur &lt;a class="reference external" href="https://partcad.org/"&gt;PartCAD&lt;/a&gt;
(&lt;a class="reference external" href="https://partcad.readthedocs.io/"&gt;docs&lt;/a&gt; et &lt;a class="reference external" href="https://github.com/partcad/partcad/"&gt;dépôt
Git&lt;/a&gt;), un “standard de
documentation de produits manufacturables”, ce sera ma prochaine étape.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://manyfold.app"&gt;Manyfold&lt;/a&gt; est un service opensource en Ruby
(on Rails) de gestion et partage de modèles 3D. Une partie fédération
est en cours de développement avec ActivityPub.&lt;/p&gt;
&lt;p&gt;Il y a aussi &lt;a class="reference external" href="https://solvespace.com"&gt;SolveSpace&lt;/a&gt; pour dessiner des
modèles paramétriques, qui m’a été remonté pendant l’écriture de
l’article.&lt;/p&gt;
&lt;p&gt;Pour visualiser les fichiers 3D, j’utilise
&lt;a class="reference external" href="https://github.com/fougue/mayo"&gt;Mayo&lt;/a&gt; principalement, et
&lt;a class="reference external" href="https://www.meshlab.net/"&gt;MeshLab&lt;/a&gt; me permet de corriger des modèles
récupérés sur internet.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="et-du-coup"&gt;
&lt;h2&gt;Et du coup ?&lt;/h2&gt;
&lt;p&gt;Mon point de vue sur ces outils n’engage que moi, je pense qu’il faut
tester pour adopter.&lt;/p&gt;
&lt;p&gt;J’utilise encore beaucoup FreeCAD, c’est un outil vraiment bien. Je m’en
sers principalement pour des modèles qui ne bougeront pas trop, ou pour
des modèles pour lesquelles dessiner des &lt;em&gt;esquisses&lt;/em&gt; est encore
indispensable pour moi (gérer des splines de tête, c’est pas encore ça).&lt;/p&gt;
&lt;p&gt;OpenSCAD, c’est top pour des petites pièces simples : en quelques lignes
on a un résultat.&lt;/p&gt;
&lt;p&gt;Build123d, j’ai l’impression que c’est l’outil qui remplacera OpenSCAD
quand je serais à l’aise avec. L’export en STEP est vraiment un plus.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="resultats-de-lexercice"&gt;
&lt;h2&gt;Résultats de l’exercice&lt;/h2&gt;
&lt;div class="section" id="freecad"&gt;
&lt;h3&gt;FreeCAD&lt;/h3&gt;
&lt;p&gt;La feuille de calcul pour les paramètres :&lt;/p&gt;
&lt;img alt="Feuille de calcul de FreeCAD" class="align-center" src="/images/retour_experience_cao_opensource/freecad_settings.png" /&gt;
&lt;p&gt;Prévisualisation FreeCAD avec les deux modèles :&lt;/p&gt;
&lt;img alt="Modèle FreeCAD" class="align-center" src="/images/retour_experience_cao_opensource/freecad_model.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="openscad-2"&gt;
&lt;span id="openscad-1"&gt;&lt;/span&gt;&lt;h3&gt;OpenSCAD&lt;/h3&gt;
&lt;p&gt;Grille 3x2 :&lt;/p&gt;
&lt;img alt="Grille 3x2 réalisée avec OpenSCAD" class="align-center" src="/images/retour_experience_cao_opensource/openscad_grid.png" /&gt;
&lt;p&gt;Boite 2x2 :&lt;/p&gt;
&lt;img alt="Boite 2x2 réalisée avec OpenSCAD" class="align-center" src="/images/retour_experience_cao_opensource/openscad_box.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="build123d-2"&gt;
&lt;span id="build123d-1"&gt;&lt;/span&gt;&lt;h3&gt;Build123d&lt;/h3&gt;
&lt;img alt="WIP avec Build123d" class="align-center" src="/images/retour_experience_cao_opensource/build123d.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="CAO"></category><category term="3d"></category><category term="cao"></category><category term="freecad"></category><category term="openscad"></category><category term="cadquery"></category><category term="build123d"></category><category term="python"></category></entry><entry><title>Teriaki 2020, le HAUM au temps du COVID-19</title><link href="https://haum.org/teriaki2020.html" rel="alternate"></link><published>2020-09-15T23:30:00+02:00</published><updated>2020-09-15T23:30:00+02:00</updated><author><name>Jblb</name></author><id>tag:haum.org,2020-09-15:/teriaki2020.html</id><summary type="html">&lt;p class="first last"&gt;Pong sans contact en 2020&lt;/p&gt;
</summary><content type="html">&lt;div class="section" id="contexte"&gt;
&lt;h2&gt;Contexte&lt;/h2&gt;
&lt;p&gt;L'année 2020 a vu un arrêt total du monde et des mesures de prévention contre la pandémie de COVID-19 un peu partout. Malgré la limitation imposée sur les rassemblements festifs encore en vigueur fin août, les &lt;a class="reference external" href="http://www.teriaki.fr/"&gt;Siestes Teriaki&lt;/a&gt; ont pu avoir lieu (mais sans chaise longue).&lt;/p&gt;
&lt;p&gt;Comme chaque année, le HAUM a répondu présent à l'invitation. Cependant, il nous fallait trouver une installation qui soit compatible avec les contraintes sanitaires du moment. Pas facile quand la base de nos créations est l'interactivité avec le public et des commandes tactiles !&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="cogito"&gt;
&lt;h2&gt;Cogito&lt;/h2&gt;
&lt;p&gt;Première contrainte : le temps. Avec l'incertitude de la période, nous avons été prévenus tardivement que les siestes auraient finalement lieu. Il restait alors deux mois pour trouver une idée, vérifier son concept et la mettre en œuvre.&lt;/p&gt;
&lt;p&gt;Nous venions tout juste de reprendre les séances au local après quelques mois de rencontres virtuelles par visioconférence pendant le confinement général et quelques semaines qui ont suivi. Le sujet est naturellement arrivé dans la discussion et comme toujours, au détour d'une boutade, est venue l'idée d'une interaction sans contact ; restait à trouver comment la réaliser et à quel projet l'appliquer.&lt;/p&gt;
&lt;p&gt;De manière pragmatique, étant donné le peu de temps disponible, nous avons passé en revue les différents projets déjà réalisés et le choix s'est imposé : nous redéfinirions le &lt;a class="reference external" href="/pages/1dpong.html"&gt;Pong1D&lt;/a&gt;. L'idée était de remplacer les boutons (donc tactiles digitaux) par des capteurs détectant la présence de la main à distance.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="experimento"&gt;
&lt;h2&gt;Experimento&lt;/h2&gt;
&lt;p&gt;Hasard heureux, l'un des membres présents ce soir-là avait, dans sa caravane, un capteur infrarouge par réflexion. Ni une, ni deux, nous nous emparons du sésame, direction l'établi pour un premier test immédiat. Sous les yeux ébahis du généreux fournisseur, nous l'avons fait fonctionner en quelques minutes alors que lui-même avait renoncé auparavant.&lt;/p&gt;
&lt;p&gt;On-Off-On-Off... Ça fonctionnait bien, en tout cas dans le principe, mais quelque chose nous gênait : la portée était très faible (deux centimètres tout au plus) et donc le risque de toucher accidentellement le support dans l'euphorie du jeu était très grand. Il fallait détecter plus loin.&lt;/p&gt;
&lt;p&gt;D'un côté nous avons fait quelques essais pour améliorer la portée du dispositif, mais le succès était très limité. Les télémètres ultrasons n'étaient pas plus pratiques car leur cône large et leur temps de réponse auraient rendu l'interaction peu intuitive. Mais cette idée en a menée une autre : nos voisins &lt;a class="reference external" href="https://www.st.com/"&gt;ST&lt;/a&gt; ont un produit de télémétrie très réactif dont nous pensions pouvoir tirer profit.&lt;/p&gt;
&lt;p&gt;Après avoir exposé le projet à la direction, nous avons rapidement été soutenus et ils nous ont même offert deux de ces télémètres laser. La réception a été quelque peu folklorique dans cette période estivale, mais nous avons bien reçu le colis et il restait donc à les mettre en œuvre.&lt;/p&gt;
&lt;p&gt;Quelques lignes de code plus tard, et beaucoup de grattage de tête avant de s'apercevoir que des résistances externes étaient indispensables (les pull-up internes ne fonctionnaient pas) nous avions une distance ! Très rapidement, nous avons ajouté une sortie open-collector et testé sur le vrai Pong avec succès.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="fabricato"&gt;
&lt;h2&gt;Fabricato&lt;/h2&gt;
&lt;p&gt;Toutes les briques étant réunies, il faillait créer le mortier pour les lier. Deux axes principaux : les boîtes accueillant les capteurs et la connectique à recâbler.&lt;/p&gt;
&lt;p&gt;Dans un premier temps, nous avions envisagé de créer une boîte en bois, mais la conception était laborieuse. En se baladant dans le local, une nouvelle boutade nous a amené à sérieusement envisager de transformer une sorbetière et une cafetière en boîte atypique pour nos capteurs. Finalement, ce sont deux tirelires cylindriques transparentes qui ont retenu notre attention.&lt;/p&gt;
&lt;p&gt;La fente pour insérer la pièce était tout juste assez large pour faire passer la partie active du capteur. Un morceau de mousse découpée circulairement au laser permettait de coincer la cartelette dans la partie haute tandis que les fils de communication redescendaient vers une carte de contrôle dans la partie basse s'ajustant elle-même au millimètre près dans l'espace disponible. Nous avons seulement percé un trou pour sortir le câble allant vers le Pong.&lt;/p&gt;
&lt;p&gt;Pour les câbles justement, nous avons trouvé dans l'espace free-to-hack de quoi satisfaire nos appétits. L'alimentation a été ajoutée dans le lien et le tout a été encapsulé dans une connectique personnalisée du plus bel effet.&lt;/p&gt;
&lt;p&gt;Trois morceaux de palette, un bout de tube PVC, de la peinture dans l'escalier, un bout de support découpé au laser... et nous voilà avec un rehausseur de capteur tout en beauté.&lt;/p&gt;
&lt;p&gt;Côté Pong, nous avons profité du design transparent des capteurs pour proposer une électronique exposée, elle aussi dans une boîte transparente, improvisée en un soir avec un couvercle thermoformé récupéré, découpé et plié pour l'occasion.&lt;/p&gt;
&lt;p&gt;Avec tout ça, nous étions fin prêts.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Rehausseur en construction" src="https://photos.haum.org/small/teriaki2020/IMG_20200821_095229.jpg" /&gt;
&lt;img alt="Pong avec capot transparent" src="https://photos.haum.org/small/teriaki2020/IMG_20200916_001716.jpg" /&gt;
&lt;img alt="Tirelire capteur" src="https://photos.haum.org/small/teriaki2020/IMG_20200916_002553.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="veni-vidi-lusi"&gt;
&lt;h2&gt;Veni, vidi, lusi*&lt;/h2&gt;
&lt;p&gt;* Indicatif parfait de ludere&lt;/p&gt;
&lt;p&gt;Nous voilà le jour J. Cette année, l'installation est plutôt légère (pour une fois) et nous la montons en une dizaine de minutes avec un coup de main (et d'échelle) de l'équipe technique de l'abbaye de l'Épau. Il ne restait qu'à attendre le public... en regardant la pluie tomber dans le cloître.&lt;/p&gt;
&lt;p&gt;Malgré tout, les premiers spectateurs arrivent et la jauge de seulement 5 visiteurs est vite atteinte. Les agents de sécurité nous aidaient à contrôler le flux de festivaliers. Le port du masque et les distances physiques permettaient de profiter de ce moment festif sans que les mesures ne paraissent trop contraignantes.&lt;/p&gt;
&lt;p&gt;Les parties s'enchaînent sans contact, avec un réel intérêt du public happé par le jeu et ébahi par l'ingéniosité ayant transformé une contrainte (négatif) en une expérience de jeu atypique (positif). Enfin, jusqu'à ce que...&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Joueurs l'un contre l'autre" src="https://photos.haum.org/small/teriaki2020/teriaki20_01.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="fregi"&gt;
&lt;h2&gt;Fregi*&lt;/h2&gt;
&lt;p&gt;* Indicatif parfait de frangere&lt;/p&gt;
&lt;p&gt;Lors de la conception, nous avions un doute sur la longueur des pieds des rehausseurs et envisagions de les raccourcir pour éviter aux joueurs de taper dedans. L'idée était passée. Mais la question s'est finalement ré-imposée en fin d'après-midi lorsqu'un festivalier a buté dedans, faisant vaciller puis tomber le support, entraînant le capteur inexorablement vers le sol.&lt;/p&gt;
&lt;p&gt;Si le spectateur n'a pas eu mal et a pu continuer à pérégriner joyeusement, ce ne fut pas le cas de notre capteur. Celui-ci a en effet entamé son ultime voyage... en deux morceaux !&lt;/p&gt;
&lt;p&gt;Nous voilà donc en fin d'après-midi du samedi, avec seulement un capteur sachant capter ; et pas moyen de réparer le second.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="cogito-denuo"&gt;
&lt;h2&gt;Cogito [denuo]&lt;/h2&gt;
&lt;p&gt;Il fallait encore une fois être créatifs pour pouvoir se passer d'un capteur tout le reste du week-end, d'autant plus que nous n'avions pas les boutons originels sous la main.&lt;/p&gt;
&lt;p&gt;Rapidement, il parait évident qu'il faut modifier le code du jeu pour que la machine joue contre les prochains joueurs humains. La modification a été faite rapidement et 15 minutes plus tard, les premiers matchs contre l'intelligence artificielle avaient lieu.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Joueurs contre l'IA" src="https://photos.haum.org/small/teriaki2020/teriaki20_02.JPG" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="dimanche"&gt;
&lt;h2&gt;Dimanche&lt;/h2&gt;
&lt;p&gt;Nous revoilà le lendemain avec un jeu contre la machine. Dans un premier temps, nous avons cherché à améliorer le rendu du jeu de celle-ci pour paraître plus naturel. Mais nous faisions tout de même assez rapidement le constat que l'enthousiasme des visiteurs est beaucoup moindre quand il n'y a pas d'adversaire incarné, avec qui rire et commenter les échanges.&lt;/p&gt;
&lt;p&gt;Entre-temps, nous avions pu récupérer les boutons historiques et avons donc très vite recâblé pour proposer des matchs humain contre humain, avec un adversaire utilisant le bouton sans contact (visiteur) et l'autre avec le bouton physique (HAUM).&lt;/p&gt;
&lt;p&gt;L'entrain est immédiatement revenu et la journée s'est très bien passée. Nous avons même eu plusieurs fois des files d'attente extérieures malgré une pluie légère.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Public attendant sous la pluie" src="https://photos.haum.org/small/teriaki2020/teriaki20_03.JPG" /&gt;
&lt;/div&gt;
&lt;p&gt;À la fin, avant de démonter totalement notre installation, nous avons invité les agents de sécurité qui nous ont bien aidé à contrôler les flux de visiteurs tout le week-end, à jouer quelques parties avec nous.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="bilan"&gt;
&lt;h2&gt;Bilan&lt;/h2&gt;
&lt;p&gt;Compte tenu du contexte de vigilance sanitaire et de la mauvaise météo (première fois en sept ans de participation pour nous), la fréquentation était très bonne. Nous avons eu peu de pauses pendant tout le week-end et elles étaient courtes. Le retour des visiteurs (et de l'équipe organisatrice, et de l'abbaye) était très enthousiaste.&lt;/p&gt;
&lt;p&gt;Il faut sans conteste remercier les équipes qui ont œuvré pour que l'évènement ait lieu malgré le contexte pandémique et qui ont montré qu'il est possible d'organiser un tel évènement dans de très bonnes conditions de sécurité sanitaire sans qu'elles ne paraissent contraignantes.&lt;/p&gt;
&lt;p&gt;Du côté du Pong, il est intéressant de noter l'importance de l'interaction entre les joueurs au-delà du jeu lui-même qui participe énormément du plaisir de jouer. Nous avons pensé, mais un peu tard, qu'il serait utile d'ajouter un repère fixe indiquant la zone dans laquelle le joueur peut taper la balle (histoire de simplifier le jeu et l'explication à un public passant). Tardivement également, nous avons ajouté un repère indiquant lorsque le faisceau était interrompu, ce qui a fortement amélioré la jouabilité. Bref, le Pong a été amélioré encore une fois.&lt;/p&gt;
&lt;/div&gt;
</content><category term="news"></category><category term="projet_pong1d"></category><category term="2020"></category><category term="teriaki"></category><category term="epau"></category></entry><entry><title>À l'assaut des moirés</title><link href="https://haum.org/premiers_moires.html" rel="alternate"></link><published>2017-09-15T22:42:00+02:00</published><updated>2017-09-15T22:42:00+02:00</updated><author><name>JackDesBwa</name></author><id>tag:haum.org,2017-09-15:/premiers_moires.html</id><summary type="html">&lt;p&gt;Depuis quelques semaines désormais, me voilà cherchant à percer les mystères
des &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Moir%C3%A9_(physique)"&gt;moirés&lt;/a&gt;, ces figures étranges qui naissent magiquement de la
superposition de motifs répétitifs. Après de nombreuses lectures, je constatai
ne pas y comprendre grand-chose et décidai donc de passer dare-dare à la
pratique en m'accrochant aux quelques bribes …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Depuis quelques semaines désormais, me voilà cherchant à percer les mystères
des &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Moir%C3%A9_(physique)"&gt;moirés&lt;/a&gt;, ces figures étranges qui naissent magiquement de la
superposition de motifs répétitifs. Après de nombreuses lectures, je constatai
ne pas y comprendre grand-chose et décidai donc de passer dare-dare à la
pratique en m'accrochant aux quelques bribes glanées ci et là.&lt;/p&gt;
&lt;p&gt;D'après l'adage Shadoks, c'est « en essayant continuellement que l'on finit par
réussir » et les efforts fournis finirent par voir pointer de premiers
résultats à la fois inattendus et totalement étonnants ; ce qui ne manqua pas
de titiller la curiosité d'autres membres dont les idées n'ont pas tardé à
augmenter l'ampleur du projet.&lt;/p&gt;
&lt;div class="section" id="premiere-reussite"&gt;
&lt;h2&gt;Première réussite&lt;/h2&gt;
&lt;p&gt;La première réussite vint de la formule suivante :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="I(x, y) = cos^2 \left ( {2 \pi \over 10} \left [ {{ min\{(x-100)^2+(y-100)^2, 8100\} \over 800} \pm (x+y-200) }) \right ] \right )" src="/images/moire/formule1.png" /&gt;
&lt;/div&gt;
&lt;p&gt;Cette formule donne le pourcentage d'intensité de chaque pixel de coordonnée
(x,y) d'une image de 200 pixels de côté. Le symbole ± est là pour rappeler que
l'on emploiera la somme sur une image et la différence sur la seconde image.&lt;/p&gt;
&lt;p&gt;Imbuvable ? Peut-être.&lt;/p&gt;
&lt;p&gt;Il aura fallu tâtonner beaucoup avant de trouver ce résultat alambiqué. On y
reconnait ce qui ressemble (vaguement) à l'équation d'un cercle centré en
(100, 100), la trace d'une sorte de motif diagonal ainsi qu'une bonne grosse
fonction trigonométrique pour bien rigoler. Ça ressemble à du bricolage, et en
effet c'en est ; mais c'est surtout le premier résultat concret.&lt;/p&gt;
&lt;p&gt;Ainsi, je m'attendais à voir des cercles concentriques légèrement déformés qui
se seraient vus rayés par une figure de moiré en superposant les deux images.
Que nenni, c'est l'inverse qui est apparu !&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Deux grilles et leur supperposition formant le moiré" src="/images/moire/figure1.png" /&gt;
&lt;/div&gt;
&lt;p&gt;Note 1 : Sur la figure ci-dessus s'ajoute un effet de seuil qui a été introduit
en vectorisant l'image à base de cosinus.&lt;/p&gt;
&lt;p&gt;Note 2 : Il se peut qu'une légère figure circulaire apparaisse sur le dessin des
grilles, car celui-ci peut entrer en interférence avec la matrice d'affichage de
votre écran.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="prototype"&gt;
&lt;h2&gt;Prototype&lt;/h2&gt;
&lt;p&gt;Amusés par le résultat, certains membres proposèrent la drôle d'idée de découper
la grille dans une plaque de MDF. La forme étant déjà vectorisée, la
transformation en un fichier adapté à la découpeuse laser a été rapide et le
résultat tout à fait convainquant.&lt;/p&gt;
&lt;p&gt;Nous venions de réaliser deux grilles légèrement ondulées - objets concrets que
nous pouvions manipuler avec nos mains - dont la superposition adéquate révèle un
motif en cercles concentriques latent ; deux morceaux de matière dont la
géométrie interfère dans le monde physique.&lt;/p&gt;
&lt;p&gt;Observation directe, lightbox, lampe torche... nous avons vite commencé à jouer
avec notre nouvelle trouvaille à essayer de nouvelles manières de constater le
motif émergeant ou simplement à jouer avec les grilles pour voir ce qui pouvait
en ressortir. C'est une activité plaisante en elle-même, et à vrai dire, nous
aurions pu rester des heures à jouer avec ces deux simples grilles...
d'ailleurs, n'est-ce pas ce que nous avons fait ‽&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/moire/p1070093_37075915742_o.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="deux-nouveaux-motifs"&gt;
&lt;h2&gt;Deux nouveaux motifs&lt;/h2&gt;
&lt;p&gt;Je vous épargne les équations (bien plus complexes que la précédente) qui
ont permis de réaliser ces grilles-ci, car il n'est point nécessaire de
comprendre pour s'émerveiller devant les résultats. Admirez.&lt;/p&gt;
&lt;p&gt;Note 1 : Votre navigateur doit supporter le format SVG et les animations pour
profiter pleinement de ces cas.&lt;/p&gt;
&lt;p&gt;Note 2 : Vous pouvez télécharger le fichier SVG et l'ouvrir (par exemple avec
le logiciel libre &lt;a class="reference external" href="https://inkscape.org/fr/"&gt;Inkscape&lt;/a&gt;) pour jouer avec les motifs, les superposer, voire
même les imprimer et ainsi constater sans ambiguïté qu'il n'y a aucun trucage.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;object data="/images/moire/spirale.svg" type="image/svg+xml"&gt;&lt;/object&gt;
&lt;object data="/images/moire/diode.svg" type="image/svg+xml"&gt;&lt;/object&gt;&lt;p&gt;Téléchargement: &lt;a class="reference external" href="/images/moire/spirale.svg"&gt;1&lt;/a&gt;, &lt;a class="reference external" href="/images/moire/diode.svg"&gt;2&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;img alt="" src="https://photos.haum.org/small/moire/p1070361_37075912802_o.jpg" /&gt;
&lt;img alt="" src="https://photos.haum.org/small/moire/p1070358_36433433613_o.jpg" /&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;N'hésitez pas à consulter nos albums photo sur Flickr pour trouver d'autres
moirés que nous ferons certainement prochainement.&lt;/p&gt;
&lt;/div&gt;
</content><category term="projets"></category><category term="projet_moire"></category></entry><entry><title>Labyrinthe Féroce</title><link href="https://haum.org/laby_feroce.html" rel="alternate"></link><published>2017-09-06T12:17:00+02:00</published><updated>2017-09-06T12:17:00+02:00</updated><author><name>JackDesBwa</name></author><id>tag:haum.org,2017-09-06:/laby_feroce.html</id><summary type="html">&lt;p class="first last"&gt;Dessins du labyrinthe Féroce&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Le HAUM a présenté un nouveau labyrinthe, Féroce, à l'occasion du festival
teriaki 2017.  Les couleurs et les formes sont de nouveau au rendez-vous, mais
cette fois il n'y a plus d'ordre imposé : vous faites ce que bon vous semble,
si ce n'est que vous ne pouvez pas passer deux fois de suite par la même
couleur.&lt;/p&gt;
&lt;p&gt;Nous avons réalisé deux versions de ce labyrinthe qui saura vous désorienter
malgré la simplicité de ses règles.&lt;/p&gt;
&lt;div class="section" id="regles"&gt;
&lt;h2&gt;Règles&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;On se déplace de case en case.&lt;/li&gt;
&lt;li&gt;À chaque changement de case, la couleur de passage doit être différente de la
précédente.&lt;/li&gt;
&lt;li&gt;On entre par une oreille, on ressort par l'autre.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="labyrinthe"&gt;
&lt;h2&gt;Labyrinthe&lt;/h2&gt;
&lt;p&gt;Voici les deux versions du labyrinthe qui ont été exposées :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="labyrinthe" src="https://raw.githubusercontent.com/haum/feroce/master/maze1.png" /&gt;
&lt;img alt="labyrinthe" src="https://raw.githubusercontent.com/haum/feroce/master/maze2.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="solutions"&gt;
&lt;h2&gt;Solutions&lt;/h2&gt;
&lt;p&gt;Les solutions ne sont pas dévoilées dans cet article. Néanmoins nous vous
confirmons qu'il est possible de sortir depuis n'importe quelle case où vous
seriez arrivé en suivant les règles, quitte parfois à revenir sur des cases
déjà parcourues, quelle que soit l'oreille par laquelle vous êtes entré, quelle
que soit l'oreille par laquelle vous voulez sortir.&lt;/p&gt;
&lt;p&gt;Notez que plusieurs chemins existent, dont certains peuvent être longs...
soutout si vous tournez en rond.&lt;/p&gt;
&lt;p&gt;À vous de chercher...&lt;/p&gt;
&lt;/div&gt;
</content><category term="projets"></category></entry><entry><title>Mise à jour estivale: des projets et du nouveau</title><link href="https://haum.org/update-estival-2017.html" rel="alternate"></link><published>2017-08-05T18:00:00+02:00</published><updated>2017-08-05T18:00:00+02:00</updated><author><name>Matael</name></author><id>tag:haum.org,2017-08-05:/update-estival-2017.html</id><summary type="html">&lt;p class="first last"&gt;On se dore la pilule au LASER&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Le HAUM travaille mais ne parle pas, cet article est là pour y remédier... un peu.
Dans ces mois d'été, les hackers manceaux ne chaument pas. Les échéances approchent et
elles sont nombreuses.&lt;/p&gt;
&lt;p&gt;Le travail ne manque pas cet été, en effet, entre l'aménagement et la customisation du
nouveau local d'une part et la prise en main des nouveaux outils d'autre part, il y a de
quoi faire.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/local/dcoupeuse_35579175573_o.jpg" /&gt;
&lt;img alt="" src="https://photos.haum.org/small/local/ultimaker_35579175443_o.jpg" /&gt;
&lt;/div&gt;
&lt;p&gt;Les outils d'abord. Elles sont belles et flambant neuves, la découpeuse LASER modifiée par
&lt;a class="reference external" href="http://robotseed.com"&gt;RobotSeed&lt;/a&gt; et l'imprimante 3D ont tout pour plaire aux bidouilleurs. Après une séance de
formation sur la découpeuse, les tests vont bon train pour
prendre en main la bête. L'imprimante (une Ultimaker) reçoit elle aussi son lot
d'attention (la précédente machine avait quelques soucis...).&lt;/p&gt;
&lt;p&gt;Armés de ces nouveaux joujous, les hackers ont commencé à s'approprier le local. En guise
de bidouille inaugurale, une des dalles du faux plafond a été remplacée par un miroir
infini. La découpeuse a ainsi facilité la création d'un insert en forme de diode pour
rappeler les couleurs de l'asso.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/projets_membres/dcoupe-horloge_36220183962_o.jpg" /&gt;
&lt;img alt="" src="https://photos.haum.org/small/miroir_infini/img_1297_35696529176_o.jpg" /&gt;
&lt;img alt="" src="https://photos.haum.org/small/miroir_infini/insert_35579175483_o.jpg" /&gt;
&lt;img alt="" src="https://photos.haum.org/small/miroir_infini/img_1303_35692778826_o.jpg" /&gt;
&lt;/div&gt;
&lt;p&gt;En plus de cette bricole, le HAUM s'est attelé à la réalisation de deux projets pour le
&lt;a class="reference external" href="http://festivalteriaki.fr/"&gt;Festival Teriaki&lt;/a&gt; qui aura lieu du 24 au 27 août 2017. Le premier revisite &lt;a class="reference external" href="https://haum.org/pages/labyrinthe.html"&gt;l'idée de
labyrinthe&lt;/a&gt; qui avait été tant appréciée l'an dernier, il est presque fini et les bricoleurs
passeront bientôt au test grandeur nature. Le second est plus complexe et repose sur
l'utilisation de la &lt;a class="reference external" href="https://haum.org/pages/dhaum.html"&gt;même structure qu'il y a deux ans&lt;/a&gt; et la transforme en un Simon Says
géant en équipe ! Ce second projet, un peu plus ambitieux est encore en phase de
développement et devrait être prêt et testé d'ici à fin août !&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/teriaki2015/20150830_epau6_20404768654_o.jpg" /&gt;
&lt;/div&gt;
&lt;p&gt;Le HAUM a aussi été sélectionné pour participer en octobre pour &lt;a class="reference external" href="http://www.festivald.net/"&gt;Festival D&lt;/a&gt;! Il s'agit d'un
festival hacker/maker bien connu dans l'ouest de la France et qui posera ses valises à
Angers pour l'édition 2017. Ce n'est pas une première pour le hackerspace qui avait déjà
pris part à &lt;a class="reference external" href="http://www.festivald.net/2015/"&gt;l'édition 2015&lt;/a&gt; avec le &lt;a class="reference external" href="https://haum.org/pages/1dpong.html"&gt;1DPong&lt;/a&gt;. Cette année, c'est le &lt;em&gt;dHAUMadi&lt;/em&gt;, le même
projet de Simon Say sur &lt;em&gt;dHAUM&lt;/em&gt; qu'à Teriaki qui serait présenté.&lt;/p&gt;
&lt;p&gt;En plus de tout le reste, le HAUM reprendra &lt;a class="reference external" href="https://haum.org/pages/talks.html"&gt;les talks&lt;/a&gt; à la rentrée et travaillera pour
probablement proposer un nouveau sujet aux &lt;a class="reference external" href="http://www.les24hducode.fr/"&gt;24h du code 2018&lt;/a&gt; en janvier !&lt;/p&gt;
</content><category term="news"></category><category term="update"></category></entry><entry><title>Sulfur comme carte son en réseau</title><link href="https://haum.org/sulfur_audioserver.html" rel="alternate"></link><published>2017-06-05T11:06:00+02:00</published><updated>2017-06-05T11:06:00+02:00</updated><author><name>JackDesBwa</name></author><id>tag:haum.org,2017-06-05:/sulfur_audioserver.html</id><summary type="html">&lt;p class="first last"&gt;Transformer sulfur en serveur audio&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Sulfur est une carte raspberry-pi qui nous sert vaillamment de serveur de musique
depuis de nombreuses années au hackerspace. Aujourd'hui, ajoutons lui une
fonction supplémentaire : un serveur pour envoyer le son de son ordinateur
directement sur les enceintes du local.&lt;/p&gt;
&lt;div class="section" id="installation-de-pulseaudio"&gt;
&lt;h2&gt;Installation de pulseaudio&lt;/h2&gt;
&lt;p&gt;Pulseaudio est un logiciel de gestion du son répandu sous Linux. Il réalise une
surcouche au dessus de la plateforme ALSA qui gère en particulier la couche
matérielle. Pour ce qui nous intéresse, pulseaudio ajoutera la possibilité
d'envoyer du flux à travers le réseau et pour faciliter l'utilisation, nous
mettrons en place une diffusion zeroconf.&lt;/p&gt;
&lt;p&gt;Sur sulfur, installons pulseaudio et avahi :
&lt;em&gt;sudo apt-get install pulseaudio pulseaudio-module-zeroconf avahi-daemon&lt;/em&gt;
Puis dans &lt;em&gt;/etc/default/pulseaudio&lt;/em&gt;, nous passons la configuration
&lt;em&gt;PULSEAUDIO_SYSTEM_START&lt;/em&gt; à 1. Enfin, dans &lt;em&gt;/etc/pulse/system.pa&lt;/em&gt; nous
ajoutons :&lt;/p&gt;
&lt;pre class="literal-block"&gt;
### Network server
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 auth-anonymous=1
load-module module-zeroconf-publish
&lt;/pre&gt;
&lt;p&gt;Maintenant, redémarrons sulfur et... il publie bien un serveur audio !&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ avahi-browse -alr | grep &amp;quot;PulseAudio Sound Server&amp;quot;
+  wlan0 IPv4 pulse&amp;#64;sulfur                                  PulseAudio Sound Server local
=  wlan0 IPv4 pulse&amp;#64;sulfur                                  PulseAudio Sound Server local
&lt;/pre&gt;
&lt;p&gt;À faire : Éviter de démarrer pulseaudio en mode système&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="utilisation"&gt;
&lt;h2&gt;Utilisation&lt;/h2&gt;
&lt;p&gt;Sur le PC, si les modules TCP et zeroconf ne sont pas chargés, il est possible
de les charger à chaud dans PulseAudio :&lt;/p&gt;
&lt;pre class="literal-block"&gt;
pactl load-module module-native-protocol-tcp
pactl load-module module-zeroconf-discover
&lt;/pre&gt;
&lt;p&gt;Maintenant, sulfur apparaît dans &lt;em&gt;pavucontrol&lt;/em&gt; ou autre gestionnaire de son
compatible avec pulseaudio. Il suffit de choisir cette sortie et le son du PC
est joué dans le local !&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="latences-reseau"&gt;
&lt;h2&gt;Latences réseau&lt;/h2&gt;
&lt;p&gt;Au HAUM, on se connecte la plupart du temps en WiFi, par conséquent la latence
varie beaucoup, ce qui n'est pas compatible avec du streaming audio. Pour
s'affranchir des effets audio désagréables, nous allons augmenter la taille des
tampons audio, c'est à dire la quatité que le système de son charge avant le
jouer (ainsi, il y toujours des données d'avance à envoyer à la carte son)&lt;/p&gt;
&lt;p&gt;Dans le fichier &lt;em&gt;/etc/pulse/daemon.conf&lt;/em&gt; modifions quelques réglages :&lt;/p&gt;
&lt;pre class="literal-block"&gt;
high-priority = yes
default-fragments = 8
default-fragment-size-msec = 50
&lt;/pre&gt;
&lt;p&gt;À tester sur le long terme...&lt;/p&gt;
&lt;/div&gt;
</content><category term="hack"></category><category term="hack"></category></entry><entry><title>Un nouveau local, nouvelle demeure des hackers</title><link href="https://haum.org/nouveau-local.html" rel="alternate"></link><published>2017-05-27T16:15:00+02:00</published><updated>2017-05-27T16:15:00+02:00</updated><author><name>Sébastien (seb_vallee)</name></author><id>tag:haum.org,2017-05-27:/nouveau-local.html</id><summary type="html">&lt;p class="first last"&gt;Le déménagement des hackers&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Très peu de nouvelles sur le site ces derniers temps, mais les hackers ont été bien
occupés par les projets en cours d'une part et leur déménagement d'autre part.  Car oui,
c'est officiel, nos hackeries se dérouleront désormais au deuxième étage du 57 boulevard
Demorieux, au Mans.  C'est un petit saut d'une centaine de mètres mais un grand pas pour
la vie du HAUM !&lt;/p&gt;
&lt;p&gt;D'abord, le nouveau local est plus grand et arrangé en deux zones, une propre et une sale.
La zone propre accueille les bureaux, les imprimantes 3D, ainsi que l'électronique et les
discussion.  La zone sale quant à elle accueille les différents équipements générant
poussière, bruit et autres désagréments.&lt;/p&gt;
&lt;p&gt;Outre le local, le HAUM se voit aussi confier une découpeuse LASER ROBOTSEED et une
imprimante 3D Ultimaker flambant neuves !  La future découpeuse arrivera fin juin et
prendra place au sein de la zone propre. Ce choix est accompagné de la pose d'un système
d'extraction des gaz &amp;amp; fumées générés par la découpe.  L'imprimante a déjà rejoint
l'association et devrait entrer en fonction sous peu.&lt;/p&gt;
&lt;p&gt;Ce nouveau local marque enfin le début d'une nouvelle phase. Après un an de prototypage à
la fac, puis un à l'ISMANS et presque deux au 19 Bd Oyon, le HAUM rejoint un projet un peu
plus large. Le 57 Bd Demorieux est en effet la beta de la Cité de l'Innovation : un projet
de la métropole en lien avec French Tech. Le plateau s'articule autour d'espace de
coworking, de bureaux à partager, de salles de conférence, de réunion ou d'espace de vie !
Même le babyfoot est de la partie (et on vous attend) !&lt;/p&gt;
&lt;p&gt;Derrière le nom de code un peu bateau Le Mans Innovation, il y a l'envie (la vraie celle
là) de continuer à créer de nouveaux espaces de développement et d'échange au Mans. Le
HAUM ne pouvait que s'associer de près ou de loin à cette initiative... et ce sera de
près! On espère bien évidemment que les idées vont germer et grandir, tant dans les
startups espérées que dans la tête des hackers!&lt;/p&gt;
&lt;p&gt;Et puis, pour que de beaux projets vivent, il faut des humains... alors n'hésitez pas!
Venez nous voir et échanger sur vos projets persos ou les nôtres, on a encore plus de
place pour vous accueillir !&lt;/p&gt;
&lt;p&gt;Psst... il paraît même qu'il y a &lt;strong&gt;une semaine&lt;/strong&gt; de portes ouvertes du 06 au 10 juin !&lt;/p&gt;
</content><category term="news"></category><category term="nouveau local"></category><category term="cico"></category></entry><entry><title>Génèse du labyrinthe Initiati</title><link href="https://haum.org/laby_genese.html" rel="alternate"></link><published>2017-03-07T22:30:00+01:00</published><updated>2017-03-07T22:30:00+01:00</updated><author><name>JackDesBwa</name></author><id>tag:haum.org,2017-03-07:/laby_genese.html</id><summary type="html">&lt;p class="first last"&gt;Histoire du labyrinthe&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Le labyrinthe du HAUM, vous connaissez. Mais connaissez-vous son histoire ?&lt;/p&gt;
&lt;p&gt;Tout a commencé par ceci :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/ggj2016/p001_24152983033_o.jpg" /&gt;
&lt;/div&gt;
&lt;div class="section" id="labyrinthe-originel"&gt;
&lt;h2&gt;Labyrinthe originel&lt;/h2&gt;
&lt;div class="section" id="premices"&gt;
&lt;h3&gt;Prémices&lt;/h3&gt;
&lt;p&gt;Ainsi commence le labyrinthe : par un brainstorming à la &lt;a class="reference external" href="http://globalgamejam.org/"&gt;global game jam&lt;/a&gt;
2016. Le thème &lt;em&gt;rituals&lt;/em&gt; nous a fait tourner en bourrique pendant de nombreuses
(et longues) heures, tant et si bien que nous cumulions près de 24h de réflexions
intenses quand les premières idées ont commencé à... esquisser un début d'embryon
de germe de jeu.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="prodrome"&gt;
&lt;h3&gt;Prodrome&lt;/h3&gt;
&lt;p&gt;Une fois la crise de la page(/nuit) blanche passée, il nous restait la moitié
du temps pour créer notre jeu. De nombreux essais-erreurs ont mené à la
réalisation d'un divertissement associant un plateau et des cartes à jouer.
Dans l'optique d'un chemin initiatique, nos lurons ont imaginé que les joueurs
dussent déplacer leurs personnages dans un dédale pour aller y quérir des
objets dans un ordre imposé par le rituel.&lt;/p&gt;
&lt;p&gt;Le groupe s'est divisé pour mieux s'acquitter de la tâche : certains se sont
occupé des cartes, des règles, des flexagones (tout ceci mériterait
probablement un article en soi) et d'autres se sont secoué les méninges pour
produire le plateau. C'est ce dernier qui nous intéresse dans cet article.&lt;/p&gt;
&lt;p&gt;Plus qu'un simple labyrinthe traditionnel, nous nous sommes lancés dans la
réalisation d'un labyrinthe à états. Il s'agit d'un dédale dans lequel la même
case peut avoir, selon le chemin d'accès, une localité différente dans l'espace
des solutions. Peut-être pourrait-on dire que dans ces labyrinthes, deux
personnes se rencontrant auront des perspectives différentes selon leur passé,
à moins qu'il ne se rencontrent pas, étant dans des branes de labyrinthes
distinctes.  En fait, c'est comme si le plateau était un labyrinthe plus grand
replié sur lui-même où les explorateurs traverseraient le multivers en
empruntant des trous de ver à foison.&lt;/p&gt;
&lt;p&gt;Vous suivez ? Nous non plus.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="protocole"&gt;
&lt;h3&gt;Protocole&lt;/h3&gt;
&lt;p&gt;Cessons cet imbroglio théorique et passons à la pratique avec la construction
de ce joli méli-mélo de couloirs.&lt;/p&gt;
&lt;p&gt;Dans un premier temps, nous définissons la règle rituelle pour évoluer sur le
plateau : rouge, vert, bleu est l'ordre à suivre. Dans cette idée d'une
sempiternelle répétition, une forme générale en cercles concentriques s'est
imposée. Voilà le squelette de notre plateau que nous dessinons et imprimons
sans aucune fioriture.&lt;/p&gt;
&lt;p&gt;Deux cerveaux particulièrement dérangés (ie. avec de bonnes doses de maths
dedans) s'attèlent à la lourde tâche de définir les passages autorisés et donc
la couleur de chacune des quelques 64 portes.&lt;/p&gt;
&lt;p&gt;Dans un premier temps, il s'agit de définir une convention de nommage : chaque
case, chaque porte, chaque état dans lesquels un joueur peut se trouver est
nommé (avec un code générable et interprétable par un outil numérique). Par
exemple, les cases reçoivent un nom composé d'une lettre et d'un chiffre. La
lettre représente l'anneau sur lequel elle est et le chiffre est déterminé par
son azimut.&lt;/p&gt;
&lt;p&gt;Mais pourquoi s'embêter à choisir de tels noms particulièrement inesthétiques ?
Pour laisser les ordinateurs calculer à notre place, pardi !&lt;/p&gt;
&lt;p&gt;Maintenant, il est facile de générer la liste de tous les passages possibles
d'une case à l'autre, en y ajoutant l'état du joueur et même, soyons fous,
réaliser un &lt;a class="reference external" href="https://fr.wikipedia.org/wiki/Th%C3%A9orie_des_graphes"&gt;graphe&lt;/a&gt; pour étudier les parcours possibles. Avec les mêmes données
de départ, nous pouvons aller jusqu'à dessiner le plateau sans nous embêter à
placer manuellement l'ensemble des portes. Nous pouvons alors passer bien  plus
de temps à soigner l'esthétique ou la complexité sous-jacente du labyrinthe.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="prototype"&gt;
&lt;h3&gt;Prototype&lt;/h3&gt;
&lt;p&gt;Maintenant que nous avons les outils, il est temps de sortir notre plus grand
atout : les crayons de couleur !&lt;/p&gt;
&lt;p&gt;Nous traçons quelques chemins et vérifions avec l'outil informatique quelles
nouvelles routes sont nées de l'enchevêtrement des sentiers. Il y a là une
grande complémentarité entre les cerveaux créatifs et l'informatique, dont le
retour implacable valide ou désavoue la folie exprimée.&lt;/p&gt;
&lt;p&gt;Les documents de travail deviennent vite imcompréhensibles pour les profanes :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/ggj2016/caa2co2xeaejazc_32987474855_o.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="proposition"&gt;
&lt;h3&gt;Proposition&lt;/h3&gt;
&lt;p&gt;Les heures passent, les cerveaux bouillonnent et finalement un jeu est produit.
Il est jouable (youhou !) et même visuellement sympathique, mais les
déplacements sur le plateau sont effectivement très difficiles à planifier.&lt;/p&gt;
&lt;p&gt;Pour conclure cette première partie, voici la carte des déplacements générée
par l'ordinateur :&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/ggj2016/caa342zwaaaanz3_32862394751_o.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="labyrinthe-original"&gt;
&lt;h2&gt;Labyrinthe original&lt;/h2&gt;
&lt;div class="section" id="dendrochronologie"&gt;
&lt;h3&gt;Dendrochronologie&lt;/h3&gt;
&lt;p&gt;Tel l'arbre qui croît avec les années, notre labyrinthe voulait se faire plus
grand, pour faire un effet bœuf. L'échéance fatidique des 48h dépassée,
n'imaginons pas sa croissance échue parce qu'il était tard.&lt;/p&gt;
&lt;p&gt;Cinq mois trois quarts après sa naissance, le sujet reprend vie. Nous
remarquons que la dernière couronne, privée de portes, pourrait en être
pleinement peuplée.&lt;/p&gt;
&lt;p&gt;C'est parti, nous modifions le programme et la sentence tombe : il y aura
obligatoirement au moins une sortie. Qu'à cela ne tienne, profitons de
l'opportunité pour augmenter la richesse de l'expérience.&lt;/p&gt;
&lt;p&gt;Ainsi, il y a une multitude d'entrées par lesquelles les gens peuvent
s'engouffrer dans le labyrinthe. Et une fois que le peuple y est, il lui faut
en sortir. Et pour ça, il y a bel et bien 36 solutions.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Plateau du labyrinthe augmenté" src="https://raw.githubusercontent.com/haum/initiati/master/plateau.jpg" style="width: 600px;" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="demesure"&gt;
&lt;h3&gt;Démesure&lt;/h3&gt;
&lt;p&gt;Mais ce n'était pas suffisant : la création pouvait encore s'étendre.&lt;/p&gt;
&lt;p&gt;Et si l'on disséminait des dandys dedans ? Cette délicieuse idée débile d'un
dédale détonnant nous décida à le dessiner dare-dare dans des dimensions
démesurées. Dès lors, déterminés, nous dûmes édifier ladite dardière, un défi
diligemment dirigé.&lt;/p&gt;
&lt;p&gt;Trève d'allitérations, vous trouverez la construction de ce labyrinthe géant
détaillée dans la page du &lt;a class="reference external" href="/pages/labyrinthe.html"&gt;projet&lt;/a&gt;. Nous avons présenté celui-ci aux siestes
Teriaki 2016.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/teriaki2016/p1120571_29350204682_o.jpg" /&gt;
&lt;/div&gt;
&lt;p&gt;S'ensuivit un stupéfiant succès et sa suprême satisfaction.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="" src="https://photos.haum.org/small/teriaki2016/p1120611_28836842273_o.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="projets"></category><category term="projet_labyrinthe_initiati"></category></entry><entry><title>Une page projet pour le dHAUM</title><link href="https://haum.org/nouvelle-page-dhaum.html" rel="alternate"></link><published>2017-02-11T11:35:00+01:00</published><updated>2017-02-11T11:35:00+01:00</updated><author><name>Jean-Marc (Gras)</name></author><id>tag:haum.org,2017-02-11:/nouvelle-page-dhaum.html</id><summary type="html">&lt;p class="first last"&gt;Le dHAUM à la page&lt;/p&gt;
</summary><content type="html">&lt;p&gt;C'est le printemps ! Les arbres bourgeonnent, les feuilles repoussent et...
Ah ?
Quoi ?
On est en février ? Diantre !
Ah, mais qu'importe ! Les feuilles de papier électronique poussent quand même et les pages fleurissent, au moins pour notre bon vieux dHAUM.&lt;/p&gt;
&lt;p&gt;Loin de prendre la poussière (et fort heureusement, il n'est pas en pomme de terre donc il ne germe pas vraiment non plus, rapport au printemps, tout ça), on a pu le sortir récemment de sa caisse, et on le refera très bientôt si tout va bien. C'est donc l'occasion (s'il en fallait une) pour agrémenter le site web d'une page de projet un peu plus feuillue qu'actuellement.&lt;/p&gt;
&lt;p&gt;Eh bien, voilà qui est fait ! Il y a évidemment toujours des choses à redire si besoin est, mais le gros du contenu est enfin &lt;a class="reference external" href="/pages/dhaum.html"&gt;là&lt;/a&gt; !
Qui sait, peut-être entendra-t-on parler de dHAUMidi d'ici quelques mois, le temps de resonoriser l'ensemble.
Qui sait, notre géode aura peut-être aussi quelques petits choristes pour chanter avec elle, mais tout ça c'est pour une autre saison !&lt;/p&gt;
&lt;p&gt;Comme pour les &lt;a class="reference external" href="/nouvelles-pages-laumios.html"&gt;Laumios&lt;/a&gt; et le &lt;a class="reference external" href="/nouvelle-page-labyrinthe-initiati.html"&gt;Labyrinthe Initiati&lt;/a&gt; grandeur nature, cet article n'a pour but que d'annoncer une mise à jour des contenus, mais il n'est pas évident de se rendre compte de ce genre de nouveautés autrement.&lt;/p&gt;
&lt;div class="aligncenter docutils container"&gt;
&lt;img alt="Montage dHaum" src="https://photos.haum.org/small/dhaum/20150829_epau1_20812053930_o.jpg" /&gt;
&lt;/div&gt;
</content><category term="news"></category><category term="dhaum"></category><category term="dhaumidi"></category><category term="2015"></category><category term="2016"></category><category term="teriaki"></category><category term="epau"></category><category term="bienvenussurmars"></category><category term="vivoin"></category></entry></feed>