41 个版本 (7 个重大更改)
0.9.2 | 2021年2月19日 |
---|---|
0.6.2 | 2020年12月17日 |
0.5.1 | 2020年11月16日 |
0.3.2 | 2020年7月24日 |
0.0.1 | 2018年7月8日 |
#1320 in 解析器实现
用于 3 crates
75KB
1.5K 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
最低支持的Blender版本是2.80。
Blender命令行可执行文件应位于您的shell路径中。
MacOS
# Add Blender to your path
export PATH="$PATH:/Applications/blender.app/Contents/MacOS"
要验证Blender是否在您的路径中,请在您的shell中运行blender --version
。
安装Landon
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
lib.rs
:
处理骨架的数据结构和方法的库。
@see https://docs.blender.org/manual/en/dev/modeling/armature/introduction.html - 骨架简介
依赖项
~6.5MB
~132K SLoC