Avatar
gokaygokay
All ArticlesTwitter
Blockout 2 Real: Giving a Grey Scene Editable Materials and Light
3D2026-11-115 min

Blockout 2 Real: Giving a Grey Scene Editable Materials and Light

An image model proposes the look of a grey room. Blockout 2 Real writes it back as UV textures, PBR materials and fitted lights, then measures a real Blender re-render.

By Gökay Aydoğan

Share:
Explore the project on GitHub

A grey 3D room already contains a lot of decisions: where the sofa goes, how tall the window is, which way the camera looks. Making it feel real adds another set of decisions about materials, texture, light and surface detail.

An image model can propose those decisions quickly. The harder part is getting them back into the room so you can move the camera, edit an object or change the light.

Blockout 2 Real is an open-source skill and toolkit for that loop. It generates a photographic target from a grey scene, decomposes the image into material and geometry estimates, writes the look into Blender, then fits lights against a real Cycles re-render.

Download video
The launch demonstration follows the grey room through target generation, material maps, lighting, review and iteration, then shows camera movement, relighting and a second input scene.

Imagine the room from its own camera

The starting point is a grey blockout with a fixed view. Each object gets an identity, UVs and a description. The workflow can ingest a Blender scene, common mesh formats or a scene specification made from primitives.

Nano Banana 2 proposes a photographic version of that view. The target is conditioned with scene information through a five-level ladder; the workflow selects the weakest level whose image edges still align with the object-id mask.

The alignment rule is only a first check. An image model can change an object while retaining a plausible outline, so the agent still has to inspect the overlays. If the reference invents a different table, the original table does not become that object simply because a texture fits its screen position.

The living-room blockout, the selected photographic target and the final Cycles re-render. The target suggests the appearance; the right-hand image is rendered from the resulting Blender scene.
The living-room blockout, the selected photographic target and the final Cycles re-render. The target suggests the appearance; the right-hand image is rendered from the resulting Blender scene.

Take the image apart before putting it back

A photograph contains both surface appearance and illumination. If a sun patch becomes part of a floor's base color, it stays painted there when you move the light.

The pipeline estimates those components separately. Marigold V2 supplies albedo information, MoGe-3 supplies depth and normals, and PATINA contributes material estimates. The maps are checked before use. In the first room, PATINA's roughness followed the lighting, so that estimate was rejected in favor of local Marigold-IID Appearance roughness.

Those outputs remain estimates. A glossy black side table still rendered too grey, and the replacement roughness map was blurry. Splitting an image into maps makes the assumptions inspectable; it does not make them exact.

The maps are back-projected into each object's UV coordinates through the known camera. Visibility checks prevent sampling through an occluder, and object ids prevent one surface from borrowing another object's pixels. Unseen texels are filled from the same object's visible samples, with coverage recorded.

That produces ordinary textures and Principled BSDF materials attached to the objects. It also explains why a new camera can expose smeared or flat-filled areas that the original view never constrained.

Fit lights with the renderer in the loop

Materials alone do not reproduce the target. The workflow renders candidate lights individually in Cycles, using the scene's actual materials, then solves for non-negative light strengths and colors. Lights that contribute little are pruned, and alternative pruning settings are compared against the target.

The final living-room fit uses a window area light, sky and a hidden ceiling fill. Their recorded image-energy shares are roughly 34%, 11% and 55%. More than half the illumination comes from that virtual fill.

That is useful to know when editing the result. The rig approximates the image's lighting; it is not a recovered measurement of a real room's light sources. The scene still has editable lights whose contribution can be examined individually.

The final scene from its fitted camera, a moved camera and a dusk relight. The new view exposes filled surfaces; the relight changes the same scene's illumination.
The final scene from its fitted camera, a moved camera and a dusk relight. The new view exposes filled surfaces; the relight changes the same scene's illumination.

Keep the target from moving the goalposts

The first room went through three iterations. Each produced a new generated target, a re-render and an error map. LPIPS-AlexNet, a perceptual image-distance metric, guided comparisons; lower values mean closer images under that metric.

