Skip to main content

Elio Antoun

Séance 1 - Découverte de l'impression 3D : Minecraft Baby Creeper Figurine

1. LaObjectif Recherchede la séance

J'L’objectif de cette première séance était de découvrir le fonctionnement de l’impression 3D à travers :

  • la recherche d’un modèle existant,

  • son importation dans un logiciel de tranchage (slicer),

  • le choix de paramètres d’impression adaptés,

  • et la préparation du fichier pour l’impression.


2. Recherche d’un modèle 3D

Dans un premier temps, j’ai recherchéeffectué une recherche sur le web afin de trouver une base de donnéees de modèles 3D prêtts à imprimer.imprimer.
Je Jeme suis tombéorienté survers lela siteplateforme printables.com.Printables.com, qui regroupe des milliers de modèles partagés par la communauté.

image.pngimage.png

J'Après avoir exploré plusieurs catégories, j’ai décidéchoisi de baserme ma rechercheconcentrer sur des figurines,figurines, jecar suiselles tombépermettent surde tester à la fois :

  • les détails,

  • les volumes,

  • et la stabilité à l’impression.

C’est dans ce cadre que j’ai sélectionné le modèle de: “Minecraft Baby CreeperCreeper”, conçu par l’utilisateur Shark Byte.

image.png

Ce choix s’explique par :

  • sa forme simple mais détaillée,

  • sa taille réduite,

  • son aspect ludique, idéal pour une première prise en main.


3. Importation dans le slicer

Le fichier STL du Baby Creeper a été téléchargé depuis Printables puis importé dans le logiciel PrusaSlicer.

Une fois le modèle chargé :

  • il a été automatiquement positionné sur le plateau,

  • ses dimensions ont été vérifiées,

  • et son orientation n’a pas été modifiée afin de conserver sa stabilité.

Dimensions globales du modèle :

  • X : 114,41 mm

  • Y : 100,69 mm

  • Z : 24 mm


image.pngimage.png

4. Choix des réglages optimiséd’impression

L’objectif était d’obtenir une figurine :

  • suffisamment robuste,

  • avec un temps d’impression raisonnable.

Les réglages suivants ont été sélectionnés :

ParamètreValeur
Profil0.15 mm SPEED
FilamentGeneric PLA
ImprimanteOriginal Prusa MK4S HF0.4 nozzle
SupportsSeulement pour assurerles générateurs de supports
Remplissage15 %
Bordure (brim)Désactivée

Ces réglages permettent un bon compromis entre qualité, solidité et rapidité.


5. Conclusion de la séance

Cette séance m’a permis de :

  • comprendre le rôle d’un slicer,

  • manipuler un modèle assez3D,

    robuste
  • avec
  • choisir des paramètres adaptés,

  • et préparer un tempsfichier d'impressionpour rapide.l’impression.

Elle constitue une première étape essentielle avant de passer à des objets plus complexes et à des conceptions originales lors des séances suivantes.

image.png          image.png

Séance 2 

// Paramètres
$fn = 60; // Résolution (augmente à 100 pour une finition plus lisse)

diametre_interieur = 20;
epaisseur_cage = 3;
espace_jeu = 2; // L'espace pour que la boule bouge librement

// 1. La sphère intérieure (libre)
sphere(d = diametre_interieur);

// 2. La cage extérieure
difference() {

    // Sphère externe de la cage
    sphere(d = diametre_interieur + (epaisseur_cage * 2) + (espace_jeu * 2));

    // On vide l'intérieur pour laisser la place à la boule
    sphere(d = diametre_interieur + (espace_jeu * 2));

    // On crée des ouvertures pour voir la boule et prouver qu'elle est prisonnière

    // Trous sur l'axe X
    rotate([0, 90, 0])
        cylinder(h = 100, d = 15, center = true);

    // Trous sur l'axe Y
    rotate([90, 0, 0])
        cylinder(h = 100, d = 15, center = true);

    // Trous sur l'axe Z
    cylinder(h = 100, d = 15, center = true);
}

image.pngimage.png

Séance 3 - Tour de Chute Libre "Spiral Hourglass"

