Repository navigation
Blender shot specs (experimental, optional): 3D films, clips and product shots from a JSON spec - #214
Merged
Merged
Conversation
…turns a JSON spec into 3D footage, with a rigged cartoon cast described in JSON, a desk set and a product stage, acting on narration cues, and every camera checked by geometry before a render tools/blender_render.py (doctor, check, render, open) runs Blender headless on lib/blender/. check builds the scene at the film's own shape, verifies each camera (subject in frame, nothing in the way, a moving lens clear of the cast), moves a failing camera, and writes a labelled contact sheet. render makes a film with sound placed on the keyed motion, or one clip per shot (transparent WebM with --alpha) and a clips.json that several specs can share. A mistake in a spec is a named error that lists the choices. Nothing else in the toolkit needs Blender. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
… per shot, transparent if asked, with the shot's own sound and the frame of each acting event Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…ct stage with a phone, a card and a 3D model, and Blender clips inside a Remotion video Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…p and /versions report it as optional, and the roadmap has the next round Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…as well as EEVEE: its backdrop is a step darker, since Cycles measures about 0.01 brighter and one shot sat on the exposure limit Found by running the examples on Linux x64 with Blender 4.2.3 and no GPU: all four specs now pass check there. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
… a laptop, phone or card) no longer fails check as blown out Found making a release-notes video: three cards showing text files failed every shot at 14 to 23% near-white, which was the pages themselves. The check still runs for sets whose screens show no picture. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
Blender as an optional tool in the toolkit, marked experimental. A JSON shot spec becomes 3D footage: a whole film, one clip per shot for another build, or both from the same spec. Nothing else in the toolkit needs Blender, and nothing changes for anyone who doesn't have it.
tools/blender_render.py(doctor,check,render,open) runs Blender headless onlib/blender/.wide,closeup,over_shoulder,pull_out,orbit,reveal), acting is verbs (expression,pose,shake_head), and a beat's time is seconds, a shot-relative time or a narration word (cue:disk is full).checkverifies every camera before a render (about 5 s): subject in frame, nothing in the way, a moving lens clear of the cast. A failing camera is moved by a solver, and a labelled contact sheet is written. It builds at the film's own shape, so a 9:16 spec is judged in 9:16.kits/<name>/cast/and be re-costumed per video.BlenderClipinlib/componentsplays the clips in Remotion, transparent if asked, with each shot's own sound and the frame of every acting event. A Remotion render can also go on the laptop, phone or card in the scene, so a flat scene cuts to itself in 3D.blender-disk-panic(a character film),blender-product-shot(a studio stage),blender-in-remotion(clips inside a Remotion video)./videosuggests a Blender shot where one fits when Blender is installed and says nothing when it isn't./setup,/versionsandverify_setup.pyreport it as optional.blenderskill,docs/blender.md,CLAUDE.md,README.md, the agent skill, the registry and ten roadmap items for the next round.How it was checked
checkon macOS (Blender 5.3, EEVEE and Cycles) and on Linux x64 in a container with no GPU (Blender 4.2.3, Cycles).clips.jsonread back.Known limits
Program Filesand reads and writes UTF-8.qc.py --renderwarns once onblender-in-remotion("motion stops dead" at 17.8 s): the character holds still for a second and a half before a cut. The example's README says so.🤖 Generated with Claude Code