PEmbroider

De EduTech Wiki
Aller à la navigation Aller à la recherche
Guide de tutoriels de broderie machine
Module: Broderie computationnelle
à améliorer débutant
2022/03/25 ⚒⚒ 2018/03/01
Catégorie: Broderie machine

Introduction

PEmbroider est une bibliothèque ouverte de broderie machine computationnelle développé par Golan Levin, Lingdong Huang, et Tatyana Mustakos. Selon les auteurs (notre traduction), «Les outils libres et gratuits qui existent sont soit des outils GUI autonomes complets (InkStitch, Embroidermodder), soit des bibliothèques à grande échelle (EmbroidePy), qui ne s'intègrent pas facilement aux boîtes à outils populaires de "codage créatif" et ne permettent pas non plus de créer facilement des dessins génératifs et computationnels. PEmbroider, en revanche, est une bibliothèque Java gratuite, multiplateforme, open-source et légère pour la conception de broderies génératives. Elle s'intègre au célèbre cadre de codage créatif Processing, offrant un accès facile à un écosystème vaste et diversifié de fonctionnalités, notamment la typographie de haute qualité, l'interaction en direct, la capture de mouvement, la vision par ordinateur, la cartographie SIG, la simulation physique, et bien plus encore.» (PEmbroider,Mai 2021).

License

«Intended primarily for artists, craftspersons, educators, makers, and schools, PEmbroider is free, open-source software released under both the GNU General Public Licence (GPLv3) and the Anti-Capitalist Software License (ACSL 1.4). In short: you are encouraged to use PEmbroider to make art; you are required to share your improvements to PEmbroider; and you are expressly forbidden from using PEmbroider to profiteer.» (Mai 2021).

Installation

(1) PEmbroider nécessite l'installation de Processing

Sous Ubuntu 18 (un Java est compris dans la distribution de Processing 3.5.4)

  • Dézipper le *.tgz
  • cd processing-XXX
  • ./processing

(2) Ensuite il faut installer PEmbroider

En principe on devrait pouvoir installer cette bibliothèque avec gestionnaire de Processing (ne marche pas....)

Sketch → Import Library → PEmbroider

Alors, il faut installer manuellement:

Il faut dezipper l'archive dans le dossier libraries dans le dossier sketchbook. La location précise est indiqué dans les Preferences
Sous Unix:
~/sketchbook/libraries/

Structure du dossier PEmbroider. Dans le dossier example on trouve des exemples et dans reference, le manuel manque.

~/sketchbook/libraries/PEmbroider$ ls -la
drwxr-xr-x  examples
drwxr-xr-x  library
-rw-r--r--  library.properties
drwxr-xr-x  reference
drwxr-xr-x  src

Le langage processing

Le langage processing, est selon Wikipedia (5/2021, notre traduction), une bibliothèque graphique et un environnement de développement intégré (IDE) libre, conçu pour les communautés des arts électroniques, des nouveaux médias et de la conception visuelle, dans le but d'enseigner aux non-programmeurs les principes fondamentaux de la programmation informatique dans un contexte visuel.

Il existe plusieurs variantes du même langage en Java, JavaScript, Python, R etc. Arduino est un langage similaire à Processing. L'environnement Processing de base est basé sur Java et on code dans une sorte de Java simplifié, plus facile à a apprendre. L'orientation objet ne se voit que indirectement.

Un exemple d'un programme typique très simple est le suivant:

// Hello mouse.
void setup() {
  size(400, 400);
  stroke(255);
  background(192, 64, 0);
}

void draw() {
  line(150, 25, mouseX, mouseY);
  text("Hello world !", width / 2, height / 2);
}

Selon Wikipedia, les gestionnaires setup() et draw() sont deux fonctions pré-définies très importantes dans processing. La première, setup(), est exécutée une seule fois au lancement du programme. La seconde, draw() est lancée à intervalle régulier, par défaut 60 fois par seconde.

Exemple

Dans le dossier PEmbroider il y pas mal d'exemples à tester. Ils sont également ici

Example program

Le Cheat Sheet officiel fournit un exemple de base qui montre la logique d'un script Pembroider. Il contient le code pour créer un cercle rempli avec un point tatami.

// Example PEmbroider program
import processing.embroider.*;
PEmbroiderGraphics E;

void setup() {

  // Starting up:
  noLoop();
  size(800, 600);
  E = new PEmbroiderGraphics(this, width, height);
  String outputFilePath = sketchPath("filename.dst");
  E.setPath(outputFilePath); 
  E.beginDraw();
  E.clear();

  //-------
  // Content goes here:
  E.fill(0, 0, 0); 
  E.circle(200, 200, 200); 

  //----------  
  // Visualization and export:
  // NOTE: Leave optimize() and endDraw() commented out,
  // until you are ready to export the embroidery file! 
  // Don't forget to un-comment them when you want to export!
  //
  // E.optimize(); // VERY SLOW, but essential for file output! 
  E.visualize();   // Display the embroidery path on-screen.
  // E.endDraw();  // Actually writes out the embroidery file.
}

PEmbroider shapes

Tester la génération d'un fichier au format PES

Pour tester le code, il suffit de cliquer sur "Run" (>) Ensuite on peut ajouter des commandes dans la fonction draw(). Pour le moment cela ajouter une fonctionalité pour gommer les dessins de broderie dans la visualisation

Il faudrait surtout créer le fichier de broderie:

Au début, changer le nom du fichier en fonction de vos préférences, par exemple:

  String outputFilePath = sketchPath("PEmbroider_shapes.pes");

Ensuite à la fin, optimiser et écrire le fichier.

  //-----------------------
  E.optimize(); // optimise le code, très lent 
  E.visualize();
  E.endDraw(); // write out the file
  //save("PEmbroider_shapes.png");

Voici une simulation du code:

Extrait de code (Code pour le rectangle et le circle simple en haut à gauche)

import processing.embroider.*;
PEmbroiderGraphics E;


void setup() {
  //noLoop(); 
  size (900, 600);

  E = new PEmbroiderGraphics(this, width, height);
  String outputFilePath = sketchPath("PEmbroider_shapes.pes");
  E.setPath(outputFilePath); 

  E.ellipseMode(CORNER);

  E.beginDraw(); 
  E.clear();
  E.strokeWeight(1); 
  E.fill(0, 0, 0); 
  E.noStroke(); 

  E.hatchSpacing(5);
  E.hatchAngleDeg(50);
  E.hatchMode(PEmbroiderGraphics.SATIN);
  E.setStitch(2, 50, 0); 
  E.PARALLEL_RESAMPLING_OFFSET_FACTOR = 0.33;

  //-----------------------
  // Standard shapes are supported
  E.circle (50, 50, 150);
  E.square(225, 50, 150); 
 .....
   //-----------------------
  E.optimize(); // slow, but very good and very important
  E.visualize();
  E.endDraw(); // write out the file
  save("PEmbroider_shapes.png");
}

void draw(){
  background(200);
  if (mousePressed){
    E.eraser(mouseX,mouseY,20);
  }
  E.visualize();
}

Liens

  • Official CheatSheet (remplace un manuel introductif, à compléter avec la documentation de Processing).