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

MIT 许可证

75KB
1.5K SLoC

Landon Actions Status

一套工具、数据结构和方法,用于导出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

最低支持的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,用于以编程方式导出数据。

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


lib.rs:

处理骨架的数据结构和方法的库。

@see https://docs.blender.org/manual/en/dev/modeling/armature/introduction.html - 骨架简介

依赖项

~6.5MB
~132K SLoC