[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92666":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},92666,"blockout","wassermanproductions\u002Fblockout","wassermanproductions","Open Source Desktop App to help with Previs for AI-native filmmaking — stage grey-box scenes, choreograph camera & cast with marks, export motion-reference packages for Seedance\u002FVeo\u002FKling\u002FLTX\u002FWan. Apache-2.0.",null,"TypeScript",68,11,52,0,9,44.14,"Apache License 2.0",false,"main",true,[],"2026-07-22 04:02:06","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"docs\u002Fimages\u002Flogo.png\" alt=\"Blockout logo\" width=\"340\" \u002F>\n\n**Previs for AI-native filmmaking.** Stage a scene, choreograph the camera and cast against marks — the way real sets work — and export a motion-reference package a video generator can't misread.\n\n![Blockout — a downtown car chase staged in Shoot mode](docs\u002Fimages\u002Fhero.png)\n\n\u003C\u002Fdiv>\n\n---\n\nVideo generators produce dramatically better results when you hand them an unambiguous motion reference: a rough 3D render showing exactly the camera move and character blocking you want. Blockout is the fastest path from *\"I can see the shot\"* to *\"the generator can't get it wrong.\"* It exports video + depth pass + stills + a tailored prompt that **Seedance 2.0, Veo 3.1, Kling, LTX 2.3, and Wan 2.2** can follow precisely.\n\nIt is deliberately **not** a 3D art tool. Grey-box mannequins and vehicles at real-world scale, real lens math, and choreography tools are the whole product. The fidelity target is *unambiguous, not beautiful.*\n\n- 🎬 **Real camera optics** — Super 16 \u002F 35 \u002F Full Frame \u002F 65mm sensors, real focal lengths, keyframable zoom, rack focus, aspect masks.\n- 🚶 **Marks-based choreography** — one mental model for camera and actors; editable paths, per-mark easing, gaits, and speed sanity warnings.\n- 🎥 **Coverage model** — a scene owns the blocking; shots own cameras. Shoot the same action from five angles without re-blocking.\n- 👥 **One-click crowds** — dance numbers, brawls, foot and car chases: pick a size and style, click the floor, and the whole choreographed cast stages exactly there. Restyle the entire group later in one click.\n- ✨ **An Animate tab** — 64 character motions (fights, dances, sit\u002Fdrink\u002Fjump, playing cards, squirt-gun) and 25 action paths (plane landings, helicopter orbits, car chases, collapsing debris) always one click away.\n- 🎛️ **27 classic camera moves** — orbits, cranes, drone follows, vertigo dolly-zoom — built around your subject and riding along if it moves.\n- 📦 **Deterministic exports** — the same project renders byte-identical frames on every run. Playback performance never touches the output.\n- 🤖 **Agent-drivable** — a bundled MCP server lets Claude Code, Codex, or any MCP client stage and shoot the scene for you.\n\n---\n\n## The 60-second workflow\n\n1. **STAGE** — drop in one of 50+ environment kits (downtown, residential street, supermarket, movie theater, train car, backyard with pool, sky for aerials…), place people \u002F animals \u002F vehicles \u002F furniture \u002F props from the library, and label your subjects (\"THIEF\", red).\n2. **SHOOT** — select an actor, press `M`, click the floor to drop numbered marks; the actor walks them on your timeline. Frame the camera (or click **MS** to auto-frame a medium shot at your lens), drop camera marks, pick a rig — dolly, steadicam, handheld, crane, drone, car-mount. Scrub, retime, play.\n3. **DELIVER** — pick your generator, click **Export shot package**:\n\n```\nShot-1A\u002Fexport-…\u002F\n├── 1A_reference.mp4      # the motion reference (deterministic render)\n├── 1A_depth.mp4          # depth pass for ComfyUI control workflows\n├── 1A_normal.mp4         # optional normal pass\n├── stills\u002F               # frame at every camera mark + first\u002Flast + top-down blocking diagram\n├── prompt.txt            # generated from your actual blocking, tailored per generator\n├── comfyui-workflow.json # pre-wired depth-conditioning workflow (Wan\u002FLTX profiles)\n├── metadata.json         # machine-readable marks\u002Flenses\u002Ftimings\n└── README.txt\n```\n\nPlus per-scene tools: **animatic export** (all shots stitched), **contact sheet**, and **Blender handoff** (`.glb` with the animated camera + a one-click import script).\n\n---\n\n## Screenshot tour\n\n|  |  |\n|---|---|\n| ![Stage mode: a 20-dancer number on a lit stage](docs\u002Fimages\u002Fstage-crowd.png) | ![Shoot mode: looking through a drone rig following a plane](docs\u002Fimages\u002Fshoot-followcam.png) |\n| **Stage** — one click spawns a whole choreographed crowd. Twenty dancers, mixed styles, every performer individually editable. | **Shoot** — look through the shot camera as a *Follow Behind* drone move rides a climbing plane, aim-locked to the aircraft. |\n| ![Shoot mode: a fight sequence with timeline lanes and the inspector open](docs\u002Fimages\u002Ftimeline-choreo.png) | ![Stage mode: a backyard scene at golden hour](docs\u002Fimages\u002Fbackyard.png) |\n| **Choreograph** — a paired brawl laid out as timeline lanes of mark pills; select a fighter to edit its path in the inspector. | **Light** — a backyard with pool, trampoline, grill, kid and dog, dressed in golden-hour light. Six lighting presets, one click each. |\n\n### Deliver\n\n![Deliver mode: the export panel with a generated, per-generator prompt](docs\u002Fimages\u002Fdeliver.png)\n\nPick a target generator and Blockout writes the prompt from your *actual* blocking — lens, sensor, rig, and every subject's move — then bundles the reference video, depth pass, stills, and a pre-wired ComfyUI workflow.\n\n---\n\n## Feature tour\n\n### Stage\n\nFifty-plus grey-box environment kits and a full library of people, animals, vehicles, furniture, and props — all at real-world scale, all procedurally generated in code. Label subjects with colored callouts, snap things to the ground, and save any staging as a reusable global **preset** (a dinner scene, a driving setup) to start from in any project.\n\n### Shoot\n\nCoverage the way a real set works: the **scene** owns the blocking, each **shot** owns a camera. Drop camera and actor marks on a shared timeline, choose a rig (dolly \u002F steadicam \u002F handheld \u002F crane \u002F drone \u002F car-mount), and get **speed sanity warnings** when a walk implies 6 m\u002Fs. Auto-framing presets (two-shot, OTS, reverse, top, low, dutch) place the camera relative to your labelled subjects. Ghost an existing video — including depth maps — over the viewport as a timeline-synced **reference underlay** to match blocking by eye.\n\n### Deliver\n\nData-driven **generator profiles** define durations, resolutions, reference modes, and prompt templates per model; adding a new generator is a config edit. Exports are **deterministic** — the timeline is stepped at exact fps and rendered offline, so the same project exports byte-identical frames on every run. Projects are a folder of pretty-printed, stable-key-order JSON: diff it, branch it, review it.\n\n### Sequences & presets\n\nStage a whole choreographed crowd in one action — pick **Dance number \u002F Fight \u002F Foot chase \u002F Car chase**, set the head-count (2–60) and style, then **click the floor exactly where you want them**: performers *and* their choreography appear there, facing the camera. A staged sequence is a *starting point*: shift-click the group (their choreography moves with them when you drag) and the **✨ Animate tab** swaps everyone's dance style or path in one click. Non-character performers get motion-path presets too: plane takeoff \u002F landing \u002F flyby, helicopter orbit, bird swoop, falling debris, thrown objects. For the camera, apply one of **27 classic moves** — orbits, cranes, drone follows, whip pans, the vertigo dolly-zoom — each built around your subject and riding along if it moves.\n\n### Agent control\n\nBlockout ships an **MCP server** so an AI agent can drive the running app — stage entities, choreograph marks, reframe, scrub, and grab a viewport screenshot — the same moves you'd make by hand. See **[mcp\u002FREADME.md](mcp\u002FREADME.md)** for the full agent-integration guide.\n\n---\n\n## Install\n\n**Download** a release DMG (macOS) from GitHub Releases, or build from source:\n\n```bash\ngit clone \u003Cthis repo>\ncd blockout\nnpm install\nnpm run dev                    # development, hot reload\n# or\nnpm run build && npm start     # production build\n```\n\nRequirements: **Node 22+**, and **ffmpeg** for exports (bundled via `ffmpeg-static` when packaged; falls back to system `ffmpeg` — `brew install ffmpeg`).\n\nThe packaged DMG is unsigned. For your own machines, right-click → Open bypasses Gatekeeper. For wider distribution, set a Developer ID `identity` and notarization in [electron-builder.yml](electron-builder.yml).\n\n---\n\n## Agent control (MCP)\n\nPoint **Claude Code, Codex, Hermes, or any MCP client** at the bundled MCP server and it can stage the scene, choreograph marks, reframe the camera, scrub the timeline, and pull a viewport screenshot. Register it with Claude Code in one line:\n\n```bash\nclaude mcp add blockout -- node \u002FUsers\u002Feklpse1\u002FDesktop\u002Fblockout\u002Fmcp\u002Fblockout-mcp.mjs\n```\n\nDiscovery and auth are automatic — the app writes a localhost-only port + bearer token to `~\u002F.config\u002Fblockout\u002Fcontrol.json` on launch, and the zero-dependency bridge reads it. There are **26 tools** (from `get_state` and `add_entity` through `spawn_sequence`, `apply_camera_move`, and `screenshot`).\n\n👉 **Full setup, the complete tool table, and a worked session: [mcp\u002FREADME.md](mcp\u002FREADME.md).**\n\n---\n\n## Scripts\n\n| Command | What it does |\n|---|---|\n| `npm run dev` | Run with hot reload |\n| `npm run typecheck` \u002F `npm run lint` | Strict TS + ESLint |\n| `npm test` | Engine unit tests (Vitest) |\n| `npm run smoke` | Build + full end-to-end smoke: boots the app, stages a scene, exports a real package, verifies it with ffprobe, checks byte-determinism |\n| `npm run package` | Build a macOS DMG (`release\u002F`) |\n\n## Project structure\n\nSee [docs\u002FDESIGN.md](docs\u002FDESIGN.md) (product + architecture), [docs\u002FROADMAP.md](docs\u002FROADMAP.md) (build plan + QA program), and [AGENTS.md](AGENTS.md) (how AI agents should build \u002F run \u002F modify this app). The deterministic core lives in `src\u002Fengine\u002F` — pure TypeScript, no DOM, fully unit-tested; `state(t)` is a pure function shared by playback, video export, stills, and glTF baking.\n\n## License & credits\n\n**Apache License 2.0** — see [LICENSE](LICENSE). Free to use, modify, fork, and build on, commercially or otherwise.\n\n**Attribution required:** per the [NOTICE](NOTICE) file (Apache 2.0 §4(d)), any use, fork, or redistribution must retain the NOTICE file and credit **Sam Wasserman ([wassermanproductions.com](https:\u002F\u002Fwassermanproductions.com))** in its documentation and about\u002Fcredits surface.\n\nAll 3D assets are procedurally generated in code — no external asset licenses involved.\n\nCreated by **Sam Wasserman** — [wassermanproductions.com](https:\u002F\u002Fwassermanproductions.com) · [wasserman.ai](https:\u002F\u002Fwasserman.ai).\n","Blockout 是一款面向 AI 原生影视制作的开源预演（Previs）桌面应用，专为快速构建灰盒化场景、精确编排摄像机运动与角色走位而设计。它提供真实镜头光学模型（支持多种传感器规格与焦点控制）、基于标记点的可视化动线编排、覆盖式分镜管理、一键生成人群与预设动作库，并输出包含参考视频、深度图、静态帧及定制化提示词的确定性运动参考包，适配 Seedance、Veo、Kling、LTX 和 Wan 等主流视频生成模型。适用于导演、AI 视频提示工程师及预演团队在早期创意验证与生成指令对齐阶段高效协作。",2,"2026-07-10 02:30:06","CREATED_QUERY"]