{"adoption": {"forks": 608, "observed_at": "2026-08-28T04:07:21.564159+00:00", "stars": 2779}, "canonical_url": "https://ross.abutalabs.com/products/face3d", "card": {"archived": false, "artifact_type": "library", "description": "Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations.", "domain": ["computer-vision", "graphics", "machine-learning"], "enriched": true, "function": ["image-processing", "computer-vision", "graphics"], "health_score": 20, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["yfeng95/face3d"], "name": "yfeng95/face3d", "platform": ["python", "cpp", "cross-platform"], "pushed_at": "2019-10-04T08:41:17+00:00", "repo": "yfeng95/face3d", "stars": 2779, "tags": ["3dmm", "3d-face-reconstruction", "mesh-processing", "cython", "morphable-model", "face-rendering", "rasterization", "obj-mesh", "facial-landmarks"], "topics": [], "urls": [], "use_cases": ["reconstruct a 3D face from a single image with key points", "generate random 3D faces from a morphable model", "fit a 3DMM to 68 facial landmarks", "render a face mesh with different lighting and cameras", "transform and rotate 3D face meshes", "read and write OBJ mesh files for faces", "learn 3D face reconstruction algorithms with readable numpy code"], "what_it_is": "A lightweight Python library implementing core 3D face processing functions: 3D morphable model (3DMM) generation and fitting, mesh I/O, transforms, camera projection, lighting, and rasterization rendering. Performance-critical parts (e.g., rasterization) are compiled from C++ via Cython, while slower numpy versions are kept for readability and learning, with formulas and references included in the code.", "when_to_avoid": ["you need production software - the project has no license file and its last release was in 2019", "you need a general-purpose 3D graphics or mesh tool (consider Open3D, trimesh, or pyrender)", "you want state-of-the-art deep-learning-based 3D face reconstruction rather than classic 3DMM methods", "you need maintained support, bug fixes, or compatibility with recent Python versions"], "when_to_choose": ["you are learning or researching 3D face reconstruction and want clean, formula-annotated implementations", "you need a lightweight mesh processing and rendering toolkit without heavy dependencies like OpenCV or Eigen", "you want to prototype 3DMM fitting or face generation experiments in Python", "you need fast rasterization for face meshes via the compiled Cython modules"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/face3d", "repo": "yfeng95/face3d", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "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:07:21.564159+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.564159+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:16:09.366187+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d913a4a7d71fc6a797c4be91951b92b4d504943ae5ec1bd9ef7670a8b16f3b2", "fetched_at": "2026-08-28T04:07:21.564159+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yfeng95/face3d"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2973, "days_push": 2525, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}