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
5MB
4K SLoC
Landon 
一套用于导出Blender数据(如网格和骨架)以及准备数据以供渲染管线使用的工具、数据结构和方法的集合。
初始背景/动机
在此模块之前,我会使用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以程序化导出数据。
未来,我们还将提供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
您的网络浏览器应该会打开一个应用程序,允许您可视化测试套件中的所有模型。
贡献
请打开问题,说明您的预期用途,看看我们是否应该或不应该使landon
支持它。
也可以自由地提出您的问题/想法!
测试
cargo test --all
TODO
- BlenderMesh的triangulate函数可以处理ngons。目前只处理3面或4面的多边形
另请参阅
许可
MIT
依赖关系
~8MB
~149K SLoC