Universal Asset Pipeline CLI - Convert, optimize, and validate 3D/2D assets
Project description
🔧 AssetPipe
Universal Asset Pipeline CLI — One tool to rule them all.
Convert, optimize, and validate 3D/2D assets across formats. Built for game studios, VFX houses, and arch-viz firms.
Features
- Format Conversion — FBX ↔ glTF ↔ OBJ ↔ USD ↔ Alembic
- Texture Optimization — Resize, compress, generate mipmaps, convert to KTX2/WebP
- Mesh Optimization — Decimate, LOD generation, clean topology
- Validation — Missing textures, broken UVs, scale issues, naming conventions
- Batch Processing — Watch folders, CI/CD hooks, parallel execution
- Plugin System — Add custom rules and converters
Installation
pip install assetpipe
Quick Start
# Convert a single file
assetpipe convert model.fbx --to gltf
# Convert with optimization
assetpipe convert model.fbx --to gltf --optimize --validate
# Batch process a directory
assetpipe batch ./assets --config pipeline.yaml
# Watch folder for automatic processing
assetpipe watch ./incoming --config pipeline.yaml
# Validate assets
assetpipe validate ./assets --rules strict
# Generate report
assetpipe report ./assets --output report.html
Configuration
Create a pipeline.yaml file:
version: 1
input:
formats: [fbx, obj, blend]
output:
format: gltf
directory: ./processed
optimization:
mesh:
decimate: 0.5 # Reduce to 50% triangles
generate_lods: [1.0, 0.5, 0.25]
textures:
max_size: 2048
format: webp
quality: 85
validation:
rules:
- no_missing_textures
- valid_uvs
- max_triangles: 100000
- naming_convention: "^[a-z][a-z0-9_]*$"
notifications:
slack:
webhook: $SLACK_WEBHOOK
on: [error, complete]
CLI Commands
| Command | Description |
|---|---|
convert |
Convert a single asset |
batch |
Process multiple assets |
watch |
Watch folder for changes |
validate |
Validate assets against rules |
optimize |
Optimize meshes and textures |
report |
Generate asset report |
info |
Show asset information |
plugins |
Manage plugins |
Supported Formats
3D Models
- Import: FBX, OBJ, glTF/GLB, BLEND*, USD*, Alembic*
- Export: glTF/GLB, OBJ, USD*
Textures
- Import: PNG, JPG, TGA, EXR, PSD*
- Export: PNG, JPG, WebP, KTX2*
*Requires additional dependencies
Plugin Development
Create custom converters and validators:
# plugins/my_validator.py
from assetpipe.plugins import ValidatorPlugin, ValidationResult
class MyValidator(ValidatorPlugin):
name = "my_custom_check"
def validate(self, asset):
if asset.triangle_count > 50000:
return ValidationResult.error("Too many triangles!")
return ValidationResult.ok()
Register in pipeline.yaml:
plugins:
- path: ./plugins/my_validator.py
enabled: true
CI/CD Integration
GitHub Actions
- name: Validate Assets
run: |
pip install assetpipe
assetpipe validate ./assets --rules strict --fail-on-error
Pre-commit Hook
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: assetpipe-validate
name: Validate 3D Assets
entry: assetpipe validate
files: \.(fbx|obj|gltf|glb)$
language: system
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file assetpipe-0.1.0.tar.gz.
File metadata
- Download URL: assetpipe-0.1.0.tar.gz
- Upload date:
- Size: 44.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d762adc7ea5b15bd5d5b5b562e2968d192d48304273797dd1cf54babc12cd03
|
|
| MD5 |
f4b4e4fee78b48e0bef5ab592a588d7f
|
|
| BLAKE2b-256 |
a2d80aecd5ac25e4ed2e4b601b3de96bc3bdc9309d437a40b11d2882d09375fd
|
File details
Details for the file assetpipe-0.1.0-py3-none-any.whl.
File metadata
- Download URL: assetpipe-0.1.0-py3-none-any.whl
- Upload date:
- Size: 49.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4e2ae2834cb6d85857840b830b7c0b8f76a870678c18b073885dace67781d30
|
|
| MD5 |
9f831906574b83fd0609e99adba8408a
|
|
| BLAKE2b-256 |
3be29c6a4b15d748173becefead088409798cd2adb5cd6a96827dfc3b276bc13
|