bevy-sensor
A Rust library and CLI for capturing multi-view images (RGBA + Depth) of 3D objects, specifically designed for the Thousand Brains Project sensor simulation.
This crate serves as the visual sensor module for the neocortx project, providing TBP-compatible sensor data (64x64 resolution, specific camera intrinsics) from YCB dataset models.
Features
- TBP-Compatible: Matches Habitat sensor specifications (resolution, coordinate systems).
- Multi-View: Captures objects from spherical viewpoints (yaw/pitch).
- YCB Integration: Auto-downloads and caches YCB Benchmark models.
- Headless: Optimized for headless rendering on Linux and WSL2 (via WebGPU).
Requirements
- Rust: 1.70+
- Bevy: 0.15+
- System: Linux with Vulkan drivers (or WSL2).
- Tools:
just(recommended command runner).
Quick Start
-
Install Just (Optional but recommended):
-
Run a Test Render:
# Models will be automatically downloaded to /tmp/ycb if missing. # To use a custom location: cargo run --bin prerender -- --data-dir ./my_models ... # Output saved to test_fixtures/renders/
Usage
CLI (Batch Rendering)
Render the standard TBP benchmark set (10 objects):
Render specific objects:
Library (Rust)
Add to your Cargo.toml:
[]
= "0.4"
Use in your code:
use ;
use Path;
Troubleshooting
WSL2 Support
WSL2 does not support native Vulkan window surfaces well. This project defaults to the WebGPU backend on WSL2, which works reliably for headless rendering.
- Fix: Ensure you have up-to-date GPU drivers on Windows.
Software Rendering (No GPU)
If you absolutely have no GPU, you can try software rendering (slow, potential artifacts):
LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=llvmpipe
License
MIT