Skip to content

Commit b33d752

Browse files
author
Christopher Remde
committed
Finalised Converter for Version 1.2.0
1 parent a977253 commit b33d752

File tree

3 files changed

+28
-23
lines changed

3 files changed

+28
-23
lines changed

Converter/Sequence_Converter.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,18 @@ def process_models(self):
103103

104104
if(len(self.convertSettings.modelPaths) < self.convertSettings.maxThreads):
105105
threads = len(self.convertSettings.modelPaths)
106+
elif self.convertSettings.generateNormals:
107+
threads = 1
106108
else:
107109
threads = self.convertSettings.maxThreads
108110

109-
if self.debugMode or self.convertSettings.generateNormals:
111+
if self.debugMode:
110112
self.firstEstimation = True
111113
for model in self.convertSettings.modelPaths:
112-
self.convert_model(model)
114+
self.convert_model(model)
113115
else:
116+
# Process the first model to establish sequence attributes (Pointcloud or Mesh, has UVs? Normals?)
117+
self.convert_model(self.convertSettings.modelPaths[0])
114118
self.modelPool = ThreadPool(processes = threads)
115119
self.modelPool.map_async(self.convert_model, self.convertSettings.modelPaths)
116120

Converter/Sequence_Converter_UI.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,8 @@ def set_viewport_height(self, pointcloud_settings, texture_settings):
419419

420420
def RunUI(self):
421421

422+
dpg.create_context()
423+
422424
self.InitDefaultPaths()
423425
self.config = configparser.ConfigParser()
424426
self.load_config()
@@ -427,15 +429,15 @@ def RunUI(self):
427429
self.decimatePointcloud = self.read_config_bool("decimatePointcloud")
428430
self.decimatePercentage = int(self.read_settings_string("decimatePercentage"))
429431

430-
dpg.create_context()
431432
dpg.configure_app(manual_callback_management=True)
432433
dpg.create_viewport(height=500, width=500, title="Geometry Sequence Converter")
433434
dpg.setup_dearpygui()
434-
435+
435436
with dpg.window(label="Geometry Sequence Converter", tag="main_window", min_size= [500, 500]):
436-
437+
437438
dpg.add_button(label="Select Input Directory", callback=lambda:self.open_input_dir_cb())
438439
self.text_input_Dir_ID = dpg.add_text(self.inputSequencePath, wrap=450)
440+
439441
dpg.add_spacer(height=40)
440442

441443
dpg.add_button(label="Select Output Directory", callback=lambda:self.open_output_dir_cb())
@@ -445,21 +447,21 @@ def RunUI(self):
445447

446448
dpg.add_text("General settings:")
447449
self.save_normals_ID = dpg.add_checkbox(label="Save normals", default_value=self.save_normals, callback=self.set_normals_enabled_cb)
448-
450+
449451
dpg.add_spacer(height=5)
450452

451453
with dpg.collapsing_header(label="Pointcloud settings", default_open=False) as header_pcSettings_ID:
452-
self.pointcloud_decimation_ID = dpg.add_checkbox(label="Decimate Pointcloud", default_value=self.decimatePointcloud, callback=self.set_Decimation_enabled_cb)
453-
dpg.add_same_line()
454-
self.decimation_percentage_ID = dpg.add_input_int(label=" %", default_value=self.decimatePercentage, min_value=0, max_value=100, width=80, callback=self.set_Decimation_percentage_cb)
455454

