{"adoption": {"forks": 258, "observed_at": "2026-08-28T04:04:48.689596+00:00", "stars": 1466}, "canonical_url": "https://ross.abutalabs.com/products/pyrender", "card": {"archived": false, "artifact_type": "library", "description": "Easy-to-use glTF 2.0-compliant OpenGL renderer for visualization of 3D scenes.", "domain": ["graphics", "computer-vision", "machine-learning", "developer-tools"], "enriched": true, "function": ["graphics", "image-processing", "simulation"], "health_score": 23, "homepage": "http://pyrender.readthedocs.io/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["mmatl/pyrender"], "name": "mmatl/pyrender", "platform": ["python", "windows", "cross-platform"], "pushed_at": "2025-02-07T06:54:10+00:00", "repo": "mmatl/pyrender", "stars": 1466, "tags": ["opengl", "gltf", "pbr", "offscreen-rendering", "3d-visualization", "egl", "osmesa", "trimesh", "linux", "macos"], "topics": ["opengl", "rendering", "3d-graphics", "gltf-viewer", "visualization", "python"], "urls": [], "use_cases": ["render 3D meshes offscreen for machine learning datasets", "view and inspect glTF 2.0 scenes interactively", "generate depth and color images from 3D scenes on headless servers", "convert and render OBJ, STL, PLY, and GLB files via trimesh", "visualize 3D reconstructions with physically-based materials"], "what_it_is": "Pyrender is a pure Python, glTF 2.0-compliant OpenGL renderer for physically-based rendering and visualization of 3D scenes. It includes an interactive scene viewer and a headless offscreen renderer with OSMesa and EGL backends, making it well suited for machine learning pipelines.", "when_to_avoid": ["you need a full game engine or real-time high-performance rendering", "you need Vulkan, DirectX, or ray-tracing capabilities", "you need an actively developed project with frequent updates", "you need rendering outside Python"], "when_to_choose": ["you need lightweight, pip-installable 3D rendering in Python", "you need GPU-accelerated offscreen rendering on headless servers with EGL or OSMesa", "you want glTF 2.0-compliant physically-based rendering with shadows and transparency", "you already use trimesh and want easy mesh rendering"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pyrender", "repo": "mmatl/pyrender", "role": "main", "score": 34}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "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:04:48.689596+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:48.689596+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:35:03.674064+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "762b1dd5b3d9e1e54618783f369618899687050a97ba752616ed855638d7a315", "fetched_at": "2026-08-28T04:04:48.689596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mmatl/pyrender"}, {"content_hash": "a12281f077f92301ed3b35257c3e22f669cbc530ba14ad1c265e20e17667cc6d", "fetched_at": "2026-08-29T11:43:44.771194+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyrender/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 5, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2783, "days_push": 572, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 34, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}