diff --git a/experiments/2024-10-30/src/export.rs b/experiments/2024-10-30/src/export.rs index 351b216dc..10c0bab9b 100644 --- a/experiments/2024-10-30/src/export.rs +++ b/experiments/2024-10-30/src/export.rs @@ -7,7 +7,7 @@ pub fn export(mesh: &Mesh) -> anyhow::Result<()> { .vertices() .iter() .copied() - .map(|vertex| vertex.map(Into::into)) + .map(|vertex| vertex.point.map(Into::into)) .map(|[x, y, z]| threemf::model::Vertex { x, y, z }) .collect(); diff --git a/experiments/2024-10-30/src/geometry.rs b/experiments/2024-10-30/src/geometry.rs index ca17af617..a9d8467ef 100644 --- a/experiments/2024-10-30/src/geometry.rs +++ b/experiments/2024-10-30/src/geometry.rs @@ -22,6 +22,10 @@ impl Mesh { } } -pub type Vertex = [f32; 3]; +#[derive(Clone, Copy)] +pub struct Vertex { + pub point: [f32; 3], +} + pub type Index = u32; pub type Triangle = [Index; 3]; diff --git a/experiments/2024-10-30/src/model.rs b/experiments/2024-10-30/src/model.rs index d917580c5..b4a42feba 100644 --- a/experiments/2024-10-30/src/model.rs +++ b/experiments/2024-10-30/src/model.rs @@ -1,4 +1,4 @@ -use crate::geometry::Mesh; +use crate::geometry::{Mesh, Vertex}; pub fn model() -> anyhow::Result { let mut mesh = Mesh::default(); @@ -13,7 +13,7 @@ pub fn model() -> anyhow::Result { [-0.5, 0.5, 0.5], // 6 [0.5, 0.5, 0.5], // 7 ] - .map(|vertex| mesh.push_vertex(vertex)); + .map(|vertex| mesh.push_vertex(Vertex { point: vertex })); [ [0, 4, 6], // left diff --git a/experiments/2024-10-30/src/render.rs b/experiments/2024-10-30/src/render.rs index e30f1fb2a..dc74a0916 100644 --- a/experiments/2024-10-30/src/render.rs +++ b/experiments/2024-10-30/src/render.rs @@ -193,7 +193,7 @@ impl Renderer { for triangle in mesh.triangles() { let triangle = triangle - .map(|index| Vec3::from(mesh.vertices()[index as usize])); + .map(|index| Vec3::from(mesh.vertices()[index as usize].point)); let normal = { let [a, b, c] = triangle;