456-
self.pointcloud_merge_ID = dpg.add_checkbox(label= "Merge Points by Distance: ", default_value=self.mergePoints, callback=self.set_Merge_Points_cb)
457-
dpg.add_same_line()
458-
self.merge_distance_ID = dpg.add_input_float(label= "", default_value=self.mergeDistance , callback=self.set_Merge_Distance_cb, min_value=0, width= 200)
455+
with dpg.group(horizontal=True):
456+
self.pointcloud_decimation_ID = dpg.add_checkbox(label="Decimate Pointcloud", default_value=self.decimatePointcloud, callback=self.set_Decimation_enabled_cb)
457+
self.decimation_percentage_ID = dpg.add_input_int(label=" %", default_value=self.decimatePercentage, min_value=0, max_value=100, width=80, callback=self.set_Decimation_percentage_cb)
458+
459+
with dpg.group(horizontal=True):
460+
self.pointcloud_merge_ID = dpg.add_checkbox(label= "Merge Points by Distance: ", default_value=self.mergePoints, callback=self.set_Merge_Points_cb)
461+
self.merge_distance_ID = dpg.add_input_float(label= " ", default_value=self.mergeDistance , callback=self.set_Merge_Distance_cb, min_value=0, width= 200)
459462

460463
self.generate_normals_ID = dpg.add_checkbox(label= "Estimate normals", default_value=self.generateNormals, callback=self.set_Generate_Normals_enabled_cb)
461464

462-
463465
dpg.add_spacer(height=5)
464466

465467
with dpg.collapsing_header(label="Texture settings", default_open=False) as header_textureSettings_ID:
@@ -469,15 +471,14 @@ def RunUI(self):
469471

470472
self.text_error_log_ID = dpg.add_text("", color=[255, 0, 0], wrap=450)
471473
self.text_info_log_ID = dpg.add_text("", color=[255, 255, 255], wrap=450)
472-
474+
473475
self.progress_bar_ID = dpg.add_progress_bar(default_value=0, width=470)
474476
dpg.add_spacer(height=5)
475-
dpg.add_button(label="Start Conversion", callback=lambda:self.start_conversion_cb())
476-
dpg.add_same_line()
477-
dpg.add_button(label="Cancel", callback=lambda:self.cancel_processing_cb())
478-
dpg.add_same_line()
479-
self.thread_count_ID = dpg.add_input_int(label="Thread count", default_value=8, min_value=0, max_value=64, width=100, tag="threadCount")
480477

478+
with dpg.group(horizontal=True):
479+
dpg.add_button(label="Start Conversion", callback=lambda:self.start_conversion_cb())
480+
dpg.add_button(label="Cancel", callback=lambda:self.cancel_processing_cb())
481+
self.thread_count_ID = dpg.add_input_int(label="Thread count", default_value=8, min_value=0, max_value=64, width=100, tag="threadCount")
481482

482483
dpg.show_viewport()
483484
dpg.set_primary_window("main_window", True)
@@ -492,7 +493,7 @@ def RunUI(self):
492493
dpg.render_dearpygui_frame()
493494
jobs = dpg.get_callback_queue()
494495
dpg.run_callbacks(jobs)
495-
496+
496497
if(dpg.is_item_left_clicked(header_pcSettings_ID)):
497498
pointcloud_header_open = not pointcloud_header_open
498499
self.set_viewport_height(pointcloud_header_open, texture_header_open)
@@ -504,7 +505,7 @@ def RunUI(self):
504505
if(self.conversionFinished):
505506
self.finish_conversion()
506507
self.conversionFinished = False
507-
508+
508509
# Shutdown threads when they are still running
509510
self.cancel_processing_cb()
510511
self.save_config()

Converter/Sequence_Metadata.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ def set_metadata_Model(self, vertexCount, indiceCount, headerSize, bounds, geome
7171
self.maxIndiceCount = indiceCount
7272

7373
for maxBound in range(3):
74-
if self.minMaxBounds[maxBound] < bounds.max()[maxBound]:
74+
if abs(self.minMaxBounds[maxBound]) < abs(bounds.max()[maxBound]):
7575
self.minMaxBounds[maxBound] = bounds.max()[maxBound]
7676

7777
for minBound in range(3):
78-
if self.minMaxBounds[minBound + 3] > bounds.min()[minBound]:
78+
if abs(self.minMaxBounds[minBound + 3]) < abs(bounds.min()[minBound]):
7979
self.minMaxBounds[minBound + 3] = bounds.min()[minBound]
8080

8181
# Flip bounds x axis, as we also flip the model's x axis to match Unity's coordinate system

0 commit comments

Comments
 (0)