painting-3DWorld
Turn the spatial relationships of an original painting into a world you can turn around and move in. The original painting is the basis for composition and modeling; extensions beyond the frame are creative and cannot be attributed to the painter's intent.
The completion condition is passing inspection for each painting on composition, ambient space, sky/upper area, subject details, lighting, and walkthrough. Lighting must not be omitted or left until the user points it out. A web page that opens, valid coordinates, normal frame rate, increased object count, or shadowMap.enabled=true cannot replace these checks. If any item fails, the world remains needs-work, and the entire series must not be reported as complete.
Step 1: Generate Additional Three Directional Views
First, view the actual image and confirm the work, year, collection institution, and specific version. The same theme often has multiple compositions; do not substitute colors from another bridge, train station, or parliament building for the current version. Prioritize museum collection pages and their open image APIs for searches; save source links, download URLs, and license information. When source images contain white borders or captions, use explicit pixel rectangles or CSS cropping to retain the painting itself; do not redraw the so-called original.
Before modeling and formal component inventory, generate three actual views from the original painting: left, right, and back. Use the original painting as the front at 0°; with a fixed default camera position, eye height, and lens scale, rotate 90° left, 90° right, and 180° backward to generate off-canvas content for the same world. Use available image generation/editing tools to preserve painting style, era, lighting, and spatial connections between adjacent objects; review and correct inconsistencies one by one. Before execution, read references/directional-concepts.md for generation constraints and prompt templates. Writing only textual concepts for the three directions does not count as completing this step.
Save the original painting and the three generated views as a four-direction reference set, labeling directions and the nature of the generated views; off-canvas images are spatial design references, not the painter's original or actual 3D rendering evidence. Objects present in the original painting must maintain consistent identity, position, and shape when exposed across directions. If an existing world lacks three-direction references, first supplement them; if existing references are consistent, they can be reused; when spatial design changes, synchronously update affected directions.
Step 2: Four-Directional Analysis, Component Inventory, and Module Creation
Before modeling, write down foreground, midground, background, horizon, main contours, occlusion relationships, and color block proportions. Select 3–6 identifiable anchor points (e.g., mountain peaks, farmhouses, bridgeheads, window frames, or figure groups) and record their normalized coordinates in the original image. First match the initial perspective at the same aspect ratio as the original image, then design for mobile screens. For small screens, FOV may be appropriately expanded; if this exposes empty sky, empty ground, or shrinks the subject to a small central model, supplement space and choose a reasonable cropping/observation angle; do not solve by moving main objects or continuously expanding the FOV.
After verifying the three generated views, write a Unified Spatial Plan for each painting: Based on the original and the left, right, and back views, describe what exists in each direction and above, the identifiable components of the subject, the walkthrough route, and boundaries. For outdoor scenes, explain how near, mid, and far ground connect in each horizontal direction; for indoor scenes, describe corresponding walls, doors, windows, furniture, and adjacent spaces. When planning, read references/world-acceptance.md. Unify all four images into a single world layout, resolve cross-image contradictions in roads, shorelines, buildings, or vegetation, then model in batches.
Before modeling, establish a four-direction component inventory: For each type of object, separately count visible quantities or estimated ranges in the front, left, right, and back views. Record the total number after deduplication across the whole scene, object IDs, image evidence, positions with near/far sizes, coverage per direction, main and auxiliary colors, and key components. The same object appearing across multiple views is built only once; the total scene count must not be a direct sum of visible counts from all four directions. First create and actually render individual objects or representative local groups, compare with the corresponding direction's reference image for corrections, then arrange and combine by inventory category. After combining, recheck actual visible quantities, lighting, and occlusion per direction; do not use "there are already many grass/water lilies in the source code" to replace visible effects. For detailed statistical tables and individual/combination checkpoints, see references/component-inventory.md; read it when creating the inventory or adjusting quantity/density/material color.
Select entity modules based on the actual scene: continuous terrain and paths, water surfaces and shores, complete building shells or interiors, plant volumes, furniture, figures, sky. Reuse underlying geometry and batching capabilities; the terrain, building contours, layout, and main perspective of each painting should be independently designed. Series production must not just swap palettes or replace titles.
Make the World Viable
Supplement spaces beyond the front (both sides, back, and enterable areas) with the same climate, era, and scale. Actual volumes, building side/back faces, tree trunks and canopies, roofs, and water edges must withstand circling inspection. The original painting can serve as a reference or material detail source, but pasting the entire painting onto a plane does not count as completing spatial reconstruction.
The back must have explorable and identifiable spatial relationships. Repeatedly placing a few distant trees, covering with one large grass/water surface, or blanking out areas with thick fog does not count as a supplement. Seas and fields can be open, but shorelines, horizons, vegetation, or traces of human habitation should form a deliberately designed depth of field. Movable boundaries should be consistent with the solid ground; beyond the boundary, a visible buffer landscape zone is needed to avoid seeing scene breaks when turning around or approaching edges.
Every outdoor world explicitly configures a sky or canopy coverage solution. Even if the original painting does not depict the sky, handle the upper view when looking up or when narrow screens expand the FOV; do not let a missing sky configuration table cause silent fallback to the default solid color. Design a sky with brightness, cloud layers, or light gradients according to the painting's climate, and connect it with tree canopies. Clear skies can remain simple; gardens with dense canopies should supplement branches, canopy gaps, and the sky visible through them. Do not use a contentless background color as a completed upper space.
Ground grid, building footprints, plant roots, and the walking camera share homogeneous height rules. Bridge decks, water surfaces, and ground must be distinguishable surfaces; the controller selects the walkable layer based on the current area; verify bridge approach ramps and railings to avoid water surfaces rising with bridge arches or the camera suddenly jumping layers. Set collision or passable boundaries matching shapes for walls, tree trunks, furniture, and water edges. The spawn point and main routes should be clear. For paintings viewed from high above, use explicit free flight mode or build a realistic observation platform; do not treat an airborne camera as ground-level walking.
First adjust main contours, composition, and color blocks, then add brushstrokes and small decorations. Lighting, tone mapping, fog, and textures will change the painting's colors; evaluate these in actual rendering, not by checking hex colors of materials only. Geometric surfaces can use brushstroke textures, per-face color variation, or instanced short brushstrokes; retain readable solid shapes.
Explicitly arrange lighting for each scene in the production plan and accept it as an independent visual checkpoint. Determine the main light source and direction, ambient fill, shadow-receiving surfaces, and shadow/contact darkness based on the original painting; for indoors, especially check window light, under furniture, and corners. Use lighting close to the final scene during individual object rendering; after compositing, check the actual visible light layering, object shadows, and ground contact. Do not use global uniform brightening, texture-baked shading, or overly strong ambient light to flatten volume; do not turn a bright original painting into a dark room just to emphasize shadows. Overcast and diffuse light can be soft; do not forcibly add hard-edged sunlight spots. For implementation and troubleshooting, read the "Indoor Lighting and Final Shading Check" in the lighting reference.
Distinguish material base color, illuminated/dark areas, object shadows, and water reflections. Vertex-baked shading cannot replace actual shadows; repeated water ripples cannot replace reflections of bridges, boats, and trees. When the original painting features white walls as a distinguishing characteristic, the final image should still read as white walls, not default beige houses; check highlights, cool-toned backlit surfaces, and contrast with surrounding woodlands. For fixes involving lighting, water scenes, or dense vegetation, read references/light-water-vegetation.md and adopt actual lighting, shadow, and reflection schemes per the painting.
Vegetation density is based on occlusion and color blocks, not total tree count. When the original painting shows continuous dense forest, close the volume from ground to canopy with staggered crowns, understory shrubs, and rear tree mass; check if sky is still visible directly between trunks. Open woodlands and intentional voids should preserve the original's gaps. Layer by near, mid, and far ground; retain the subject, white walls, bridge openings, and routes; avoid having only a single row of evenly spaced trunks. If the lateral riverbed appears cut off, use a continuation of forested banks, curved shoreline, or low hills to organize the background; new hills are only added as evidence-based or user-approved off-canvas extensions, not imposed on all plains or open water bodies.
Build the subject layer by layer as "contour, structural components, surface material, and connection to the environment." Extract at least three identifiable features from the original painting suitable for the current viewpoint. Bridges, boats, buildings, and furniture that will be seen up close should have structural details supporting their scale and purpose. Bridge openings, volume, and gray material are only the rough model stage; also handle arches/supports, piers, railings, stone variations, and check the bridge's approach on each side and the under-bridge view. Boats must convey hull, gunwale, deck, and corresponding masts and rigging; avoid using large blocks to replace visible structures. Specific components are determined per the original; do not impose the same set of decorations on every painting. For detailed examples, see "Subject Details" in the acceptance reference.
When a user-approved corrected version already exists in the same project, use its subject modeling, detail density, and spatial completeness as the quality baseline for subsequent works. Do not unilaterally downgrade the entire batch to uniform minimal rough models and then claim completion with "stylization." Compare results by contour/occlusion, subject proportions, main color blocks, and key components; do not fabricate a single overall similarity score.
First complete and visually accept one representative work, then expand the series. The shared toolkit can be reused, but composition, lateral expansion, and subject modeling must be designed per painting. After fixing shared sky, terrain, rendering, or camera logic, recheck each affected painting.
Use a restrained interface by default: title, original painting expanded by default in the upper right but collapsible, and necessary touchscreen joystick. Desktop: WASD/arrow keys to move, drag to look around, R to reset to original camera. Follow the user's current choice; do not forcibly add map, navigation, layers, or fullscreen tools. Hidden elements must be re-expandable; touchscreen controls remain clickable.
When Dynamics Are Needed
First, distinguish in the component inventory between fixed structures, rooted plants, fixed-edge fabrics, jointed actions, and complete objects moving along routes. Retain the static reference pose of the original painting; dynamics must not persistently disrupt the initial composition. For figures, first verify clothing, posture (standing/sitting), head-to-body proportions, and handheld objects, then decide which joints are movable; avoid uniformly replacing all figures with the same model. For specific hierarchies, pivot points, shadow, and loop acceptance, see references/living-worlds.md; read it when adding wind, figures, or moving vehicles/boats/birds.
Verification and Delivery
Open through the project server and wait for geometry and textures to load. Take screenshots at the original painting's aspect ratio and mobile viewport, compare side-by-side with the original: subject size and position, sky-to-ground ratio, contours, occlusion, foreground/midground/background layering, color palette, and detail density. For composition checks, hide the original painting panel, also save a screenshot with the panel expanded, to avoid overlapping elements blocking anchor points. Cropping that exists in the original painting itself (e.g., cut-off bridge ends) can continue; the mobile recording should preserve the subject's framing strategy without forcing all anchor points into view. First fix visible major deviations; do not replace composition fixes by increasing the number of trees. When quantitative projection checks are needed, use scripts/project-landmarks.py; its error only measures selected anchor points and does not represent overall visual similarity.
Compare the actual front rendering against the original painting; compare the actual left, right, and back renderings against the corresponding generated views from Step 1, and backfill the four-direction inventory with actual visible counts/coverage and discrepancies. Save both the generated views and the final browser screenshots separately; the former cannot serve as completion evidence for the latter.
Execute the following acceptance checks per painting; do not replace batch acceptance with random sampling:
- At the spawn point, take actual rendered screenshots facing front, approximately 90° left, approximately 90° right, approximately 180° back, and looking up at least 55°. Keep the camera position consistent for these angles. For outdoor scenes, also take at least 75° near-zenith; for canopy-covered scenes, take shots of the canopy edge/gaps and the connection to the sky. The main perspective is only for comparison with the original painting; other perspectives are for finding empty sky, empty back, breaks, and one-sided models.
- Take screenshots after continuous movement along at least two reachable routes using actual keyboard/mouse or touch input. Routes should include moving beyond the original painting frame, and approaching/circling to the side or back of the main structure; verify ground, shore, bridgehead, and model connections. For indoor scenes, choose actually reachable doorways/furniture sides. For locations involving layer changes (bridgeheads, steps, shorelines), save intermediate evidence and record whether layer-jumping or clipping occurred. Simply setting the camera position or flying back to the original perspective does not prove route traversal.
- Open and visually inspect each screenshot one by one; record specific visible content and defects. Blank, overly simplistic, significantly deviating from the original, or only valid from the front must be fixed before retaking photos. Screenshot files existing and filenames saying
reardo not mean the check passed. - Check composition on desktop and mobile; hide/restore original painting, move/reset, touchscreen, window resize, resource loading, and console. Check coordinate limits, index ranges, spawn point, ground height, and collision pathways. Record runtime checks and visual checks separately.
- Independently record lighting acceptance: From actual screenshots, point out the main light direction, bright/dark surfaces, shadows of representative objects, and contact shadows; confirm stability after movement. When expected light and shadows are missing, first check final materials/shaders, light paths, and occlusion; do not accept based on the existence of light objects or shadow toggles. Reuse the screenshots from the above directions, routes, and mobile checks; do not compile a separate set of formal evidence.
When relevant content exists, also check the following in the above screenshots and routes: whether white walls still appear yellowish/greyish, whether the lower edge of distant forests shows sky gaps, whether lateral horizons are closed, whether thin umbrellas/sails miss shadows, and whether reflections connect with the object's waterline, change with perspective, and are broken by ripples. After moving, check shadow stability; on mobile, check reflection performance and actual frame rate; do not substitute desktop results. For detailed judgments, see the Lighting and Water Scenery reference.
Save each painting's plan, subject features, and screenshot evidence according to the acceptance reference. Run python3 scripts/validate-world-evidence.py <manifest.json> --require-passed to check for missing items, incorrect angles, duplicate screenshots, missing files, and failed items; this script only checks evidence structure; image content still requires actual visual inspection.
The series entry shows a real cover image for each world, work and author, category, and an enterable link. When delivering, distinguish between "runnable," "front composition done," and "passed full spatial acceptance;" honestly report worlds that have not passed and their problems. Mark problems separately as visually confirmed defects, insufficient evidence, or old-version evidence. The absence of screenshots cannot be inferred as the scene not being done, nor treated as having passed. Only when evidence for each painting is complete and visual issues are resolved can the entire batch be marked as complete. Deliver a runnable local address and specific completed content; publication still follows the user's authorization scope.
When contours, vegetation density, or camera always deviates from the original painting, refer to references/fidelity-lessons.md, which records actual correction experiences for Mont Sainte-Victoire and the Bridge at Argenteuil.