Skip to content

03 — Charge: how an agent could make it

Original Blender Studio (dir. Hjalti Hjálmarsson, art director Andy Goralczyk, lead animator Rik Schutte), 2022, open movie: photoreal action · Blender Studio — Charge
Agent-readiness today Partial. The hard-surface factory, the PBR materials, the GN smoke, fire and muzzle-flash FX, and the lighting and rendering are agent-buildable today. The realistic digital human (Einar), his hair groom, facial performance and combat animation are not.
Difficulty 5 (only about 3 minutes, but a believable digital human in heavy action is among the hardest things in CG)
First slice A battery-factory bay built as a modular kit: arrayed shelving racks of glowing battery cells, declared-bevel walls and pipes, CC0 PBR metal and concrete, volumetric haze and a GN muzzle-flash and smoke burst, rendered as a Cycles still plus a short EEVEE camera push-in.
  • Film: “a high-visual-impact, action-packed 3-minutes-long animation inspired by the game cinematics and realtime demos formats” (Blender Studio, verified 2026-10-07).
  • Hero assets:
    • Einar: a realistic old man, sculpted in layers, with a curves-hair groom and facial rig.
    • The security robot: many modelling iterations.
    • Packbot: a smaller robot with driving tests.
    • The battery factory: a hard-surface environment.
  • FX: smoke, fire and muzzle flashes made with Geometry Nodes.
  • Output: rendered with both EEVEE and Cycles comparisons (“EEVEE and Cycles rendering comparisons”, same page).
  • Released: the “Charge Material Asset Library”, as a freebie. Shot files are for subscribers.
  • Shots: the count is not published. For a 3-minute action short, roughly 40–80 is my estimate (interpretation).

Facts:

  • Stages: S01, S02, S03, S04, S05, S07, S08, S09, S10 (index §03).
  • Einar was built with layered sculpting and the then-new curves hair system (index; Layered sculpting for Einar, unverified).
  • Geometry Nodes for smoke and fire, curve-stitching tools for modelling, and advanced facial rigging (Blender Studio, verified).
  • The project began as “Project Heist” and pursued realism through interactive PBR workflows (same page; index).

Interpretation: Charge splits cleanly in two.

  • The world: factory, robots, materials, lighting and FX. This is engineering-shaped: dimensions, modular repetition, physically based values and procedural FX. It is the agent’s natural territory.
  • The human: skin, hair, micro-expression and weight in a fight. This is the uncanny-valley problem, where small errors are fatal and judgement is entirely perceptual.

3. How I would make it: the agent-native plan

Section titled “3. How I would make it: the agent-native plan”
Stage Agent approach Inputs Tooling
S01 Modeling (environment) A modular kit as data: wall panel, floor tile, pillar, pipe run and battery rack. Each part is a low cage with declared Bevel (harden normals), Array, Mirror and Solidify. Racks are a GN instancer over a grid with per-instance variation. Real dimensions for industrial racking (e.g. 2.0 m bays, 0.6 m deep); reference photos bl.py, bmesh-as-data, L-006
S01 Modeling (droid) Blockout as declared primitives plus Booleans, then a support-loop pass. The final hero droid needs a human design pass. Concept art (human) Declared Boolean, Bevel and Weighted Normal stack
S01 Modeling (Einar) Not attempted. Use a CC-BY base mesh only as a stand-in. human-base-meshes-bundle-v1.4.1 (local) —
S02 UV & texturing Box or cube projection on the kit; trim-sheet UVs on panels; numeric stretch checks. Poly Haven CC0 metal, concrete, painted-steel and rust textures; the Charge material library (download) UV by script
S03 Shading PBR from measured values: metalness 0/1, roughness bands, emissive battery cells with a declared colour temperature. Charge Material Asset Library (CC-BY freebie) Shader nodes and asset linking
S04 / S08 FX Muzzle flash as GN instanced emissive cards with a 2–3 frame lifetime. Smoke as a Mantaflow gas burst, or GN points to Volume with animated noise density. Sparks as GN points with gravity. None GN simulation zone; Mantaflow -b bake
S05 Rigging Droid: a mechanical rig of bones parented to parts, with joint limits as data (no skin weights needed). — Armature by script
S07 Animation Droid patrol paths and mechanical cycles are scriptable. Einar’s performance and the fight choreography are human. Previs (human) F-curves by script
S09 Lighting & rendering Practical lights from the declared rack emitters, cold key and warm rim, volumetric haze; Cycles finals and an EEVEE preview. — Headless renders
S10 Compositing Glare on the emitters, lens distortion and grain as a declared compositor graph. — Compositor nodes by script

Build order (for the first slice):

  1. Write the checks first: bay dimensions, rack count, PBR value ranges, haze and emission levels, FX timing.
  2. Set up a clean slate with metric units. Build the kit parts as data, each with its declared modifier stack, and check validity per part.
  3. Lay out a 20 × 12 × 6 m bay: two rows of racks via GN, pillars arrayed at 6 m, and pipe runs along the ceiling.
  4. Import Poly Haven materials (or link the Charge library) and assign them by naming rule (GEO-rack_* gets painted steel, and so on).
  5. Battery cells: an emissive shader with per-instance random flicker driven by a GN attribute.
  6. Add a volume cube with haze density, a key light through a ceiling grille, and the emitters as practicals.
  7. FX beat at frame 48: a GN muzzle flash (2 frames), a spark burst, and a smoke puff.
  8. A camera push-in of 72 frames. Show progress in the window with snap.py, render the Cycles still headless at 1920 × 1080, and render an EEVEE preview of the 72 frames.

4. What works today vs. what needs newblender

Section titled “4. What works today vs. what needs newblender”
  • Works today with the live bridge:
    • Kit parts as bmesh data with declared stacks (proven by the chair demo).
    • GN instancing and simulation zones built by script.
    • Material import and assignment.
    • Volumes, light set-up, the compositor graph, and headless Cycles and EEVEE.
  • Painful today:
    • Hard-surface refinement (support loops, knife cuts, inset panel lines) is local topology surgery with no declarative twin. 59 such operators need edit mode plus selection (05-brief §4; L-001, L-002, L-005). Declared Bevel and Boolean cover most of it, but not all.
    • Boolean cleanup: the results are hard to validate without a returned diff (L-003). The validity check catches non-manifold output after the fact.
    • Mantaflow bakes are operator-only with context polls (L-004).
    • Hair grooming (curves) is brush-driven: comb, cut and puff strokes (L-009). That is a human act with no data API for “comb this way”.
  • Not feasible today:
    • A believable realistic human: skin shading tuned by eye, facial performance, hair groom.
    • Fight choreography with weight and intent.
    • The robot’s character design.

5. Verification plan (RFC 0001 R6, six layers)

Section titled “5. Verification plan (RFC 0001 R6, six layers)”
Layer Check Threshold
1 Validity Each kit part, evaluated: non-manifold edges, degenerate faces, flipped normals, loose verts 0 / 0 / 0 / 0
1 Validity Boolean results: self-intersecting faces (BVH overlap test) 0
2 Spec Bay bounding box 20 × 12 × 6 m ± 2%
2 Spec Rack count / bay spacing 2 rows × 8 racks / 2.0 m ± 1 cm
2 Spec Face budget of the whole bay, evaluated ≤ 1.5 M faces
2 Spec PBR sanity: every metal has metallic = 1 and roughness 0.15–0.7; every dielectric has base-colour luminance 0.03–0.9 100% of materials
2 Spec Muzzle flash visible frames / smoke lifetime 2–3 frames / 24–48 frames
2 Spec Applied scale and naming (GEO-, FX-, LGT-) all 1.0 / 100%
3 Reference Rebuild from the recipe in a fresh headless session: evaluated mesh hash per kit part identical
4 Downstream UV stretch (area-distortion ratio) on textured parts ≤ 1.15 for 95% of faces
4 Downstream Cycles 1080p still at 256 samples with denoise: time, NaN or fireflies (pixels > 50 × the median luminance) < 15 min; 0; < 20
4 Downstream EEVEE preview of 72 frames: seconds per frame ≤ 5 s
5 Appearance (warning) Vision model compares to Charge stills: an industrial, dim, cold-key, photoreal bay warning if under 3/5
6 Taste (owner) Does it read as Charge’s world (oppressive, game-cinematic, real)? owner’s call
  • Einar end to end: the likeness, sculpt detail, skin shading, groom and facial rig. Realism means perceptual judgement in every iteration.
  • Action choreography and animation: weight, impact, and the old man’s desperation.
  • Robot design: the silhouette and the threat it reads as.
  • Art direction: Andy Goralczyk’s palette, the haze level, where the light falls in each shot.
  • The cinematic edit: pacing a 3-minute action piece.
  • First slice (live demo, about 1 day):
    • On screen: in the owner’s window, an empty grid fills with a concrete floor. Then two long rows of steel shelving racks appear and multiply down the hall as the Array and GN instancers take effect. Ceiling pipes and pillars follow.
    • Hundreds of battery cells light up cyan with a slight random flicker. Fog fills the hall, and light shafts come through a ceiling grille.
    • Scrubbing to frame 48 shows a bright muzzle flash, a shower of sparks and a smoke puff.
    • The final Cycles still and a short EEVEE push-in clip render headless, with the check report.
  • Full reproduction:
    • Agent work: about 200–400 agent-hours for the environment, droid modelling support, FX, lighting and render.
    • Render compute: about 4,300 frames × 5–20 min Cycles ≈ 360–1,400 GPU-hours.
    • Human work: the Einar package alone is months of specialist time (sculpt, groom, shading, face rig), plus animation of about 3 minutes of action by a small team. Overall about 1 studio-year, as the original took.
  • The Charge material library licence and download format are not verified here. Fall back to Poly Haven CC0 if needed.
  • The GN smoke look versus Mantaflow: which reads as “real” at the Charge level is untested.
  • EEVEE Next and Cycles parity for emissive-heavy, volumetric scenes may differ from 2022 behaviour.
  • No Charge shot files are on this machine (they are subscriber-only), so layer-3 reference checks against the original are not possible; only self-consistency.