# blr
Rust interface for the Python API of [Blender](https://www.blender.org). The interface is facilitated via [PyO3](https://pyo3.rs).
## Instructions
### Rust
Add `blr` as a Rust dependency to your [`Cargo.toml`](https://doc.rust-lang.org/cargo/reference/manifest.html) manifest.
```toml
[dependencies]
blr = { version = "0.1" }
```
Docker
> To install [Docker](https://docs.docker.com/get-docker) on your system, you can run [`.docker/host/install_docker.bash`](.docker/host/install_docker.bash) to configure Docker with NVIDIA GPU support.
>
> ```bash
> .docker/host/install_docker.bash
> ```
#### Build Image
To build a new Docker image from [`Dockerfile`](Dockerfile), you can run [`.docker/build.bash`](.docker/build.bash) as shown below.
```bash
.docker/build.bash ${TAG:-latest} ${BUILD_ARGS}
```
#### Run Container
To run the Docker container, you can use [`.docker/run.bash`](.docker/run.bash) as shown below.
```bash
.docker/run.bash ${TAG:-latest} ${CMD}
```
#### Run Dev Container
To run the Docker container in a development mode (source code mounted as a volume), you can use [`.docker/dev.bash`](.docker/dev.bash) as shown below.
```bash
.docker/dev.bash ${TAG:-latest} ${CMD}
```
As an alternative, users familiar with [Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers) can modify the included [`.devcontainer/devcontainer.json`](.devcontainer/devcontainer.json) to their needs. For convenience, [`.devcontainer/open.bash`](.devcontainer/open.bash) script is available to open this repository as a Dev Container in VS Code.
```bash
.devcontainer/open.bash
```
#### Join Container
To join a running Docker container from another terminal, you can use [`.docker/join.bash`](.docker/join.bash) as shown below.
```bash
.docker/join.bash ${CMD:-bash}
```
## Status
This project is in early development, and as such, many features are missing and the API is not yet stable. The initial implementation targets Blender `3.6`, but it will be updated to `4.x` in the future.
## License
This project is dual-licensed to be compatible with the Rust project, under either the [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) licenses.
## Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.