Skip to main content

A tool to convert Blender blend files to Panda3D BAM files

Project description

Pipeline Panda3D Versions License

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

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

panda3d_blend2bam-0.21.tar.gz (9.1 MB view details)

Uploaded Source

Built Distribution

panda3d_blend2bam-0.21-py3-none-any.whl (9.2 MB view details)

Uploaded Python 3

File details

Details for the file panda3d_blend2bam-0.21.tar.gz.

File metadata

  • Download URL: panda3d_blend2bam-0.21.tar.gz
  • Upload date:
  • Size: 9.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for panda3d_blend2bam-0.21.tar.gz
Algorithm Hash digest
SHA256 46dd829ce14410a15716ddac07260e6f90fa2e48080493e1ab3abb5bb8b3f5ab
MD5 17eb056e449db9d7fb98b67c7dff2086
BLAKE2b-256 b9fce5880e4589c53276f6f31ecb59916e0283f1277029911f59e8837e26b582

See more details on using hashes here.

File details

Details for the file panda3d_blend2bam-0.21-py3-none-any.whl.

File metadata

File hashes

Hashes for panda3d_blend2bam-0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 656e87df85a5a3731cfaa1cb13735f515fe17920d25ec412c4edbc88af1df161
MD5 45cdc339f34ce7a63279f5ee069ccb1a
BLAKE2b-256 3b5d25e0d9f8e38992b7d3d6dd8a32396b1d8d1b2c2ccc3424079be2e994b32d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page