A blender import/export system for Defold

Overview

defold-blender-export

A Blender export system for the Defold game engine.

Setup Notes

There are no exhaustive documents for this tool yet. Its just not complete, so everything is very much 'in flux'.

Note: The Sync Tool is now a Blender Only addon. This makes building Defold resource collections much simpler.

To use the tool follow the guide below.

  1. Copy the blender/addons/sync_tool folder to the blender addons folder. See blender docs for this.
  2. Or.. you can copy the blender/addons/sync_tool/* files into the folder where your blender source file is, and the scripts should work from there.
  3. Open the blender file you want to work in (or open the test.blend to see an example already setup)
  4. Open the text editor in blender and loadin in the script "defoldSynUI.py"
  5. Run this file. You should see "bpy.ops.text.run_script()" in the Info Window in blender.
  6. Open the 3D layout window in blender and ensure you are in "Object Mode".
  7. Examine the Tools menu on the right side of the Layout 3D View (see below) alt text
  8. Enter the appropriate properties for Scene Name and Directory (project directory to save into).
  9. Select "Sync Build" for the scene mode and press the "Sync Scene" button when ready.

A folder will be created in the target project directory with all the resources needed to load the scene into Defold.

At a minimum you should see a collection file and some gameobjects (in the gameobjects folder). You can open this project and open the collection. While the "Sync" tickbox is enabled, data will be written to the collection file - do not save new objects into it while Sync is on - they will be overwritten. Sync can be unticked at any time and the data will stop pushing to the collection.

Once this is setup you can add/edit the blender scene as you need and any Sync's you do, will update the meshes, textures and object positions in Defold.

Issues

There are a number of odd issues using this system. It is early days, so they will be ironed out. Some limitations on what Blender can stream:

  • Only single texture for each object is used (this is a Defold thing).
  • Object materials only use model materials at the moment. This might change to PBR materials.
  • Lights and Camera are added in Defold, but they are not yet setup to operate correctly (TBD)
  • Many features are only partially functional. Tread carefully :)
Comments
  • The addon just don't work

    The addon just don't work

    I properly set up everything, gave admin permission to both blender and the interpreter, but still, when I click to sync it doesnt do anything. Thats my scene: image

    opened by Caue-Aron 3
  • Support multiple UV coords

    Support multiple UV coords

    Based on discussion here with Ivan_Lytkin: https://forum.defold.com/t/building-a-sync-tool-for-blender-to-defold/69920

    Potentially add a new stream for texcoord1 in the buffer files. This could allow multiple coord access in the material.

    To be tested.

    opened by dlannan 2
  • Alpha channel in Blender BSDF mapped to Albedo texture

    Alpha channel in Blender BSDF mapped to Albedo texture

    Now that tools are available to merge texture channels together to minimise the number of samplers in the Simple PBR shader, it is planned to add the Alpha channel in blender bsdf material into the output Albedo alpha channel. This will produce more consistent alpha sync results without the need for render script changes.

    enhancement 
    opened by dlannan 1
  • Add error reporting and logging

    Add error reporting and logging

    Due to requirements for correct scene and material construction to have a successful export, I need to add some logging and reporting so users can determine what issues there might be. image

    This has been added. Included this issue so that I can track specific enhancements.

    enhancement 
    opened by dlannan 0
  • Remove root rotation for Defold world space transform.

    Remove root rotation for Defold world space transform.

    The current sync tool adds a root node with a rotational transform to get the Blender world space into the Defold world space.

    The problem with applying a complete transform is animations and some object hierarchies. I need to spend some time make a suitable solution (preferably in the lua side of things) to do this vertex + object + anim transform correctly.

    The current system is not ideal because images may come out flipped on a surface (due to the rotation).

    enhancement 
    opened by dlannan 0
  • Simple PBR lighting

    Simple PBR lighting

    The lighting in Simple PBR is essentially the same as the Defold default model lighting - very rudimentary. It is intended that up to 4 dynamic lights are supported. With possibly Point, Spot and Directional types supported.

    This issue is to research some of this and maintain documentation on the process. The solving of this feature will be needed before shadows and some GI solutions are attempted.

    enhancement 
    opened by dlannan 1
  • Split animations into per action dae's with no meshes.

    Split animations into per action dae's with no meshes.

    The current animation export is messy and can be difficult to get right with multiple animations within a scene. The goal is:

    • Output meshes individually. And identify animated meshes. These will be tagged as "Defold models" but still use a mesh buffer.
    • Detect all animation actions and save them out as animation only dae files containing only the skeletons and the skins. No meshes.
    • Export script info (into the meta data table) that allows easy access to available animations, and how to play them (maybe with correct timing and configs too).

    Once complete, it should allow multiple animations in a scene to be easily exported to Defold and easily run in Defold.

    enhancement 
    opened by dlannan 1
Releases(v1.3.1)
  • v1.3.1(Nov 2, 2022)

  • v1.3.0(Oct 29, 2022)

    A sizable upgrade. Including new LightMapping capabilities.

    Features:

    • LightMapper support (with modifications)
    • General Blender LightMap support.
    • New PBR Lightmap material for Defold.
    • Lightmap and Simple material support in the same scene

    Details on the forum about the new features.

    Source code(tar.gz)
    Source code(zip)
    defender.zip(1.58 MB)
  • v1.2.0(Sep 20, 2022)

    Thanks to Aronimo and Makaber for all the testing and digging a Windows issue has finally been resolved (hence 1.2)

    • Windows utf8 to wide char support in file paths.
    • Some cleanup in the code.

    OSX and Linux have not been heavily tested with this release. Debian 11 seems ok so far (need to add some auto tests).

    Source code(tar.gz)
    Source code(zip)
    defender.zip(1.53 MB)
  • v1.1.1(Sep 3, 2022)

    Added new logging system which begins to provide feedback to the user about scene related issues. Currently supports:

    • Material type checking
    • Collection checking (for existence)
    • Luajit permissions levels (reports where file cannot be executed from).
    • Outputs log report that can be sent to me.

    The main aim of the logging is to catch more and more anomalies that are unsupported in Blender when converting to Defold.

    Source code(tar.gz)
    Source code(zip)
    defender.zip(1.49 MB)
  • v1.1.0(Aug 28, 2022)

    Release supporting incoming changes to Defold for support with gltf and glb mesh and animation data.

    • Added selection for gltf and glb
    • Added updates to export gltf and glb
    • Minor bug fixes for mesh construction
    • Change to new name Defender
    Source code(tar.gz)
    Source code(zip)
    defender.zip(1.49 MB)
  • v1.0.8(Apr 13, 2022)

  • v1.0.6(Mar 16, 2022)

    New fixes for Windows platforms.

    • Pathing was broken on both the blender python side and lua export side.
    • Fixed a number of issues with catching script errors.

    Working on OSX and animation action naming (multiple daes per model - 1 for each action).

    Source code(tar.gz)
    Source code(zip)
    sync_tool.zip(1.36 MB)
  • v1.0.5(Feb 28, 2022)

    Added a new automatic creation of an alpha channel from the Blender Alpha channel in Principled BSDF materials. Important notes of this new feature:

    • If the base color has an alpha channel, and you want to use that, set the Alpha channel to 1.0 value.
    • If you use an Alpha of anything other than 1.0 without a texture then the whole alpha for the material will use that value.
    • To set an alpha mask, simply add it as a texture to the material Alpha channel.

    Alpha textures must be greyscale or all the rgba channels are the same. When merged with the base color, the alpha is merged into a single 8 bit channel for Defold.

    Source code(tar.gz)
    Source code(zip)
    sync_tool.zip(1.34 MB)
  • v1.0.4(Feb 26, 2022)

    Release notes:

    • New ao + metallic + roughness map (as per Khronos GLTF PBR)
    • Fixes to pbr simple material params
    • Bug fixes
    • New png texture merging tools. This will allow alpha merge from alpha channel into the Albedo + Alpha texture (TBD)
    Source code(tar.gz)
    Source code(zip)
    sync_tool.zip(1.34 MB)
  • v1.0.3(Feb 23, 2022)

  • v1.0.2(Feb 22, 2022)

  • v1.0.1(Feb 22, 2022)

  • v1.0.0(Feb 22, 2022)

    Release 1.0 Initial module release for Blender 2.8 and above. Follow install guide on github. Main features:

    • Sync static meshes with hierarchy
    • Sync directly to a Defold project folder
    • Support Animation
    • Lights and Camera - early support
    • Meta Data supported
    • Builtin model material
    • Custom Simple PBR material

    Note: Uses luajit to execute scripts. See install guide.

    Source code(tar.gz)
    Source code(zip)
    sync_tool.zip(1.16 MB)
Owner
David Lannan
David Lannan
Streamlit dashboard examples - Twitter cashtags, StockTwits, WSB, Charts, SQL Pattern Scanner

streamlit-dashboards Streamlit dashboard examples - Twitter cashtags, StockTwits, WSB, Charts, SQL Pattern Scanner Tutorial Video https://ww

122 Dec 21, 2022
:art: Diagram as Code for prototyping cloud system architectures

Diagrams Diagram as Code. Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture d

MinJae Kwon 27.5k Dec 30, 2022
Small project to recursively calculate and plot each successive order of the Hilbert Curve

hilbert-curve Small project to recursively calculate and plot each successive order of the Hilbert Curve. After watching 3Blue1Brown's video on Hilber

Stefan Mejlgaard 2 Nov 15, 2021
Data Visualizations for the #30DayChartChallenge

The #30DayChartChallenge This repository contains all the charts made for the #30DayChartChallenge during the month of April. This project aims to exp

Isaac Arroyo 7 Sep 20, 2022
PanGraphViewer -- show panenome graph in an easy way

PanGraphViewer -- show panenome graph in an easy way Table of Contents Versions and dependences Desktop-based panGraphViewer Library installation for

16 Dec 17, 2022
With Holoviews, your data visualizes itself.

HoloViews Stop plotting your data - annotate your data and let it visualize itself. HoloViews is an open-source Python library designed to make data a

HoloViz 2.3k Jan 04, 2023
PolytopeSampler is a Matlab implementation of constrained Riemannian Hamiltonian Monte Carlo for sampling from high dimensional disributions on polytopes

PolytopeSampler PolytopeSampler is a Matlab implementation of constrained Riemannian Hamiltonian Monte Carlo for sampling from high dimensional disrib

9 Sep 26, 2022
ICS-Visualizer is an interactive Industrial Control Systems (ICS) network graph that contains up-to-date ICS metadata

ICS-Visualizer is an interactive Industrial Control Systems (ICS) network graph that contains up-to-date ICS metadata (Name, company, port, user manua

QeeqBox 2 Dec 13, 2021
Advanced hot reloading for Python

The missing element of Python - Advanced Hot Reloading Details Reloadium adds hot reloading also called "edit and continue" functionality to any Pytho

Reloadware 1.9k Jan 04, 2023
Insert SVGs into matplotlib

Insert SVGs into matplotlib

Andrew White 35 Dec 29, 2022
a python function to plot a geopandas dataframe

Pretty GeoDataFrame A minimum python function (~60 lines) to draw pretty geodataframe. Based on matplotlib, shapely, descartes. Installation just use

haoming 27 Dec 05, 2022
Simple function to plot multiple barplots in the same figure.

Simple function to plot multiple barplots in the same figure. Supports padding and custom color.

Matthias Jakobs 2 Feb 21, 2022
An adaptable Snakemake workflow which uses GATKs best practice recommendations to perform germline mutation calling starting with BAM files

Germline Mutation Calling This Snakemake workflow follows the GATK best-practice recommandations to call small germline variants. The pipeline require

12 Dec 24, 2022
Example scripts for generating plots of Bohemian matrices

Bohemian Eigenvalue Plotting Examples This repository contains examples of generating plots of Bohemian eigenvalues. The examples in this repository a

Bohemian Matrices 5 Nov 12, 2022
A python-generated website for visualizing the novel coronavirus (COVID-19) data for Greece.

COVID-19-Greece A python-generated website for visualizing the novel coronavirus (COVID-19) data for Greece. Data sources Data provided by Johns Hopki

Isabelle Viktoria Maciohsek 23 Jan 03, 2023
A GUI for Pandas DataFrames

PandasGUI A GUI for analyzing Pandas DataFrames. Demo Installation Install latest release from PyPi: pip install pandasgui Install directly from Githu

Adam 2.8k Jan 03, 2023
A curated list of awesome Dash (plotly) resources

Awesome Dash A curated list of awesome Dash (plotly) resources Dash is a productive Python framework for building web applications. Written on top of

Luke Singham 1.7k Jan 07, 2023
Automate the case review on legal case documents and find the most critical cases using network analysis

Automation on Legal Court Cases Review This project is to automate the case review on legal case documents and find the most critical cases using netw

Yi Yin 7 Dec 28, 2022
Python code for solving 3D structural problems using the finite element method

3DFEM Python 3D finite element code This python code allows for solving 3D structural problems using the finite element method. New features will be a

Rémi Capillon 6 Sep 29, 2022