# Goal
1) Create a single glb (binary glTF [Graphics Library Transmission Format])from an STL file. This is for testing or proof-of-concept.
2) Create a directory tree of conversions.  This would be for production.
   
# Introduction
This procedure will use Blender to create glbs from the STLS in the source tree.
# Prerequisites
Source area for the Voron GitHub repositories containing STLs
ROOT directory to serve as a staging area for placing the glbs (and the HTML manifest and eventually pngs)
Blender (v. 5.0+)

# Procedure
## Step 1
Decide on a staging directory, example /home/jlpoole/work/Voron/test1, as this is where all the glb output and their directory paths will be placed. 

Example:

    mkdir /home/jlpoole/work/Voron/test1

## Step 3
cd to [THIS PROJECT]/ root directory.  

Example, I cloned this project while under my Voron directory, so the directory "voronstl" was created by ```git clone https://salemdata.net/repo/jlpoole/voronstl/src/branch/init_dev``` :

    cd /home/jlpoole/work/Voron/voronstl

### Step 3A - single glb
Execute:
    blender-bin-5.0.0 --background --python create_glb.py -- \
        [PATH TO A SINGLE STL FILE] \
        [OUTPUT PATH & FILE]
Example:

    jlpoole@jp ~/work/Voron/voronstl $ date; time blender-bin-5.0.0 --background --python create_glb.py --    /usr/local/src/Voron-Stealthburner/STLs/Stealthburner/'[o]_stealthburner_LED_carrier.stl'     /tmp/out.glb
    Thu Mar  5 09:21:59 PST 2026
    Blender 5.0.0 (hash a37564c4df7a built 2025-11-18 10:44:21)
    Timer 'STL Import' took 25.77 ms
    INFO Draco mesh compression is available, use library at /opt/blender-bin-5.0.0/5.0/scripts/addons_core/io_scene_gltf2/libextern_draco.so
    09:22:00 | INFO: Starting glTF 2.0 export
    09:22:00 | INFO: Extracting primitive: [o]_stealthburner_LED_carrier
    09:22:00 | INFO: Primitives created: 1
    09:22:00 | INFO: Finished glTF 2.0 export in 0.008149147033691406 s

    Wrote: /tmp/out.glb

    Blender quit

    real    0m0.938s
    user    0m0.823s
    sys     0m0.206s
    jlpoole@jp ~/work/Voron/voronstl $ ls -la /tmp/out.glb 
    -rw-r--r-- 1 jlpoole jlpoole 154128 Mar  5 09:22 /tmp/out.glb
    jlpoole@jp ~/work/Voron/voronstl $ 


### Step 3B - tree of glbs

Use  Perl script: extract_first_path.pl v. 11

find /usr/local/src/Voron-Stealthburner/STLs -name '*.stl' -print0 |
  while IFS= read -r -d '' f; do
    blender-bin-5.0.0 --background --python create_glb.py -- "$f"
  done

find  /home/jlpoole/work/Voron/Klicky-Probe -name '*.stl' -print0 |
  while IFS= read -r -d '' f; do
     echo "$f"
    #blender-bin-5.0.0 --background --python create_glb.py -- "$f"
  done

Caution: make sure you have the directory only relevant to your build.  For example Klicky-Probe has 186 STLs in its tree, but for the Voron Trident, we only are interested in 14 of the project's files. 

    jlpoole@jp ~/work/Voron/test2 $ find  /home/jlpoole/work/Voron/Klicky-Probe -name '*.stl' -print0 |   while IFS= read -r -d '' f; do      echo "$f"
    done |wc -l
    186
    jlpoole@jp ~/work/Voron/test2 $ 
But,
    jlpoole@jp ~/work/Voron/renderlab $ cat /home/jlpoole/workstation/perl/Voron/manifest.txt | grep Klicky |wc -l
    14
    jlpoole@jp ~/work/Voron/renderlab $ 