Skip to content

Commit 30d9530

Browse files
committed
add wraps rampifier
1 parent 64ef7a6 commit 30d9530

File tree

7 files changed

+313
-26
lines changed

7 files changed

+313
-26
lines changed

Cargo.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ cgmath = "0.17"
1515
image = "0.23"
1616
uuid = "0.7"
1717
chrono = "0.4"
18-
egui = { git = "https://github.com/emilk/egui" }
19-
eframe = { git = "https://github.com/emilk/egui" }
18+
egui = "0.16"
19+
eframe = "0.16"
2020
dirs = "4.0.0"
2121
nfd2 = "0.3.0"
22+
rampifier = { git = "https://github.com/Wrapperup/rampifier" }
2223

2324
[features]

README.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
a5 adaptation of [textured-voxelizer](https://github.com/CheezBarger/textured-voxelizer) by French Fries
44

5-
![Voxelized plane](https://github.com/CheezBarger/textured-voxelizer/blob/master/banner.png)
5+
![Voxelized plane](banner.png)
6+
7+
![Rampified import](banner2.png)
68

79
Generates textured voxel models from OBJ files.
8-
Currently only supports voxelization and simplification for BRS files.
10+
11+
912

banner2.png

9.5 MB
Loading

src/main.rs

+39-11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ mod icon;
55
mod intersect;
66
mod octree;
77
mod palette;
8+
mod rampify;
89
mod simplify;
910
mod voxelize;
1011

@@ -23,7 +24,7 @@ use std::{
2324
use voxelize::voxelize;
2425

2526
const WINDOW_WIDTH: f32 = 600.;
26-
const WINDOW_HEIGHT: f32 = 380.;
27+
const WINDOW_HEIGHT: f32 = 420.;
2728

2829
const OBJ_ICON: &[u8; 10987] = include_bytes!("../res/obj_icon.png");
2930

@@ -36,6 +37,7 @@ struct Obj2Brs {
3637
save_owner_id: String,
3738
save_owner_name: String,
3839
raise: bool,
40+
rampify: bool,
3941
save_name: String,
4042
scale: f32,
4143
simplify: bool,
@@ -57,15 +59,16 @@ impl Default for Obj2Brs {
5759
save_owner_id: "d66c4ad5-59fc-4a9b-80b8-08dedc25bff9".into(),
5860
save_owner_name: "obj2brs".into(),
5961
raise: true,
62+
rampify: false,
6063
save_name: "test".into(),
6164
scale: 1.0,
62-
simplify: true,
65+
simplify: false,
6366
}
6467
}
6568
}
6669

6770
impl App for Obj2Brs {
68-
fn update(&mut self, ctx: &egui::CtxRef, _frame: &mut eframe::epi::Frame<'_>) {
71+
fn update(&mut self, ctx: &egui::CtxRef, _frame: &eframe::epi::Frame) {
6972
let input_file_valid = Path::new(&self.input_file_path).exists();
7073
let output_dir_valid = Path::new(&self.output_directory).is_dir();
7174
let uuid_valid = Uuid::parse_str(&self.save_owner_id).is_ok();
@@ -147,9 +150,10 @@ impl Obj2Brs {
147150
}
148151

149152
fn options(&mut self, ui: &mut Ui, uuid_valid: bool) {
153+
150154
ui.label("Lossy Conversion")
151155
.on_hover_text("Whether or not to merge similar bricks to create a less detailed model");
152-
ui.add(Checkbox::new(&mut self.simplify, "Simplify (reduces brickcount)"));
156+
ui.add_enabled(!self.rampify, Checkbox::new(&mut self.simplify, "Simplify (reduces brickcount)"));
153157
ui.end_row();
154158

155159
ui.label("Raise Underground")
@@ -159,7 +163,12 @@ impl Obj2Brs {
159163

160164
ui.label("Match to Colorset")
161165
.on_hover_text("Modify the color of the model to match the default color palette in Brickadia");
162-
ui.add(Checkbox::new(&mut self.match_brickadia_colorset, "Use Default Palette"));
166+
ui.add_enabled(!self.rampify, Checkbox::new(&mut self.match_brickadia_colorset, "Use Default Palette"));
167+
ui.end_row();
168+
169+
ui.label("Rampify")
170+
.on_hover_text("Creates a Lego-World like rampification of the model, uses default colorset");
171+
ui.add(Checkbox::new(&mut self.rampify, "Run the result through Wrapperup's plate-rampifier"));
163172
ui.end_row();
164173

165174
ui.label("Scale")
@@ -187,7 +196,7 @@ impl Obj2Brs {
187196
ui.end_row();
188197
}
189198

190-
fn do_conversion(&self) {
199+
fn do_conversion(&mut self) {
191200
println!("{:?}", self);
192201
let mut octree = match generate_octree(self) {
193202
Ok(tree) => tree,
@@ -201,7 +210,7 @@ impl Obj2Brs {
201210

202211
write_brs_data(
203212
&mut octree,
204-
&self,
213+
self,
205214
);
206215
}
207216
}
@@ -273,8 +282,17 @@ fn generate_octree(opt: &Obj2Brs) -> Result<octree::VoxelTree<Vector4<u8>>, Stri
273282

274283
fn write_brs_data(
275284
octree: &mut octree::VoxelTree<Vector4<u8>>,
276-
opts: &Obj2Brs,
285+
opts: &mut Obj2Brs,
277286
) {
287+
let mut max_merge = 200;
288+
289+
if opts.rampify {
290+
opts.simplify = false;
291+
opts.match_brickadia_colorset = true;
292+
opts.bricktype = BrickType::Default;
293+
max_merge = 1;
294+
}
295+
278296
let owner = brs::save::User {
279297
name: opts.save_owner_name.clone(),
280298
id: opts.save_owner_id.parse().unwrap(),
@@ -287,7 +305,13 @@ fn write_brs_data(
287305
..Default::default()
288306
},
289307
header2: brs::save::Header2 {
290-
brick_assets: vec!["PB_DefaultMicroBrick".into(), "PB_DefaultBrick".into()],
308+
brick_assets:
309+
vec![
310+
"PB_DefaultMicroBrick".into(),
311+
"PB_DefaultBrick".into(),
312+
"PB_DefaultRamp".into(),
313+
"PB_DefaultWedge".into(),
314+
],
291315
brick_owners: vec![brs::save::BrickOwner::from_user_bricks(owner.clone(), 1)],
292316
colors: palette::DEFAULT_PALETTE.to_vec(),
293317
..Default::default()
@@ -297,9 +321,9 @@ fn write_brs_data(
297321

298322
println!("Simplifying...");
299323
if opts.simplify {
300-
simplify_lossy(octree, &mut write_data, opts.bricktype, opts.match_brickadia_colorset);
324+
simplify_lossy(octree, &mut write_data, opts.bricktype, opts.match_brickadia_colorset, max_merge);
301325
} else {
302-
simplify_lossless(octree, &mut write_data, opts.bricktype, opts.match_brickadia_colorset);
326+
simplify_lossless(octree, &mut write_data, opts.bricktype, opts.match_brickadia_colorset, max_merge);
303327
}
304328

305329
if opts.raise {
@@ -321,6 +345,10 @@ fn write_brs_data(
321345
}
322346
}
323347

348+
if opts.rampify {
349+
rampify::rampify(&mut write_data);
350+
}
351+
324352
// Write file
325353
println!("Writing {} bricks...", write_data.bricks.len());
326354

src/palette.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,4 @@ pub const DEFAULT_PALETTE: [Color; 96] = [
9898
Color { b: 55, g: 0, r: 255, a: 255 },
9999
Color { b: 29, g: 0, r: 127, a: 255 },
100100
Color { b: 55, g: 0, r: 55, a: 255 }
101-
];
101+
];

0 commit comments

Comments
 (0)