import numpy as np import trimesh from scipy.spatial import Delaunay class ModelGenerator: def __init__(self): pass def depth_to_points(self, depth_map, scale=1.0): """Convert depth map to 3D points""" height, width = depth_map.shape x, y = np.meshgrid(np.arange(width), np.arange(height)) # Create points array points = np.stack([x.flatten(), y.flatten(), depth_map.flatten() * scale], axis=1) return points def generate_mesh(self, points): """Generate a 3D mesh from points""" # Project points to 2D for triangulation points_2d = points[:, :2] # Create triangulation tri = Delaunay(points_2d) # Create mesh mesh = trimesh.Trimesh(vertices=points, faces=tri.simplices) return mesh def save_mesh(self, mesh, filename): """Save the mesh to a file""" mesh.export(filename)