mirror of
https://codeberg.org/icewind/vbspview.git
synced 2026-06-03 18:24:09 +02:00
displacements
This commit is contained in:
parent
becad66e92
commit
421836fccf
3 changed files with 26 additions and 3 deletions
17
Cargo.lock
generated
17
Cargo.lock
generated
|
|
@ -608,6 +608,12 @@ dependencies = [
|
||||||
"epaint",
|
"epaint",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "emath"
|
name = "emath"
|
||||||
version = "0.13.0"
|
version = "0.13.0"
|
||||||
|
|
@ -1071,6 +1077,15 @@ version = "1.1.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb"
|
checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.10.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
|
@ -2307,6 +2322,7 @@ dependencies = [
|
||||||
"bv",
|
"bv",
|
||||||
"lzma-rs",
|
"lzma-rs",
|
||||||
"miette",
|
"miette",
|
||||||
|
"num_enum",
|
||||||
"static_assertions",
|
"static_assertions",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
@ -2316,6 +2332,7 @@ name = "vbspview"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"delaunator",
|
"delaunator",
|
||||||
|
"itertools",
|
||||||
"miette",
|
"miette",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"three-d",
|
"three-d",
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ vbsp = { version = "0.1.0", path = "../bsp" }
|
||||||
miette = { version = "3.2.0", features = ["fancy"] }
|
miette = { version = "3.2.0", features = ["fancy"] }
|
||||||
thiserror = "1.0.30"
|
thiserror = "1.0.30"
|
||||||
delaunator = "1.0.1"
|
delaunator = "1.0.1"
|
||||||
|
itertools = "0.10.3"
|
||||||
|
|
||||||
[profile.dev.package."*"]
|
[profile.dev.package."*"]
|
||||||
opt-level = 2
|
opt-level = 2
|
||||||
11
src/main.rs
11
src/main.rs
|
|
@ -1,6 +1,7 @@
|
||||||
mod camera;
|
mod camera;
|
||||||
|
|
||||||
use camera::FirstPerson;
|
use camera::FirstPerson;
|
||||||
|
use itertools::Either;
|
||||||
use miette::Diagnostic;
|
use miette::Diagnostic;
|
||||||
use std::env::args;
|
use std::env::args;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
@ -42,7 +43,7 @@ fn main() -> Result<(), Error> {
|
||||||
|
|
||||||
let window = Window::new(WindowSettings {
|
let window = Window::new(WindowSettings {
|
||||||
title: file.clone(),
|
title: file.clone(),
|
||||||
max_size: Some((1280, 720)),
|
max_size: Some((1920, 1080)),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
|
@ -287,8 +288,12 @@ fn model_to_mesh(model: Handle<vbsp::data::Model>) -> CPUMesh {
|
||||||
let positions: Vec<f32> = model
|
let positions: Vec<f32> = model
|
||||||
.faces()
|
.faces()
|
||||||
.filter(|face| face.is_visible())
|
.filter(|face| face.is_visible())
|
||||||
.flat_map(|face| face.triangulate())
|
.flat_map(|face| {
|
||||||
.flat_map(|triangle| triangle.into_iter())
|
face.displacement()
|
||||||
|
.and_then(|displacement| displacement.triangulated_displaced_vertices())
|
||||||
|
.map(|verts| Either::Left(verts))
|
||||||
|
.unwrap_or_else(|| Either::Right(face.triangulate().flat_map(|verts| verts)))
|
||||||
|
})
|
||||||
.flat_map(|vertex| [-vertex.x, vertex.z, vertex.y])
|
.flat_map(|vertex| [-vertex.x, vertex.z, vertex.y])
|
||||||
.map(|c| c / size)
|
.map(|c| c / size)
|
||||||
.collect();
|
.collect();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue