A tool to convert Blender blend files to Panda3D BAM files
Project description
blend2bam
blend2bam
is a CLI tool to convert Blender blend files to Panda3D BAM files.
It also supplies a Python file loader to add "native" blend file support to Panda3D.
Installation
Use pip to install the panda3d-blend2bam package:
pip install panda3d-blend2bam
Blender is required for blend2bam
(ideally available on the system PATH).
If it is not, the directory containing blender
can be specified with --blender-dir
(see CLI usage).
Usage
CLI
usage: blend2bam [-h] [--version] [-m {legacy,pbr}] [--physics-engine {builtin,bullet}] [--srcdir SRCDIR] [--blender-dir BLENDER_DIR]
[--blender-bin BLENDER_BIN] [--append-ext] [--pipeline {gltf,egg}] [--no-srgb] [--textures {ref,copy,embed}]
[--animations {embed,separate,skip}] [--invisible-collisions-collection INVISIBLE_COLLISIONS_COLLECTION]
src [src ...] dst
CLI tool to convert Blender blend files to Panda3D BAM files
positional arguments:
src source path
dst destination path
options:
-h, --help show this help message and exit
--version show program's version number and exit
-m {legacy,pbr}, --material-mode {legacy,pbr}
control how materials are exported (default: pbr)
--physics-engine {builtin,bullet}
the physics engine to build collision solids for (default: builtin)
--srcdir SRCDIR a common source directory to use when specifying multiple source files (default: None)
--blender-dir BLENDER_DIR
directory that contains the blender binary (default: )
--blender-bin BLENDER_BIN
name of the blender binary to use (default: blender)
--append-ext append extension on the destination instead of replacing it (batch mode only) (default: False)
--pipeline {gltf,egg}
the backend pipeline used to convert files (default: gltf)
--no-srgb do not load textures as sRGB textures (only for glTF pipelines) (default: False)
--textures {ref,copy,embed}
how to handle external textures (default: ref)
--animations {embed,separate,skip}
how to handle animation data (default: embed)
--invisible-collisions-collection INVISIBLE_COLLISIONS_COLLECTION
name of a collection in blender whose collision objects will be exported without a visible geom node (default: InvisibleCollisions)
Python File Loader
blend2bam
also supports Panda3D's Python file loader API (requires Panda3D 1.10.4+) to seamlessly adds blend file support to Panda3D's Loader
classes.
This does not add support to pview
, which is a C++ application that does not support Python file loaders.
Pipelines
blend2bam
has support for multiple backend "pipelines." Currently, gltf
and egg
are supported.
For Blender 2.7x, gltf
uses blendergltf and panda3d-gltf while egg
uses YABEE and egg2bam
from the Panda3d SDK.
For Blender 2.80+ (including 2.90+), only gltf
is supported and uses the glTF exporter built into Blender 2.80+ instead of blendergltf.
The below table highlights some of the differences.
Feature | glTF (2.7x) | EGG (2.7x) | glTF (2.8+) |
---|---|---|---|
Static Meshes | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Textures | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Multiple Diffuse Textures | :x: | :heavy_check_mark: | :x: |
Legacy Materials | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark:2 |
PBR Materials | :heavy_check_mark: | :x: | :heavy_check_mark: |
Lights | :heavy_check_mark: | :x: | :heavy_check_mark: |
Skinned Meshes | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Skeletal Animations | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Shape Keys | :x: | :heavy_check_mark: | :heavy_check_mark: |
Shape Key Animations | :x: | :heavy_check_mark: | :heavy_check_mark:1 |
Object Animations | :x: | :x: | :x: |
CollisionSolids | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Bullet Shapes | :heavy_check_mark: | :x: | :heavy_check_mark: |
Tags from Game Properties | :heavy_check_mark: | :heavy_check_mark: | :x: |
Tags from Custom Properties | :heavy_check_mark: | :x: | :heavy_check_mark: |
Convert Particle Systems to Meshes | :heavy_check_mark: | :x: | :heavy_check_mark: |
Separate Animation Files | :heavy_check_mark: | :x:3 | :heavy_check_mark: |
1 Shape key animations require Panda3D 1.10.6.
2 Only supports diffuse color (factor and map pulled from base color) and normal maps.
Requires panda3d-gltf
>= 0.9.
3 Supported by EGG, but not implemented in blend2bam
Conversion Guides
The following conversion guides describe how Blender data gets converted to Panda3D data for the various pipelines blend2bam supports:
Running Tests
First install blend2bam
in editable mode along with test
extras:
pip install -e .[test]
Then run the test suite with pytest
:
pytest
Building Wheels
Install build
:
pip install --upgrade build
and run:
python -m build
License
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
Hashes for panda3d_blend2bam-0.21-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 656e87df85a5a3731cfaa1cb13735f515fe17920d25ec412c4edbc88af1df161 |
|
MD5 | 45cdc339f34ce7a63279f5ee069ccb1a |
|
BLAKE2b-256 | 3b5d25e0d9f8e38992b7d3d6dd8a32396b1d8d1b2c2ccc3424079be2e994b32d |