1
0
Fork 0
mirror of https://codeberg.org/icewind/vbsp.git synced 2026-06-03 10:44:07 +02:00

wip obj converter

This commit is contained in:
Robin Appelman 2020-06-27 16:04:12 +02:00
commit 0bad24a370
6 changed files with 112 additions and 12 deletions

65
examples/convert.rs Normal file
View file

@ -0,0 +1,65 @@
use main_error::MainError;
use obj::{Group, IndexTuple, Obj, ObjData, Object, SimplePolygon};
use vbsp::TextureFlags;
fn main() -> Result<(), MainError> {
let mut args = std::env::args();
let _ = args.next();
let data = std::fs::read(args.next().expect("No demo file provided"))?;
let bsp = vbsp::Bsp::read(&data)?;
let vertices = bsp
.vertices
.iter()
.map(|vertex| <[f32; 3]>::from(&vertex.position))
.collect();
let polygons = bsp
.original_faces()
.filter(|face| {
face.texture()
.map(|texture| {
!texture.flags.intersects(
TextureFlags::LIGHT
| TextureFlags::SKY2D
| TextureFlags::SKY
| TextureFlags::SKIP
| TextureFlags::NODRAW,
)
})
.unwrap_or_default()
})
.map(|face| {
SimplePolygon(
face.vertex_indexes()
.map(|vertex| IndexTuple(vertex as usize, None, None))
.collect(),
)
})
.collect();
let obj_data = ObjData {
position: vertices,
texture: Vec::new(),
normal: Vec::new(),
objects: vec![Object {
name: "".to_string(),
groups: vec![Group {
name: "".to_string(),
index: 0,
material: None,
polys: polygons,
}],
}],
material_libs: Vec::new(),
};
let obj = Obj {
data: obj_data,
path: Default::default(),
};
obj.save("out.obj")?;
Ok(())
}

View file

@ -1,8 +1,8 @@
fn main() -> Result<(), vbsp::BspError> {
let mut args = std::env::args();
let _ = args.next();
let data = std::fs::read(args.next().unwrap())?;
let _ = vbsp::Bsp::read(&data)?;
let data = std::fs::read(args.next().expect("No demo file provided"))?;
vbsp::Bsp::read(&data)?;
Ok(())
}