{"adoption": {"forks": 300, "observed_at": "2026-08-28T04:06:50.663256+00:00", "stars": 2422}, "canonical_url": "https://ross.abutalabs.com/products/camera-controls", "card": {"archived": false, "artifact_type": "library", "description": "A camera control for three.js, similar to THREE.OrbitControls yet supports smooth transitions and more features.", "domain": ["web-development", "graphics", "frontend"], "enriched": true, "function": ["animation", "graphics", "ui-components"], "health_score": 75, "homepage": "https://yomotsu.github.io/camera-controls/", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["yomotsu/camera-controls"], "name": "yomotsu/camera-controls", "platform": ["browser", "cross-platform"], "pushed_at": "2026-02-02T04:58:37+00:00", "repo": "yomotsu/camera-controls", "stars": 2422, "tags": ["threejs", "camera-controls", "orbit-controls", "3d", "webgl", "typescript", "react-three-fiber", "game-development", "nodejs"], "topics": ["threejs", "camera", "orbitcontrols"], "urls": [], "use_cases": ["add orbit controls to a three.js scene with smooth damped transitions", "animate camera moves with easing and durations in a 3D web app", "fit a three.js camera to a bounding box or selected object", "implement first-person or third-person camera in a browser 3D game", "prevent the camera from passing through walls with collision detection", "configure custom mouse, touch, and keyboard camera gestures", "use camera controls inside react-three-fiber"], "what_it_is": "A TypeScript camera control library for three.js that extends the capabilities of THREE.OrbitControls with smooth transitions, configurable input mappings, and advanced camera operations like fitting to objects, collision detection, and path animation. It works in plain three.js projects as well as react-three-fiber via drei.", "when_to_avoid": ["you only need basic orbit/zoom/pan and OrbitControls is sufficient", "you're not using three.js or a WebGL 3D framework", "you need camera controls for a non-web engine like Unity or Unreal"], "when_to_choose": ["you need richer camera behavior than THREE.OrbitControls provides", "you want programmatic, tweened camera transitions (fit, dolly, rotate, pan)", "you need configurable input mappings, boundaries, or collision handling", "you're building 3D viewers, configurators, or games with three.js"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/camera-controls", "repo": "yomotsu/camera-controls", "role": "main", "score": 65}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "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:50.663256+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.663256+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:33:02.363579+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dfcadefa9b680591b09f8ebc09a35fb94170e2d2dc3b4c90e6d9dfaac38668b2", "fetched_at": "2026-08-28T04:06:50.663256+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yomotsu/camera-controls"}, {"content_hash": "fc008c86baff09e9d764d88d24228f1eb5a3ee6b6277dab179b6435696669cef", "fetched_at": "2026-08-29T10:13:39.788854+00:00", "kind": "homepage", "missing": false, "url": "https://yomotsu.github.io/camera-controls/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 65, "longevity": 100, "rhythm": 45}, "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": 3334, "days_push": 212, "days_rel": 290, "gap_med": 38.0, "n_releases_24m": 7}, "score": 65, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}