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.
Use pip to install the panda3d-blend2bam package:
pip install panda3d-blend2bam
blend2bam
also requires that Blender is installed.
Ideally blender
is available on the system PATH.
However, if it's not, the directory containing blender
can be specified with --blender-dir
(see CLI usage).
usage: blend2bam [-h] [--version] [-m {legacy,pbr}] [--physics-engine {builtin,bullet}] [--srcdir SRCDIR]
[--blender-dir BLENDER_DIR] [--append-ext] [--pipeline {gltf,egg}]
[--no-srgb] [--textures {ref,copy,embed}]
src [src ...] dst
CLI tool to convert Blender blend files to Panda3D BAM files
positional arguments:
src source path
dst destination path
optional arguments:
-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
--physics-engine {builtin,bullet}
the physics engine to build collision solids for
--srcdir SRCDIR a common source directory to use when specifying multiple source files
--blender-dir BLENDER_DIR
directory that contains the blender binary
--blender-bin BLENDER_BIN
name of the blender binary to use
--append-ext append extension on the destination instead of replacing it (batch mode only)
--pipeline {gltf,egg}
the backend pipeline used to convert files
--no-srgb do not load textures as sRGB textures (only for glTF pipelines)
--textures {ref,copy,embed}
how to handle external textures
--animations {embed,separate,skip}
how to handle animation data
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.
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 hightlights some of the differences.
Feature | glTF (2.7x) | EGG (2.7x) | glTF (2.8+) |
---|---|---|---|
Static Meshes | ✔️ | ✔️ | ✔️ |
Textures | ✔️ | ✔️ | ✔️ |
Multiple Diffuse Textures | ❌ | ✔️ | ❌ |
Legacy Materials | ✔️ | ✔️ | ✔️2 |
PBR Materials | ✔️ | ❌ | ✔️ |
Lights | ✔️ | ❌ | ✔️ |
Skinned Meshes | ✔️ | ✔️ | ✔️ |
Skeletal Animations | ✔️ | ✔️ | ✔️ |
Shape Keys | ❌ | ✔️ | ✔️ |
Shape Key Animations | ❌ | ✔️ | ✔️1 |
Object Animations | ❌ | ❌ | ❌ |
CollisionSolids | ✔️ | ✔️ | ✔️ |
Bullet Shapes | ✔️ | ❌ | ✔️ |
Tags from Game Properties | ✔️ | ✔️ | ❌ |
Tags from Custom Properties | ✔️ | ❌ | ✔️ |
Convert Particle Systems to Meshes | ✔️ | ❌ | ✔️ |
Separate Animation Files | ✔️ | ❌3 | ✔️ |
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
The following conversion guides describe how Blender data gets converted to Panda3D data for the various pipelines blend2bam supports: