{"id":24253,"library":"point-cloud-utils","title":"Point Cloud Utils","description":"A Python library for common tasks on 3D point clouds and meshes, including sampling, distance computation (chamfer, Hausdorff, Earth Mover's), normal estimation, mesh reconstruction, and more. Current version: 0.34.0. Released under MIT license (since v0.30.0). Active development with frequent releases.","status":"active","version":"0.34.0","language":"python","source_language":"en","source_url":"https://github.com/fwilliams/point-cloud-utils","tags":["point-cloud","3D-mesh","geometry-processing","chamfer-distance"],"install":[{"cmd":"pip install point-cloud-utils","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core operations on point clouds use numpy arrays.","package":"numpy","optional":false},{"reason":"K-d tree, spatial queries, and interpolation.","package":"scipy","optional":false}],"imports":[{"note":"Most examples use 'pcu' alias.","wrong":"import point_cloud_utils","symbol":"point_cloud_utils","correct":"import point_cloud_utils as pcu"},{"note":"Should import from point_cloud_utils directly, not from the alias.","wrong":"from pcu import chamfer_distance","symbol":"chamfer_distance","correct":"from point_cloud_utils import chamfer_distance"}],"quickstart":{"code":"import point_cloud_utils as pcu\nimport numpy as np\n\n# Load a point cloud from a PLY file\nverts, faces = pcu.load_mesh_vf(\"bunny.ply\")\n\n# Compute chamfer distance between two point clouds\npcd1 = np.random.randn(100, 3).astype(np.float32)\npcd2 = np.random.randn(200, 3).astype(np.float32)\nchamfer_dist, _ = pcu.chamfer_distance(pcd1, pcd2)\nprint(\"Chamfer distance:\", chamfer_dist)\n\n# Downsample point cloud\nsampled_indices = pcu.downsample_point_cloud_uniform(pcd1, 50)\nsampled_pcd = pcd1[sampled_indices]","lang":"python","description":"Basic usage: load mesh, compute chamfer distance, and downsample."},"warnings":[{"fix":"Upgrade to latest version (>=0.30.0) and verify that all needed functions still exist.","message":"In v0.30.0, the license changed from GPL to MIT. All GPL dependencies were removed. If you relied on any functionality that might have been dropped, check the release notes.","severity":"breaking","affected_versions":"<0.30.0"},{"fix":"Update calls to voxelize_mesh to account for the origin shift.","message":"Some functions may have been renamed between versions. For example, 'voxelize_mesh' was changed in v0.30.0 to have the voxel center at origin. Existing code that expects previous behavior may produce different results.","severity":"deprecated","affected_versions":">=0.30.0"},{"fix":"Ensure arrays are np.float32 before passing to pcu functions.","message":"Input point clouds and meshes must often be float32 arrays. Using float64 may silently cause issues or performance degradation.","severity":"gotcha","affected_versions":"all"},{"fix":"Upgrade to v0.32.0 or later if using numpy 2.0+.","message":"In v0.32.0, numpy 2.0 ABI compatibility was fixed. Older versions may crash with numpy 2.0.","severity":"breaking","affected_versions":"<0.32.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install Microsoft Visual C++ Redistributable (2015-2022) from https://aka.ms/vs/17/release/vc_redist.x64.exe.","cause":"Missing or incompatible C++ runtime libraries (e.g., Visual C++ Redistributable on Windows).","error":"ImportError: DLL load failed while importing point_cloud_utils: The specified module could not be found."},{"fix":"Install a version of point-cloud-utils built for your GPU architecture, or use pip install --no-binary point-cloud-utils to build from source with your CUDA setup.","cause":"The library was compiled for a specific CUDA architecture, but the GPU does not support it.","error":"RuntimeError: CUDA error: no kernel image is available for execution on the device"},{"fix":"Update to latest version: pip install --upgrade point-cloud-utils. Double-check the spelling: it's 'chamfer_distance'.","cause":"Using an outdated version that did not have that function, or typo.","error":"AttributeError: module 'point_cloud_utils' has no attribute 'chamfer_distance'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}