#blender #mesh #export #exporter #armature #data-structures

bin+lib landon

一套用于导出Blender数据(如网格和骨架)以及准备数据以供渲染管线使用的工具、数据结构和方法的集合

35个版本

0.10.2 2021年3月2日
0.8.9 2020年11月16日
0.8.1 2020年7月12日
0.5.0 2020年3月13日
0.0.1 2018年9月7日

渲染 中排名 64

每月 31 次下载
用于 webblender

MIT 协议

5MB
4K SLoC

Rust 3.5K SLoC // 0.0% comments Python 444 SLoC // 0.3% comments

Landon Actions状态

一套用于导出Blender数据(如网格和骨架)以及准备数据以供渲染管线使用的工具、数据结构和方法的集合。

Landon手册

初始背景/动机

在此模块之前,我会使用blender的collada导出器将blender网格/骨架数据导出为COLLADA,然后将该COLLADA解析为JSON。

这基本上是有效的 - 但有时我会遇到一些导出不完全正确的模型,我必须挖掘以了解原因。

在一年或两年偶尔发生这种情况之后,我终于决定投入一些时间来编写自己的东西,知道我还会遇到一些问题,但这些问题是我知道如何解决的。

landon的目标是一个经过大量测试、文档齐全的最小工具集,用于从Blender中获取数据以及预处理这些数据的函数集,以便您可以在渲染管线中使用它。

从一开始,landon就针对我的游戏Akigi的需求,但请非常自由地提出问题/PR,包括您认为可能适合landon的问题/想法/功能。

目标是使从Blender中获取数据并将其放入渲染管线变得像吃派一样简单。

入门

Landon手册是一个正在进行的指南,其中包含有关如何使用landon库的示例。

查看mesh-visualizer目录,以查看使用landon导出的模型实现骨骼动画的完整工作示例。

快速入门

这里是一个示例,我们将下载一个Blender文件,将网格导出到JSON格式,然后使用jq CLI从JSON中提取每个边界框。

# Install landon
cargo install -f landon
landon install --mesh-to-json --armature-to-json

# Download a Blender file to try landon with
BLEND_FILE='https://github.com/chinedufn/landon/blob/master/crates/blender-export-test/src/tests/multiple_meshes.blend?raw=true'
curl -L $BLEND_FILE > /tmp/multiple-meshes.blend

# Export meshes and armatures to stdout and redirect stdout to a file
landon export -f /tmp/multiple-meshes.blend > exported.json

# List all of the mesh names and bounding boxes
cat exported.json | jq -r '.meshes | to_entries[] | .value | to_entries[] | "\(.key), \(.value | .bounding_box)"'

# Second_Mesh, {"min_corner":[-1.3121787,0.44901967,0.67399526],"max_corner":[0.7619256,2.523124,2.7480996]}
# AMesh, {"min_corner":[-3.2487504,-3.3098261,1.2566323],"max_corner":[-1.2487504,-1.3098261,3.2566323]}
# Mesh3, {"min_corner":[-1.2058887,-2.4149196,-1.8447866],"max_corner":[0.86821556,-0.3408153,0.22931767]}

安装

我们目前支持Blender 2.80

cargo install -f landon

landon install --mesh-to-json --armature-to-json
# FIXME: landon install --ik-to-fk
npm install -g ik2fk && ik2fk --install

# More info
landon install --help

API

Landon提供Rust API以程序化导出数据。

landon

未来,我们还将提供C和Wasm API,作为Rust API的轻量级包装,以便与其他语言进行互操作。

CLI使用

# Help on all of the subcommands
landon --help

在本地运行网格可视化器

TODO:重写此示例并删除watchexec作为依赖项。

# Install a static server that sets the application/wasm mime type
npm install -g http-server
# Watcher
cargo install watchexec

git clone https://github.com/chinedufn/landon

watchexec -r -w mesh-visualizer --ignore mesh-visualizer/out ./mesh-visualizer/build.sh

http-server ./mesh-visualizer/out --open

您的网络浏览器应该会打开一个应用程序,允许您可视化测试套件中的所有模型。

Mesh visualizer demo site

贡献

请打开问题,说明您的预期用途,看看我们是否应该或不应该使landon支持它。

也可以自由地提出您的问题/想法!

测试

cargo test --all

TODO

  • BlenderMesh的triangulate函数可以处理ngons。目前只处理3面或4面的多边形

另请参阅

许可

MIT

依赖关系

~8MB
~149K SLoC