1. Description du projet

Ce projet consiste en la modélisation et la fabrication d'un objet cinétique de type "fidget" : un sablier à spirale. Une bille d'acier descend par gravité le long d'une trajectoire hélicoïdale creusée dans un volume en forme d'hyperboloïde, le tout enfermé dans une coque externe transparente ou évidée.

Objectifs :

  • Étudier la géométrie complexe de l'objet (surfaces courbes et trajectoires hélicoïdales).

  • Réaliser une rétro-ingénierie d'un modèle existant pour le rendre paramétrique.

  • Fabriquer l'objet en impression 3D sans supports.

2. Analyse Technique et Modélisation

Pour dépasser la simple impression de fichiers STL figés, j'ai opté pour une re-conception paramétrique sous OpenSCAD. Cela permet de modifier la taille de la bille, la vitesse de chute (nombre de tours) et les tolérances d'impression.

2.1 Concepts Géométriques

L'objet repose sur deux primitives mathématiques principales :

  1. L'Hyperboloïde à une nappe (Le corps) : La forme de "sablier" n'est pas deux cônes, mais une structure continue qui permet une transition fluide pour la bille.

  2. L'Hélice (La trajectoire) : La rainure suit une courbe hélicoïdale dont le rayon varie en fonction de la hauteur ($Z$).

2.2 Le Code Paramétrique (OpenSCAD)

Le script suivant génère dynamiquement le noyau interne (Inner Core) et la coque externe (Outer Shell) en s'assurant qu'ils s'emboîtent parfaitement grâce à une variable de clearance (jeu fonctionnel).

Caractéristiques du code :

  • Utilisation de la fonction hull() itérative pour creuser le chemin de la bille proprement.

  • Calcul dynamique du rayon pour suivre la courbure du sablier.

  • Séparation automatique des pièces pour l'export STL.

// Spiral Hourglass Fidget

/* [General Dimensions] */
total_height = 80;    // Total height of one segment
max_diameter = 40;    // Width at top/bottom
min_diameter = 20;    // Width at the narrow waist
wall_thickness = 1.6; // Thickness of the outer shell
clearance = 0.3;      // Gap between inner and outer parts

/* [Ball & Path] */
ball_diameter = 9.5;  // Size of the ball (standard steel marble)
groove_depth_ratio = 0.6; // How deep the ball sits in the inner core (0-1)
twists = 2.0;         // Number of spiral rotations
resolution = 100;     // Steps for the spiral generation (Higher = smoother but slower)

/* [Rendering] */
part_to_show = "both"; // [both, inner, outer]
$fn = 60;             // Resolution for cylinders/spheres

// --- Derived Calculations ---
R_max = max_diameter / 2;
R_min = min_diameter / 2;
path_radius_offset = (ball_diameter / 2) + 0.5; // Distance from surface for cutting groove

// --- Main Logic ---

if (part_to_show == "inner" || part_to_show == "both") {
    translate([-max_diameter/1.5, 0, 0]) 
    Inner_Core();
}

if (part_to_show == "outer" || part_to_show == "both") {
    translate([max_diameter/1.5, 0, 0]) 
    Outer_Shell();
}

// --- Modules ---

module Inner_Core() {
    difference() {
        // 1. The main hourglass body
        hourglass_solid(h=total_height, r_start=R_max, r_mid=R_min - clearance);

        // 2. The Helical Groove
        // We subtract a trail of spheres to make the path
        spiral_path(
            h=total_height, 
            r_start=R_max - clearance, 
            r_mid=R_min - clearance, 
            turns=twists, 
            cut_r=ball_diameter/2 + 0.2
        );
        
        // 3. Central alignment hole (optional, saves plastic)
        cylinder(h=total_height*3, r=4, center=true);
    }
}

