further tries
This commit is contained in:
parent
1157b0e22b
commit
99b4d4b457
1 changed files with 47 additions and 6 deletions
53
src/main.rs
53
src/main.rs
|
@ -17,6 +17,9 @@ use material::{Dielectric, Lambertian, Material, Metal};
|
||||||
use ray::Ray;
|
use ray::Ray;
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
use std::env;
|
use std::env;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::{self, BufRead};
|
||||||
|
use std::path::Path;
|
||||||
use std::sync::atomic::{AtomicU32, Ordering};
|
use std::sync::atomic::{AtomicU32, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tobj;
|
use tobj;
|
||||||
|
@ -178,7 +181,16 @@ fn from_obj(path: &str) -> HittableList {
|
||||||
material_ground.clone(),
|
material_ground.clone(),
|
||||||
)));
|
)));
|
||||||
|
|
||||||
dbg!(path);
|
/*
|
||||||
|
if let Ok(lines) = read_lines(path) {
|
||||||
|
for line in lines {
|
||||||
|
if let Ok(text) = line {
|
||||||
|
dbg!(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
let material = Arc::new(Lambertian::new(&Color::new(0.4, 0.2, 0.1)));
|
||||||
|
|
||||||
let cornell_box = tobj::load_obj(path, &tobj::GPU_LOAD_OPTIONS);
|
let cornell_box = tobj::load_obj(path, &tobj::GPU_LOAD_OPTIONS);
|
||||||
let (models, materials) = cornell_box.expect("Failed to load OBJ file");
|
let (models, materials) = cornell_box.expect("Failed to load OBJ file");
|
||||||
|
@ -195,11 +207,31 @@ fn from_obj(path: &str) -> HittableList {
|
||||||
next_face = end;
|
next_face = end;
|
||||||
}
|
}
|
||||||
|
|
||||||
todo!("find out how to get triangular faces and build world") // https://docs.rs/tobj/3.2.3/tobj/struct.Mesh.html
|
// todo!("find out how to get triangular faces and build world"); // https://docs.rs/tobj/3.2.3/tobj/struct.Mesh.html
|
||||||
|
|
||||||
for i in mesh.indices.iter() {
|
for v in 0..mesh.indices.len() / 3 {
|
||||||
|
let indexA = mesh.indices[3 * v];
|
||||||
|
let indexB = mesh.indices[3 * v + 1];
|
||||||
|
let indexC = mesh.indices[3 * v + 2];
|
||||||
|
|
||||||
}
|
world.add(Box::<Triangle>::new(Triangle::new(
|
||||||
|
Point3::new(
|
||||||
|
mesh.positions[3 * indexA] as f64,
|
||||||
|
mesh.positions[3 * indexA + 1] as f64,
|
||||||
|
mesh.positions[3 * indexA + 2] as f64
|
||||||
|
),
|
||||||
|
Point3::new(
|
||||||
|
mesh.positions[3 * indexB] as f64,
|
||||||
|
mesh.positions[3 * indexB + 1] as f64,
|
||||||
|
mesh.positions[3 * indexB + 2] as f64
|
||||||
|
),
|
||||||
|
Point3::new(
|
||||||
|
mesh.positions[3 * indexC] as f64,
|
||||||
|
mesh.positions[3 * indexC + 1] as f64,
|
||||||
|
mesh.positions[3 * indexC + 2] as f64
|
||||||
|
),
|
||||||
|
material
|
||||||
|
)));
|
||||||
|
|
||||||
for v in 0..mesh.positions.len() / 3 {
|
for v in 0..mesh.positions.len() / 3 {
|
||||||
println!(
|
println!(
|
||||||
|
@ -212,9 +244,18 @@ fn from_obj(path: &str) -> HittableList {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let material = Arc::new(Lambertian::new(&Color::new(0.4, 0.2, 0.1)));
|
|
||||||
|
|
||||||
return world;
|
return world;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// The output is wrapped in a Result to allow matching on errors
|
||||||
|
// Returns an Iterator to the Reader of the lines of the file.
|
||||||
|
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
|
||||||
|
where P: AsRef<Path>, {
|
||||||
|
let file = File::open(filename)?;
|
||||||
|
Ok(io::BufReader::new(file).lines())
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -249,7 +290,7 @@ fn main() {
|
||||||
let dist_to_focus = 17.0;
|
let dist_to_focus = 17.0;
|
||||||
let aperture = 0.1;
|
let aperture = 0.1;
|
||||||
|
|
||||||
let world = from_obj("obj/Lowpoly_tree_sample.obj");
|
let world = from_obj("obj/baum.obj");
|
||||||
|
|
||||||
// World
|
// World
|
||||||
let world = random_world();
|
let world = random_world();
|
||||||
|
|
Loading…
Reference in a new issue