{"id":13822391,"url":"https://github.com/chinedufn/landon","last_synced_at":"2025-10-25T00:32:55.269Z","repository":{"id":32958328,"uuid":"140203866","full_name":"chinedufn/landon","owner":"chinedufn","description":"A collection of tools, data structures and methods for exporting Blender data (such as meshes and armatures) and preparing it for your rendering pipeline.","archived":false,"fork":false,"pushed_at":"2023-04-26T06:50:32.000Z","size":14913,"stargazers_count":147,"open_issues_count":9,"forks_count":17,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-10-18T07:11:31.065Z","etag":null,"topics":["armature","blender","export","exporter","fk","ik","mesh"],"latest_commit_sha":null,"homepage":"https://chinedufn.github.io/landon/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chinedufn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-07-08T21:26:55.000Z","updated_at":"2024-08-08T09:12:28.000Z","dependencies_parsed_at":"2023-07-14T09:02:57.286Z","dependency_job_id":null,"html_url":"https://github.com/chinedufn/landon","commit_stats":{"total_commits":334,"total_committers":5,"mean_commits":66.8,"dds":"0.017964071856287456","last_synced_commit":"00d8daa0a3f2c9261d0e2bdd386194f141f39887"},"previous_names":["chinedufn/blender-exporter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinedufn%2Flandon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinedufn%2Flandon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinedufn%2Flandon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinedufn%2Flandon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chinedufn","download_url":"https://codeload.github.com/chinedufn/landon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299832,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["armature","blender","export","exporter","fk","ik","mesh"],"created_at":"2024-08-04T08:01:58.408Z","updated_at":"2025-10-25T00:32:55.200Z","avatar_url":"https://github.com/chinedufn.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"Landon [![Actions Status](https://github.com/chinedufn/landon/workflows/ci/badge.svg)](https://github.com/chinedufn/landon/actions)\n===============\n\n\u003e A collection of tools, data structures and methods for exporting Blender data (such as meshes and armatures) and preparing it for your rendering pipeline.\n\n[The Landon Book](https://chinedufn.github.io/landon/)\n\n- [blender-mesh API docs](https://chinedufn.github.io/landon/api/blender_mesh)\n\n- [blender-armature API docs](https://chinedufn.github.io/landon/api/blender_armature)\n\n- [landon API / CLI docs](https://docs.rs/landon/badge.svg)\n\n- [Convert Ik to FK](/crates/iks-to-fks)\n\n## Initial Background / Motivation\n\nBefore this module I would export blender mesh / armature data to COLLADA using blender's collada exporter,\nand then parse that COLLADA into JSON.\n\nThis worked mostly well - but here and there I'd run into a model that didn't export quite right and I'd have to dig\naround to figure out why.\n\nAfter a year or two of this occasionally happening.. I finally decided to invest some time in writing something myself,\nknowing that I'd still run into issues here and there, but they'd be issues that I'd know how to address.\n\nThe goal of `landon` is to be a minimal suite of heavily tested, well documented tooling\nfor getting data out of Blender and a set of functions for pre-processing that data so that you can\nmake use of it in your rendering pipeline.\n\nFrom the beginning `landon` will be targeted towards my needs for my game [Akigi](https://akigi.com), but please\nfeel very free to open issues / PRs with questions / thoughts / functionality that you think might fit into `landon`.\n\nThe goal is that getting data out of Blender and into your rendering pipeline becomes easy as pie.\n\n## Getting Started\n\n[The Landon Book](https://chinedufn.github.io/landon/) is a work in progress guide with examples on how to use the libraries\nin `landon`.\n\nTake a look at the [mesh-visualizer](/mesh-visualizer) directory to see a full working example of implementing skeletal\nanimation with models that were exported using `landon`.\n\n## Quick Start\n\nHere's an example where we'll download a Blender file, export the meshes to JSON and then extract each bounding box from\nthe JSON using the [jq](https://stedolan.github.io/jq/) CLI.\n\n```\n# Install landon\ncargo install -f landon\nlandon install --mesh-to-json --armature-to-json\n\n# Download a Blender file to try landon with\nBLEND_FILE='https://github.com/chinedufn/landon/blob/master/crates/blender-export-test/src/tests/multiple_meshes.blend?raw=true'\ncurl -L $BLEND_FILE \u003e /tmp/multiple-meshes.blend\n\n# Export meshes and armatures to stdout and redirect stdout to a file\nlandon export -f /tmp/multiple-meshes.blend \u003e exported.json\n\n# List all of the mesh names and bounding boxes\ncat exported.json | jq -r '.meshes | to_entries[] | .value | to_entries[] | \"\\(.key), \\(.value | .bounding_box)\"'\n\n# Second_Mesh, {\"min_corner\":[-1.3121787,0.44901967,0.67399526],\"max_corner\":[0.7619256,2.523124,2.7480996]}\n# AMesh, {\"min_corner\":[-3.2487504,-3.3098261,1.2566323],\"max_corner\":[-1.2487504,-1.3098261,3.2566323]}\n# Mesh3, {\"min_corner\":[-1.2058887,-2.4149196,-1.8447866],\"max_corner\":[0.86821556,-0.3408153,0.22931767]}\n```\n\n## To Install\n\n### Install Blender\nThe minimum supported Blender version is 2.80.\n\nThe blender command line executable should be available in your shell path.\n\n#### MacOS\n\n```\n# Add Blender to your path\nexport PATH=\"$PATH:/Applications/blender.app/Contents/MacOS\"\n```\n\nTo verify that Blender is in your path, run `blender --version` in your shell.\n\n### Install Landon\n\n```\ncargo install -f landon\n\nlandon install --mesh-to-json --armature-to-json\n# FIXME: landon install --ik-to-fk\nnpm install -g ik2fk \u0026\u0026 ik2fk --install\n\n# More info\nlandon install --help\n```\n\n## API\n\nLandon provides a Rust API for exporting data programatically. \n\n[landon](https://docs.rs/landon)\n\nIn the future we will also provide C and Wasm APIs as light wrappers around the Rust API in order\nto enable interop with other languages.\n\n\n## CLI Usage\n\n```sh\n# Help on all of the subcommands\nlandon --help\n```\n\n## Running the mesh visualizer locally\n\nTODO: Rewrite this example and remove watchexec as a dependency.\n\n```\n# Install a static server that sets the application/wasm mime type\nnpm install -g http-server\n# Watcher\ncargo install watchexec\n\ngit clone https://github.com/chinedufn/landon\n\nwatchexec -r -w mesh-visualizer --ignore mesh-visualizer/out ./mesh-visualizer/build.sh\n\nhttp-server ./mesh-visualizer/out --open\n```\n\nYour web browser should open up with an application that allows you to visualize all of the model's in our test suite.\n\n![Mesh visualizer demo site](/images/mesh-visualizer-example.gif)\n\n## Contributing\n\nPlease open issues explaining your intended use case and let's see if we should or shouldn't make `landon` support it.\n\nAlso feel free to open issues with any questions / thoughts that you have!\n\n## To test\n\n```sh\ncargo test --all\n```\n\n## TODO\n\n- [ ] BlenderMesh's triangulate function can deal with ngons. Right now only handles 3 or 4 faces\n\n## See Also\n\n- [blender-iks-to-fks](https://github.com/chinedufn/blender-iks-to-fks)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinedufn%2Flandon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchinedufn%2Flandon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinedufn%2Flandon/lists"}