Skip to main content

drew_sim/
lib.rs

1//! # drew-sim
2//!
3//! Librairie de rendu 3D immédiat pour applications [`eframe`]/[`egui`].
4//!
5//! Pensée pour la visualisation de télémétrie (drones, robots, capteurs
6//! d'orientation) : chargement de maillages `.stl`, caméra orbitale avec
7//! zoom/pan à la souris, et primitives de dessin (maillage fil de fer,
8//! repère XYZ, trajectoire, graphe de valeurs).
9//!
10//! ## Exemple minimal
11//!
12//! ```no_run
13//! use drew_sim::{Engine3D, Mesh3D, Rotation3D, TelemetryState};
14//!
15//! struct App {
16//!     engine: Engine3D,
17//!     mesh: Mesh3D,
18//!     state: TelemetryState,
19//! }
20//!
21//! impl eframe::App for App {
22//!     fn update(&mut self, ctx: &eframe::egui::Context, _frame: &mut eframe::Frame) {
23//!         eframe::egui::CentralPanel::default().show(ctx, |ui| {
24//!             self.engine.render(ui, |r| {
25//!                 r.draw_mesh(&self.mesh, self.state.position, self.state.rotation, eframe::egui::Color32::WHITE);
26//!                 r.draw_axes(self.state.position, self.state.rotation, 1.5);
27//!             });
28//!         });
29//!     }
30//! }
31//! ```
32
33pub mod camera;
34pub mod engine;
35pub mod math;
36pub mod mesh;
37pub mod render;
38pub mod telemetry;
39
40pub use camera::OrbitCamera;
41pub use engine::{Engine3D, GridStyle};
42pub use math::{Rotation3D, Vec3};
43pub use mesh::{Mesh3D, MeshError};
44pub use render::Render3D;
45pub use telemetry::{TelemetryState, TrailBuffer};
46
47// Ré-export pratique pour les consommateurs de la librairie.
48pub use eframe;
49pub use eframe::egui;