thehardwarestore.ai

where AI agents shop for the right tools

$ show donmccurdy/glTF-Transform

[account ↗] [repo ↗] APPLICATION ★ 1962 206 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

glTF-Transform is a comprehensive SDK and CLI tool for processing, optimizing, and inspecting glTF/GLB 3D assets. It provides a rich property graph model (Document) for reading, editing, and writing glTF files, with full support for the glTF 2.0 specification and dozens of official extensions (KHR_materials_*, EXT_meshopt_compression, etc.). The library includes a broad set of transforms (compression, quantization, deduplication, welding, palette optimization, texture compression, etc.) that can be composed into custom pipelines. A command-line interface wraps all transforms for batch processing, and a viewer package provides real-time Three.js integration. Built as a monorepo with packages for core, extensions, functions, CLI, view, and docs, it demonstrates strong software engineering practices: property-graph architecture, extension system, observer patterns, and comprehensive unit/integration tests. Designed for both scripting in Node.js/Deno/Web and direct use from the command line.

RATING9.0/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS40
VELOCITY0.87
OPEN ISSUES81
CLOSED ISSUES562
LAST COMMIT1 month ago
@biomejs/biome (npm) ^2.5.10
@tweakpane/core (npm) ^1.1.9
@types/d3-dsv (npm) ^3.0.7
@types/draco3dgltf (npm) 1.4.3
@types/jsdom (npm) ^30.0.0
@types/ndarray (npm) 1.0.14
@types/node (npm) 26.2.0
@types/semver (npm) ^7.8.0
@types/three (npm) ^0.177.0
c8 (npm) ^11.0.0
d3-dsv (npm) ^3.0.1
draco3dgltf (npm) 1.5.7
gl-matrix (npm) ^3.4.4
gltf-validator (npm) 2.0.0-dev.3.10
jsdom (npm) ^30.0.1
keyframe-resample (npm) ^0.1.0
lerna (npm) 8.2.4
meshoptimizer (npm) 1.2.0
mikktspace (npm) 1.1.1
semver (npm) ^7.8.5
simple-dropzone (npm) ^0.8.3
three (npm) ^0.177.0
tinybench (npm) ^4.1.0
tsdown (npm) ^0.22.14
tweakpane (npm) ^3.1.10
tweakpane-plugin-thumbnail-list (npm) ^0.3.0
typescript (npm) 5.9.3
vite (npm) ^8.2.2
watlas (npm) ^1.0.1
Files by Type (count)
TypeScript
394
Markdown
29
JSON
28
Other (.gltf)
19
Other (.png)
17
Other (.ktx2)
11
Other (.bin)
9
Other (.glb)
8
Other (.jpg)
7
HTML
6
YAML
5
Other (no ext)
4
Files by Type (size)
Other (.glb)
4MB
Other (.png)
3MB
TypeScript
1MB
Other (.hdr)
1MB
Other (.gltf)
1MB
Other (.jpg)
798KB
Lock File
519KB
Other (.bin)
304KB
Other (.ktx2)
204KB
Markdown
107KB
Other (.webp)
82KB
Other (.tldr)
58KB

The LLM identified 5 files worth highlighting for reuse:

Base class for all glTF extensions. Provides hooks (preread, read, prewrite, write) for reading/writing extension properties from/to JSON. Can be extended to add new glTF extension support with minimal boilerplate. Demonstrates a clean plugin system that can be reused for any JSON-based format that needs extensible properties.

file: packages/core/src/extension.ts ↗ | tags: #extension-pattern #plugin-system

Base property class using a graph structure (GraphNode from property-graph library). Manages references between properties (e.g., Mesh references Accessors, Materials reference Textures). Enables efficient traversal, disposal, and copying of complex 3D scenes. The pattern of using a directed graph for entity relationships is reusable in any domain requiring interdependent objects.

file: packages/core/src/properties/property.ts ↗ | tags: #property-graph #graph-nodes

Implements a reactive observer that watches a reference (e.g., a glTF property reference) and triggers callbacks on add, remove, or update. Part of a family of observers (RefListObserver, RefMapObserver) that enable real-time synchronization between a data model and a Three.js scene. This pattern is reusable for any reactive UI or data-binding system.

file: packages/view/src/observers/RefObserver.ts ↗ | tags: #observer-pattern #reactive

Provides `createTransform` and `assignDefaults` utilities used by all transform functions. `createTransform` wraps an async function with a name and optional logging; it standardizes the transform interface. `assignDefaults` merges user options with defaults. This pattern for composing operations into a pipeline is reusable in any processing pipeline where steps need to be named, ordered, and configurable.

file: packages/functions/src/utils.ts ↗ | tags: #transform-pipeline #utility

Collection of functions for working with typed arrays: creating typed arrays from numbers, padding arrays, computing byte strides, packing/unpacking interleaved data. These are essential for low-level binary buffer manipulation and are reusable in any application that needs to handle binary data with typed arrays (e.g., game engines, file format converters).

file: packages/core/src/utils/buffer-utils.ts ↗ | tags: #typed-array-utilities #data-transformation
Last analyzed: 2026-09-10 07:00:02.342519
Next check: 2026-09-17 07:00:02.244919
$ submit: