From c724e2aa01c7f061de1124b624f84035665c0170 Mon Sep 17 00:00:00 2001 From: Egor Larionov Date: Mon, 27 Apr 2020 11:05:00 -0700 Subject: [PATCH 1/3] Update with recent changes to obj loader --- src/factory/mod.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/factory/mod.rs b/src/factory/mod.rs index 3a6882c..4dc5805 100644 --- a/src/factory/mod.rs +++ b/src/factory/mod.rs @@ -1214,7 +1214,7 @@ impl Factory { info!("Loading {}", path_str); let path = Path::new(path_str); let path_parent = path.parent(); - let mut obj: obj::Obj> = obj::Obj::load(path).unwrap(); + let mut obj = obj::Obj::load(path).unwrap(); obj.load_mtls().unwrap(); let hub_ptr = self.hub.clone(); @@ -1224,7 +1224,7 @@ impl Factory { let mut vertices = Vec::new(); let mut indices = Vec::new(); - for object in &obj.objects { + for object in &obj.data.objects { let group = object::Group::new(&mut *hub); for gr in &object.groups { let (mut num_normals, mut num_uvs) = (0, 0); @@ -1233,20 +1233,20 @@ impl Factory { let f2i = |x: f32| I8Norm(cmp::min(cmp::max((x * 127.) as isize, -128), 127) as i8); vertices.clear(); let mut lru = LruIndexer::new(10, |_, obj::IndexTuple(ipos, iuv, inor)| { - let p: [f32; 3] = obj.position[ipos]; + let p: [f32; 3] = obj.data.position[ipos]; vertices.push(Vertex { pos: [p[0], p[1], p[2], 1.0], uv: match iuv { Some(i) => { num_uvs += 1; - obj.texture[i] + obj.data.texture[i] } None => [0.0, 0.0], }, normal: match inor { Some(id) => { num_normals += 1; - let n: [f32; 3] = obj.normal[id]; + let n: [f32; 3] = obj.data.normal[id]; [f2i(n[0]), f2i(n[1]), f2i(n[2]), I8Norm(0)] } None => [I8Norm(0), I8Norm(0), I8Norm(0x7f), I8Norm(0)], @@ -1260,6 +1260,7 @@ impl Factory { gr.polys .iter() .cloned() + .map(obj::SimplePolygon::into_genmesh_poly) .triangulate() .vertices() .map(|tuple| lru.index(tuple) as u16), @@ -1271,8 +1272,8 @@ impl Factory { gr.name, num_normals, num_uvs ); let material = match gr.material { - Some(ref rc_mat) => self.load_obj_material(&*rc_mat, num_normals != 0, num_uvs != 0, path_parent), - None => material::Basic { + Some(obj::ObjMaterial::Mtl(ref rc_mat)) => self.load_obj_material(&*rc_mat, num_normals != 0, num_uvs != 0, path_parent), + _ => material::Basic { color: 0xFFFFFF, map: None, }.into(), From 909486e2a3bb6d7aa000cff144f16647b2dc21a0 Mon Sep 17 00:00:00 2001 From: Egor Larionov Date: Mon, 27 Apr 2020 12:56:32 -0700 Subject: [PATCH 2/3] Renamed into_genmesh_poly -> into_genmesh --- src/factory/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/factory/mod.rs b/src/factory/mod.rs index 4dc5805..2611fb8 100644 --- a/src/factory/mod.rs +++ b/src/factory/mod.rs @@ -1260,7 +1260,7 @@ impl Factory { gr.polys .iter() .cloned() - .map(obj::SimplePolygon::into_genmesh_poly) + .map(obj::SimplePolygon::into_genmesh) .triangulate() .vertices() .map(|tuple| lru.index(tuple) as u16), From a4cacff0666dc557579457f3f6c98496984d8d22 Mon Sep 17 00:00:00 2001 From: Egor Larionov Date: Tue, 12 May 2020 15:00:11 -0700 Subject: [PATCH 3/3] Updated obj crate to 0.10 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c269485..00a5b7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ image = "0.23" includedir = "0.5" itertools = "0.8" log = "0.4" -obj = { version = "0.9", features = ["genmesh"] } +obj = { version = "0.10", features = ["genmesh"] } phf = "0.7.12" quick-error = "1.2" rodio = { version = "0.8", optional = true }