@@ -139,13 +139,20 @@ def dual_contouring_multi_scalar(
139139 voxel_overlaps = find_repeated_voxels_across_stacks (foo )
140140 if voxel_overlaps and options .debug :
141141 print (f"Found voxel overlaps between stacks: { voxel_overlaps } " )
142- idx_j = voxel_overlaps ["stack_0_vs_stack_3" ]["indices_in_stack_j" ]
143- idx_i = voxel_overlaps ["stack_0_vs_stack_3" ]["indices_in_stack_i" ]
144- meshes [1 ].vertices [idx_j ] = meshes [0 ].vertices [idx_i ]
142+ _f (all_meshes , 1 , 0 , voxel_overlaps )
143+ _f (all_meshes , 2 , 0 , voxel_overlaps )
144+ _f (all_meshes , 3 , 0 , voxel_overlaps )
145+ _f (all_meshes , 4 , 0 , voxel_overlaps )
146+ _f (all_meshes , 5 , 0 , voxel_overlaps )
145147
146148 return all_meshes
147149
148150
151+ def _f (all_meshes : list [DualContouringMesh ], destination : int , origin : int , voxel_overlaps : dict ):
152+ key = f"stack_{ origin } _vs_stack_{ destination } "
153+ all_meshes [destination ].vertices [voxel_overlaps [key ]["indices_in_stack_j" ]] = all_meshes [origin ].vertices [voxel_overlaps [key ]["indices_in_stack_i" ]]
154+
155+
149156def find_repeated_voxels_across_stacks (all_left_right_codes : List [np .ndarray ]) -> dict :
150157 """
151158 Find repeated voxels using NumPy operations - better for very large arrays.
0 commit comments