FBX2GLB
A versatile toolkit for converting FBX 3D models to GLB format for web applications.
Features
- Multiple Conversion Methods:
- Autodesk FBX SDK (if available)
- Facebook's fbx2gltf command line tool
- Blender (if installed)
- Batch Processing: Convert multiple files at once with parallel processing
- Component Generation: Generate React/Three.js components from 3D models
- FBX Upgrading: Upgrade older FBX files to newer versions for better compatibility
- Preserve Quality: Maintain animations, materials, textures, and skeletal data
- Cross-Platform: Support for macOS, Windows, and Linux
Quick Start
Installation
# Clone the repository
git clone https://github.com/fortyfive-ai/fbx2glb.git
cd fbx2glb
# Install in development mode
pip install -e '.[dev]'
Basic Usage
# Convert a single FBX file to GLB
python -m fbx2glb.cli examples/XBot.fbx examples/XBot.glb
# Check available conversion methods
python -m fbx2glb.cli --check-dependencies
# Generate a React/Three.js component
python -m fbx2glb.component examples/XBot.fbx src/components/XBotModel.tsx
Installation
Basic Installation
pip install fbx2glb
Development Installation
git clone https://github.com/fortyfive-ai/fbx2glb.git
cd fbx2glb
pip install -e '.[dev]'
FBX SDK Installation (Recommended)
For the best results and FBX file upgrading capabilities, install the Autodesk FBX SDK:
macOS
# Using the included Makefile
make install-fbx-sdk
Manual Installation
- Download the FBX SDK from Autodesk
- Install the SDK for your platform
- The package will automatically detect the SDK installation
Project Structure
fbx2glb/
├── fbx2glb/ # Main Python package
│ ├── __init__.py # Package initialization
│ ├── cli.py # Command-line interface
│ ├── converter.py # Core conversion logic
│ ├── batch.py # Batch processing
│ ├── component.py # React component generation
│ ├── utils.py # Utility functions
│ ├── params.py # Parameter structures
│ └── fbx_upgrader.py # FBX file upgrading
├── tools/ # Build tools and utilities
│ ├── upgrade_fbx.cpp # C++ source for FBX upgrade tool
│ ├── upgrade_fbx # Compiled binary
│ └── README.md # Tools documentation
├── examples/ # Example files and models
├── tests/ # Test suite
├── local/ # SDK installers (macOS)
├── sdk/ # SDK packages
├── Makefile # Unified build system
└── FBX2glTF/ # Facebook's FBX2glTF (git submodule)
Usage
Command Line Interface
# Convert a single file
fbx2glb input.fbx [output.glb] [options]
# Batch conversion
fbx2glb-batch source_directory [output_directory] [options]
# Generate React/Three.js component
fbx2glb-component input.fbx [output_component.tsx] [options]
Common Options
# Specify conversion method
--method fbx-sdk|fbx2gltf|blender
# Force overwrite existing files
--force
# Enable verbose output
--verbose
# Upgrade FBX file before conversion
--upgrade-fbx
# Check dependencies
--check-dependencies
Python API
from fbx2glb import convert_file, batch_convert, generate_component
# Convert a single file
success = convert_file("input.fbx", "output.glb", method="fbx-sdk")
# Batch convert with parallel processing
successes, failures = batch_convert(
"source_dir",
"output_dir",
recursive=True,
parallel=4
)
# Generate React component
success = generate_component(
"input.fbx",
"MyModel.tsx",
component_name="MyModel"
)
Using the Makefile
The project includes a comprehensive Makefile for common tasks:
# Show all available commands
make help
# Install FBX SDK (macOS)
make install-fbx-sdk
# Build the FBX upgrade tool
make build-upgrade-tool
# Convert XBot example with FBX upgrading
make upgrade-xbot
# Convert XBot example (basic)
make convert-xbot
# Troubleshoot conversion issues
make troubleshoot
# Clean build artifacts
make clean
# Build Python package
make build-package
Configuration
Create a .fbx2glb.json file in your project root to customize conversion behavior:
{
"defaultMethod": "fbx-sdk",
"fallbackMethods": ["fbx2gltf", "blender"],
"blenderPath": "/Applications/Blender.app/Contents/MacOS/Blender",
"outputFormat": "glb",
"preserveAnimations": true,
"optimizeMeshes": true
}
Conversion Methods
1. Autodesk FBX SDK (Recommended)
- Pros: Best quality, supports FBX upgrading, handles all FBX versions
- Cons: Requires SDK installation, larger file sizes
- Use when: You need the highest quality conversion or have old FBX files
2. Facebook's fbx2gltf
- Pros: Fast, good compression, open source
- Cons: Limited FBX version support
- Use when: You need fast conversion of modern FBX files
3. Blender
- Pros: Free, handles many formats, good for complex scenes
- Cons: Slower, requires Blender installation
- Use when: You need to process many different 3D formats
Examples
Basic Conversion
# Convert a single file
python -m fbx2glb.cli model.fbx model.glb
# Convert with specific method
python -m fbx2glb.cli model.fbx model.glb --method fbx2gltf
# Convert with FBX upgrading
python -m fbx2glb.cli old_model.fbx new_model.glb --upgrade-fbx
Batch Processing
# Convert all FBX files in a directory
python -m fbx2glb.batch models/ output/ --recursive
# Convert with parallel processing
python -m fbx2glb.batch models/ output/ --parallel 4 --force
Component Generation
# Generate a React component
python -m fbx2glb.component character.fbx CharacterModel.tsx
# Generate with custom name
python -m fbx2glb.component character.fbx CharacterModel.tsx --name CharacterModel
Troubleshooting
Common Issues
-
FBX version too old:
# Use FBX upgrading python -m fbx2glb.cli old_model.fbx new_model.glb --upgrade-fbx
-
No conversion methods available:
# Check what's available python -m fbx2glb.cli --check-dependencies # Install FBX SDK make install-fbx-sdk
-
Blender not found:
# Specify Blender path python -m fbx2glb.cli model.fbx model.glb --blender-path /path/to/blender
Getting Help
# Run the troubleshooting command
make troubleshoot
# Check system information
python -m fbx2glb.cli --check-dependencies
Development
Running Tests
# Run all tests
pytest
# Run specific test file
pytest tests/test_utils.py
# Run with coverage
pytest --cov=fbx2glb
Building the Package
# Build distribution
make build-package
# Publish to PyPI (requires credentials)
make publish-package
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please check the contributing guidelines for more information.
Development Setup
- Fork the repository
- Create a feature branch
- Install in development mode:
pip install -e '.[dev]' - Make your changes
- Add tests for new functionality
- Run the test suite:
pytest - Submit a pull request
Acknowledgments
- Facebook's FBX2glTF for the reference implementation
- Autodesk FBX SDK for the official FBX processing library
- Blender for the open-source 3D software integration
Metadata
Release files for fbx2glb 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fbx2glb-0.1.0.tar.gz | 23.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fbx2glb-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.3 kB
Release files / fbx2glb-0.1.0.tar.gz
| Download URL | fbx2glb-0.1.0.tar.gz |
|---|---|
| Size | 23.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
56dbd5eb22e79556ceab202f4401f4a96cabd8302d82198f759d8faa9b2964d5
|
|
BLAKE2b-256 checksum How to use checksums |
53340c36da1eed3980418c501357df61070af81e176091a76380fbd85fc4fe54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.12.1.2 readme-renderer/44.0 requests/2.32.3 requests-toolbelt/1.0.0 urllib3/2.2.3 tqdm/4.66.5 importlib-metadata/7.0.1 keyring/25.6.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.12.7
|
Release files / fbx2glb-0.1.0-py3-none-any.whl
| Download URL | fbx2glb-0.1.0-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
beee07864c6ab33c9b5bb9faa2badd268e5a5f850d284f5d0d8b2c22f09e8aa2
|
|
BLAKE2b-256 checksum How to use checksums |
ca16a835b24e040faf4b9a94c611a26be8d0028459ff3b3a54280b4a194bb09b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.12.1.2 readme-renderer/44.0 requests/2.32.3 requests-toolbelt/1.0.0 urllib3/2.2.3 tqdm/4.66.5 importlib-metadata/7.0.1 keyring/25.6.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.12.7
|