A changing target makes the numbers tricky. A better score against a new picture might mean that the new picture became easier, rather than that the scene improved.

The workflow therefore scores every scene against every target. In the recorded matrix, the mean distances across the three targets were 0.171, 0.145 and 0.150 for scenes 0, 1 and 2. Scene 1 was retained. Scene 2's finer foliage looked like dots and did not improve the overall comparison.

Three iterations with blockout, target, re-render and spatial error maps on a fixed scale. The window remains difficult, and adding finer tree geometry in the final row makes the result worse.
Three iterations with blockout, target, re-render and spatial error maps on a fixed scale. The window remains difficult, and adding finer tree geometry in the final row makes the result worse.

The selected scene scores 0.134 against its own target, including the detail-bump pass. That number describes one view under one metric. The tree still reads as textured ellipsoids, contact shadows are weak, and some bump detail is fitted to that camera.

Fresh visual critique provides another kind of evidence. It can identify an implausible plant or an obvious geometry mismatch that an aggregate distance does not explain. Those observations feed the next round of scene edits.

Put a different scene through it

A second test used a home-office corner with a different layout, its own camera, modifiers, an instanced collection, a curve and existing lights. The same commands ran one iteration without code changes.

Its LPIPS distance to the target went from 0.574 for the grey blockout to 0.281 for the re-render, then 0.222 with detail bump. The final scene contained 31 mesh objects and 182 packed textures.

The second input: an office target, its re-render, a moved view and a dusk relight. The target changes the desk supports and plant placement; one pass cannot resolve those geometry differences.
The second input: an office target, its re-render, a moved view and a dusk relight. The target changes the desk supports and plant placement; one pass cannot resolve those geometry differences.

This test also makes the failure mode clear. The generator imagined A-frame desk supports where the blockout had slab legs and moved the plant. Back-projection put those appearances onto the geometry that existed. The critique-and-edit loop is needed to address that mismatch.

Keep the scene after the image

Install the skill for a supported coding agent:

npx skills add gokayfem/blockout-to-real

The repository documents Python dependencies, Blender 5.2+, ffmpeg and the fal key required for target generation and decomposition. A supplied image of the exact view can replace the generated target, while the remaining stages still prepare and fit the scene.

The delivered living room is a normal Blender file with 20 mesh objects, per-object materials, packed textures and fitted lights. It uses no image planes, emission shaders or compositor to paste the target over the render.

The current workflow is fitted to a single view. Glass, mirrors, animation and multi-camera consistency need further work. Moving the camera is possible, but surfaces outside the target's view have weaker evidence.

What interests me is keeping the useful part of the image model's proposal inside an editable world. The generated picture gives the room a direction. The Blender scene lets you continue making decisions after that first picture looks good.

Code, installation and the measured case reports →

3DBlenderCreative EngineeringOpen Source

Enjoyed this article?

Follow me on Twitter for more AI experiments and insights.

Follow @gokayfem

More Articles

View All
Image 2 Low Poly: One Cat, Four Exact Triangle Budgets
01
3D

Image 2 Low Poly: One Cat, Four Exact Triangle Budgets

One cat reference, four Blender meshes: exactly 100, 200, 500 and 1000 triangles. A look at where the triangles go, how the counts are checked, and what the outline scores miss.

Image 2 Sculpt: Turning a Single Image into a Measured 3D Sculpt
02
3D

Image 2 Sculpt: Turning a Single Image into a Measured 3D Sculpt

One image gives you the face, posture and proportions. Image 2 Sculpt builds a sculpt against that evidence, checks the missing views and records the work as a Blender timelapse.

Vesper: Eighteen Rooms of Light in a Connected Three.js World
03
3D

Vesper: Eighteen Rooms of Light in a Connected Three.js World

A walk through eighteen connected places of light, weather and memory. Building Vesper meant giving architecture, interactions and the passages between them equal attention.

Avatar
gokaygokay

© 2026 All rights reserved.