Skip to content

Commit b0d2055

Browse files
Added pointcloud merging support
1 parent a5fdffa commit b0d2055

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

Converter/Sequence_Converter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class SequenceConverterSettings:
2929
decimatePercentage = 0
3030
saveNormals = False
3131
generateNormals = False
32+
mergePoints = False
33+
mergeDistance = 0
3234

3335
maxThreads = 8
3436

@@ -171,6 +173,10 @@ def convert_model(self, file):
171173
self.loadMeshLock.release()
172174
return
173175

176+
if(self.convertSettings.mergePoints):
177+
ms.apply_filter('meshing_merge_close_vertices', threshold= ml.PercentageValue (self.convertSettings.mergeDistance))
178+
179+
174180
normals = None
175181
normals = ms.current_mesh().vertex_normal_matrix().astype(np.float32)
176182
if(len(normals) > 0 and self.convertSettings.saveNormals):

Converter/Sequence_Converter_UI.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class ConverterUI:
5454
generateNormals = False
5555
save_normals = False
5656
decimatePercentage = 100
57+
mergePoints = False
58+
mergeDistance = 0.001
5759

5860
validModelTypes = ["obj", "3ds", "fbx", "glb", "gltf", "obj", "ply", "ptx", "stl", "xyz", "pts"]
5961
validImageTypes = ["jpg", "jpeg", "png", "bmp", "tga"]
@@ -106,10 +108,18 @@ def set_Generate_Normals_enabled_cb(self, sender, app_data):
106108
dpg.set_value(self.save_normals_ID, app_data)
107109
self.write_settings_string("generateNormals", str(app_data))
108110

109-
def set_normales_enabled_cb(self, sender, app_data):
111+
def set_normals_enabled_cb(self, sender, app_data):
110112
self.save_normals = app_data
111113
self.write_settings_string("saveNormals", str(app_data))
112114

115+
def set_Merge_Points_cb(self, sender, app_data):
116+
self.mergePoints = app_data
117+
self.write_settings_string("mergePoints", str(app_data))
118+
119+
def set_Merge_Distance_cb(self, sender, app_data):
120+
self.mergeDistance = app_data
121+
self.write_settings_string("mergeDistance", str(app_data))
122+
113123
def start_conversion_cb(self):
114124

115125
if(self.isRunning):
@@ -151,6 +161,8 @@ def start_conversion_cb(self):
151161
convertSettings.decimatePercentage = self.decimatePercentage
152162
convertSettings.saveNormals = self.save_normals
153163
convertSettings.generateNormals = self.generateNormals
164+
convertSettings.mergePoints = self.mergePoints
165+
convertSettings.mergeDistance = self.mergeDistance
154166

155167
self.converter.start_conversion(convertSettings, self.single_conversion_finished_cb)
156168

@@ -286,8 +298,10 @@ def load_config(self):
286298
self.config['Settings']['ASTC'] = "true"
287299
self.config['Settings']['decimatePointcloud'] = "false"
288300
self.config['Settings']['decimatePercentage'] = "100"
289-
self.config['Settings']['saveNormals'] = "true"
301+
self.config['Settings']['saveNormals'] = "false"
290302
self.config['Settings']['generateNormals'] = "false"
303+
self.config['Settings']['mergePoints'] = "false"
304+
self.config['Settings']['mergeDistance'] = "0.001"
291305
self.save_config()
292306

293307
self.config.read(self.configPath)
@@ -430,14 +444,19 @@ def RunUI(self):
430444
dpg.add_spacer(height=30)
431445

432446
dpg.add_text("General settings:")
433-
self.save_normals_ID = dpg.add_checkbox(label="Save normals", default_value=self.save_normals, callback=self.set_normales_enabled_cb)
447+
self.save_normals_ID = dpg.add_checkbox(label="Save normals", default_value=self.save_normals, callback=self.set_normals_enabled_cb)
434448

435449
dpg.add_spacer(height=5)
436450

437451
with dpg.collapsing_header(label="Pointcloud settings", default_open=False) as header_pcSettings_ID:
438452
self.pointcloud_decimation_ID = dpg.add_checkbox(label="Decimate Pointcloud", default_value=self.decimatePointcloud, callback=self.set_Decimation_enabled_cb)
439453
dpg.add_same_line()
440454
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)
455+
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)
459+
441460
self.generate_normals_ID = dpg.add_checkbox(label= "Estimate normals", default_value=self.generateNormals, callback=self.set_Generate_Normals_enabled_cb)
442461

443462

0 commit comments

Comments
 (0)