@@ -57,7 +57,11 @@ def compute_dual_contouring(dc_data_per_stack: DualContouringData,
5757 left_right_codes = left_right_codes
5858 )
5959
60- valid_left_right_codes = left_right_codes [dc_data_per_surface .valid_voxels ]
60+ # Handle None left_right_codes case
61+ if left_right_codes is not None :
62+ valid_left_right_codes = left_right_codes [dc_data_per_surface .valid_voxels ]
63+ else :
64+ valid_left_right_codes = None
6165
6266 if TRIMESH_LAST_PASS := True :
6367 vertices_numpy , indices_numpy = _last_pass (vertices_numpy , indices_numpy )
@@ -94,6 +98,9 @@ def _parallel_process_surfaces(dc_data_per_stack, left_right_codes, debug, num_w
9498 surface_indices = list (range (dc_data_per_stack .n_surfaces_to_export ))
9599 chunks = [surface_indices [i :i + chunk_size ] for i in range (0 , len (surface_indices ), chunk_size )]
96100
101+ # Handle None left_right_codes case - ensure we pass a serializable value
102+ serializable_left_right_codes = left_right_codes
103+
97104 try :
98105 # Use spawn context for better PyTorch compatibility
99106 ctx = mp .get_context ("spawn" ) if MULTIPROCESSING_AVAILABLE else mp
@@ -104,7 +111,7 @@ def _parallel_process_surfaces(dc_data_per_stack, left_right_codes, debug, num_w
104111 for chunk in chunks :
105112 result = pool .apply_async (
106113 _process_surface_batch ,
107- (chunk , dc_data_dict , left_right_codes , debug )
114+ (chunk , dc_data_dict , serializable_left_right_codes , debug )
108115 )
109116 async_results .append (result )
110117
0 commit comments