module Outer_Shell() {
    difference() {
        // 1. Outer Surface
        hourglass_solid(h=total_height, r_start=R_max + wall_thickness, r_mid=R_min + wall_thickness);
        
        // 2. Inner Surface (Hollow out)
        // Make slightly larger than the core for clearance
        translate([0,0,-0.1])
        hourglass_solid(h=total_height + 0.2, r_start=R_max, r_mid=R_min);
        
        // 3. Windows (Optional - lets you see the ball)
        // Remove the asterisks below to enable windows
        /*
        for(i=[0:3]) {
            rotate([0,0,i*90])
            translate([0,0,total_height/2])
            cube([max_diameter*2, 5, total_height*0.6], center=true);
        }
        */
    }
}

// --- Helper Functions ---

// Generates the Hourglass Body Shape using a Hyperboloid approximation
module hourglass_solid(h, r_start, r_mid) {
    // We construct this by stacking thin cylinders to approximate the curve
    // This is robust and works without external libraries
    step = h / resolution;
    
    union() {
        for (i = [0 : resolution - 1]) {
            z = i * step;
            // Radius at current height Z
            r1 = get_radius(z, h, r_start, r_mid);
            // Radius at next height
            r2 = get_radius(z + step, h, r_start, r_mid);
            
            translate([0, 0, z])
            cylinder(h=step, r1=r1, r2=r2);
        }
    }
}

// Generates the helical cut for the ball
module spiral_path(h, r_start, r_mid, turns, cut_r) {
    step_angle = (turns * 360) / resolution;
    step_z = h / resolution;
    
    for (i = [0 : resolution - 1]) {
        z1 = i * step_z;
        ang1 = i * step_angle;
        rad1 = get_radius(z1, h, r_start, r_mid);
        
        z2 = (i + 1) * step_z;
        ang2 = (i + 1) * step_angle;
        rad2 = get_radius(z2, h, r_start, r_mid);
        
        hull() {
            translate([rad1 * cos(ang1), rad1 * sin(ang1), z1])
            sphere(r=cut_r);
            
            translate([rad2 * cos(ang2), rad2 * sin(ang2), z2])
            sphere(r=cut_r);
        }
    }
}

// Mathematical function for the hourglass curve (Parabolic/Hyperbolic curve)
function get_radius(z, h, r_outer, r_inner) = 
    let (
        // Map Z (0 to h) to -1 to 1
        normalized_z = (z - h/2) / (h/2),
        // Calculate curve factor (x^2 parabola for simple hourglass)
        factor = pow(normalized_z, 2)
    )
    r_inner + (r_outer - r_inner) * factor;

image.pngimage.pngScreenshot 2026-02-04 183629.pngScreenshot 2026-02-04 183629.png

3. Fabrication

3.1 Paramètres d'Impression (Slicer)


Le modèle est conçu pour être imprimé sans supports, grâce à l'angle progressif de la spirale.

  • Imprimante : Prusa i3 MK3S / MK4 (selon ce que tu as utilisé).

  • Matériau : PLA (pour la rigidité et la précision dimensionnelle).

  • Buse : 0.4mm.

  • Hauteur de couche : 0.2mm (Qualité standard).

  • Remplissage (Infill) : 15% Gyroid (suffisant pour la résistance mécanique).

  • Supports : AUCUN (Impératif pour que la bille roule bien, les supports laisseraient des résidus dans la rainure).

  • Adhérence : Une bordure (Brim) de 5mm est recommandée pour la coque externe (Outer Shell) car la surface de contact est fine.

3.2 Post-Traitement et Assemblage

  1. Nettoyage : Retrait de la bordure (brim) au cutter.

  2. Test à sec : Insertion de la bille pour vérifier qu'elle roule sans accrocs dans la rainure interne.

  3. Assemblage : La coque externe glisse sur le noyau interne. Si le jeu est trop serré, un léger ponçage des arêtes internes peut être nécessaire (ou ajuster la variable clearance dans le code à 0.4).

4. Retours d'expérience

  • Problème rencontré : Lors du premier test, la bille se bloquait à mi-parcours.

  • Analyse : La tolérance entre la bille et la rainure était trop juste (0.1mm), et les imperfections de l'impression (Z-seam) créaient des frictions.

  • Solution : Modification du code pour augmenter le diamètre de découpe (cut_r = ball_diameter/2 + 0.2) et augmentation de la résolution $fn pour lisser la courbe.