.fbx – .glb – compression

# 1. Rename all files to replace spaces with underscores and lowercase them
for f in *' '*.fbx *' '*.fbm; do
    [ -e "$f" ] || continue
    new_name=$(echo "$f" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')
    mv "$f" "$new_name"
done

# 2. Convert all raw .fbx files to .glb
for f in *.fbx; do
    [ -e "$f" ] || continue
    base="${f%.fbx}"
    fbx2gltf -i "$f" -b -o "${base}.glb"
done

# 3. Compress and optimize all .glb files using your pipeline
for f in *.glb; do
   [[ "$f" == *"_clean.glb" ]] && continue
   [ -e "$f" ] || continue
   
   base="${f%.glb}"
   echo "Optimizing $f to high-quality ${base}_clean.glb..."
   
   gltf-transform resize "$f" "${base}_clean.glb" --width 512 --height 512 && \
   gltf-transform prune "${base}_clean.glb" "${base}_clean.glb" && \
   gltf-transform webp "${base}_clean.glb" "${base}_clean.glb" --slots baseColor && \
   gltf-transform draco "${base}_clean.glb" "${base}_clean.glb" --quantize-position 11 --quantize-texcoord 12
done


# 2. Re-run your compression pipeline
for f in *.glb; do
   [[ "$f" == *"_clean.glb" ]] && continue
   [ -e "$f" ] || continue
   
   base="${f%.glb}"
   echo "Optimizing $f to high-quality ${base}_clean.glb..."
   
   gltf-transform resize "$f" "${base}_clean.glb" --width 512 --height 512 && \
   gltf-transform prune "${base}_clean.glb" "${base}_clean.glb" && \
   gltf-transform webp "${base}_clean.glb" "${base}_clean.glb" --slots baseColor && \
   gltf-transform draco "${base}_clean.glb" "${base}_clean.glb" --quantize-position 11 --quantize-texcoord 12
done


# 3. delete all beside _clean.glb

shopt -s extglob && rm -rf !(*_clean.glb)