Java .Blend


Providing Type-Safe Read/Write File Access to

the Full Blender DNA in Java


Version ${project.version}


(open source and free)

github

${system.date}

Holger Machens

About

Java .Blend provides an object-oriented type-safe Java API to read and/or write data in Blender's .blend files. The API reflects all data types and structures of a .blend file, and thereby provides access to literally every single bit of data. This comes at the cost, that each Java .Blend library can only be used with a specific Blender version. Low-level access happens fully transparent - no need for data lookup, byte ordering or conversion between native types. The API provides a high level of freedom but demands some in-depth knowledge of Blender's source code, too. The basics of Blender's data model are explained in the documentation and the example applications will help to get started.

-homac

Download

Java .Blend Library

Java .Blend APIs for given Blender program LTS releases and the two recent minor releases in their most recent patch version (e.g. 2.93.6 for 2.93 release). LTS releases will be supported for two years, development stages of a running release only until the next minor release comes out.

Downloads have a suffix like DNA-2.90.8, indicating the corresponding Blender file version. Blender file version and Blender program version can differ in its patch version number.

Since Blender version 2.80, you have to have the exact matching Java.Blend API library version to read a given blender file. Check Blender's splash screen or execute blender -v when in doubt about your exact Blender version.

If you need support for a Blender version not mentioned below, refer to Section Generating Data Model and Utilities in the documentation or contact me.

Mirror on github

Blender Release
3.01binarysrcjavadoc
3.00binarysrcjavadoc
2.93binarysrcjavadoc
2.83binarysrcjavadoc

Examples

Java .Blend Viewer is an example application which demonstrates reading of a simple scene from a blender file. It also contains examples for writing blend files.

Java .Blend File Viewer is an application which lets you view or debug the data in a .blend file.

Java .Blend SDK

This package contains the source code of the code generator and utilities library. The code generator is used to generate a Java.Blend API for a certain range of Blender versions.

github

version
${project.version}binarysrc
1.2.0binarysrc
1.1.2binarysrc
1.0.4binarysrc

Java .Blend's Source Code Documentation

Source code documentation for generated facade classes is based on extracts from blender source code of each version with minor additions by me. Contributions are welcome (see github link).

Link: github

Change Log

Licensing

Java .Blend SDK

Java .Blend SDK is published under the terms of the Apache License V2.0.

Java .Blend's DNA Documentation

Java .Blend's DNA Documentation is licensed under GPLv3.

Pregenerated Data Model Packages

Binary packages are licensed under Apache License V2.0.

Source code packages contain documentation of Java .Blend's DNA documentation, and therefore licensed under GPLv3.

Reasons and Effects of the Different Licenses

The reason for the different licensing is, that parts of the documentation are copied from Blender source code and Blender is published under GPLv2. Thus, the documentation is derived work and has to respect the terms of Blender's license.

The different licenses mainly affect redistribution of work based on the documentation files. This means, if someone redistributes work which includes the original or modified documentation files or source code which contains parts of the documentation files (such as comments in generated facade classes), then this work has to respect the terms of the GPLv3.

Thus, if you consider redistributing derived work under a different license compatible with the Apache license of the SDK, than you just need to generate facade classes without Javadoc comments. Refer to Section Generating Data Model and Utilities in Java .Blend's documentation in order to learn how to do this.

If there are still licensing issues that can't be handled that way, than feel free to contact me and I'll try to help find a solution - even if I really hate this topic!