{"adoption": {"forks": 276, "observed_at": "2026-08-28T04:05:16.869913+00:00", "stars": 1650}, "canonical_url": "https://ross.abutalabs.com/products/easy3d", "card": {"archived": false, "artifact_type": "library", "description": "A lightweight, easy-to-use, and efficient library for processing and rendering 3D data (C++ & Python)", "domain": ["computer-vision", "graphics", "developer-tools", "education"], "enriched": true, "function": ["graphics", "image-processing", "gui", "simulation"], "health_score": 91, "homepage": null, "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["LiangliangNan/Easy3D"], "name": "LiangliangNan/Easy3D", "platform": ["cpp", "python", "windows", "cross-platform"], "pushed_at": "2026-08-26T01:37:24+00:00", "repo": "LiangliangNan/Easy3D", "stars": 1650, "tags": ["3d-geometry-processing", "point-cloud", "surface-mesh", "opengl-rendering", "3d-viewer", "surface-reconstruction", "python-bindings", "macos", "linux"], "topics": ["point-cloud", "mesh", "rendering", "opengl", "viewer", "shader", "3d-modeling", "computer-graphics", "surface-mesh", "reconstruction", "graph", "polyhedral-mesh", "visualization", "data-structure", "geometry-processing"], "urls": [], "use_cases": ["reconstruct a surface mesh from a point cloud", "visualize 3D models like point clouds and meshes in a viewer", "simplify, smooth, or remesh a triangle mesh", "estimate and reorient normals on a point cloud", "build a custom 3D modeling application in C++ or Python", "render point clouds with eye-dome lighting or ambient occlusion", "teach geometry processing with step-by-step tutorials"], "what_it_is": "Easy3D is a lightweight C++ library (with Python bindings) for processing and rendering 3D data such as point clouds, polygonal surface meshes, polyhedral volumes, and graphs. It combines geometry processing algorithms (e.g., Poisson reconstruction, remeshing, simplification) with modern OpenGL/GLSL-based rendering and an extensible 3D viewer.", "when_to_avoid": ["your project requires a permissive license (Easy3D is GPL-3.0)", "you need production-grade, heavily optimized geometry pipelines at industrial scale", "you only need headless geometry algorithms with no rendering or viewer", "you need GPU-accelerated geometry processing beyond rendering"], "when_to_choose": ["you need both geometry processing algorithms and interactive rendering in one lightweight library", "you want a simpler, more visual alternative to PMP or libigl", "you are doing research or education in 3D modeling and geometry processing", "you want Python bindings for 3D data processing without touching raw OpenGL"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/easy3d", "repo": "LiangliangNan/Easy3D", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.869913+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.340965+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4644eaf0dbe77974f1066a8c45d090e7b86c1313b20a759a543036564486c556", "fetched_at": "2026-08-28T04:05:16.869913+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LiangliangNan/Easy3D"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 28}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2835, "days_push": 8, "days_rel": 591, "gap_med": 57.0, "n_releases_24m": 3}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}