🔧 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.
Metadata
Release files for assetpipe-cli 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| assetpipe_cli-0.1.1.tar.gz | 47.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| assetpipe_cli-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 100.0 kB
Release files / assetpipe_cli-0.1.1.tar.gz
| Download URL | assetpipe_cli-0.1.1.tar.gz |
|---|---|
| Size | 47.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
86ecab49a6e8d189638ba94048ffc3b56da73f189a2b8f98efc1ef52e85e9dd0
|
|
BLAKE2b-256 checksum How to use checksums |
e24d89f0c20e7bb75e3ac15005f75269663def411334fca7ddd1043c9ec7c744
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / assetpipe_cli-0.1.1-py3-none-any.whl
| Download URL | assetpipe_cli-0.1.1-py3-none-any.whl |
|---|---|
| Size | 52.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
932b50e8fa4d3094c71474b59db81e1877f1e6688da3eb9028a7752d1b9ee9ed
|
|
BLAKE2b-256 checksum How to use checksums |
145050ca91ffe05273aae094816607d0411f920612081b9f193437b674f73665
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|