5 releases

0.2.4 Mar 15, 2023
0.2.3 Mar 15, 2023
0.2.2 Mar 15, 2023
0.2.1 Mar 14, 2023
0.2.0 Mar 14, 2023

#69 in Data formats

Download history 4/week @ 2024-03-31

51 downloads per month

MIT license

23KB
528 lines

rendersloth - A one-of-a-kind Rust 3D Renderer for the CLI

pikachu

Render 3D models in your terminal or app. Sloth is a software rasterizer that turns triangles into charxels (a character + a colour). It does this via a simple triangle-grid intersection method to determine if a triangle is in a character. It then uses a really simple shading scale to determine which character to use based on brightness. Colour is determined by the Vertex color for OBJ and the model color for STL.

Getting Started


As a library

cargo add rendersloth
use rendersloth::*;

let mut context = Rasterizer::new(40, 40);

// Convert your OBJ to a simpler format for rendering
let mut meshes: Vec<SimpleMesh> = vec![];
let obj_model = tobj::load_obj("file.obj", &tobj::GPU_LOAD_OPTIONS);
let obj_mesh = obj_model.0;
let obj_materials = obj_model.1.expect("Expected to have materials.");
for model in {
    meshes.push(model.mesh.to_simple_mesh_with_materials(&materials));
}

// Scale the camera to the model
context.update(&meshes)?;
let transform = Mat4::IDENTITY;
// Draw the meshes to the context's built-in framebuffer
context.draw_all(transform, meshes)?;

// Print the screen's contents
context.flush()?;

Using as a CLI App

cargo install rendersloth --features build-cli

Render pikachu

rendersloth --file-name models/Pikachu.obj

Thank you, contributors!

Maxgy – Rustfmt lint donbright – STL model loading added, Rustfmt lint jonathandturner – Crossterm port

Dependencies

~5–14MB
~201K SLoC