{"adoption": {"forks": 252, "observed_at": "2026-08-28T04:06:35.178046+00:00", "stars": 2296}, "canonical_url": "https://ross.abutalabs.com/products/nvdiffrec", "card": {"archived": false, "artifact_type": "library", "description": "Official code for the CVPR 2022 (oral) paper \"Extracting Triangular 3D Models, Materials, and Lighting From Images\".", "domain": ["computer-vision", "graphics", "machine-learning", "deep-learning"], "enriched": true, "function": ["machine-learning", "deep-learning", "image-processing", "graphics", "simulation"], "health_score": 78, "homepage": null, "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["NVlabs/nvdiffrec"], "name": "NVlabs/nvdiffrec", "platform": ["python", "windows", "cross-platform"], "pushed_at": "2026-08-12T06:42:47+00:00", "repo": "NVlabs/nvdiffrec", "stars": 2296, "tags": ["3d-reconstruction", "inverse-rendering", "differentiable-rendering", "pytorch", "mesh-extraction", "pbr-materials", "research-code", "nvidia", "gpu", "linux"], "topics": ["pytorch", "deep-learning"], "urls": [], "use_cases": ["reconstruct a textured 3D mesh from multi-view photos", "extract PBR materials and lighting from images of an object", "inverse rendering research experiments", "generate triangle meshes with topology optimization from image observations", "compare differentiable isosurfacing techniques like FlexiCubes", "reproduce CVPR 2022 paper results"], "what_it_is": "nvdiffrec is NVIDIA's official implementation of a CVPR 2022 oral paper that jointly optimizes triangular 3D meshes, PBR materials, and lighting from multi-view images using differentiable rendering and marching tetrahedra. It is a research codebase built on PyTorch with CUDA extensions for differentiable rasterization.", "when_to_avoid": ["you need a production-ready photogrammetry tool with a GUI", "you lack a CUDA GPU or cannot build CUDA extensions", "you need a permissively licensed library (it uses the Nvidia Source Code License)", "you only need simple 3D scanning without material/lighting estimation"], "when_to_choose": ["you need research-grade inverse rendering with mesh, material, and lighting joint optimization", "you want to reproduce or extend the nvdiffrec paper", "you have a CUDA-capable GPU and multi-view image datasets", "you want to experiment with differentiable marching tetrahedra or FlexiCubes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nvdiffrec", "repo": "NVlabs/nvdiffrec", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "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:06:35.178046+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.178046+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:40:19.632476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "118c493845fe366a0bf815233586cdb735bca63556341ef5255f4f60ab8e2069", "fetched_at": "2026-08-28T04:06:35.178046+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NVlabs/nvdiffrec"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "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": 1743, "days_push": 21, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}