| 
						
						
							
								
							
						
						
					 | 
					@ -211,11 +211,20 @@ def sample_zero_surface_points_and_normals( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        # 获取每个点所在的三角面片的法线 | 
					 | 
					 | 
					        # 获取每个点所在的三角面片的法线 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        normals = trimesh_mesh_ncs.face_normals[face_indices] | 
					 | 
					 | 
					        normals = trimesh_mesh_ncs.face_normals[face_indices] | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        # 检查 face_normals 是否已归一化 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        normals_norm = np.linalg.norm(normals, axis=1) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if not np.allclose(normals_norm, 1.0, atol=1e-5): | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            print("⚠️ 注意:face_normals 未归一化,正在手动归一化...") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            normals = normals / (normals_norm.reshape(-1, 1) + 1e-8) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        # 构造 sdf 标签为 0 的列 | 
					 | 
					 | 
					        # 构造 sdf 标签为 0 的列 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        sdf_zeros = np.zeros((num_samples, 1), dtype=np.float32) | 
					 | 
					 | 
					        sdf_zeros = np.zeros((num_samples, 1), dtype=np.float32) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        # 合并为 (N, 7) 的数组 [xyz, normal, sdf=0] | 
					 | 
					 | 
					        # 合并为 (N, 7) 的数组 [xyz, normal, sdf=0] | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        points_with_normals_sdf = np.hstack([points, normals, sdf_zeros], dtype=np.float32) | 
					 | 
					 | 
					        points_with_normals_sdf = np.hstack([points, normals, sdf_zeros], dtype=np.float32) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        np.random.shuffle(points_with_normals_sdf) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        return points_with_normals_sdf | 
					 | 
					 | 
					        return points_with_normals_sdf | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |