6 Commits

Author SHA1 Message Date
ac5407f073 Preserve the pending wall-integrated bed decision with the presentation revision 2026-09-12 23:30:26 +10:00
544ff143f8 Add enhanced house presentation, client film and walkable Unreal prototype 2026-09-12 23:28:13 +10:00
1e337e0551 Note that the bedroom bed is to be built into the wall
Marcus asked for the bed to be integrated into the wall rather than stand as
free furniture, so it stays rigid and quiet in use. Recorded as a requirement
with the detailing and the load-path caveat; the bedroom scene still shows a
free-standing bed and is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 19:06:38 +10:00
0582fc44df Add a garden Buddha and meditation tour chapter 2026-09-10 21:41:51 +10:00
79c5eeddbb Enclose rainwater tanks in a shipping-container module 2026-09-10 21:15:34 +10:00
62713b9e38 Make house project public at Marcus’s request 2026-09-10 21:03:17 +10:00
540 changed files with 17074 additions and 24 deletions

View File

@@ -2,7 +2,7 @@
Read README.md, docs/PROJECT-CONTEXT.md, docs/REQUEST-HISTORY.md and the latest decision record before editing.
- Current model: blender/samford-solarpunk-garden-flow-tour.blend, version 004.
- Current model: blender/samford-solarpunk-presentation-tour.blend, version 007.
- The table-tennis deck was explicitly removed. Do not restore it from older scenes.
- Future child/dwelling pavilions remain ghost outlines. The one built small pavilion is a meditation room.
- Preserve the detailed kitchen, reading library, bedroom sleep setup, sauna, shower, solar, tanks, Starlink, homelab, Tesla garage, training and food-growing features.
@@ -11,6 +11,16 @@ Read README.md, docs/PROJECT-CONTEXT.md, docs/REQUEST-HISTORY.md and the latest
- Incremental source scripts depend on particular prior models. Do not run the whole script history against the current scene; it would duplicate or misplace geometry. Read each script and choose its expected starting model first.
- Validate saved .blend content and inspect actual renders before claiming a scene edit is finished.
- Store a dated decision and a Git commit for intentional revisions. Preserve earlier model versions unless a cleanup is explicitly requested.
- Working files and context stay in the private repository. The public website contains selected images and concept notes.
- Marcus authorised making the repository, working files and design context public. The separate website gallery contains selected images and concept notes.
- This is an illustrative, unsurveyed concept. Do not label materials, engineering, equipment loads, costs or property compliance as verified when they are not.
- No need to create Linear issues unless Marcus explicitly asks.
- Current water storage is a container-style enclosure with two sealed internal tanks. Do not restore the old exposed cylinders from earlier scene files.
- Preserve the garden Buddha north of the meditation room and its chapter 31 tour stop. Latest scene is version 007.
- v007 has a separate client cinematic and an actual whole-site Unreal walking project at unreal/SamfordHomestead. Do not describe Unreal as meditation-only anymore. Read walkthroughs/CLIENT-PRESENTATION-V007.md.
- Never attach evaluated temporary Blender material IDs to persistent meshes: resolve materials through bpy.data.materials by name. Invalid evaluated references caused a save-time crash during this revision and were fixed.
- Test Unreal collision in a fully initialized play world; editor startup traces can run before physics is ready. Set complex-as-simple collision, refresh the mesh section and save.
- Bedroom bed is to be built into the wall, rigid and quiet, not a free-standing frame. Recorded in decisions/2026-09-11-bed-wall-integrated.md and still to be modelled.

View File

@@ -4,7 +4,7 @@ A long-term working project for a modest, extendible family homestead in Samford
## Repository and context
Private Git repository: https://git.rehbock.xyz/marcus/samford-valley-home
Public Git repository: https://git.rehbock.xyz/marcus/samford-valley-home
Read [Project context](docs/PROJECT-CONTEXT.md), [Request history](docs/REQUEST-HISTORY.md) and [Agent notes](AGENTS.md) for the full brief, decisions, rejected ideas and current state. Git contains the actual Blender binaries, not download placeholders. The server working copy is `/home/marcus/projects/samford-valley-home`. Compressed snapshots are kept alongside it but excluded from Git.
@@ -12,10 +12,11 @@ Clone using `git clone ssh://git@git.rehbock.xyz:2222/marcus/samford-valley-home
## Open the current work
- **Blender 5.2.1:** `blender/samford-solarpunk-garden-flow-tour.blend`. Includes the entire homestead, reading chair and 163 books. Its camera tour has 30 chapters and lasts 2 minutes 30 seconds. Hover over the 3D view and press Space to play; Shift + Left Arrow returns to the start. It opens at the overview of the revised garden layout. Earlier bedroom and reading-tour files remain as previous versions.
- **Unreal Engine 5.8.2:** `unreal/SamfordMeditation/SamfordMeditation.uproject`. The saved meditation room includes 152 meshes, 14 materials, lighting and a camera. The Unreal work currently covers this room only; an interactive whole-home walkthrough is future work.
- **Blender 5.2.1:** `blender/samford-solarpunk-presentation-tour.blend`. Includes the entire homestead, reading chair and 163 books. Its camera tour has 31 chapters and lasts 2 minutes 35 seconds. Hover over the 3D view and press Space to play; Shift + Left Arrow returns to the start. It opens at the whole-site overview. Earlier bedroom and reading-tour files remain as previous versions.
- **Walkable Unreal Engine 5.8.2:** `unreal/SamfordHomestead/SamfordHomestead.uproject`. Whole-site editor-play prototype, 229 mesh groups and 117 materials. Play, click the viewport, then WASD and mouse; Escape stops. Fresh-launch play testing verified floor collision and movement from the verandah into the house. The earlier meditation-only study is preserved separately.
- **Client video:** `walkthroughs/video/Samford-Valley-Concept-Film-v007.mp4`, a 30-second captioned H.264 concept film. Read `walkthroughs/CLIENT-PRESENTATION-V007.md` for usage and the source-render/interpolation details.
- **Images:** `renders/` contains the latest compound, detailed kitchen, training terrace and outdoor dining, plus earlier bedroom, reading corner, garage and actual Unreal room studies.
- **Concept layout:** `plans/concept/garden-flow-plan.svg`. Current version 004 replaces the table-tennis deck with flowers, aligns the pavilions and adds curved paths and a central garden court.
- **Concept layout:** `plans/concept/buddha-garden-plan.svg`. Current version 007 includes the container water-storage module and replaces the table-tennis deck with flowers, aligns the pavilions and adds curved paths and a central garden court.
- **Animation instructions:** `walkthroughs/UNREAL-CAMERA-ANIMATION.md`.
## Working in Blender
@@ -74,3 +75,15 @@ The saved camera tour includes all additions. Full Cycles scene settings are 256
Removed the table-tennis deck and all equipment. Aligned the garage with the main pavilion and the meditation room with the parents’ wing. The future east pavilion balances the meditation room; a second future footprint continues the central axis north. Added an oval garden court, curved covered timber breezeway, smooth gravel walks and driveway, 13 flowering beds and eight flowering shrubs. The former play area is now a flower garden. Two concept eucalyptus trees were moved clear of the solar array and vehicle route. The future basketball area remains unbuilt. Updated the 30-chapter tour and refreshed the overview, courtyard, flowers, dining and training renders.
The full conversation context and decision history are now preserved in docs/. Source scripts are retained under source/ for future editing; they are incremental historical tools and must be run against their correct starting model. Survey and LiDAR folders remain reserved for future real-site work.
## Container water-storage revision — 10 September 2026, v005
Marcus asked to make the water tanks a shipping container. Replaced the exposed cylinders with a dark-green 20-foot container-style module (approximately 6.06 × 2.44 × 2.59 m), retaining two sealed water tanks inside. Added corrugated walls, cargo doors and locking bars, corner castings, inlet/outlet manifolds, pump and a first-flush component concept. The container enclosure is not itself the water-retaining vessel. The west end is a transparent inspection cutaway. The garden service path reaches the east cargo doors. Updated tour chapter 13, the plan and exterior/cutaway/overview renders. Product selection, structural/loading checks and hydraulic sizing remain future design work.
## Garden Buddha — version 006, 10 September 2026
Added a seated weathered-limestone Buddha on a low stone plinth north of the meditation pavilion, facing east into the shared garden court. The statue has a draped robe, folded hands, lowered eyes, elongated earlobes and a carved topknot. Position (-12.4, 15.35), clear of both the room and curved walking route. Added a lightweight viewport proxy and chapter 31 to the Play tour (2 min 35 sec total). The scene opens on the statue. Existing house, container water module, future shadows and landscaping remain intact.
## Presentation and whole-site walkthrough — 12 September 2026, v007
Refined natural materials, softened 420 construction/furniture edges, added woven kitchen pendants, table settings, living textiles, fuller planted borders and path aggregate. Preserved the layout and all 31 inspection chapters. Created a separate eight-shot cinematic and 30-second client concept film. Converted the whole site to an actual Unreal level with walking, collision, lighting and cameras; fresh-launch play testing passed. It remains an editable prototype rather than a packaged client app or final photorealistic campaign asset.

View File

@@ -0,0 +1,26 @@
{
"version": 7,
"beveled_objects": 420,
"materials_refined": [
"Bamboo lining - golden fibres",
"Eight Sleep charcoal cover textile",
"Honed natural marble - ivory and warm grey veins",
"Meditation cushion charcoal linen",
"Naturally silvered hardwood - horizontal X",
"Naturally silvered hardwood - horizontal Y",
"Oiled spotted gum posts - vertical grain",
"Reading chair moss linen",
"Reading lamp undyed linen shade",
"Sauna thermally modified timber staves",
"Soft warm clay plaster - natural mineral texture",
"Split sandstone facing - mineral grain",
"Undyed flax linen",
"Unpainted hardwood - long X grain",
"Unpainted hardwood - long Y grain",
"Warm oxide polished concrete - fine aggregate"
],
"new_detail_objects": 171,
"new_leaf_faces": 22232,
"tour_chapters": 31,
"tap_connection_corrected": true
}

View File

@@ -0,0 +1,53 @@
{
"required_features": {
"ISLAND - honed marble countertop": true,
"FAST | Garden Buddha statue": true,
"CONTAINER WATER - steel base frame": true,
"Living woven jute rug": true,
"Fuller garden borders - curved lanceolate leaves": true,
"FAST | Crafted details and fuller gardens": true
},
"render": [
"CYCLES",
2560,
1440,
100
],
"ghosts": 26,
"captions": [
"01 / ONE CONNECTED GARDEN HOMESTEAD",
"02 / LIVING PAVILION & VERANDA",
"03 / KITCHEN & EXPOSED STRUCTURE",
"04 / DINING & OPEN LIVING",
"05 / ONE SERVER - LOCAL AI",
"06 / SHORT CORRIDOR TO PRIVATE ROOMS",
"07 / ADJACENT BEDROOM WING",
"08 / ENCLOSED BEDROOM",
"09 / BATHROOM - SEPARATE LOBBY DOOR",
"10 / FINNISH SAUNA & OUTDOOR SHOWER",
"11 / SAUNA BENCHES & STONE HEATER",
"12 / OUTDOOR SHOWER",
"13 / CONTAINER RAINWATER STORAGE",
"14 / ROOFTOP SOLAR & STARLINK",
"15 / SOLAR ARRAY & ENERGY STORAGE",
"16 / FOOD GARDEN & GREENHOUSE",
"17 / INSIDE THE GREENHOUSE",
"18 / QUIET MEDITATION ROOM",
"19 / CUSHION, CANDLES & STILLNESS",
"20 / GRAVEL ROAD & GARAGE",
"21 / TESLA, SOLAR CHARGING & WORKSHOP",
"22 / BALANCED FUTURE PAVILIONS",
"23 / RECTANGLES AND GARDEN CURVES",
"24 / BOOKS & A QUIET READING CORNER",
"25 / TRAINING & STRENGTH",
"26 / OUTDOOR TABLE & MATCHA",
"27 / FLOWERING GARDEN - ROOM TO BREATHE",
"28 / FLOWING WALKS AND GARDEN COURT",
"29 / EASY EVERYDAY FOOD",
"30 / COPPER & MARBLE KITCHEN",
"31 / QUIET GARDEN BUDDHA"
],
"no_ping_pong": true,
"material_references_valid": true,
"status": "PASS"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
{
"buddha_collection_objects": 281,
"viewport_proxy": true,
"tour_chapters": 31,
"caption_issues": [],
"path_clearance_m": 0.165,
"statue_outside_room": true,
"internal_water_tanks": 2,
"kitchen_preserved": true,
"no_table_tennis": true,
"render_size": [
2560,
1440,
100
]
}

View File

@@ -0,0 +1,12 @@
{
"container_dimensions_m": [
6.06,
2.44,
2.59
],
"internal_tanks": 2,
"old_exposed_tanks_removed": true,
"west_inspection_cutaway": true,
"tour_chapters": 30,
"removed_old_objects": 34
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
{
"internal_tanks": 2,
"old_exposed_tanks_removed": true,
"container": true,
"tour_chapters": 30,
"caption_issues": [],
"render_size": [
2560,
1440,
100
],
"kitchen_preserved": true,
"no_table_tennis": true
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,188 @@
[
{
"title": "01 / ONE CONNECTED GARDEN HOMESTEAD",
"start": 1,
"end": 120,
"seconds": 5
},
{
"title": "02 / LIVING PAVILION & VERANDA",
"start": 121,
"end": 240,
"seconds": 5
},
{
"title": "03 / KITCHEN & EXPOSED STRUCTURE",
"start": 241,
"end": 360,
"seconds": 5
},
{
"title": "04 / DINING & OPEN LIVING",
"start": 361,
"end": 480,
"seconds": 5
},
{
"title": "05 / ONE SERVER - LOCAL AI",
"start": 481,
"end": 600,
"seconds": 5
},
{
"title": "06 / SHORT CORRIDOR TO PRIVATE ROOMS",
"start": 601,
"end": 720,
"seconds": 5
},
{
"title": "07 / ADJACENT BEDROOM WING",
"start": 721,
"end": 840,
"seconds": 5
},
{
"title": "08 / ENCLOSED BEDROOM",
"start": 841,
"end": 960,
"seconds": 5
},
{
"title": "09 / BATHROOM - SEPARATE LOBBY DOOR",
"start": 961,
"end": 1080,
"seconds": 5
},
{
"title": "10 / FINNISH SAUNA & OUTDOOR SHOWER",
"start": 1081,
"end": 1200,
"seconds": 5
},
{
"title": "11 / SAUNA BENCHES & STONE HEATER",
"start": 1201,
"end": 1320,
"seconds": 5
},
{
"title": "12 / OUTDOOR SHOWER",
"start": 1321,
"end": 1440,
"seconds": 5
},
{
"title": "13 / CONTAINER RAINWATER STORAGE",
"start": 1441,
"end": 1560,
"seconds": 5
},
{
"title": "14 / ROOFTOP SOLAR & STARLINK",
"start": 1561,
"end": 1680,
"seconds": 5
},
{
"title": "15 / SOLAR ARRAY & ENERGY STORAGE",
"start": 1681,
"end": 1800,
"seconds": 5
},
{
"title": "16 / FOOD GARDEN & GREENHOUSE",
"start": 1801,
"end": 1920,
"seconds": 5
},
{
"title": "17 / INSIDE THE GREENHOUSE",
"start": 1921,
"end": 2040,
"seconds": 5
},
{
"title": "18 / QUIET MEDITATION ROOM",
"start": 2041,
"end": 2160,
"seconds": 5
},
{
"title": "19 / CUSHION, CANDLES & STILLNESS",
"start": 2161,
"end": 2280,
"seconds": 5
},
{
"title": "20 / GRAVEL ROAD & GARAGE",
"start": 2281,
"end": 2400,
"seconds": 5
},
{
"title": "21 / TESLA, SOLAR CHARGING & WORKSHOP",
"start": 2401,
"end": 2520,
"seconds": 5
},
{
"title": "22 / BALANCED FUTURE PAVILIONS",
"start": 2521,
"end": 2640,
"seconds": 5
},
{
"title": "23 / RECTANGLES AND GARDEN CURVES",
"start": 2641,
"end": 2760,
"seconds": 5
},
{
"title": "24 / BOOKS & A QUIET READING CORNER",
"start": 2761,
"end": 2880,
"seconds": 5
},
{
"title": "25 / TRAINING & STRENGTH",
"start": 2881,
"end": 3000,
"seconds": 5
},
{
"title": "26 / OUTDOOR TABLE & MATCHA",
"start": 3001,
"end": 3120,
"seconds": 5
},
{
"title": "27 / FLOWERING GARDEN - ROOM TO BREATHE",
"start": 3121,
"end": 3240,
"seconds": 5
},
{
"title": "28 / FLOWING WALKS AND GARDEN COURT",
"start": 3241,
"end": 3360,
"seconds": 5
},
{
"title": "29 / EASY EVERYDAY FOOD",
"start": 3361,
"end": 3480,
"seconds": 5
},
{
"title": "30 / COPPER & MARBLE KITCHEN",
"start": 3481,
"end": 3600,
"seconds": 5
},
{
"title": "31 / QUIET GARDEN BUDDHA",
"start": 3601,
"end": 3720,
"seconds": 5
}
]

View File

@@ -0,0 +1,182 @@
[
{
"title": "01 / ONE CONNECTED GARDEN HOMESTEAD",
"start": 1,
"end": 120,
"seconds": 5
},
{
"title": "02 / LIVING PAVILION & VERANDA",
"start": 121,
"end": 240,
"seconds": 5
},
{
"title": "03 / KITCHEN & EXPOSED STRUCTURE",
"start": 241,
"end": 360,
"seconds": 5
},
{
"title": "04 / DINING & OPEN LIVING",
"start": 361,
"end": 480,
"seconds": 5
},
{
"title": "05 / ONE SERVER - LOCAL AI",
"start": 481,
"end": 600,
"seconds": 5
},
{
"title": "06 / SHORT CORRIDOR TO PRIVATE ROOMS",
"start": 601,
"end": 720,
"seconds": 5
},
{
"title": "07 / ADJACENT BEDROOM WING",
"start": 721,
"end": 840,
"seconds": 5
},
{
"title": "08 / ENCLOSED BEDROOM",
"start": 841,
"end": 960,
"seconds": 5
},
{
"title": "09 / BATHROOM - SEPARATE LOBBY DOOR",
"start": 961,
"end": 1080,
"seconds": 5
},
{
"title": "10 / FINNISH SAUNA & OUTDOOR SHOWER",
"start": 1081,
"end": 1200,
"seconds": 5
},
{
"title": "11 / SAUNA BENCHES & STONE HEATER",
"start": 1201,
"end": 1320,
"seconds": 5
},
{
"title": "12 / OUTDOOR SHOWER",
"start": 1321,
"end": 1440,
"seconds": 5
},
{
"title": "13 / CONTAINER RAINWATER STORAGE",
"start": 1441,
"end": 1560,
"seconds": 5
},
{
"title": "14 / ROOFTOP SOLAR & STARLINK",
"start": 1561,
"end": 1680,
"seconds": 5
},
{
"title": "15 / SOLAR ARRAY & ENERGY STORAGE",
"start": 1681,
"end": 1800,
"seconds": 5
},
{
"title": "16 / FOOD GARDEN & GREENHOUSE",
"start": 1801,
"end": 1920,
"seconds": 5
},
{
"title": "17 / INSIDE THE GREENHOUSE",
"start": 1921,
"end": 2040,
"seconds": 5
},
{
"title": "18 / QUIET MEDITATION ROOM",
"start": 2041,
"end": 2160,
"seconds": 5
},
{
"title": "19 / CUSHION, CANDLES & STILLNESS",
"start": 2161,
"end": 2280,
"seconds": 5
},
{
"title": "20 / GRAVEL ROAD & GARAGE",
"start": 2281,
"end": 2400,
"seconds": 5
},
{
"title": "21 / TESLA, SOLAR CHARGING & WORKSHOP",
"start": 2401,
"end": 2520,
"seconds": 5
},
{
"title": "22 / BALANCED FUTURE PAVILIONS",
"start": 2521,
"end": 2640,
"seconds": 5
},
{
"title": "23 / RECTANGLES AND GARDEN CURVES",
"start": 2641,
"end": 2760,
"seconds": 5
},
{
"title": "24 / BOOKS & A QUIET READING CORNER",
"start": 2761,
"end": 2880,
"seconds": 5
},
{
"title": "25 / TRAINING & STRENGTH",
"start": 2881,
"end": 3000,
"seconds": 5
},
{
"title": "26 / OUTDOOR TABLE & MATCHA",
"start": 3001,
"end": 3120,
"seconds": 5
},
{
"title": "27 / FLOWERING GARDEN - ROOM TO BREATHE",
"start": 3121,
"end": 3240,
"seconds": 5
},
{
"title": "28 / FLOWING WALKS AND GARDEN COURT",
"start": 3241,
"end": 3360,
"seconds": 5
},
{
"title": "29 / EASY EVERYDAY FOOD",
"start": 3361,
"end": 3480,
"seconds": 5
},
{
"title": "30 / COPPER & MARBLE KITCHEN",
"start": 3481,
"end": 3600,
"seconds": 5
}
]

View File

@@ -0,0 +1,3 @@
# Public project repository
Marcus explicitly requested that the existing Samford Valley home repository be made public. Retain the models, project context and revision history, and change the repository visibility to public.

View File

@@ -0,0 +1,5 @@
# Container rainwater storage
Replaced the exposed rainwater cylinders with a dark-green 20-foot container-style enclosure at the existing water-service area. Water is stored in two separate sealed internal tanks; the steel container shell is not used as the water-retaining vessel. Added cargo door hardware, corrugations, support piers, manifold/plumbing concepts, pump and first-flush component, and a west inspection cutaway. Kept the east cargo-door approach clear. Updated chapter 13 while preserving the 30-chapter tour and all other approved features.
Verified both tanks fit inside the container bounds, old exposed-tank objects are absent, all captions match, the kitchen and no-table-tennis decision remain intact, and full render settings remain 2560 × 1440. Inspected actual Cycles exterior and cutaway renders.

View File

@@ -0,0 +1,5 @@
# Garden Buddha
Added a seated weathered-limestone Buddha on a low stone plinth north of the meditation pavilion, facing east into the shared garden court. The statue has a draped robe, folded hands, lowered eyes, elongated earlobes and a carved topknot. Position (-12.4, 15.35), clear of both the room and curved walking route. Added a lightweight viewport proxy and chapter 31 to the Play tour (2 min 35 sec total). The scene opens on the statue. Existing house, container water module, future shadows and landscaping remain intact.
Verified the saved Blender file, all 31 captions, full 2560 × 1440 render settings, path clearance and retained kitchen/container features. Inspected a Cycles preview of the finished sculpture.

View File

@@ -0,0 +1,23 @@
# Wall-integrated bed
Marcus asked that the bedroom bed be built into the wall rather than stand as
free furniture, so that it stays rigid and quiet in use instead of rocking,
creeping across the floor or knocking against the lining.
Requirement for the Blender bedroom and for eventual builder documentation:
- Bed platform fixed to the bedroom wall framing, not a free-standing frame on legs.
- Load carried into the wall structure and the floor, so the bed cannot slide or rack.
- Head end hard against the wall, with no separate headboard able to knock the lining.
- Detailed for quiet: isolate the mattress platform from the wall sheeting and avoid
metal-on-metal fixings that develop a creak.
- Keep under-bed and bedside access for the Eight Sleep hub cabling and for cleaning.
- Retain the existing sleep setup: Eight Sleep Pod cover, ventilated bedside hub,
indoor/outdoor air conditioning, lined blackout curtains, timber and linen finishes.
Not yet modelled. The bedroom scene still shows a free-standing bed; fold this
into the next bedroom revision along with the chapter 08 camera framing.
Concept-stage note: the wall framing, fixings and load path for a cantilevered or
wall-hung platform have not been engineered. A builder or engineer has to confirm
the wall can take it before this is treated as buildable.

View File

@@ -0,0 +1,9 @@
# Presentation and walkable homestead
Improve the approved concept for communication without redesigning the buildings. New natural-finish detail, 420 softened edges, woven pendants, table settings, textiles and fuller planting. Keep editable full detail plus a lightweight display. Preserve the 31-chapter inspection tour and create a separate eight-shot camera edit.
Deliver a 30-second silent H.264 concept film, with honest documentation of source frame size, interpolation and output size. Add the complete site to a new UE 5.8.2 project with grouped geometry, portable material maps, bundled ArchVisCharacter, and complex mesh collision. Test actual Play mode after asset/physics initialization. Do not conflate the earlier meditation-only study with the new whole-site prototype, or label the prototype a packaged application.
Verification: saved Blender feature/caption/material checks; inspected Cycles stills and film contact sheet; MP4 codec/duration/dimensions checked; saved Unreal scene and actual captures inspected; eight floor traces and possessed-character walking passed on a fresh launch.
Final review repaired the mixer upright hidden by the clay lining and replaced the obstructed bedroom film shot with a clear interior view. The final model and clip contain a visible connected copper riser. The Unreal map includes the matching small cylinder; apply Content/Python/fix_tap_connection.py after rebuilding from the base transfer FBX.

View File

@@ -2,11 +2,11 @@
This is Marcus Rehbock's long-term personal homestead design project. The aim is to refine the design over several years, choose a real site, add survey and LiDAR information, coordinate construction plans, and eventually create a full Unreal Engine 5 walkthrough. The design is a working concept, not an approved or engineered building proposal.
## Current state: version 004, 10 September 2026
## Current state: version 007, 12 September 2026
Open `blender/samford-solarpunk-garden-flow-tour.blend` in Blender 5.2.1. This is the current model. It includes the detailed kitchen and bedroom upgrades, a garden-centred arrangement, 13 flowering beds, and a 30-chapter camera tour lasting 2 minutes 30 seconds at 24 fps. The former table-tennis platform and its equipment have been removed. Earlier dated scene files are historical versions.
Open `blender/samford-solarpunk-presentation-tour.blend` in Blender 5.2.1. This is the current model. It includes the detailed kitchen and bedroom upgrades, a garden-centred arrangement, 13 flowering beds, and a 31-chapter camera tour lasting 2 minutes 35 seconds at 24 fps. The former table-tennis platform and its equipment have been removed. Earlier dated scene files are historical versions.
The latest plan is `plans/concept/garden-flow-plan.svg`. It is generated from the same `garden-flow-layout.json` coordinates used by the Blender revision. Current images are `renders/garden-flow-overview.png`, `garden-court.png`, `flowering-kitchen-garden.png`, `garden-flow-dining.png` and `garden-flow-training.png`.
The latest plan is `plans/concept/buddha-garden-plan.svg`. It is generated from the same `buddha-garden-layout.json` coordinates used by the Blender revision. The Buddha close-up is `renders/buddha-garden.png`. Other current images are `renders/container-water-overview.png`, `container-water.png` and `container-water-cutaway.png`. The preceding garden revision also has courtyard, planting, dining and training detail renders.
## Philosophy and values
@@ -58,20 +58,36 @@ Marcus prefers “warm timber, soft clay walls, selective hemp insulation, stone
## Energy and homesteading
Keep rooftop solar, a separate ground array (current conceptual footprint centred at 9.4, -19), off-grid energy storage, two dark-green cylindrical rainwater tanks, greenhouse, six raised vegetable beds, fruit trees and garden harvest bench. Product capacities, structural design, solar yield, battery autonomy, water balance, wastewater treatment and food-production targets have not been engineered.
Keep rooftop solar, a separate ground array (current conceptual footprint centred at 9.4, -19), off-grid energy storage, two sealed rainwater tanks inside a dark-green container-style enclosure, greenhouse, six raised vegetable beds, fruit trees and garden harvest bench. Product capacities, structural design, solar yield, battery autonomy, water balance, wastewater treatment and food-production targets have not been engineered.
## Blender and Unreal state
Blender has full editable geometry and Cycles materials. Saved render settings are 2560 × 1440 at 100%; web preview renders are made at 60% (1536 × 864). The user previously reported low playback FPS. `00 FAST TOUR - lightweight viewport` is a static simplified display; `DETAIL - full geometry for renders` is disabled only in the viewport. Cycles renders exclude FAST and use DETAIL automatically. For detailed editing, enable DETAIL and disable FAST. After moving or removing geometry, refresh the affected fast copies as well.
The tour contains 30 five-second chapters. Space plays/pauses with the pointer over the 3D view; Shift+Left Arrow returns to frame 1. The current scene opens at the overview. Update camera positions and captions whenever a subject moves.
The tour contains 31 five-second chapters. Space plays/pauses with the pointer over the 3D view; Shift+Left Arrow returns to frame 1. The current scene opens at the site overview; the Buddha remains chapter 31. Update camera positions and captions whenever a subject moves.
The **actual Unreal work covers only the meditation room**. `unreal/SamfordMeditation/SamfordMeditation.uproject` is the UE 5.8.2 project, with room geometry, materials, light and camera. It is not a complete Unreal homestead. FBX/GLB exports and textures are retained. Camera animation instructions are in `walkthroughs/UNREAL-CAMERA-ANIMATION.md`. A complete interactive home/site walkthrough remains future work.
The actual Unreal work now includes the **whole-site walkable prototype**, `unreal/SamfordHomestead/SamfordHomestead.uproject`, in UE 5.8.2: 229 imported mesh groups, 117 materials, 179 collision-enabled mesh groups, bundled architectural walking pawn, lighting and saved cameras. A fresh-launch play test passed eight floor traces and moved the possessed walking pawn about 3.45 metres from the verandah into the living entry. The earlier meditation study remains historical. This is editor Play mode, not a packaged standalone app. `walkthroughs/CLIENT-PRESENTATION-V007.md` records controls and limitations.
## Storage and continuation
Private repository: https://git.rehbock.xyz/marcus/samford-valley-home . Server working archive/repository: `/home/marcus/projects/samford-valley-home`. Public gallery: https://rehbock.xyz/projects/samford-valley-home/ . Only selected images, public descriptions and a concept SVG are in the public website; working assets belong in the private project.
Public repository: https://git.rehbock.xyz/marcus/samford-valley-home . Server working archive/repository: `/home/marcus/projects/samford-valley-home`. Public gallery: https://rehbock.xyz/projects/samford-valley-home/ . The gallery contains selected images, descriptions and a concept SVG. Marcus subsequently authorised making this repository, its working assets and design context public.
The repository includes Blender models, renders, plans, design context, revision records, source scripts, Unreal assets and reserved folders for survey/LiDAR/construction information. Dated compressed snapshots remain in the server archive and are excluded from Git to avoid duplicating the entire repository in each commit. Git LFS is disabled on the existing Gitea installation; current assets are stored as ordinary Git binaries. Plan large-file/object storage before adding multi-gigabyte LiDAR or video datasets. No new off-site backup service has been configured.
Read `REQUEST-HISTORY.md`, the decisions folder and `AGENTS.md` before making further changes. Do not mistake historical renders or earlier briefs for the current approved layout.
## Version 005 water module
Marcus requested that the water tanks become a shipping container. The visible module is a roughly 20-foot corrugated-steel container at (-25, -8), 6.06 × 2.44 × 2.59 m. Two separate sealed tanks fit inside; the steel shell is an enclosure, not the water-retaining vessel. The cargo doors are at the east end and the west end is a transparent inspection cutaway. Plumbing is kept off the door faces, and the service path approaches the east end. Current renders: container-water.png, container-water-overview.png and container-water-cutaway.png. Exact tank products/capacities, water quality treatment, hydraulic sizing and container support design are not resolved by the concept model.
## Garden Buddha — version 006, 10 September 2026
Added a seated weathered-limestone Buddha on a low stone plinth north of the meditation pavilion, facing east into the shared garden court. The statue has a draped robe, folded hands, lowered eyes, elongated earlobes and a carved topknot. Position (-12.4, 15.35), clear of both the room and curved walking route. Added a lightweight viewport proxy and chapter 31 to the Play tour (2 min 35 sec total). The scene opens on the statue. Existing house, container water module, future shadows and landscaping remain intact.
## Version 007 presentation work
Marcus requested more overall Blender fidelity, a start on a walkable UE5 simulation, and a video suitable for showing the house concept to clients. Enhanced materials, softened edges, woven pendants, ceramics, living textiles, leaf geometry and path detail preserve the existing programme and coordinates. Current Blender stills are presentation-overview.png, presentation-kitchen.png and presentation-garden.png. The separate cinematic has eight three-second animated shots. The client MP4 adds opening/closing cards for 30 seconds total. It is 1080p/24 fps delivery from 1440×810 Cycles source frames at 6 fps, interpolated within each shot and upscaled. It has no audio. Describe it as a first concept presentation rather than final photorealistic marketing output.
## Pending wall-integrated bed requirement
A 11 September 2026 note requests that the bed be rigidly built into wall framing with a considered load path, quiet isolation and Eight Sleep access. This was recorded without a geometry edit in decisions/2026-09-11-bed-wall-integrated.md. The v007 presentation retains the current free-standing bed; incorporate the wall-integrated platform in the next bedroom design revision, with its fixings and load path still subject to engineering.

View File

@@ -36,3 +36,26 @@ This records the supplied conversation's substantive requests in order. It is a
## Still to decide
Actual property and required area; surveyed levels/boundaries; planning approvals and bushfire/flood response; engineering and detailed accessible circulation; quantities/budget; product selections and energy/water balances; server hardware; final botanical planting plan; large LiDAR storage and independent backups; full Unreal conversion and interactive walkthrough. Preserve these as future work rather than assuming they are completed.
## Subsequent visibility decision
Marcus explicitly authorised making the repository public: “You can make it public.” The repository contents and design context are therefore publicly accessible. This supersedes the earlier private-visibility choice.
## Version 005 request
Marcus asked: “Can you make my water tanks a shipping container?” Implemented as a container-style enclosure with two separate sealed tanks inside, with updated plumbing, service access, plan, camera chapter and rendered views.
## Version 006 request
Marcus asked: “Ok nice, can you also put a statue of hte buddha somewhere and open in blender”. Added a seated weathered-limestone Buddha on a low stone plinth north of the meditation pavilion, facing east into the shared garden court. The statue has a draped robe, folded hands, lowered eyes, elongated earlobes and a carved topknot. Position (-12.4, 15.35), clear of both the room and curved walking route. Added a lightweight viewport proxy and chapter 31 to the Play tour (2 min 35 sec total). The scene opens on the statue. Existing house, container water module, future shadows and landscaping remain intact.
## Version 007 request — 12 September 2026
Marcus asked for more overall fidelity, a start on a walkable Unreal Engine 5 simulation, and a video to show prospective house-building clients. Implemented a new detailed Blender revision, short animated concept film, and an actual whole-site Unreal first-person prototype; all prior design constraints remain.
## Bedroom bed note
Marcus asked for a note on the Blender bedroom: the bed should be built into the
wall rather than stand as free furniture, so it stays rigid and quiet in use.
Recorded as a requirement in `decisions/2026-09-11-bed-wall-integrated.md`. Not
yet modelled — the scene still shows a free-standing bed.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

BIN
renders/buddha-garden.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
renders/container-water.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

BIN
renders/unreal-overview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

BIN
renders/unreal-verandah.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

View File

@@ -1,11 +1,18 @@
{
"milestone": "2026-09-10-v004-garden-flow",
"milestone": "2026-09-12-v007-presentation-walkthrough",
"files": {
".gitattributes": "d4f9cc15aed223cff7a906452370117fc93992272828cb1efbdd94c61422ad19",
".gitignore": "d38c3a1d58416906185c4c7695ea24f9401be3b610fcce0e624f41dff9fe1675",
"AGENTS.md": "233d2be130f8de20a4d17c9c5713462c97ed716be8682191db8dfcc646992999",
"README.md": "44086788e8fe8428b3e103744162b6a82625991902cf2b0ef159be1fb3c4298c",
"AGENTS.md": "f95132bb06e10888f7948f3277f669cad6353fba87b446a6fb731b6cc423e638",
"README.md": "903a431234608261cb998f6bff42bfc566462253a5f165bf569e3ee12dc71edd",
"blender/bedroom-sleep-checks.json": "4f28426b4c23e55c956a4c5bc94947706da63e35de455cfaedd8e90e330f1114",
"blender/blender-enhancement-checks.json": "f66943121057ec2e3c2fd0b2bb5d9245721e063b56cfef060598081fce3554e0",
"blender/blender-verification.json": "772764db02a6cec6225d01bf8e38c7680087e53f35614ed48212ea57cbec51dc",
"blender/buddha-garden-layout.json": "c24aabd04146d6e30c6d855ca43dc668881e65df2e2aab4af5b15668337bfe50",
"blender/buddha-garden-verification.json": "f030aa32bf883cd85d2c820846d78ad84e3ff0a6f8623878a6e0bda641712fcd",
"blender/container-water-checks.json": "59f1a2c3cdf921de280cb8931e26511c6502fb3618b9bad10021619863c0ae37",
"blender/container-water-layout.json": "d13666a791378cf826b56d69f2dc48cbbdf33ac0db339b944f69c45b8dcb7c50",
"blender/container-water-verification.json": "04aa76751f9310ffb2bfda90742e5907bcb09d2159003d837fbbaf7b439344e9",
"blender/daily-life-checks.json": "22cf10e5f3acb11e92ed4780b08eb7c23bef1132b16a631e29cd895e81f068ec",
"blender/daily-life-layout.json": "a908d84f38a8ab035958b197c31037ea71e0e7efa5ed20da0bbf7867c5a85a1d",
"blender/daily-life-verification.json": "cc21f366de7c6133b7891c4fab23f075115fc96402aeaf27272280e9b7c5af55",
@@ -13,29 +20,46 @@
"blender/garden-flow-layout.json": "096b0674740c3ec2b739549f03213fd455b2158a9adf021b57990db372befa0c",
"blender/garden-flow-verification.json": "7f35c643afbc61152eb211a6c34a29b4edb98aefa261426ed0d5e99e9f296c70",
"blender/reading-corner-checks.json": "e6cf3b9b895888b4c20c95a9612070064067100d881da7e26b4d5f69bf4db50a",
"blender/samford-client-cinematic.blend": "5243d8e0266b80205f83592a17e39083c85657873861a0f202ecb958ae8bb17e",
"blender/samford-solarpunk-bedroom-tour.blend": "5c967f65d9e3f680bcf9e1da3f2d3d82bd4ab313fe030c0b0a284c2aca5d58b7",
"blender/samford-solarpunk-buddha-garden-tour.blend": "ac72bd7588c1802cd5029b93eab456c80887de3d4020ffd628b9074e6bb456a3",
"blender/samford-solarpunk-container-water-tour.blend": "bbf12b85e7d5373bbebfba7eeb30f5fc2a5fc06a339f314676c74d2ceea1dd33",
"blender/samford-solarpunk-daily-life-tour.blend": "445db0cc7b4647dd45ae899632e3de5a2aaf1bfabdc2aa8ffc77d11c6a70ad74",
"blender/samford-solarpunk-garden-flow-tour.blend": "b2bf1e7556f75b3ad3d96dbf340feac0fecfaf0865fcbeb838b1c417bb62ae2b",
"blender/samford-solarpunk-presentation-tour.blend": "9feab166af90eea6492de2999e38b3f1536008fa1b4f62eb9f7b1918cce8367a",
"blender/samford-solarpunk-reading-tour.blend": "f47296df39f3eaa381ec1b60615dec77f1ff5e2b5f3c645deea2e5b3af4e6d83",
"blender/scripts/add_daily_life.py": "701f246fe963124b04ef86512ff1465dd51bec335ca0059d6b966b653563be47",
"blender/scripts/create_site_plan.py": "7e7c566e960e37b5a8225157750ba11c06afe72d86fdceea7d73b2e6e0b03a24",
"blender/scripts/enhance_kitchen.py": "2ac50b24427210f00f6bd4ba492ddaffef22ee3835c20f3ec72d41b97081f1f3",
"blender/scripts/verify_daily_life.py": "7241568d786cd9d78fad97af24b14fd487cad1357bfac19fc1c800cbafeef8fb",
"blender/tour-chapters-buddha-garden.json": "f695157b58947bc494bddc4689365f784c8d825e8e263ed89dbfd7877c06d3aa",
"blender/tour-chapters-container-water.json": "acd9bfcb805fa6bc22a8521e5c0d3fe06bd32b1f947dbff0cd43b521568fcef5",
"blender/tour-chapters-daily-life.json": "d6eb5ff0406a5e3b54fd088ef3e050f876a0b922c2b94350770900bca3d6a587",
"blender/tour-chapters-garden-flow.json": "7a6807925630812188acad57afab5c46671b0d0c4fe6c8b90763f5f80353cea6",
"blender/tour-chapters-reading.json": "53d17d81ab55528240e6453c19fc7e45721c1ecfcf610e90e21644da509d42ab",
"decisions/2026-09-10-repository-public.md": "3ded28ebf5fde19aeed74caac9308260602551651fdaebf58494fe625d0d27ad",
"decisions/2026-09-10-v001.md": "8c30365df61ef50a9bc06391e01eccc6e72c7bddd3d368defc34b720fcd90431",
"decisions/2026-09-10-v002-bedroom.md": "36d0a4a398b3fa8ca354e0f560c4cec4c96e788fa8789de41c11dad32d65c90e",
"decisions/2026-09-10-v003-daily-life-kitchen.md": "396ad405df9e7c10d1c71753ecc76cc9889c661e352533d601c666213f065c98",
"decisions/2026-09-10-v004-garden-flow.md": "55ed1e2e222941a9ab9dde5d0d18f6f979528d15e0e3fe988a340744f459b9bc",
"docs/PROJECT-CONTEXT.md": "0c03434255f9b7764cccb4551b792564295f8e476154a2172b905b999ef4bc4f",
"docs/REQUEST-HISTORY.md": "279c1f8b4c8f6a0c6b85754ffdd6aeb8b2d3980ba26ec852768d07dbe3e86e88",
"decisions/2026-09-10-v005-container-water.md": "5fc937e7231a6b3d1856a0f7db2a998c81e4b51afb31fa4222a8d3e931de53fc",
"decisions/2026-09-10-v006-buddha-garden.md": "aa14fcca78e225563b19ed4a98e335b2f465ed27e12904665c3c654de77b950c",
"decisions/2026-09-11-bed-wall-integrated.md": "31eb04842a0a5904d477d7d28f07792f8b0b1737ac5bb3cbdcc2acb2d7f02a22",
"decisions/2026-09-12-v007-presentation-and-walkthrough.md": "6b3aa18b3660730313f5e0f6a9218c0c868b9734c800456d65c62996cbf7a0b0",
"docs/PROJECT-CONTEXT.md": "c8d69a96c26d3ca1cfe8162982a511542a8b78f6c1c3881fe2f603ab1504c1c1",
"docs/REQUEST-HISTORY.md": "af1168f209ba93270e9adfd93de1d8a548bcee5db6ee795b89bb627c03fb4aae",
"plans/architectural/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"plans/concept/buddha-garden-plan.svg": "62f622647732bf9556e7d351c06c9dc8576f68e8e0044f91232401972e43e466",
"plans/concept/container-water-plan.svg": "5cf52ea84ae8e222f64881b46807ca869728845c9e1a5b5c80ecfdbfbc3d5fe3",
"plans/concept/garden-flow-plan.svg": "95c7309d44143ebb3f11a7e0f6b4cee8b076c17a423ab14c8288f450b54ae4db",
"plans/concept/retreat-garage-plan.svg": "225985399ed62625b0280ef9e6a802e276e3c6aad6c35e47c744628868c8022e",
"plans/engineering/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"references/UNREAL-PROJECT-SCOPE.md": "9727e4447a772756fae2456465f4677d63772858d3433e68c901adbd3a2a5632",
"renders/bedroom-sleep-setup.png": "5e12a5303615695093b61ef70111ee3d75c41ebe119c9efe0645f70725fbb707",
"renders/buddha-garden.png": "8b6f6658e17aac9f681191be2d02a1acb9387b0f94695489250d8ebf05acdb63",
"renders/container-water-cutaway.png": "720e0d03c6839e54b181edfe63515d0e11179d9f2767ea3ac41f3b1ebaafa447",
"renders/container-water-overview.png": "5c03c9e7d447a4847b227be4e76ce5fc03328b6635b840e5927f3404805d9323",
"renders/container-water.png": "279e52861b2557e79eeaed6dbbe5f96e4d81aaa273494bd4b6a6f6903a405c8f",
"renders/daily-life-overview.png": "fb7341ad4549c30b07696568616ae3304772307aea234d80214bfeeb79ffc834",
"renders/flowering-kitchen-garden.png": "22f9fa70bfa9a9c2f1f2e77efb97744d47dbfacbd9b0dd9b723a365cada974ec",
"renders/garden-court.png": "70c8bef1ae7b3c79be9fa914ca0e2edce7d097656957959fede9f7c1c48bc8de",
@@ -45,10 +69,15 @@
"renders/kitchen-copper-marble.png": "7264c703bc66d3ab574224e03854399972301cd70ab1cd161d92eba1140a5563",
"renders/meditation-room-unreal.png": "8fd03a477c8aba27fad0d36c8eb6fb58cc0c1926919d618985dc4b8f553f3412",
"renders/outdoor-gathering.png": "94f1d80b20e4a6f9026493f7244b83c8f28a9b39f5c5c2043ddb94a3216324bf",
"renders/presentation-garden.png": "45beebc0c730f3065bb66e2a63b43443490e646142cc62e0e959d871e09c661f",
"renders/presentation-kitchen.png": "c6a56c920d3b639e3a448dd51471872dffeced998e4baee06ea10afa4d4a0cfe",
"renders/presentation-overview.png": "0fc281acdb3bff428ffec574942dbc2c66f6cd82cecb347d4d217f84e3c5d8e8",
"renders/reading-corner.png": "eebb89ce1081bbe458d95c22888346ee6e8175e2fb7df88a0694f0b90601564d",
"renders/retreat-garage-overview.png": "83beac9982533420f31af41048f6e08c7ff4602d0ea4086b6d77649de934a171",
"renders/tesla-solarpunk-garage.png": "5c779a173a748edd5b10ce18fa5e90ea60226614dd4b06110c38868b68616deb",
"renders/training-area.png": "4534ad28d7ccda82bc93f44f5c0b8b358a3f9e549fe4ba141ca94931812678f8",
"renders/unreal-overview.png": "c01aa10e711c55773b0e087191f6b8857f575f51843e3ebffdf9c7eddd857aca",
"renders/unreal-verandah.png": "d04cd18d2a564e7fd0bc7a9539ffaa590a9e836e6322ba03951eaf0c01e70276",
"site/lidar/processed/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"site/lidar/raw/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"site/photos/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -65,10 +94,12 @@
"source/samford-retreat-garage/README.md": "ea463e21ea71158e75a17eea6ee0c4e666663ef18dd58ae74d64c2b09f201a0f",
"source/samford-retreat-garage/UNREAL-PROJECT-SCOPE.md": "9727e4447a772756fae2456465f4677d63772858d3433e68c901adbd3a2a5632",
"source/samford-retreat-garage/add_daily_life.py": "701f246fe963124b04ef86512ff1465dd51bec335ca0059d6b966b653563be47",
"source/samford-retreat-garage/add_garden_buddha.py": "6606a677bf529565fd3fa206bcd48657bb4a25982d2f5a6b63f0c4935f1a99ff",
"source/samford-retreat-garage/add_reading_corner.py": "95a5223670ae53343f6fe7e435c0955dcb0c7d05dea3804b2b3cca356c02feb9",
"source/samford-retreat-garage/bedroom-sleep-checks.json": "4f28426b4c23e55c956a4c5bc94947706da63e35de455cfaedd8e90e330f1114",
"source/samford-retreat-garage/bedroom_sleep_setup.py": "584ea23c5fc9e7b1651025776d25c9ba18fe4b8482a539f9e84cde397cdc2e08",
"source/samford-retreat-garage/create_garden_plan.py": "1bc15d6e847af799755ae6dcc857f096d8194c0f47db79527a7eade53a4d725c",
"source/samford-retreat-garage/container_water.py": "e125514fda2f6d5b91d597d6d237e17ba5c7304f0f1890bf8603a6d7aedbae45",
"source/samford-retreat-garage/create_garden_plan.py": "10e36fc08ff8484f4d98832a794a0214489a1526c3c29d1147dc2122492739a6",
"source/samford-retreat-garage/create_site_plan.py": "7e7c566e960e37b5a8225157750ba11c06afe72d86fdceea7d73b2e6e0b03a24",
"source/samford-retreat-garage/daily-life-checks.json": "22cf10e5f3acb11e92ed4780b08eb7c23bef1132b16a631e29cd895e81f068ec",
"source/samford-retreat-garage/daily-life-layout.json": "a908d84f38a8ab035958b197c31037ea71e0e7efa5ed20da0bbf7867c5a85a1d",
@@ -91,6 +122,8 @@
"source/samford-retreat-garage/tour-chapters-garden-flow.json": "7a6807925630812188acad57afab5c46671b0d0c4fe6c8b90763f5f80353cea6",
"source/samford-retreat-garage/tour-chapters-reading.json": "53d17d81ab55528240e6453c19fc7e45721c1ecfcf610e90e21644da509d42ab",
"source/samford-retreat-garage/tour-chapters.json": "7ba0647e7c9102e1f9cf87ed35979b1a110f335ab0439bfbac9280d1d826de49",
"source/samford-retreat-garage/verify_buddha_garden.py": "6869e5e386b160cd6b48ebce230715957581c755d057b59be1a66b8edeab7f51",
"source/samford-retreat-garage/verify_container_water.py": "74ac1a851660bde1c098b10dfbed1f92a1d5251c6b1a3303d7d506f6f344fa8a",
"source/samford-retreat-garage/verify_daily_life.py": "7241568d786cd9d78fad97af24b14fd487cad1357bfac19fc1c800cbafeef8fb",
"source/samford-retreat-garage/verify_garden_flow.py": "b48c25116eb7f3cd56914a4f53601427207c387dd59d48fbd3b8cb692a9e46c0",
"source/samford-spacious-tour/README.md": "346f05b5f2aafc8b9f846f55da19ad33ae6a3ef917dc6f95902c78954791319d",
@@ -103,8 +136,435 @@
"source/samford-spacious-tour/save_ready_to_play.py": "b25bddc10469a2a050f7bfacab4be2d088892386062f4e58ab11cac8806a9887",
"source/samford-spacious-tour/tour-chapters.json": "e5472d288a42e1c32618ffa40e27eeb418675f23ea7391e02164f2022bf5e213",
"source/samford-spacious-tour/tour-checks.json": "84d18a75b9e5ad2ded578deda0be163f37a32e058dfec62377599f3408ae3287",
"source/samford-v007-client-walkthrough/DESIGN-AND-PLAN.md": "cdf5be426a027cd416acc218ae04b1adfbeca372f0473e54a3f7e434e7dfc317",
"source/samford-v007-client-walkthrough/README.md": "4849985252dfcc4d6ced1b4e073e1ac54ad96c81114de768a51332f027c56fd5",
"source/samford-v007-client-walkthrough/source/audit_scene.py": "809723a45816b851944410dc7b89213773f6511290ff44aea930d8357436ad21",
"source/samford-v007-client-walkthrough/source/encode_film.py": "a3304cfd13334980698a56600fe46cae8c0de5c2e41fca85d82fcdf1cdbe2f02",
"source/samford-v007-client-walkthrough/source/enhance_scene.py": "8a4cc6eb6b15d7fc8e7d5dd6f2b4ded0ec1d4df5356329cc6ff0853b969e7928",
"source/samford-v007-client-walkthrough/source/export_homestead.py": "958acf4af505ca4279fb375b2b010040e58988bb000f0fdcb241342ba20043b0",
"source/samford-v007-client-walkthrough/source/fix_tap_presentation.py": "173c45952a862b499027f15afd9938bb2150b462e1796b158be7da33f882a8f6",
"source/samford-v007-client-walkthrough/source/prepare_cinematic.py": "bf53ef5ff6560ac09abd4de99aca2ec4c03994dce6cc6ebfaf8de9ba6b6b3927",
"source/samford-v007-client-walkthrough/source/refine_film_bedroom.py": "ea6bae1e216a12f0bb7c201fb5bfdc6b39b4eda6045beb2f305c9538d8a18084",
"source/samford-v007-client-walkthrough/source/render_film.py": "77ce49f28c2a47968e00b8c86bae5704d2c683361c2a3689e1cc9da1b8e75f0f",
"source/samford-v007-client-walkthrough/source/verify_blender.py": "7ac14703e84eb6c885d930b9971bd96058de3fe83e4b7c3428cb466bc9231ff6",
"unreal/MeditationRoom.fbx": "7540b71e6cf075e51748db7dc829cf7330c1bfa8cfd8c713041f2127f17ceceb",
"unreal/MeditationRoom.glb": "529770faf5d746f74cc33ccaa84bc1315b1dced2a2e6d14209add716983a9fb6",
"unreal/SamfordHomestead/Config/DefaultEngine.ini": "3448b132adc8ac3f9690fec0a0895d7f3f6d0b1463bf65c81b0d4c822f4c9000",
"unreal/SamfordHomestead/Config/DefaultInput.ini": "8eefad65a75b816dd4d35659db0fca88ff00132f5b92d624d9ae4c82b5b5eecb",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_000_Warm_oxide_polished_concrete___fine_aggregate.uasset": "0a3cbb8c0bb6d0b99f74af3c8a85048f635eda5cc9c680e19321003994235354",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_001_Split_sandstone_facing___mineral_grain.uasset": "0ceed0c33a908bef7885cb9cb90d6819f6baf218d9a1c73c38c15a3d8d666445",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_002_Blackened_steel_fixings.uasset": "ea12eea91af1999a027ceb0ca6bd29de4fc198fa46a654a917e08cc3db9c2256",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_003_Naturally_silvered_hardwood___horizontal_X.uasset": "c47252d6b0bcb12030c94d10c789268b547187261c7aeaf137fd1887561c0e24",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_004_Naturally_silvered_hardwood___horizontal_Y.uasset": "e2456815b89a3bf14a69689a228458ef09e915f195034a472ec99bc6e683599e",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_005_Oiled_spotted_gum_posts___vertical_grain.uasset": "f116af4c8edbc2ce39baabb30680c533a1dbb38a77f01e25b5bec9bb247a12aa",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_006_Bamboo_lining___golden_fibres.uasset": "f33969e3c3f2a26d0035f8bd3ad8cfaa08fb578d74611a40d9ced3ab750967e0",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_007_Pale_Colorbond___powder_coated_steel.uasset": "410ed1f1ff54197362385d309f80b62dee1c4faf7c5aa668778e5ec1bb7b270c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_008_Unpainted_hardwood___long_X_grain.uasset": "e0c1dfe1d74d6f8100af3000c7c0db679e364065e641f9e21039f75629d03a27",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_009_Undyed_flax_linen.uasset": "34f70669aaadcdaab3e5025a04a63c402dfc31d43066fa4e48937eb12d9d9959",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_010_Exposed_copper_service_pipes.uasset": "af533f2a27577c3991db3afb35c135da0cf365627de71ae72fcdb7fb928d425d",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_011_Solar_photovoltaic_cells___blue_black_silicon.uasset": "df241cc05d5c8906f84c68d154f546f7d1c69bf7871304448a3e6a5788a2ed43",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_012_Solar_anodised_aluminium_frames.uasset": "d80462c6c64425a1e39c27014f57a3a9b719453bd9de16e808f19c936cb49944",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_013_Solar_cell_fine_contacts.uasset": "4e04c5dfb48ff1d1fd285753323ab84499fdef0c9e6f4bb1f3b2f0bda666658c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_014_Unpainted_hardwood___long_Y_grain.uasset": "1eb6fb32fd23ce579d8aa1ac71f64c0099aec5a7be0640044689c9513ea6087d",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_015_Damp_brown_garden_soil.uasset": "275a95be42ef619e039700f351f5574f114b5dc1674a31b891e3247c56a9aef6",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_016_Leaf_0.uasset": "78f8287147069791059019ccd2af39a0fc466738a5ed8b6f7780ba0e5c8ec494",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_017_Leaf_1.uasset": "040f3ec534302e683544c3a34bc5af3b8d7653cb89e04ce893a27a67f13a7072",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_018_Leaf_2.uasset": "32482f4a4d05b925791c01bf9c4b156454ccc25ab91d45d95ca8cd2dcb7d84ef",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_019_Leaf_3.uasset": "f50458590aafb236357da0933712e027f0b02c7cbbba592cc6a45f009c24d312",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_020_Loose_local_gravel___fine_stones.uasset": "b74cfba2bc74cf0a972c77cafc70bab0b6bb180933b0546c2bea3f6a9ed9e123",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_021_Clear_glazing.uasset": "d8858affcf419e6eb7c05da37020d0886175ee02686cc3c49a9f83982c9d91e7",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_022_Living_soil_and_patchy_subtropical_ground.uasset": "02b3f93e39373399fbcf6698b24d83431b9b44aa6c35c1eae2dd58f490244264",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_023_Distant_wooded_ridge_0.uasset": "c2023d44889f7d6dd1284c15a830651d2f7f7b47270fd406df31fc53474587ea",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_024_Distant_wooded_ridge_1.uasset": "ec21974948e1d23afdbd0b553c0c00292959496e37734403015d3573f4544b3e",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_025_Distant_wooded_ridge_2.uasset": "34bc9fa0ee78394bf55a133aa2ba892ead2814c0c39f0c8593f9af598b14482d",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_026_Native_grass_0.uasset": "a1f2fe4d3a87bbf03180a0fff02ae63850b46bc9f95b774b6b24d05e41358a2d",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_027_Native_grass_1.uasset": "546ff21bdbba5f6c7f43333ec2d402e8c2933867b2ae4f174cbf37b680c7451e",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_028_Native_grass_2.uasset": "521884b902475bc4e58feb35b16ecf84134b0533404c7f4e998f1aa30ed23bd8",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_029_Native_grass_3.uasset": "e1594ea93d33ca5baf7d818d468ead2cf6d2270dca7bde0da48dd4843ae7d316",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_030_Fallen_leaves_0.uasset": "878da248911dedc3c68d32c830cd0e2b6f58a3258030408e671ec8311f19d27b",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_031_Fallen_leaves_1.uasset": "aeeaf0fdd73211144a1fd028c36c62d0d9b33bfca690936c05668fc5f05ec642",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_032_Fallen_leaves_2.uasset": "f31a492265aec132f39c2d5fb3725fca23cb868e43fdac1e1cf0f43ca0addff1",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_033_Eucalyptus_peeling_pale_bark.uasset": "a4ce1e9b97fa666b24653b9034fcc8fe48178a6e8cbe843d7ba6b729a29d38bd",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_034_Leaf_4.uasset": "cd9ea332f5b764cdbc19fca26da325e05a84143945402d37788e5b2f946bd58d",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_035_Very_light_canopy_haze.uasset": "6e5d23750b09cde964a74f4857800e7e747c0f050ff09b933ec82169a39e5e93",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_036_Reusable_dark_steel_bolts_and_shoes.uasset": "53cd98bcc272ddc792404507dfadc99d7bba30ed82905caa20de774fdbce83ab",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_037_Sauna_thermally_modified_timber_staves.uasset": "4b81da1e302dc79feb0e7c6c4321e3150d93609425c0913f1a6cefd6e3ef3283",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_038_Sauna_protective_graphite_metal_cap.uasset": "8329b08da18d303c6af2f36e32523e5b7a5c4ead440e760a33beba8e771717be",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_039_Sauna_untreated_aspen___warm_pale_grain.uasset": "30545e80a7a6dd4eee0ebd8e655379336ddf41da669a1a84a8486b35ea9d8797",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_040_Warm_indirect_sauna_light.uasset": "9358b3d1737964acadeee9067b8bbe0778d728dc7cf4d0f1d5dc512b65ec900c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_041_Homelab_ventilated_graphite_chassis.uasset": "f46a944cec2af67d47a5a764f69639cde3a86c00da757e9d454f79212a745628",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_042_Starlink_off_white_weatherproof_enclosure.uasset": "4e78af66bb22b9820a5883eea9eb901880962580819ee4267913a32eb9d111c1",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_043_Homelab_brushed_aluminium.uasset": "2bfe6ed134327701b29bca54d00a12f6d29fecd944045bde71bba7d6e38ce029",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_044_Equipment_subtle_status_lights.uasset": "35239c429df62964bae3e7bdd455e2d873afea7884d6eda10b583c7a763a8db5",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_045_Soft_warm_clay_plaster___natural_mineral_texture.uasset": "a98543746070987aaeae6bd06fc15cbd341c040b0f4e9423a4a8b5e74312e250",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_046_Hemp_fibre_insulation___concealed_infill_concept.uasset": "4d6616d5794d3848345f08e8f5004487b457ce0c0e0d6e58e41e6eb1df5da175",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_047_Bathroom_warm_white_ceramic.uasset": "b863b1b08a25e21851de54447625ac6651a2d5d640c8fdf964bb32017efe14cf",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_048_Bathroom_satin_stainless.uasset": "f9c6301b07ae3bfb56bdba014fe1906a01f8e272d5ec7c67bb68cf29e17778a7",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_049_Woven_natural_meditation_mat.uasset": "3eefc96cc9b1ace0cc5876b24af88861d7bcc57bbeac14aca78a955e171e2594",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_050_Meditation_cushion_charcoal_linen.uasset": "36c8d051c3bd9de53a497dc1046c3fe7fa89f7335b325f5d1dfcc9d6f0375833",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_051_Beeswax_candle.uasset": "e8c1abafab373cb180569b136c9ef22315f04c33c87f2c1a07762635dae33997",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_052_Small_warm_candle_flame.uasset": "9e10fd0fb2a1ec1202f870b83f7b131861e3bf16d65cd73eab1c30ae1f54f5fd",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_053_Future_shadow___faint_sage_outline.uasset": "f9a12d3f4130a831e838c1ab8f1e6d4041a173a8c4b6e1cd22265f8812ac2903",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_054_Future_shadow___translucent_footprint.uasset": "d4d58e53cb4711a025f425bc78184769932ad1051686c28efd13ce412d4b1ff0",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_055_Garage_rubber_and_dark_tools.uasset": "5117e5f22dc6d26a47fb8d830696810952fb612127f44d31c87d1ddf14658d71",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_056_Tesla_pearl_white_multi_coat.uasset": "45af9f571cabfafcb38929bb9d2a4c8a24ff0656dda1693c82f01a55a6026937",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_057_Tesla_satin_black_trim.uasset": "c32801044c17e26de586bdc2d8db7ac6c3aaa00f639297c20bb09c6ae6b07084",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_058_Solar_charge_indicator.uasset": "6fbd3a8f2efcd97aa8508403d4d90a8d49c7e541eddccd086963812909875653",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_059_Tesla_machined_wheel_accents.uasset": "0741780c4baafeface3f9f4901dab0b2125bdc9664c3b8facbdc787b467e694c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_060_Garage_solar_blue_black_cells.uasset": "4d604e061ba95e9e5e552b6ada71df6b462fcab6ff934d1135bf058bfab8951f",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_061_Garage_brushed_aluminium.uasset": "f283b26085b1c2a7b2dd8035cfc8cf31da6990f6caaa6d63b0a7473c3ee94898",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_062_Bicycle_ochre_frame.uasset": "531c5bbe28d817d7ba57cfa2cf350872d20702bf2eb44bd2fc3f5281d47e90c5",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_063_Bicycle_blue_green_frame.uasset": "853dea7c25f53147e9b229f8e29ec12ef0dfa7f6733d852319ab8cd6a7ded1ad",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_064_Tesla_smoked_panoramic_glass.uasset": "f738a69554e94a17ab0fcf08a52d85308148c40e0150a265b14dabc1cb2f6491",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_065_Tesla_tyre_rubber.uasset": "f1a0f0ab0893b149429968068bc55033637adc0e4d90e19aa352663e6c58d7a0",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_066_Tesla_LED_white.uasset": "b6f579c7d835e445a2716f6caf31db407807ae4ac30425b2934599cb2cd66b72",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_067_Tesla_rear_light_red.uasset": "07452c522a82de4726e35d59954cf00d1dec3f5443660e8ab5e63bb001f50420",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_068_Books_warm_uncoated_paper.uasset": "40a16a4e2c4b7a9b04a5a624a9c4ebeff44a562ed322e35a8c781f7a6424b2ea",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_069_Cloth_book_cover_06.uasset": "936ea807330fbe3c2321ae0e8e48b62faabc32787c070250f8185bb957b1d298",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_070_Book_spine_gold_print.uasset": "9ae6d01f249dc9f469075f66b4531a2a870d0dbb544a08f693e7c77aec731438",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_071_Cloth_book_cover_05.uasset": "45760551ec3a8a92d3b6f7e207472fa70333b746c307931a041e08b0e2629cd0",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_072_Cloth_book_cover_09.uasset": "c21cf388a70eae533e9698d79a5eea0246a0a1f2dfe9846465c5c8cc7bc522f3",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_073_Cloth_book_cover_04.uasset": "e6134c60e4ccaf13f72536d7cd5097d2632d11bff65d12bf4181b6e801ff7872",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_074_Cloth_book_cover_00.uasset": "ecd678e91d1c70eb9e112fc761262eccedf86798aa9e46bbcd74a287bfa21fc9",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_075_Cloth_book_cover_07.uasset": "c0d8cb3aba3f68195f504c5a2563675ae258bf38374b01973232cadfb30bcbca",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_076_Cloth_book_cover_03.uasset": "2b3bbcfdf06e4da11935357393f753bcf3950e718c3f381fc4a94e000c9d5d97",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_077_Cloth_book_cover_08.uasset": "e32b796583512831c878b62e5267034c060a55078205f555d3214ec555ec0568",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_078_Cloth_book_cover_02.uasset": "d5433573b240023f7ff649ba2bac0cbba17c1e8fe9c7ccd5f03a7e9fcaea4011",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_079_Cloth_book_cover_01.uasset": "b9d3f70f4731087f2ff7c7ef708123e3c6e4cac35b86e2ae695ab09e9627d49a",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_080_Reading_chair_moss_linen.uasset": "67968c759e6ecd199ff126981f4fb8ee4ae177fad75c55f2a250da7bf87eefa5",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_081_Reading_lamp_undyed_linen_shade.uasset": "70253fbc106aa57bbfc1bea538af78a7460f6aec527d83b894a6a112370cd209",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_082_Eight_Sleep_charcoal_cover_textile.uasset": "a444dd1c7779db227bbdc5a9e1a17eb634b9d96e3d03564a3614ba5129c691e8",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_083_Eight_Sleep_hub_graphite_casing.uasset": "fc2a0ba259717449ca5071c495b44ad52b3464e805bed4ea7cc9b098a6307153",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_084_Blackout_curtain_oatmeal_woven_face.uasset": "c7616bd53bc5754a4ec171fd6d9d5960ac82230ebacd13ddba187a189ae6f5bc",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_085_Opaque_blackout_curtain_lining.uasset": "4cd8387035b73b0c68c8a35fb26402456c32c8b793e856a4d7558b4b8b5b9bdc",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_086_Quiet_AC_warm_white_casing.uasset": "053b944c30b0e20a896ae483ce1fc1b1198b4cf62f9f7db351864b22f9c44713",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_087_Appliance_brushed_metal.uasset": "e48d3e741f9e228ab40f919e85a533d9d10403498304108c117da9f444353c6b",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_088_Freezer_seals_and_equipment_grips.uasset": "23c41447d42d366baf38a69a1506678f3f90b9005881e940bfdae6bdb4d83535",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_089_Exercise_mat_muted_charcoal.uasset": "8cd43c02ea03f8e60e2a0cf4fc0dfdd91b157baed44442d0ed9f56494031d445",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_090_Ceramic_tea_bowls_warm_white.uasset": "723fdb98d754cb96addd8f56bbed434b3dbc50e3dc915a7d00ff86acc553ac3f",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_091_Honed_natural_marble___ivory_and_warm_grey_veins.uasset": "ae208be3e079817ad11e51319598d111db4917caadd09f393a5eea8132490877",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_092_Cookware_food_contact_stainless_lining.uasset": "deaceb6b7aaa03175ff1ff6b393b0cba321f7bb0a82f4f8220242d36fac6d2f1",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_093_Copper_cookware___brushed_warm_patina.uasset": "390f3b14ea2bf30aa04bcf91399da80131362474d35b469cdb8c2da50b91c6f0",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_094_Oven_and_induction_reflective_smoked_glass.uasset": "b786852107985308ea18bdb9e07d2fb35b83876f134f38c668c2f77532ed9f72",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_095_Oven_glass_subtle_interior.uasset": "9fc3d890a0398ad49a67d3a86567634fdd91486984514d9f8aff37f42090931c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_096_Appliance_soft_white_display.uasset": "3a4319c2f6977714b04b17849a38a78e87d5cdac6db7f624e516fe93f3942451",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_097_Induction_subtle_etched_markings.uasset": "cf1fb258f24ce8a68bca94009cac58766b506743503ab0f4308c76f46342a1f3",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_098_Courtyard_low_native_groundcover.uasset": "fdfcf812d07109a7d3399d98bbce19bfb7664dbcb589acf5d2476870bb5a884c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_099_Garden_leaf_0.uasset": "94523638a4fd918ab6a8377a51879db9d44e475e0917f5b748241135a7489c87",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_100_Garden_leaf_1.uasset": "46d2268e22c4bc14f56045b70921f48135a809d6cbb1e2332910f363835540fd",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_101_Garden_leaf_2.uasset": "343152e0efbdb40f806b4e611334b6124f1960e7c2935f10c270c7686194170c",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_102_Garden_leaf_3.uasset": "9912cac4361ab6823acea9158056194fc114cd8c62e1ad4a1090d009744984e3",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_103_Garden_flower_soft_ivory.uasset": "a57f1f9ba397b2827445b6fdbd52ef8548e6a2390d50cb8e4a3834402d9d3883",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_104_Garden_flower_warm_lilac.uasset": "470ac9de49d4d59bcf22d4954ce6a4c41a977cab2a742b8f077a6dc72207ec7e",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_105_Garden_flower_bottlebrush_rose.uasset": "00ed4f70aee78263a91d4942be6aff588500e733ef51537e17932a54bb910169",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_106_Garden_flower_native_yellow.uasset": "d680fbdc4c6d420e5dbbdb42a145f48589b5186803659a9c43ca2e2a626dba4e",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_107_Container_olive_green_powder_coated_steel.uasset": "e2aef71f47874be44b3f4ecb5c5a32619ddbe1154f2de9bbe70b4622f05cde50",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_108_Container_enclosed_water_tanks_pale_grey_polymer.uasset": "80fb68875e30f92427796dd03a8960b69e6881d04aefea0575d3ab803cecff2f",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_109_Rainwater_pipe_dark_polyethylene.uasset": "eba2676906ccf633aff8c8fc23d6f1241388dbd55428bd8511ef8b5f1c419afe",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_110_Buddha___warm_weathered_limestone.uasset": "f1054f6dc64e2bbcc78d49d6739c68532aab33019197924b7abff481172f4d1b",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_111_Buddha___fine_carved_recess.uasset": "b5d24bd5afa0b2d71041f2492bb1eae2d0daa422e82bde486d761e78cacbcbd2",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_112_Handwoven_cane___fine_warm_fibres.uasset": "0b89a1627e325cb2a1559cfcb8a5b2057acc537c87516a3352c987f1cf08a8ab",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_113_Pendant_warm_diffuser__4_37.uasset": "cdfec80c2c23de9de13c40b4d819f36c74b30fe4cbf18379cfa5c499772c49c0",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_114_Pendant_warm_diffuser__3_22.uasset": "66310d8c22d1bb5b356059ea3ae48f2547e35380c4a345a6ec13a2e83b6aba15",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_115_Unglazed_terracotta___fine_mineral_surface.uasset": "cfaf88795e6f2684027548a9ba7686349ebb25991e2da3e469df3e8655d00bea",
"unreal/SamfordHomestead/Content/Homestead/Materials/M_116_Path_aggregate___warm_river_stone.uasset": "09998f384b076136ee1f15792efb7b64888d4fd5ce22eecb48bab951782984d2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_000_01_Living_pavilion_12_x_6_m.uasset": "dad7347391d9adaa8c998b754f52bd5a57b42763849feaea2b770d29a0155d9e",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_001_01_Living_pavilion_12_x_6_m.uasset": "8049eb6887e9610dd048935d6c7eca87f4a956fbc0f32612088d30b49bf96543",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_002_01_Living_pavilion_12_x_6_m.uasset": "fd6820645e04d4e3bd2318a5f746abaf782353c492f44a78f5ce87fd3468d03f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_003_01_Living_pavilion_12_x_6_m.uasset": "24482c0c956c71ece24ee34a9f22b28d9ad2a0ef3b3eb7797e4c2e5629f8d81c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_004_01_Living_pavilion_12_x_6_m.uasset": "5633653729f8f2cfe6e3139af0e63d83ba6117064b23969dbe7df1b9372d1061",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_005_01_Living_pavilion_12_x_6_m.uasset": "9a2577298b11a6647348ce0c2be84d991a91f301f4dec47c579208c57b0d7a56",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_006_01_Living_pavilion_12_x_6_m.uasset": "cd12e09c93c20b95094f02584b0381130a0a0c07cac0114a877bf1b577faa55c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_007_01_Living_pavilion_12_x_6_m.uasset": "b6e60710c1b8419ab45ee5ac247275fe90591bfeccf5af7d319c8b20b9f4415d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_008_01_Living_pavilion_12_x_6_m.uasset": "a125b2ffe32dc37d442d812b55a5b8dbfbea26709767b21edfaa9638e58f1cd8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_009_02_Sleeping_pavilion_8_x_5_m.uasset": "7e3dd81f2af0e98a2aabf778e4d5a4efc89ea206f7725ed4f8dd97b2337be04a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_010_02_Sleeping_pavilion_8_x_5_m.uasset": "64f53aa5ae80fc199e9cf9e1a9950559f782811b5801ff0f16029e13792051ec",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_011_02_Sleeping_pavilion_8_x_5_m.uasset": "fa26ad339bdc0357bad3d71ce4c22a0f83e8b2b921288e307f0ef705b4671f44",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_012_02_Sleeping_pavilion_8_x_5_m.uasset": "1f24612d29e6e5a7425b2ba6794aee201a09e227b8d38b2c9f44f3900c986620",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_013_02_Sleeping_pavilion_8_x_5_m.uasset": "fa65678636c5ecf27697814de6062c0e50bf5de2a558c04af97e5ccc9c008988",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_014_02_Sleeping_pavilion_8_x_5_m.uasset": "0c5e619bfe4aff5229c263215213635d00bffd52a82c89b2dcd83bf1d9ec2344",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_015_02_Sleeping_pavilion_8_x_5_m.uasset": "3550968859863949b7d858c173be3de6914dc9f24ad5a5f096ccce05e00ae9a0",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_016_02_Sleeping_pavilion_8_x_5_m.uasset": "f57297e742c4bd82c9c4e38b0c38b3159826a43a12079361b0be60a81dffb34c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_017_02_Sleeping_pavilion_8_x_5_m.uasset": "bd9130f6f6178c2b6b1ac343beb72f0179a4639d2837b04eb44b902c3b26b58a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_018_05_Water_and_services.uasset": "27f453e8f2209605f9e7acfca6da657b806bb148a7f84e6ab03da8100836d38b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_019_05_Water_and_services.uasset": "9307284c09a0d6e9c153dad98ce6d3c03ffc8881bea497a0eaaa0774d16cdcf9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_020_05_Water_and_services.uasset": "1457f4ed9fcb403e0dd61cbd91c47026dd6a1aaeb0452fb6ffad2a1deee06503",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_021_05_Water_and_services.uasset": "522f8000a64f31cceb62a1808d73784694b611d80fc963a9f4fac792b8c4f2c6",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_022_05_Water_and_services.uasset": "961168fce5cc7aac51d8d548176f4cb60753b8de68e4aa02a1d84a190db67965",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_023_05_Water_and_services.uasset": "2b168d72cf0142e57462546d9c321c1081c740a1642e1d98094ea39dafc46cbf",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_024_06_Kitchen_garden.uasset": "fa86e5653708263a0daadfa07ff5f0533f6943bd9891ef5f309d69fa8a5e7bb9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_025_06_Kitchen_garden.uasset": "7bf94fd970401db988944861a5751db9b80183b11acd6ef7f20d3e644bc8e3ff",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_026_06_Kitchen_garden.uasset": "89a680752360a8978530b0b3e3ba9f9848b35a614a4bf407077893e688894c2c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_027_06_Kitchen_garden.uasset": "dcf95008ead7f55fe33f5bce267a48330af89fc6b78d67bcac8027c8d410dab6",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_028_06_Kitchen_garden.uasset": "95c484ef28149f97081386e2f9a7ad0b35d43d33c1526ca80984976ef7eaf570",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_029_06_Kitchen_garden.uasset": "7b3d96371626a34274ceb6766bb2be6c461c102c24c399ecfee9fe553ed2dfd1",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_030_06_Kitchen_garden.uasset": "adbc2a7fa8265b6276945ec3d7de9a16b9cfdfc1d765bef230b8c1e5ab85ac4a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_031_06_Kitchen_garden.uasset": "619fdd7a61ecec3794da34156b64978901543bd8cf999c1e68012c16bfe96fe5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_032_06_Kitchen_garden.uasset": "c7cbb70ea6be4c1e0514abebba0cf40032253e07ccba5da7ae00de54381d71ee",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_033_06_Kitchen_garden.uasset": "fbbc0bfdb2366971d9c9a184523f0fbed91ef96ab69f9e70808618b45a8786b9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_034_06_Kitchen_garden.uasset": "434fab2f16e50a3093af6b8124c66bbdb977182e9c2360cc7bcdcf83ed644289",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_035_07_Terrain_and_paths.uasset": "110998551de8db66079ce1b0c5affd6729d4bc2de3ed9012966a4db1da71840a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_036_07_Terrain_and_paths.uasset": "7c07900651d4bdcd05b1157d2e3aec6aefb2054209e557a504c9635c20bacc6a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_037_07_Terrain_and_paths.uasset": "09afce023c29df1fbcfff36cf61e91c96e693a90eff4f70347fcd14b5a58b2ed",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_038_07_Terrain_and_paths.uasset": "5adc01e18cd8b76e4e92924f3706c22972c8c8cc64290bfa4dd51d94cf7cec1c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_039_08_Native_planting.uasset": "f9ac35afcc56a5c343d64b6d5aea5fa7cbfe353c2c291259f727cf546e0d40de",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_040_08_Native_planting.uasset": "837cd5150f8d0e62f5ea3ef4c7b8f319408e21aca19c4f3b59c64b51bde44e8d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_041_08_Native_planting.uasset": "884d0e59afc3c0673397354a5b14098576b5995b66fe2a223c381eb9a4c0c60b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_042_08_Native_planting.uasset": "b3533af8ad6df74b3cd02305cb6f58110e53f51b482d19b275a539236f412d91",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_043_08_Native_planting.uasset": "a6fd08aa47636c920122f2bb30581ae0d20f95ab471e9e72522aa6b4699284c2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_044_08_Native_planting.uasset": "06f39d08c655ebc8e5119132d6d2805206967aa4ac5817c15adfb0e525b9af5d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_045_08_Native_planting.uasset": "fb0b234dbc7113753480914e2d81b19aeaafb34b1dd98e0ce7e19e2f161025b5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_046_08_Native_planting.uasset": "5e9e41c718245ffb398129e1855f1c26f5adb8b5cf3666893d5e54f6c61d5d2d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_047_09_Eucalyptus_and_fruit_trees.uasset": "8c207020d53fd042481192465fc1bf0d9b94a45ba01c64730bc82ee944a07c4f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_048_09_Eucalyptus_and_fruit_trees.uasset": "47f346407ccb6e6066f9095fc2296d56859e81f30dbb762f3a2272118962a39f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_049_09_Eucalyptus_and_fruit_trees.uasset": "1af809edd002a70bfc426bd7095dff80cc6f46b233b9fb369b301fc23a808185",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_050_09_Eucalyptus_and_fruit_trees.uasset": "fa3cc9bb6448c4884faafa06cf7071ffe4bc7402fbafd5a9cdf3918b13fe72bf",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_051_09_Eucalyptus_and_fruit_trees.uasset": "75d8b8091ba6bfd7d5d87afe30527110d240716ee704930e3e084d4f70f8ed8d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_052_09_Eucalyptus_and_fruit_trees.uasset": "c4341cb80ff3c48bafb213df5ae834b46feecf19ee72b51724440e561ddd7278",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_053_10_Furniture.uasset": "0fa2bc407e9521bb0e91e0c283c5327e579e20c1de898b93d9a4d56f677be000",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_054_10_Furniture.uasset": "a5d57df736bfe1b42f3afcc9375ffa78b96ad76a7d57fc355811339b054bf464",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_055_10_Furniture.uasset": "1fe97f855b57a0271456ed756a3cf3d1bd2bbb15441cced811580803632b9bd5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_056_11_Camera_and_atmosphere.uasset": "2ea2de34617ba8725dfb2e117e2981a39ba0d3d16e05ac42820a7c4ba2ff988b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_057_12_Natural_materials_and_reversible_connections.uasset": "8a6ba3a208af331b800c860a142cb17b398515dc42937c1d68cf1e3f4bf24750",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_058_12_Natural_materials_and_reversible_connections.uasset": "dcbfe4d842fa4d94fd83633ee64eaee929853548bbda84850f428fd5aee78917",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_059_12_Natural_materials_and_reversible_connections.uasset": "d3c9806e79fb9e7c3c1c0f364c0c234ba789d95162fd911e27e685077efb38fa",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_060_12_Natural_materials_and_reversible_connections.uasset": "3aebc245ee7982d4efd60f8ec158ac7b0713548cb2f203932841f99094d6750c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_061_12_Natural_materials_and_reversible_connections.uasset": "ed57ef3183db5da72a1e9411367515ab88de8a6335476f1bcb35d9d88dcacfbb",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_062_16_Oval_Finnish_sauna.uasset": "ede69b7783b86ce6630907a7715308c50a1837d6b0290cf35d872064b3d9c0b0",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_063_16_Oval_Finnish_sauna.uasset": "a101712ba0dc848f58e07097085d9ecc491b2bce4fbfd45faed85fb7f75b917b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_064_16_Oval_Finnish_sauna.uasset": "5186abd298584df4ddba111ce6381bfe9b8f99d69e77b0da9e25c144e4f98173",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_065_16_Oval_Finnish_sauna.uasset": "c12bc7fd609093f57c4752bda2b8c7bff5765241c8ac6382d0d05d3d7113f744",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_066_16_Oval_Finnish_sauna.uasset": "0dbff625a092ebe55c8611e0312d05c4bbdb32ed508663584fdd010267f0fd76",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_067_16_Oval_Finnish_sauna.uasset": "859d1c0b2e8bc8774538a629f066225fb6998f7e23e9569b0177f83a848d61f2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_068_16_Oval_Finnish_sauna.uasset": "3b9ed89e48391ba7f9f34e4774aafbc75eccab23225ed34280f57824f8f71aff",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_069_16_Oval_Finnish_sauna.uasset": "ad7a1b2f2d66a0cb43990006e089db43ff38e7f3f8d8a46ec97a148a5661ddba",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_070_17_Outdoor_shower_and_stone_terrace.uasset": "e85c7c1aa181ff74ae696306a7dff5b3beaadd6dd5cf16254102e769ca1d3e9a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_071_17_Outdoor_shower_and_stone_terrace.uasset": "c221543128ae812b5a2194b7153a8e42a929db0e6edef716e1a3b02a35501b0b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_072_17_Outdoor_shower_and_stone_terrace.uasset": "54c814e6a9b5becbd47844987145a82cc1028ee6be5373b3600e0cbcc37062a1",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_073_17_Outdoor_shower_and_stone_terrace.uasset": "632585e2c570520da70ab496b357b1dcad90c1f325c79843655ee803cd289d5b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_074_17_Outdoor_shower_and_stone_terrace.uasset": "91b19aa66bc1f0d3d6b3acc6e034949d737d5adc7ddd8e69dbaf030f1b67aca2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_075_17_Outdoor_shower_and_stone_terrace.uasset": "165d26df15c3bf347be50c21d782e63ebc083245ee432263169f3cbb8227821a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_076_18_Starlink_and_single_server_homelab.uasset": "40c935430f17e166665ea11b024d7a86beb79a599f81c717928ff510831d000c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_077_18_Starlink_and_single_server_homelab.uasset": "b1ff07128c7ad3db3c2fd8ef7f43e2b3687595ffda08f577a54a308a494e4131",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_078_18_Starlink_and_single_server_homelab.uasset": "7d9e92740a1d8c0157bb188aa6c6bd8cd67ff314986bd2d68d7bbba0b345790a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_079_18_Starlink_and_single_server_homelab.uasset": "dd6af89827f06ec1be32213740c59ced32519393899543d09d2e81070fd70bd5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_080_18_Starlink_and_single_server_homelab.uasset": "338b20df69b15790798cdb2c86638ea5ba6b1cd93afdec0ada2383b911e528d6",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_081_18_Starlink_and_single_server_homelab.uasset": "fb86ef39a099945f5d32c8d62ce5fbda99a63d091dec543b38c20a8bd998b7e5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_082_18_Starlink_and_single_server_homelab.uasset": "6111f7327f0028a081e437d06f8d25450e91950da86b57b1ca28d81302ff4260",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_083_18_Starlink_and_single_server_homelab.uasset": "4cc95a15586db2633bfeaab4d21d69f9576cff900ee8bb9ca03a6ce573adb620",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_084_19_Clay_finishes_and_hemp_wall_infill.uasset": "03fe4153c6a552a8ee704fe1c18c197860e596c667d7c5b75b9091d8f87d4d01",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_085_19_Clay_finishes_and_hemp_wall_infill.uasset": "00f86dae5ee256d680e789ec055157168271ef0d5cc45a43cea8743136294893",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_086_20_Spacious_site_connections.uasset": "9eecf9a2d57a505414ac1ad83ad5fb911964e4a6676267575b3e3605323e4387",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_087_20_Spacious_site_connections.uasset": "ed5b639d72c242c43c359fb0c189c5dc2e5c1919adbea243f1a72486e685792c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_088_20_Spacious_site_connections.uasset": "acb89753ba627741909cbc02b40a5e93e1b33008ce16e33f1c70566f09212768",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_089_20_Spacious_site_connections.uasset": "63c0c998d43c2607b60f488a6c0ea8200b4a0cc9f1969526a7be2906da502de5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_090_20_Spacious_site_connections.uasset": "a940835614fa0772042f9a95197eeef6498f1bcd5cfbf3b6e7b0be953f7ef20c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_091_20_Spacious_site_connections.uasset": "c57b8281c26839a67e74ea9a9e4306ad57760f1eff6512508b63ed7a2ede3d5a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_092_21_Bathroom_fittings.uasset": "83cce5b6f62002145eb397e45a760332977e808484f2e7a97d8da9f2cc2bbf35",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_093_21_Bathroom_fittings.uasset": "49450089b880ac38ae215d68013d1f60dfd126e086359b5bf93dfeb438eb0922",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_094_21_Bathroom_fittings.uasset": "9641cdf2278c4cfcdf42ff0c1cb0722bc0571798dace68815a5e896955d83315",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_095_21_Bathroom_fittings.uasset": "eaeb9d50ceb2f67e86d8813c47587aaa48202caabdf7f5539237e32d12291bf2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_096_21_Bathroom_fittings.uasset": "20fbb66ebfe9d42816770507e4c714b7f2a99dbcc87d28c06abcc06c7c46c770",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_097_21_Bathroom_fittings.uasset": "7b3c1ec03854b0057e83df0e7ad30fcc6fb0cd346dcdd65675496ad30914dc82",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_098_21_Bathroom_fittings.uasset": "8bd57369458dac3d23f69d62d9bbffe69f94bf8a83f535a74c66d918f8043ff3",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_099_23_NOW___Quiet_meditation_room.uasset": "d2f266cb3145333a70937421cf5564e3319b937e7a97e669c357b490aade2d86",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_100_23_NOW___Quiet_meditation_room.uasset": "d32a64f5e720a1fc03132f6dba6f66f7e2833bad70354099d685f6c1d3ad3315",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_101_23_NOW___Quiet_meditation_room.uasset": "4527125f266cf5d774454d5905030d13f852d750c7f82a08d76aefbce1bac7a8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_102_23_NOW___Quiet_meditation_room.uasset": "d98155e8b7f740e7a903ea2706228e1f0c3ad897455151900df506ff95c22d75",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_103_23_NOW___Quiet_meditation_room.uasset": "4714561187b50ee6a7f0883ad5b5933fed2a279f9bd39f66c49fdf5d9552eb28",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_104_23_NOW___Quiet_meditation_room.uasset": "15b6e7c0e29789f5643df14cc7863057ca4200053413c767b7dfc7707def56c5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_105_23_NOW___Quiet_meditation_room.uasset": "01d99ff5c31be34718dd98f97c699ca814b4ecd597c3fdd92bb83fa6025bd43f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_106_23_NOW___Quiet_meditation_room.uasset": "7263e0dbc6a3ede0ec0d62e8272776d48f3b1235db81db4e3a8fd690e6cba75b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_107_23_NOW___Quiet_meditation_room.uasset": "7e3a0b8b6a9e459b5f131e6c107d116e438bb57b2ba02df0ed4c2438cec1ee49",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_108_23_NOW___Quiet_meditation_room.uasset": "4b2ff122fcb75dd618ceaf9e511e489b740ea3b33ff8530f1f392627eb17e8f2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_109_23_NOW___Quiet_meditation_room.uasset": "b6884fc16527485441659a689c8ae4da88507ee4d91547217015c5c4df1b15ff",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_110_23_NOW___Quiet_meditation_room.uasset": "e7adb56cd446791059135306c05e27842621b8df94ae8b918672778c06f8dbf0",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_111_23_NOW___Quiet_meditation_room.uasset": "d87b943f474b666068d8b38d3c23f27fd6929251206804d4f2e5006c23b07433",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_112_23_NOW___Quiet_meditation_room.uasset": "0442040234c73544536da87d106bbe0a018e668e30fcb7cc055991f6bbef6bf2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_113_24_LATER___Shadow_spaces_only.uasset": "0acfd38bc5c2eba3a3bc43c306aa87c4aa695fca1721ee4fa39d73da19aed632",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_114_24_LATER___Shadow_spaces_only.uasset": "471374d194fd53cbf5dfd95444927b51af72d8dccbc2cea217c69994ffb14d8f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_115_28_Garage_and_workbench.uasset": "f832f633b6caf8b02304591b3245068e9f88a5e44c7db3becfec17aa9f4c835f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_116_28_Garage_and_workbench.uasset": "588c1ce873e16bde8e59beaec36868278e06a9561667686147adfdaf22b620b2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_117_28_Garage_and_workbench.uasset": "c465be718175a720999fe5c4c71053eaea4319416d0e8e54ff6e95c8a756bdf9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_118_28_Garage_and_workbench.uasset": "a6d9ce1818bc95d98cff502b085318f90badef58c27367a2730218ea7e5f33ee",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_119_28_Garage_and_workbench.uasset": "86798b1ff9c24e9eb99cc567546137e5d1190a2c26d6a99c1bbb5c285dbbbdab",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_120_28_Garage_and_workbench.uasset": "e27f5a159f225c9ddb34e0a1ec5f6ced311340352317c2cdee6df2853a463d6c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_121_28_Garage_and_workbench.uasset": "fab2079250b6b924e6ca0dc77361fe6eea7f631ead22182e07aca721213999d5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_122_28_Garage_and_workbench.uasset": "c117d97c02420205399b7d0bf15b1b4af65f28a54267e4d37cdd473d05a42e1f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_123_28_Garage_and_workbench.uasset": "c765301c1e2df1f82149ec3cdac2c781cd6d0f6a1ef60c5c264242cab66f79b0",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_124_28_Garage_and_workbench.uasset": "99325946bebc09e3b538f2027385aeef3c5e59de86a5a9b556613a1c867a8108",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_125_28_Garage_and_workbench.uasset": "1e32dc2275a0954bcd26f07b43388ad5cedb05910f63b87409d127a18b5f3c9f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_126_28_Garage_and_workbench.uasset": "aa46170332421c6173c14df25d3b820ae27475ed96fe00f2f683e2832b2c7d63",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_127_28_Garage_and_workbench.uasset": "9dee072eec26d9af9dbeab67710a59ed9a57a030b571ffecb08e61c8f103de88",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_128_28_Garage_and_workbench.uasset": "3849449b2c82aeefeeb255ace06fe3ba63440882bb571b959316beee73d5d09c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_129_28_Garage_and_workbench.uasset": "7e29f9e563a610deb920c95149f8d82165e68b2f656415a86497f170447664db",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_130_28_Garage_and_workbench.uasset": "c72c3474a658b129e398a19fea47afdb3a2748670602289beac43f2eb739d0c9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_131_28_Garage_and_workbench.uasset": "491eda97331256dc774005dbb0bef86904b3f798f6f0cfae68167ab2c7c52b56",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_132_28_Garage_and_workbench.uasset": "e8a9a8587493d3eb89fae3e01001d4df8daed3cf87c7e2aaff9be254e6e01629",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_133_28_Garage_and_workbench.uasset": "d4866e44f0be9c492b4374805988a43ab8ade9777465a3a9c2d7203a870b96c8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_134_28_Garage_and_workbench.uasset": "2437c693e93458c896df2ef969a21ea6450f98895321863e237b90d06e80f91c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_135_28_Garage_and_workbench.uasset": "4f9ee897e33060866bb202a10bc89519ad4660c19697f387b38536f66f0cb2b6",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_136_29_Car_and_bicycles.uasset": "4d5c2d179542c2c4d00effdc135b12e2bd274c21cb9968c8e18ba66e89c39db9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_137_29_Car_and_bicycles.uasset": "f0db8910efafac098fc3843b1aa92351f4540de765a83e14d95020db9d2a0ec9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_138_29_Car_and_bicycles.uasset": "6a7bf50771a5447f8cc6ec5503758a3c63205f436bca65edf0457a9c0e642ad9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_139_29_Car_and_bicycles.uasset": "469edd3df474bda60c2f921c8f49cf151ccb60fa141f3eb52ebbe32f737637b7",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_140_29_Car_and_bicycles.uasset": "df8f6327b5f03d3794fb4e58037d2a7dde44d6f0e5b0027bfc4c5e749ba5ea2f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_141_29_Car_and_bicycles.uasset": "2b85f51029e5085fcadc3cf947aa123128a4af92d30dc9e9bb1845a9dd030857",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_142_29_Car_and_bicycles.uasset": "32c03ccee8628d1fb3af49271aa4469e10f44df1770a860b6f21f051ff2d1ab4",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_143_29_Car_and_bicycles.uasset": "e948af89b850196bd87e763539dab682c5b95a937a0814288dacd62444dc2786",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_144_29_Car_and_bicycles.uasset": "244e4c851e291fa0c5b3f78d0a766a7a45ae10f3ba34886b765184f69111095a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_145_29_Car_and_bicycles.uasset": "9d7bd0ca3a3d1b07459dce13cbfaddd81f4a7acfecd50ad9b47ef5ca824e60c5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_146_29_Car_and_bicycles.uasset": "28692b79337e0b17935b9d5af1b24bfedbe5b33a4f6f750420fa940cefa8d800",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_147_29_Car_and_bicycles.uasset": "500d8fd1d37174e99df4e5857f5354863f23209bf30cc5bf4b96057f2632ebfd",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_148_31_Reading_library___books_and_lounge_chair.uasset": "59c668debea020a23c22303d3f00dac609d0002b655901c865a743ebba80bcc4",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_149_31_Reading_library___books_and_lounge_chair.uasset": "510327dc805d8ba4011f3253bee6c6f9cf14c9f71774c3eb62c1e1dcf313a27c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_150_31_Reading_library___books_and_lounge_chair.uasset": "5503eee8ab29425349cd094b402915aa7fa38d3452fdc9d707b3a64b31e54240",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_151_31_Reading_library___books_and_lounge_chair.uasset": "eba2782b64626016704172012b8f6df765b6de5673fd7cb764bbe47533a6b7a4",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_152_31_Reading_library___books_and_lounge_chair.uasset": "3bb290961dc19338e04cba01dcb9123be49f3ba60331d7695b7478f933f4d998",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_153_31_Reading_library___books_and_lounge_chair.uasset": "badd69fd59dd5814a6e6d2fb464360f498bd387c41bac73733dcc16c3c0b094f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_154_31_Reading_library___books_and_lounge_chair.uasset": "d135aa6a85b234f37447ca2269bde9c355dfcc67063f230a96c838e6f74b99ff",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_155_31_Reading_library___books_and_lounge_chair.uasset": "878e1b3fa58b83c4804768c0efec6f0287532f8f1bfc76c5ffb95a086ad7fbb2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_156_31_Reading_library___books_and_lounge_chair.uasset": "53773a33f8e20f9dc83747bfb4b8bf0e4346daaaa60525d07d96aa20aa65de2b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_157_31_Reading_library___books_and_lounge_chair.uasset": "15f1172d711820512c41d43d9dadf846fee4ff4a74e9fb9dc5953d19a2fa582a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_158_31_Reading_library___books_and_lounge_chair.uasset": "0ad953b208c857057f87deef10307a58611c18108d381adfe3781d265a714a60",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_159_31_Reading_library___books_and_lounge_chair.uasset": "c3567367d848c7001eb4099e6c5bf406303637d88f4d5622e61340c2a06880c9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_160_31_Reading_library___books_and_lounge_chair.uasset": "bce238059a2d7c818922748e3c6a4c8708d7c21bb7a3929355defebe843c717b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_161_31_Reading_library___books_and_lounge_chair.uasset": "5de8eb7f2bd6df874cd3fcf400e607fe9e07ef6736f540cdd2f2f40ba393bbba",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_162_31_Reading_library___books_and_lounge_chair.uasset": "3819cd573e36a9a6aecfe52152ba9efd5dc256294759173b49280f06ad8b7ecc",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_163_31_Reading_library___books_and_lounge_chair.uasset": "f1be8806ddceb34b1af14f5d984d119ef2863d158e1065fc025c0092b9861709",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_164_31_Reading_library___books_and_lounge_chair.uasset": "085e875b19688a6b2a18f0627d59a85d285347810a21a576433c9aa996c74617",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_165_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "d0c5db2c11ba0641a76172ee7fb6c2cdaff6d46bda5f7c8e249c532c520d17f0",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_166_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "e5641b4601eb2f148b3bff8d71c8d3f03f5a4d409586da88937d3c5c70bf0c94",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_167_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "d657b75266f64a01c5818407ce2b9090f051b263607dd84e0e573f411fc671f8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_168_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "46abf76294f66e41e28c20330dfb4e30e5e810926bd56787cf3508212ac8671d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_169_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "b8b2c984b290ed0f221a759050aff8b8f0b1ce910617e3406a728b9c45ca1a0a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_170_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "f09270855b76a03590e1b4aa5224caa74518ad6f637f287fda9a1a3bb5c8f92a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_171_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "9a3e23b7e3e388d0b127625226bbf69b295ccbfa840269067a5b046789bc1c7d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_172_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "2516730b76d4f8cca26a5c80dcda20989bb1f561eb710f308696abaff1f61421",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_173_32_Bedroom___Eight_Sleep_blackout_and_air_conditioning.uasset": "f4ded9f3e1dace55f622b46e543b452f3676e7c3e579677eb17c84f189c6dce8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_174_33_Daily_life___training_gathering_play_and_food.uasset": "f71a3b90916eb2f163cb861543ea885f23c65f66d0c8604eb573a482c6fbb0dd",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_175_33_Daily_life___training_gathering_play_and_food.uasset": "740fd08a9a2cc41596cc02e3b9180b489a89c9a0436b0e6359b6eb39b21a3fbf",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_176_33_Daily_life___training_gathering_play_and_food.uasset": "4e6aa164065cd571b41492dfa5aa05d8e49a9c398b4c193626e85da44f6da205",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_177_33_Daily_life___training_gathering_play_and_food.uasset": "9b87bc2a02ec4e18967b4e915d88327ab6f857828850f62604507d70b2e0f18a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_178_33_Daily_life___training_gathering_play_and_food.uasset": "28a73fd70eb14b96415f3d8419c23c7f7975994c635528360d65e1122dd9a7ab",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_179_33_Daily_life___training_gathering_play_and_food.uasset": "39a77e7968bc42b5ec03f5b813f020c733542755b8774974d8ec5ef5344e2d4c",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_180_33_Daily_life___training_gathering_play_and_food.uasset": "965f206776bf1518f4f024f44639070db3a04a9aaedf4ed82aa8f6c112b55d32",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_181_33_Daily_life___training_gathering_play_and_food.uasset": "022de4f7deadd241c8c19c4815234e9e28cdcebc27e78e2097f5281ad902af9b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_182_33_Daily_life___training_gathering_play_and_food.uasset": "54fc4bc7a2fb472af2763eae7c56aadbd375f470289ff88a8bdc7406c944a56f",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_183_33_Daily_life___training_gathering_play_and_food.uasset": "760c8880bda3adfdb634cb69043af9ca32a0a542d9b2f8860b83115fd240a803",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_184_33_Daily_life___training_gathering_play_and_food.uasset": "2354527be32a2cd20bb45b40f2fe1a0592545a028dfe5d5a0a73f2517b90d31e",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_185_33_Daily_life___training_gathering_play_and_food.uasset": "8515e9e8f65d9f355a241bd67f37723a40509c3bc3b017b554926386775b3aeb",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_186_33_Daily_life___training_gathering_play_and_food.uasset": "9c02816beb7b21d6f71f55ea727581065e0d03144ab32899afcf764101ef6ca1",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_187_33_Daily_life___training_gathering_play_and_food.uasset": "eed3f82fe0294fbeef8da89169c8d260a2da901c4c73dcd38dc6a773390f93dd",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_188_33_Daily_life___training_gathering_play_and_food.uasset": "ab9ee84bb42829c852847fa66d22b468f6eb6207bca38f344076f7857407e39e",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_189_33_Daily_life___training_gathering_play_and_food.uasset": "bbf7d990c3d8d2dbed97fa85d03f9adeb8319ea7834554a6e8a47f550cb05f25",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_190_33_Daily_life___training_gathering_play_and_food.uasset": "ff3ecf8a2646e242ff1a421f64f5c65d06fe08b1428f03e3e2ec31db15f61cbc",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_191_33_Daily_life___training_gathering_play_and_food.uasset": "3b53684759cbfad67a05e580f4231e11bfefa089c75d9005dc3b0f8cabde3cbf",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_192_33_Daily_life___training_gathering_play_and_food.uasset": "e4ffa5fd8d1417e775ff2c73197ac2ec3e36ae37578f808394ac8cc07f04a9cb",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_193_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "e78ab9ce7f2c70c1854efe50957c21f668628aa13de4be2568647e047bb445c9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_194_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "b180d376df1d66f09ce0c7cca99a4dd4d92acf80cb11966faa5df551bd88589b",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_195_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "460299408cde67a2adbdea91477574c0b2fbddc3db895d24e5b54ad2fb6dcc17",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_196_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "6a303612fae2762d858eab8359825a0380e3357f89c1f5518434d6d6940f8874",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_197_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "bc12a34ca1abc43efca7c872d161468385133f45778c2bd8404bc3420532cda3",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_198_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "8c8d296e9f66d5b6b0d5df430be0045486c77003304622fffcec669e2d0a460a",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_199_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "a3f330cf707069b55deef4ae75f3d08216f274675ba4aa33ec0855be872b7185",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_200_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "05889bb26521a9c8b27faf9af74f0b0538d93dc1f6779267b77af878d738a8c2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_201_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "40c982386f46af9852a847b29912c183eac0c5ebbb3e4788e512373bd36d8245",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_202_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "2e26331ef35b205fc1a6bcfa077a1944373ed89c9cfc1c4b73ce875d7cf15c87",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_203_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "43e10e166a46894abbdc1c30fd1859f8d2cb4678b9169553f315d4df0eb1ea58",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_204_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "709f96119b7ef4fc36a7108e84b9bc0e3264ec4b1f94a9c12929ea0ffafb37df",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_205_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "62ea511c6f63657eb94f2db3221e64ccb5dbd05d898d7ff210455a1ca645221e",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_206_34_Garden_court___aligned_pavilions_and_flowing_landsca.uasset": "d6f84fe0bf61a0d2fed11d9633d08d2792dd2086a50e6985fff9e482649d331d",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_207_35_Shipping_container___rainwater_storage.uasset": "e31fbc38b5fd7150a82a8888c64fa26d2f64776bec19de0fbd8f1b97f214b207",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_208_35_Shipping_container___rainwater_storage.uasset": "c1ecacae4aab23a8d5395c06d62a6bb8092b40bb675a449c8497c45466c23ad8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_209_35_Shipping_container___rainwater_storage.uasset": "953356311b07f9474cef52d6d325037c5de94bba5f09ad5d926cebb6fd2d34f5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_210_35_Shipping_container___rainwater_storage.uasset": "e6583ad7e1cb6154d6b284d10829ed05755baeff11b8a2936303e440a4cef6f2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_211_35_Shipping_container___rainwater_storage.uasset": "81d01af12e670c15f90856c8baa86eab5c82740d486fa8c6e06241c57261e540",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_212_35_Shipping_container___rainwater_storage.uasset": "a2f4050a0ea24b963a89f3eb55f9fcc10a6fc5f858a74f61658acc2940eaaee9",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_213_35_Shipping_container___rainwater_storage.uasset": "6e8e293b0c32246f3c066b6e8a53e4fc9761b307b00c84cecd5a228a40deafb8",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_214_36_Buddha___meditation_garden.uasset": "5b8b958699f8880e984da1b1f9c29db1063af4d61fc87f3268e896c36cfe1113",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_215_36_Buddha___meditation_garden.uasset": "e7a38735d39a2e8c1189d86bf01ca8db841eca4fc9d98e4a27bc91d107f2f005",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_216_37_Presentation___crafted_details_and_fuller_planting.uasset": "cadadaaa68cc6bb0ae3093453a0eca6487ac685c06b010da040d97a7c435b0da",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_217_37_Presentation___crafted_details_and_fuller_planting.uasset": "b0d55f69afa9f548b9f9c602bc73ae5ce870fbe00905200b85299b59b11f1243",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_218_37_Presentation___crafted_details_and_fuller_planting.uasset": "71d3a07be300db07bb3a91932ccc8b94eb6114875fc008301d8c06847a95a4b4",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_219_37_Presentation___crafted_details_and_fuller_planting.uasset": "436948ccda0e246446ef3098076d995999e99baf7b359d79f2cc4da42b114ad2",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_220_37_Presentation___crafted_details_and_fuller_planting.uasset": "57b875f032cce58e8dbb02f94f831282d9057849baa3625de869f1e73b121854",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_221_37_Presentation___crafted_details_and_fuller_planting.uasset": "21341325bdf1b441722a86a19710fd2d6f9333a7989018ad06da5ffece5a7e0e",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_222_37_Presentation___crafted_details_and_fuller_planting.uasset": "10fa78dbd52fad4ffcaf2d84b7173ffacb622b602dfcd8688bb1717df135f8f1",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_223_37_Presentation___crafted_details_and_fuller_planting.uasset": "dad0d47dfa94abae7832a10165d43a9f9d0c6dcd85612e1819bb7c6b57d83b80",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_224_37_Presentation___crafted_details_and_fuller_planting.uasset": "54c7ada0b48394d1e68d9aa21b447126fa327563760078c88453afdf9b863745",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_225_37_Presentation___crafted_details_and_fuller_planting.uasset": "8863d0ebc18733bab75091fff3012c023074059bde5207271d8cb264110bf752",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_226_37_Presentation___crafted_details_and_fuller_planting.uasset": "24834dd2be85258e5a1c293b9d0b2e9ac32acf89b615e99be21f08dc6eed67b7",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_227_37_Presentation___crafted_details_and_fuller_planting.uasset": "8b788fd0b5345876300e81fbe73438f15071953e04fb2981c95a7593082941e5",
"unreal/SamfordHomestead/Content/Homestead/Meshes/SamfordHomestead_SM_228_37_Presentation___crafted_details_and_fuller_planting.uasset": "8c97a6adde71a3211f452e17ef804da81a2e4850b16b8a17514fb49b5db9a263",
"unreal/SamfordHomestead/Content/Homestead/SamfordHomestead.umap": "29204475ef86b1a472ebc89ef709e117af9b687ff1d61e75349f8513231e892d",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_000_Warm_oxide_polished_concrete___fine_aggregate_BaseColor.uasset": "bd62b440048676139aa0e8b9a0a2e9018d0cc462f0b26a508b9511d807daa4f3",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_000_Warm_oxide_polished_concrete___fine_aggregate_Normal.uasset": "6920721065dcf4539f758f96e14e0436a4c448549af5d32dcf3ff457581fef5a",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_001_Split_sandstone_facing___mineral_grain_BaseColor.uasset": "5d1cb874025ac07e61ba3cb562a6b83dda0c634879c6c43d945efc6dc8150f35",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_001_Split_sandstone_facing___mineral_grain_Normal.uasset": "0b366ff3e11616bed766b02b656a68702b188333e7002f0ecbfaa435fd94d89c",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_003_Naturally_silvered_hardwood___horizontal_X_BaseColor.uasset": "729490f12a02bc88706047129723231a42207ac2dbfd4007c9c8ad79ead5d8ef",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_003_Naturally_silvered_hardwood___horizontal_X_Normal.uasset": "f5b0f9e4b16af634834ebe650df28e9a04c81370537c566f2d64123854c124c3",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_004_Naturally_silvered_hardwood___horizontal_Y_BaseColor.uasset": "811aa6fda2ad481efdea37e40af58f19b1b9b9f763af7b3a9f3ae8d6b1919722",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_004_Naturally_silvered_hardwood___horizontal_Y_Normal.uasset": "83654bff8b681c69830f4dfcf3216090db374f91a34dbfa3f0119ebf0816be96",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_005_Oiled_spotted_gum_posts___vertical_grain_BaseColor.uasset": "28bebb9a32004ff8a2ff0c2b8cb62101d57d6dca07927def90e18db8e867781c",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_005_Oiled_spotted_gum_posts___vertical_grain_Normal.uasset": "add49dab8185c0da3ae2bcb44b45eda62d063601c39942ac5f6938096ea2f401",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_006_Bamboo_lining___golden_fibres_BaseColor.uasset": "b916b445138f56124911200839e2e1ceef0d6a1a66d5d0c01824b77c9a213fea",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_006_Bamboo_lining___golden_fibres_Normal.uasset": "4beafe59fed03a328cb1289f505bc79651815a4768aa2a793b9cd040e6ddb10f",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_007_Pale_Colorbond___powder_coated_steel_BaseColor.uasset": "9304c646dcfb94d54bc31be78b0338d6372abaebe43bc3fd41d29dd9b1b647b1",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_007_Pale_Colorbond___powder_coated_steel_Normal.uasset": "5862d978de42352b4d07a1ce92c9af3428cca21187238fd9a11a7920e02df5d1",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_008_Unpainted_hardwood___long_X_grain_BaseColor.uasset": "fc8fede0b73ebbd1704ebc5d1e356f5271299abefa1dbc4c7d942bc8f37686b3",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_008_Unpainted_hardwood___long_X_grain_Normal.uasset": "66ba25edb0973c3b61b8a267effd8897b660eef98ab01c55e523e866b299a345",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_009_Undyed_flax_linen_BaseColor.uasset": "4b1813c191634a3ca4e3c18a36fe23a1ce2d846e9af2de5b44600de102b30cb4",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_009_Undyed_flax_linen_Normal.uasset": "67ab5a1249ebf65c2c6545daf826ae1863043c7e3a8bf1195bc89320b4da9fd2",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_014_Unpainted_hardwood___long_Y_grain_BaseColor.uasset": "805be186a63b3a50afed4cf80e876566a6d1bc728e05f5ba5521b96712836560",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_014_Unpainted_hardwood___long_Y_grain_Normal.uasset": "0cabfd2278b8ee4a7747df055d807a197ccfd421fc0fc317fb424dae4c296811",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_015_Damp_brown_garden_soil_BaseColor.uasset": "da3ed9b1e47e73cacbf52556c382b19d58f5b70f803f1a3d350b2e3011912a54",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_015_Damp_brown_garden_soil_Normal.uasset": "1585f5d5b9ea9213b7621dfb87d12950483b4d5de3dd026f047788fdbd1950d5",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_020_Loose_local_gravel___fine_stones_BaseColor.uasset": "f272d09ae9b7c1f5ba8ca56be6fd680dbacd910183332992a210382ef01ef9c5",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_020_Loose_local_gravel___fine_stones_Normal.uasset": "e6428f94dd1666725319868f5d1290ba3295b660e40de26938481f3dc155f6ec",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_022_Living_soil_and_patchy_subtropical_ground_BaseColor.uasset": "84a78e3acbefda546a2d9d69978c98282ac3dc325c54e4d2bfbf0b2661d8ea8c",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_022_Living_soil_and_patchy_subtropical_ground_Normal.uasset": "b40d9a308f077ec7711675a76087852ce0891a651896c93eb1a9aa478d67b5f8",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_033_Eucalyptus_peeling_pale_bark_BaseColor.uasset": "4142175c6d6d22bc21dbb575fd75b4d05b154e41ec3749b2428bd429315fab6f",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_033_Eucalyptus_peeling_pale_bark_Normal.uasset": "d8f843ef83b77e9617be443bbf738afb4e5b488591471ec2531608f52bc2c171",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_037_Sauna_thermally_modified_timber_staves_BaseColor.uasset": "8555b35fe857e848cae743f6bca2464495e959bf5c6f2ce18d717fee430b7f4d",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_037_Sauna_thermally_modified_timber_staves_Normal.uasset": "08e3975e7094556e8a9f234447c8a881c866f27c23af810688b443dc484db1dc",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_039_Sauna_untreated_aspen___warm_pale_grain_BaseColor.uasset": "ff68723dd8986a07eec0e5a3b721e7ff1d00913fa518cebded27575a67a88a58",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_039_Sauna_untreated_aspen___warm_pale_grain_Normal.uasset": "f8c1923d9bab8e2a615261837980314833cf8389686285ddbbcad17b6331b2cd",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_045_Soft_warm_clay_plaster___natural_mineral_texture_BaseColor.uasset": "46f52279715ecc38f2971ab206c3a9d493b7d4e4e5fb89d0dfaf9648a493043b",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_045_Soft_warm_clay_plaster___natural_mineral_texture_Normal.uasset": "80a8103283d2e5e79f7c4fbec10c64f752b84bb648ea618cc4694da190c7d474",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_046_Hemp_fibre_insulation___concealed_infill_concept_BaseColor.uasset": "547befa219130592b6c2a6b81b2cce43439b8ca8107c5d78d121b6baf4273922",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_046_Hemp_fibre_insulation___concealed_infill_concept_Normal.uasset": "a4040ee8e4c92c8ed82a928c86fe489747a7a167b806c7b8662304270abb1c74",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_049_Woven_natural_meditation_mat_BaseColor.uasset": "ae1dade08a4a1a01c75cca1d1c34ebdd3749f02e8f16928621b2497560f6d8c7",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_049_Woven_natural_meditation_mat_Normal.uasset": "a5ba9ccd461c6b31586de87cb89e0aae24a1eccd0d81271fbde6e4ae61fbe55e",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_050_Meditation_cushion_charcoal_linen_BaseColor.uasset": "b21ddc4f7a13883cc79a82b672ad1373fc0e340e9d4646c6977912cf3626d232",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_050_Meditation_cushion_charcoal_linen_Normal.uasset": "3d36f37bbf0fd68a8afc59598fc2dc849d8feeb8ebecf5c8a0aacb3097c143ee",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_080_Reading_chair_moss_linen_BaseColor.uasset": "eb6fc6c3e9c57d6187060343820ffb94c392a80988319c98cee246e429d1641d",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_080_Reading_chair_moss_linen_Normal.uasset": "b87dff21c9fa335abddf110ba2aeefea37d48dacd4659ebc21d6fd7305c4a8ec",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_082_Eight_Sleep_charcoal_cover_textile_BaseColor.uasset": "d0407470c2736511994793dbaa3c025213298f4486da6fb3efe13fd389adcef2",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_082_Eight_Sleep_charcoal_cover_textile_Normal.uasset": "49b9c72c265b511b8e6925a0c32116f2d4760b132106458623b2d426aae5bafb",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_084_Blackout_curtain_oatmeal_woven_face_BaseColor.uasset": "4b7c02d8ea4221537df3181e62cd3d1d3800ca2c379ecc8c7324c36d34e5525b",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_084_Blackout_curtain_oatmeal_woven_face_Normal.uasset": "efe45552901b9622cf75f9d98dc1e82cb9fc5e63a03eb90fd66d1fbe08fa0760",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_091_Honed_natural_marble___ivory_and_warm_grey_veins_BaseColor.uasset": "77ddac9e0fdb872b8b14c7f0d55bff9848b8eaffb65ea59ec5e32660eb56f476",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_091_Honed_natural_marble___ivory_and_warm_grey_veins_Normal.uasset": "89df7989ba1a56ffdda50d1fd0cc4a572bd97a656c0823e6d7d0c81fa9bb169c",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_093_Copper_cookware___brushed_warm_patina_BaseColor.uasset": "cbb98fca57bf65f7cba6b52f6153e4389daef17c4d4351d369cf9c7767f70488",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_093_Copper_cookware___brushed_warm_patina_Normal.uasset": "2d4be2608a26920dbc9e66af1dd5393036165fa298b2ce35da76f561c1f34339",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_107_Container_olive_green_powder_coated_steel_BaseColor.uasset": "103a1d2f7e179e385310d6541e62a9df8accc07c08e5d81ea6805e9ab51e56cf",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_107_Container_olive_green_powder_coated_steel_Normal.uasset": "2e8195c5d8ea916095d402d22786d7c1cef97c8e53e583b0ac6e31ca2d9748b3",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_110_Buddha___warm_weathered_limestone_BaseColor.uasset": "791f163c1b867ba6b9f51bc26d163ea3fe1e7c15519bda68dfd4e45895fbc9bf",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_110_Buddha___warm_weathered_limestone_Normal.uasset": "5ae25a3f429995ccef29bc27d41f420a35ea9c80c721dde1d259953ead830864",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_112_Handwoven_cane___fine_warm_fibres_BaseColor.uasset": "d835b7841e00ff79bce45002d599fdfb47b3857de883bc71e647a8115c2ee7c2",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_112_Handwoven_cane___fine_warm_fibres_Normal.uasset": "70d53c002952793831dad44c0baf576416bee696bf3f274cbf7d6850e1b6f5c2",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_115_Unglazed_terracotta___fine_mineral_surface_BaseColor.uasset": "f8cd23d69a5bcfafc36672724beaa34e8d214269fffa25193b021a505b792ba3",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_115_Unglazed_terracotta___fine_mineral_surface_Normal.uasset": "b1e75191bb74bca85522ce5d626424a38c6a02366bf9e211e9ab650eb74731f3",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_116_Path_aggregate___warm_river_stone_BaseColor.uasset": "ba6047bd26b8f8262440836d3ebe43ac673ac9478038a056ddd36eefda97ea0e",
"unreal/SamfordHomestead/Content/Homestead/Textures/M_116_Path_aggregate___warm_river_stone_Normal.uasset": "060bf01ba5716d270216a5cac916d0315f3e5e18894f5da45b0125450bd54df8",
"unreal/SamfordHomestead/Content/Homestead/Walkthrough/BP_HomesteadGameMode.uasset": "2858fe830612991e4f55cb6567d32f61606b3c965ba493951d8c11a419e0db49",
"unreal/SamfordHomestead/Content/Homestead/Walkthrough/BP_HomesteadWalker.uasset": "cd4deea4fb77166ba86ab078719d9cbb4bb6717afd77e7a814330d4c138f8be7",
"unreal/SamfordHomestead/Content/Python/build_homestead.py": "833bc82993ce8d7a9b1edbe2fd66f380232531bbce7bcabed9503aae84ad1b74",
"unreal/SamfordHomestead/Content/Python/fix_tap_connection.py": "d1819ba38bc139265c20783a3df97ca8b221cbb445a66ba8ad47e5ff01268dff",
"unreal/SamfordHomestead/Content/Python/refine_unreal_presentation.py": "69b553bac29f25108071e802fe42d5516b7e14c87be4bac84a0c99a2c10105cb",
"unreal/SamfordHomestead/Content/Python/verify_walkthrough.py": "13a57a27c97619015827233a24bbe1aee4bf2b5b09703b90c390f384722913b0",
"unreal/SamfordHomestead/SamfordHomestead.uproject": "ccd922240c639c6bfbbe47e641494a2e678753f5c5fbd809b874ee4a247b7d09",
"unreal/SamfordMeditation/Config/DefaultEngine.ini": "012fbb2dee20d5ba6c074503d52b77d76d013c241f791ac3b09065336888ac66",
"unreal/SamfordMeditation/Config/DefaultInput.ini": "e1b7a60e4da1acca28b8540ed7b2746551df9ae1ddc0056eb45a0932ed82ea78",
"unreal/SamfordMeditation/Content/Collections/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@@ -319,7 +779,81 @@
"unreal/Textures/M_11_Meditation_cushion_charcoal_linen_BaseColor.png": "41ea24a82506acba8965f06847aa4860c4d963d0bd8255b4905626809de38e90",
"unreal/Textures/M_11_Meditation_cushion_charcoal_linen_Normal.png": "4b0a80b762c24675c40ac26fd16272bd45039fa88098ada032631554da4dde57",
"unreal/meditation-room-manifest.json": "3a900693fd579ee176955618d889fce6f72632878e5ee566ff4061222af58318",
"unreal/renders/unreal-overview.png": "c01aa10e711c55773b0e087191f6b8857f575f51843e3ebffdf9c7eddd857aca",
"unreal/renders/unreal-verandah.png": "d04cd18d2a564e7fd0bc7a9539ffaa590a9e836e6322ba03951eaf0c01e70276",
"unreal/transfer/SamfordHomestead.fbx": "414a8dae608c1ad2fae9205b7448ce381af60fcb0b7c80e8824d4138c9ce4fc5",
"unreal/transfer/Textures/M_000_Warm_oxide_polished_concrete___fine_aggregate_BaseColor.png": "aa42f2ede8629372cfd52b9c55e586b134261c5c266f63a453df6314f109e0b3",
"unreal/transfer/Textures/M_000_Warm_oxide_polished_concrete___fine_aggregate_Normal.png": "2d2f3f9c7b1c5e7473683fde69570e2d72b4d6a9650e7f4d356b0ea21b9ac81b",
"unreal/transfer/Textures/M_001_Split_sandstone_facing___mineral_grain_BaseColor.png": "9bc1b7dbb0f25c6e8cc79df559c1e3213f7b434b1e66bfbbb5b24f18faefdba2",
"unreal/transfer/Textures/M_001_Split_sandstone_facing___mineral_grain_Normal.png": "f7304c158fafd1b2c4e67f00363ab6b7dc82bb35e2672e21fe6d07e4ed55e877",
"unreal/transfer/Textures/M_003_Naturally_silvered_hardwood___horizontal_X_BaseColor.png": "52dbc3e144bec7e54ada08f03e990ce4d0785632c931e43d868489b57841ed28",
"unreal/transfer/Textures/M_003_Naturally_silvered_hardwood___horizontal_X_Normal.png": "71c27bbbd54f6b81355bb7999eb7714390a36bc1a0661036ffa97f13f46a3866",
"unreal/transfer/Textures/M_004_Naturally_silvered_hardwood___horizontal_Y_BaseColor.png": "7fbfb31afabafed46ac1837188c6a240b408634294a9e3b2d1698ca987cfa78d",
"unreal/transfer/Textures/M_004_Naturally_silvered_hardwood___horizontal_Y_Normal.png": "ba6ccee15583a1fd5364ed1e91551db22e577f4632c2f2c2c6e7f5fa194e0b4e",
"unreal/transfer/Textures/M_005_Oiled_spotted_gum_posts___vertical_grain_BaseColor.png": "19a3dfcd4d2ab4457a9978b8781662b0114d8ef470cd182d140567f05021c683",
"unreal/transfer/Textures/M_005_Oiled_spotted_gum_posts___vertical_grain_Normal.png": "98092a02746a16ef3938f0c57662a8f15b0255665e11dec4e679049c228cb307",
"unreal/transfer/Textures/M_006_Bamboo_lining___golden_fibres_BaseColor.png": "f0f4b659cc335396fd29ed135311ac5186e925d7e038de3dad46e1c2a08f3cec",
"unreal/transfer/Textures/M_006_Bamboo_lining___golden_fibres_Normal.png": "5b0b79814bbddde011757a1e5c713842d62ea0357f2e196076727eb1c200c57f",
"unreal/transfer/Textures/M_007_Pale_Colorbond___powder_coated_steel_BaseColor.png": "9b62a7ed53c9cabb265923892c1fccad55801f2be80368706a49085b3e8dfe8c",
"unreal/transfer/Textures/M_007_Pale_Colorbond___powder_coated_steel_Normal.png": "e43f3d8a47487b69ec5333b35bb5a6e43c7a42b272a8c0d110367ef49242073a",
"unreal/transfer/Textures/M_008_Unpainted_hardwood___long_X_grain_BaseColor.png": "2f15239e9396415fa4a4a9ac39ade06464930903633b6570db686149690e537a",
"unreal/transfer/Textures/M_008_Unpainted_hardwood___long_X_grain_Normal.png": "3f01831564fc545ba15abfbf1283eae7bb0c680c35f6e34f66f290b38cbd7fda",
"unreal/transfer/Textures/M_009_Undyed_flax_linen_BaseColor.png": "b6769fd157a73f4876d4b7ea6ed6e31cec7ad75570c0457b8b76ef7bf5c8f246",
"unreal/transfer/Textures/M_009_Undyed_flax_linen_Normal.png": "adf270384d5b067e020752ab82df5f1640fce450a3bffe6063cfe0d462525412",
"unreal/transfer/Textures/M_014_Unpainted_hardwood___long_Y_grain_BaseColor.png": "2e57817de1f3b7c37193249fd5f2be202c23df40ec842d9fdf4c0383318b69ac",
"unreal/transfer/Textures/M_014_Unpainted_hardwood___long_Y_grain_Normal.png": "0648c05229cf467e3d86c55c91ce4be2b20c73ce51faa5a7200ca7980c487ee3",
"unreal/transfer/Textures/M_015_Damp_brown_garden_soil_BaseColor.png": "1f5b24bd19a03deec7e75b8c056c8284405ab2cd5998a2930690bb4051736284",
"unreal/transfer/Textures/M_015_Damp_brown_garden_soil_Normal.png": "517162c47f75e85bf42e41336862004d396074c5f30f6260cca88944d9f04e53",
"unreal/transfer/Textures/M_020_Loose_local_gravel___fine_stones_BaseColor.png": "d04c00abcb761522572c6bb59de23342121aab571ee2f4cc1916de83ac5a7bb7",
"unreal/transfer/Textures/M_020_Loose_local_gravel___fine_stones_Normal.png": "2a40ddb2742cb5eb168cab58316f594500dfc79c5737684eea34772233b81f61",
"unreal/transfer/Textures/M_022_Living_soil_and_patchy_subtropical_ground_BaseColor.png": "05a0abe1bdf32422b6c0874c773669f3692845b1038118d176c0b6e0dc8f5860",
"unreal/transfer/Textures/M_022_Living_soil_and_patchy_subtropical_ground_Normal.png": "de4f98b7601dd0b833fc55c9a4be805dd3ec890ab14fdf9a325adccb6b978e14",
"unreal/transfer/Textures/M_033_Eucalyptus_peeling_pale_bark_BaseColor.png": "be11af1d858be9e81d62e3af326939a85672f830df2f44b8e26582c534ff7ac7",
"unreal/transfer/Textures/M_033_Eucalyptus_peeling_pale_bark_Normal.png": "61912b12a155ef3abd695bac006ff083b46703e07378b36391b4a22e184a902d",
"unreal/transfer/Textures/M_037_Sauna_thermally_modified_timber_staves_BaseColor.png": "df4e5c30f8d148008004a78cda6a57899ea01464b6fb5c96b53fed092f234f7d",
"unreal/transfer/Textures/M_037_Sauna_thermally_modified_timber_staves_Normal.png": "2340109d0aab9f0bb7d2894db43e016235eeae517e46a0643cc92ca9bcb8fdc9",
"unreal/transfer/Textures/M_039_Sauna_untreated_aspen___warm_pale_grain_BaseColor.png": "23029950b738a0f596273582c6fb54c2120a4f3b2bc63bdc5f4752da4b25b431",
"unreal/transfer/Textures/M_039_Sauna_untreated_aspen___warm_pale_grain_Normal.png": "b4ea45e5aff4e11bdc8e7431280161bbabc555bdc5d584732422da98277a5709",
"unreal/transfer/Textures/M_045_Soft_warm_clay_plaster___natural_mineral_texture_BaseColor.png": "c08c004e2a55ca9772558b96b19767fee7ad38ad9de2bc62b940c96fef9310ea",
"unreal/transfer/Textures/M_045_Soft_warm_clay_plaster___natural_mineral_texture_Normal.png": "cac53dbaf019cc54b235b8bd3c4a12fc706234215d492ef94e55b91ebdb81461",
"unreal/transfer/Textures/M_046_Hemp_fibre_insulation___concealed_infill_concept_BaseColor.png": "0acd8f301925c3fe2e453dd10ffb94fd46c1197ffad1c9b0974b3dd42072fc14",
"unreal/transfer/Textures/M_046_Hemp_fibre_insulation___concealed_infill_concept_Normal.png": "5ef06fedd84918d3d1148724e990c875ce249191a51c5c7d04e3510ca2a4fa5f",
"unreal/transfer/Textures/M_049_Woven_natural_meditation_mat_BaseColor.png": "1e66a4f64e82c4553eaa5b71fdfb3687c629fd81640b22be898437ac1af31230",
"unreal/transfer/Textures/M_049_Woven_natural_meditation_mat_Normal.png": "45d7d605a99e9842f8b1bd694a0090082b3e2e519a4774b1ae2f90776534af07",
"unreal/transfer/Textures/M_050_Meditation_cushion_charcoal_linen_BaseColor.png": "41ea24a82506acba8965f06847aa4860c4d963d0bd8255b4905626809de38e90",
"unreal/transfer/Textures/M_050_Meditation_cushion_charcoal_linen_Normal.png": "bcb74be360a5347d6b6cfad364661bb9dede4817a5b46ee43608e3bb6c94768b",
"unreal/transfer/Textures/M_080_Reading_chair_moss_linen_BaseColor.png": "00d76378eb1155ad121b075ca7624869350186c90f5715ee6ea05f2d4fff003c",
"unreal/transfer/Textures/M_080_Reading_chair_moss_linen_Normal.png": "afc0586c294826a439972169a401d8b8fef159512232ed89d5876614b6b670cf",
"unreal/transfer/Textures/M_082_Eight_Sleep_charcoal_cover_textile_BaseColor.png": "a92a7f8f82ad6dd5da9f5b7d845232c6905895fbfa0d928669f3a2cc986500c5",
"unreal/transfer/Textures/M_082_Eight_Sleep_charcoal_cover_textile_Normal.png": "df19f94814c147f4f9ad37b9fceac563e02e34966b5f75ece37cc4e4cc4de62a",
"unreal/transfer/Textures/M_084_Blackout_curtain_oatmeal_woven_face_BaseColor.png": "984b6485fcd48b82f2689f9b998a08def529cabf7593ad9f3d4e4c7d470d4e00",
"unreal/transfer/Textures/M_084_Blackout_curtain_oatmeal_woven_face_Normal.png": "04c8bad2f454ae0210cd1ee1cda4c819884a27c0e8bc6d90f862ad22b199f0a1",
"unreal/transfer/Textures/M_091_Honed_natural_marble___ivory_and_warm_grey_veins_BaseColor.png": "dfec89e018dcf50a38fd77dfcaff15e748b32ae2d5ab6fca8a81ff176f9f72d1",
"unreal/transfer/Textures/M_091_Honed_natural_marble___ivory_and_warm_grey_veins_Normal.png": "3b8dfb8c3b14effa2ec38e69ef1a4882de1fa69c367859e73cbedef159afbe90",
"unreal/transfer/Textures/M_093_Copper_cookware___brushed_warm_patina_BaseColor.png": "2dd779d9af6818b6f5c1d0e78b898474811b907eb2c73c6d7eb4afb4f95aedfd",
"unreal/transfer/Textures/M_093_Copper_cookware___brushed_warm_patina_Normal.png": "c74747ee34f4b6c592763d4bd7596011c6698cfd0bc83b877635a560363305f1",
"unreal/transfer/Textures/M_107_Container_olive_green_powder_coated_steel_BaseColor.png": "7cca27c2bcce1776f44a4c35f7f5a211964daee9e3de93d3a297ef1710ed060e",
"unreal/transfer/Textures/M_107_Container_olive_green_powder_coated_steel_Normal.png": "a10710640bb40756a6e0a441baf8e026b297bf42fd136a9903cda03a7a72fc0e",
"unreal/transfer/Textures/M_110_Buddha___warm_weathered_limestone_BaseColor.png": "4cd353c24d014a231b554d434155cbfa3419fe4e3a9f27f5cf370cbeb8d13cb8",
"unreal/transfer/Textures/M_110_Buddha___warm_weathered_limestone_Normal.png": "9ba086066add646875e35c7b2d18da2e2f623086b0df96260a55390fa852a2c4",
"unreal/transfer/Textures/M_112_Handwoven_cane___fine_warm_fibres_BaseColor.png": "59f9e9349a088f41e7c1adf28a1970e06b70b6f3fed638cc71d519a297ce0076",
"unreal/transfer/Textures/M_112_Handwoven_cane___fine_warm_fibres_Normal.png": "6a700ae2567161a476ffe4c42dbe9ca97198a2fb5d9010bd699af77d5dc182db",
"unreal/transfer/Textures/M_115_Unglazed_terracotta___fine_mineral_surface_BaseColor.png": "edbaaf5f8b03f4e802caf32bb1a29d691908483acad0e97e7e21f48677e59254",
"unreal/transfer/Textures/M_115_Unglazed_terracotta___fine_mineral_surface_Normal.png": "2d8c055a803826c7305b78b93393ae86cddfb482aab3b10601c47230a82a4300",
"unreal/transfer/Textures/M_116_Path_aggregate___warm_river_stone_BaseColor.png": "361f379bcefc096bf30667f10c1a622098ebb2fc011e5af17e5efdcf430ad12f",
"unreal/transfer/Textures/M_116_Path_aggregate___warm_river_stone_Normal.png": "0708402685b767932cceb61c15dcf18b8f1d296d6536d1a44d706b6b568cce6a",
"unreal/transfer/homestead-manifest.json": "556b029c46a044882e3a8050a4f37098c8872e615b4f45605c98a16cad7d8898",
"unreal/unreal-build-checks.json": "22a2cb8fb5f90abbd4f4a0832a0256e1cc7e79d755baa4f1bee2fac6c6542260",
"unreal/unreal-collision-rebuild.json": "7cd17249cca0a26161283a1e9d297dfbcb697bca54f7722f992d0a35347b4731",
"unreal/unreal-scene-checks.json": "bed6fe7aea84a3dbe92dd382f970e7014e045365e38d05de12b69b933ffb634d",
"walkthroughs/UNREAL-CAMERA-ANIMATION.md": "f0c53352a5b6651409e99b6b696a95eca2330a8527fe347534efaabfe277b21a"
"unreal/unreal-tap-check.json": "8e39e188184dcd715d71f3a37ac5f765a49306883847e05d53e742a7cf4d3538",
"unreal/unreal-walkthrough-verification.json": "3bc8f43f0face1434b0b67a3aa32547f39c73c950e64dabb5ec901ee41d11696",
"walkthroughs/CLIENT-PRESENTATION-V007.md": "ce69b2b29911058bb305310ea5377f2ac63eddaf7e81d2bbd08f0c1eb17ee81a",
"walkthroughs/UNREAL-CAMERA-ANIMATION.md": "f0c53352a5b6651409e99b6b696a95eca2330a8527fe347534efaabfe277b21a",
"walkthroughs/video/Samford-Valley-Concept-Film-v007.mp4": "1e0b3e22c8e8eacb7c0ec3fe2df430aa98e5b4109f4df4a3b1ac4613907452fd",
"walkthroughs/video/cinematic-shots.json": "1240d02e9c286445ef58597037ebe74bb50ffa579ac74c005ca4a74dc35ea580",
"walkthroughs/video/film-contact-sheet.jpg": "65189ecce7f17ecbf48ccb2a3b3d3a93770d18cd2272bc84cc33ba34e527a5be",
"walkthroughs/video/render-checks.json": "307987c6a052f2f0e6140bbe0640eae8295838d8888d87ad7c59335d788e788f",
"walkthroughs/video/video-verification.json": "fa0e585f0c30795fb7ba8b8a831ed945318c91402eec98f68c50ae4f3f62ac63"
}
}

View File

@@ -0,0 +1,154 @@
import bpy,math,os,json
from mathutils import Vector,Matrix
from math import sin,cos,pi
O=os.path.dirname(__file__);s=bpy.context.scene
c=bpy.data.collections.new('36 Buddha - meditation garden');bpy.data.collections['DETAIL - full geometry for renders'].children.link(c);COL={'new':c};active='new'
src=open(O+'/../samford-modular/build_scene.py').read();exec(src[src.index('def mesh('):src.index('timber=textured(')])
cubefs=[tuple(reversed(f)) for f in cubefs]
stone=textured('Buddha - warm weathered limestone',(.31,.285,.235),(.49,.46,.38),(42,42,42),.83,.0018)
shade=mat('Buddha - fine carved recess',(.18,.16,.125),.94)
def ell(n,p,sz,ma=stone,rot=0,nu=40,nv=24):
vs=[];fs=[]
for j in range(nv+1):
a=pi*j/nv
for i in range(nu):
b=2*pi*i/nu;x=sz[0]*sin(a)*cos(b);y=sz[1]*sin(a)*sin(b)
vs.append((p[0]+x*cos(rot)-y*sin(rot),p[1]+x*sin(rot)+y*cos(rot),p[2]+sz[2]*cos(a)))
for j in range(nv):
for i in range(nu):k=j*nu+i;l=j*nu+(i+1)%nu;fs.append((k,l,l+nu,k+nu))
ob=mesh('BUDDHA - '+n,vs,[tuple(reversed(f)) for f in fs],ma)
for f in ob.data.polygons:f.use_smooth=True
return ob
def tube(n,points,r,ma=stone):
# Catmull-Rom smooth carved lines / rounded limbs.
pts=[];p=[Vector(q) for q in points]
for i in range(len(p)-1):
a=p[max(0,i-1)];b=p[i];cc=p[i+1];d=p[min(i+2,len(p)-1)]
for j in range(8):
t=j/8;pts.append(.5*(2*b+(-a+cc)*t+(2*a-5*b+4*cc-d)*t*t+(-a+3*b-3*cc+d)*t*t*t))
pts.append(p[-1]);vs=[];fs=[]
for i,v in enumerate(pts):
q=(pts[min(i+1,len(pts)-1)]-pts[max(0,i-1)]).to_track_quat('Z','Y')
rr=r*(.65+.35*sin(pi*i/(len(pts)-1)))
for j in range(10):vs.append(tuple(v+q@Vector((rr*cos(j*2*pi/10),rr*sin(j*2*pi/10),0))))
for i in range(len(pts)-1):
for j in range(10):k=i*10+j;l=i*10+(j+1)%10;fs.append((k,l,l+10,k+10))
fs.extend([tuple(reversed(range(10))),tuple(range(len(vs)-10,len(vs)))])
ob=mesh('BUDDHA - '+n,vs,fs,ma)
for f in ob.data.polygons:f.use_smooth=True
return ob
box('BUDDHA - low stone plinth',(0,0,.13),(1.5,1.12,.26),stone,.04)
box('BUDDHA - plinth cap',(0,0,.285),(1.56,1.18,.075),stone,.025)
ell('oval seat',(0,0,.37),(.65,.43,.075))
ell('left folded robe knee',(-.30,-.075,.52),(.39,.32,.16),rot=-.22)
ell('right folded robe knee',(.30,-.075,.52),(.39,.32,.16),rot=.22)
ell('crossed shin left',(-.13,-.25,.555),(.40,.145,.13),rot=.23)
ell('crossed shin right',(.15,-.22,.585),(.39,.14,.12),rot=-.24)
ell('left resting foot',(.30,-.25,.655),(.19,.09,.075),rot=.25)
ell('right resting foot',(-.29,-.28,.64),(.18,.09,.072),rot=-.20)
# Sculpted torso profile narrows at waist and neck, rounded shoulders.
vs=[];fs=[];profiles=[(.53,.26,.18),(.68,.235,.185),(.86,.24,.175),(1.05,.30,.16),(1.16,.30,.14),(1.23,.20,.12),(1.25,.105,.095)]
for z,rx,ry in profiles:
for i in range(48):a=i*2*pi/48;vs.append((rx*cos(a),.02+ry*sin(a),z))
for j in range(len(profiles)-1):
for i in range(48):k=j*48+i;l=j*48+(i+1)%48;fs.append((k,l,l+48,k+48))
fs.extend([tuple(reversed(range(48))),tuple(range(len(vs)-48,len(vs)))])
ob=mesh('BUDDHA - draped torso',vs,fs,stone)
for f in ob.data.polygons:f.use_smooth=True
mod=ob.modifiers.new('Soft carved robe','SUBSURF');mod.levels=2;mod.render_levels=2
ell('neck',(0,.015,1.265),(.10,.10,.13))
for sign in [-1,1]:
ell('rounded robe shoulder',(sign*.265,0,1.135),(.095,.091,.107))
tube('relaxed arm',[(sign*.265,0,1.15),(sign*.32,-.015,.99),(sign*.34,-.08,.80),(sign*.22,-.255,.725),(sign*.085,-.30,.715)],.075)
ell('hand in meditation',(sign*.052,-.325,.73+sign*.012),(.13,.073,.037),rot=sign*.08)
for i in range(3):tube('finger crease',[(sign*.015,-.375-i*.008,.734+sign*.012),(sign*.11,-.365-i*.008,.728+sign*.012)],.0014,shade)
tube('touching thumbs',[(-.09,-.30,.755),(-.035,-.29,.79),(0,-.30,.785),(.035,-.29,.79),(.09,-.30,.755)],.014)
# A serene face, lowered eyelids, elongated earlobes and ushnisha.
ell('head',(0,0,1.48),(.157,.136,.21))
ell('chin',(0,-.033,1.355),(.100,.088,.067))
for sign in [-1,1]:
ell('ear',(sign*.157,.002,1.46),(.037,.050,.104))
ell('elongated earlobe',(sign*.158,-.002,1.365),(.026,.028,.055))
tube('ear carving',[(sign*.168,-.036,1.52),(sign*.181,-.042,1.47),(sign*.171,-.037,1.40)],.004,shade)
tube('gentle brow',[(sign*.022,-.127,1.527),(sign*.068,-.127,1.545),(sign*.113,-.105,1.53)],.009)
tube('lowered eyelid',[(sign*.026,-.131,1.497),(sign*.061,-.133,1.486),(sign*.102,-.112,1.493)],.0035,shade)
ell('nose bridge',(0,-.133,1.46),(.024,.029,.064))
ell('nose tip',(0,-.155,1.423),(.029,.024,.017))
tube('calm closed mouth',[(-.047,-.116,1.387),(-.022,-.130,1.392),(0,-.133,1.389),(.022,-.130,1.392),(.047,-.116,1.387)],.0028,shade)
ell('lower lip',(0,-.123,1.378),(.037,.010,.009))
ell('ushnisha topknot',(0,.022,1.723),(.087,.086,.092))
for j in range(7):
a=.16+j*.14;num=max(9,int(36*sin(a)))
for i in range(num):
b=2*pi*(i+.5*(j%2))/num
ell('carved hair curl',(.161*sin(a)*cos(b),.143*sin(a)*sin(b),1.48+.214*cos(a)),(.018,.018,.015),nu=10,nv=6)
for j in range(6):
a=.20+j*.29;num=max(6,int(24*sin(a)))
for i in range(num):
b=2*pi*(i+.5*(j%2))/num
ell('topknot carving',(.087*sin(a)*cos(b),.022+.086*sin(a)*sin(b),1.723+.092*cos(a)),(.013,.013,.011),nu=8,nv=6)
# Robe seam and restrained shallow folds.
tube('robe diagonal edge',[(-.18,-.095,1.20),(-.11,-.16,1.10),(.02,-.174,.97),(.15,-.15,.86),(.20,-.13,.77)],.013)
for j in range(5):
z=.61+j*.075;tube('robe fold',[(-.18,-.13,z+.04),(-.05,-.173,z),(.11,-.155,z-.008)],.0045)
for sign in [-1,1]:
for j in range(3):tube('knee robe fold',[(sign*.22,-.37,.57+j*.022),(sign*.42,-.30,.57+j*.025),(sign*.55,-.17,.55+j*.027)],.005)
# Fuse the neck, shoulders and arms into one continuous stone carving.
detail=bpy.data.collections['DETAIL - full geometry for renders'];was_hidden=detail.hide_viewport;detail.hide_viewport=False;bpy.context.view_layer.update()
parts=[ob for ob in c.objects if any(k in ob.name for k in ['draped torso','rounded robe shoulder','relaxed arm',' - neck'])]
vs=[];fs=[];dg=bpy.context.evaluated_depsgraph_get()
for ob in parts:
ev=ob.evaluated_get(dg);me=ev.to_mesh();off=len(vs);vs.extend(tuple(v.co) for v in me.vertices);fs.extend(tuple(off+i for i in p.vertices) for p in me.polygons);ev.to_mesh_clear()
body=mesh('BUDDHA - continuous carved upper body',vs,fs,stone)
bpy.context.view_layer.objects.active=body
rem=body.modifiers.new('Joined limestone carving','REMESH');rem.mode='VOXEL';rem.voxel_size=.007;rem.use_smooth_shade=True
bpy.ops.object.modifier_apply(modifier=rem.name)
sm=body.modifiers.new('Stone carving finish','SMOOTH');sm.factor=.65;sm.iterations=5;bpy.ops.object.modifier_apply(modifier=sm.name)
for ob in parts:bpy.data.objects.remove(ob,do_unlink=True)
detail.hide_viewport=was_hidden
# Rotate east to look toward shared court; north of meditation room, south of garden path.
cx,cy=-12.4,15.35
def ground(x,y):return -.024*y+.004*x+.12*sin(x*.19)*cos(y*.14)+.055*sin(x*.72+y*.32)
zbase=max(ground(cx+x,cy+y) for x in [-.6,.6] for y in [-.8,.8])+.025
T=Matrix.Translation((cx,cy,zbase))@Matrix.Rotation(pi/2,4,'Z')
for ob in c.objects:ob.matrix_world=T@Matrix.LocRotScale(ob.location,ob.rotation_euler.to_quaternion(),ob.scale)
# Single smooth lightweight viewport proxy, no object overhead from small carving details.
vs=[];fs=[];inds=[];smooth=[];mats=[]
for ob in c.objects:
mw=Matrix.LocRotScale(ob.location,ob.rotation_euler.to_quaternion(),ob.scale);off=len(vs);vs.extend(tuple(mw@v.co) for v in ob.data.vertices)
for m in ob.data.materials:
if m not in mats:mats.append(m)
for p in ob.data.polygons:fs.append(tuple(off+i for i in p.vertices));inds.append(mats.index(ob.data.materials[p.material_index]));smooth.append(p.use_smooth)
me=bpy.data.meshes.new('Buddha garden viewport');me.from_pydata(vs,[],fs);me.update()
for m in mats:me.materials.append(m)
me.polygons.foreach_set('material_index',inds);me.polygons.foreach_set('use_smooth',smooth)
proxy=bpy.data.objects.new('FAST | Garden Buddha statue',me);bpy.data.collections['00 FAST TOUR - lightweight viewport'].objects.link(proxy)
chapters=json.load(open(O+'/tour-chapters-container-water.json'));title='31 / QUIET GARDEN BUDDHA';chapters.append(dict(title=title,start=3601,end=3720,seconds=5))
cam=bpy.data.objects['PLAY TOUR camera'];s.frame_end=3720
for f,p in [(3601,(-7.5,18.2,2.6)),(3720,(-7.8,17.7,2.35))]:
s.frame_set(f);cam.location=p;cam.rotation_euler=(Vector((cx,cy,zbase+.95))-cam.location).to_track_quat('-Z','Y').to_euler();cam.keyframe_insert('location',frame=f);cam.keyframe_insert('rotation_euler',frame=f);cam.data.lens=49;cam.data.keyframe_insert('lens',frame=f)
coll=bpy.data.collections['22 PLAY - guided camera tour'];fonts=[o for o in coll.objects if o.type=='FONT']
ref=next(o for o in fonts if o.data.body.startswith('30 /'))
ref.scale=(0,0,0);ref.keyframe_insert('scale',frame=3601)
caption=ref.copy();caption.data=ref.data.copy();caption.animation_data_clear();coll.objects.link(caption);caption.name='Tour caption 31 - garden Buddha';caption.data.body=title;caption.location=(-36/49*.91,36/49*9/16*.84,-2)
for f,k in [(1,0),(3600,0),(3601,1),(3720,1)]:caption.scale=(k,k,k);caption.keyframe_insert('scale',frame=f)
for ob in [ref,caption]:
for layer in ob.animation_data.action.layers:
for strip in layer.strips:
for bag in strip.channelbags:
for fc in bag.fcurves:
for key in fc.keyframe_points:key.interpolation='CONSTANT'
s.timeline_markers.new(title,frame=3601);s['PLAY THE TOUR']='Hover over the 3D view and press Space. 31 chapters, 2 min 35 sec. Shift+Left Arrow restarts.'
s['Garden Buddha']='Weathered limestone seated Buddha on a low stone plinth, north of the meditation pavilion, facing east into the shared garden court. Version 006.'
text=bpy.data.texts.get('START HERE - PRESS PLAY')
if text:text.clear();text.write(s['PLAY THE TOUR']+'\n\n'+s['Garden Buddha'])
layout=json.load(open(O+'/container-water-layout.json'));layout.update(version=6,buddha=[cx,cy,zbase],buddha_facing='east')
json.dump(layout,open(O+'/buddha-garden-layout.json','w'),indent=2);json.dump(chapters,open(O+'/tour-chapters-buddha-garden.json','w'),indent=2)
s.frame_set(3601);s.render.resolution_percentage=100;s.camera=cam
bpy.ops.wm.save_as_mainfile(filepath=O+'/samford-solarpunk-buddha-garden-tour.blend')
for o in fonts+[caption]:o.hide_render=True
s.render.resolution_percentage=60;s.cycles.samples=48;s.cycles.use_denoising=True
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU';s.render.filepath=O+'/buddha-garden.png';bpy.ops.render.render(write_still=True)
print('BUDDHA_READY',len(c.objects),len(fs),flush=True)

View File

@@ -0,0 +1,138 @@
import bpy,math,os,json
from mathutils import Vector,Matrix
from math import cos,sin,pi
O=os.path.dirname(__file__);s=bpy.context.scene;detail=bpy.data.collections['DETAIL - full geometry for renders'];fast=bpy.data.collections['00 FAST TOUR - lightweight viewport'];services=bpy.data.collections['05 Water and services']
c=bpy.data.collections.new('35 Shipping container - rainwater storage');detail.children.link(c);COL={'new':c};active='new'
src=open(O+'/../samford-modular/build_scene.py').read();exec(src[src.index('def mesh('):src.index('timber=textured(')])
cubefs=[tuple(reversed(f)) for f in cubefs]
green=textured('Container olive green powder-coated steel',(.065,.12,.080),(.095,.17,.11),(95,95,95),.43,.0006);green.node_tree.nodes['Principled BSDF'].inputs['Metallic'].default_value=.65
steel=bpy.data.materials['Reusable dark steel bolts and shoes'];stone=bpy.data.materials['Split sandstone facing - mineral grain'];metal=bpy.data.materials['Appliance brushed metal'];wood=bpy.data.materials['Unpainted hardwood - long X grain'];gravel=bpy.data.materials['Loose local gravel - fine stones']
watermat=mat('Container enclosed water tanks pale grey polymer',(.59,.66,.57),.50);pipe=mat('Rainwater pipe dark polyethylene',(.03,.047,.035),.43);labelmat=mat('Container cream stencil lettering',(.74,.75,.62),.65)
def ground(x,y):return -.024*y+.004*x+.12*sin(x*.19)*cos(y*.14)+.055*sin(x*.72+y*.32)
removed=[]
for ob in list(services.objects):
if ob.name.startswith(('Gravel tank pad','2000 mm dark green poly rainwater tank','Poly tank','Tank service lid','Accessible tank outlet')):removed.append(ob.name);bpy.data.objects.remove(ob,do_unlink=True)
cx,cy,base=-25,-8,.42;L,W,H=6.06,2.44,2.59;xs,xe=cx-L/2,cx+L/2;ys,yn=cy-W/2,cy+W/2
# Rectangular container corner posts, ISO-style castings and structural rails.
box('CONTAINER WATER - steel base frame',(cx,cy,base+.075),(L,W,.15),green,.01)
box('Container non-absorbent interior floor',(cx,cy,base+.165),(L-.15,W-.15,.03),steel,.005)
for x in [xs+.08,xe-.08]:
for y in [ys+.08,yn-.08]:
g=ground(x,y);box('Container support pier',(x,y,(g+base)/2),(.38,.38,max(.1,base-g)),stone,.012)
box('Container structural corner post',(x,y,base+H/2),(.15,.15,H),green,.01)
for z in [base+.10,base+H-.10]:
box('ISO corner casting',(x,y,z),(.19,.18,.19),metal,.015)
box('ISO casting lifting recess',(x,y+(.093 if y>cy else -.093),z),(.075,.006,.065),steel,.014)
for y in [ys+.06,yn-.06]:
for z in [base+.18,base+H-.075]:box('Container long structural rail',(cx,y,z),(L,.13,.15),green,.007)
for x in [xs+.06,xe-.06]:box('Container upper end rail',(x,cy,base+H-.075),(.13,W,.15),green,.007)
# Corrugated long walls: folded sheet geometry rather than flat paint stripes.
for y,sign in [(ys,-1),(yn,1)]:
vs=[];faces=[];n=160
for i in range(n+1):
x=xs+.15+(L-.30)*i/n;fold=.028 if i%4 in [1,2] else -.028
vs.extend([(x,y+sign*fold,base+.24),(x,y+sign*fold,base+H-.15)])
for i in range(n):k=i*2;faces.append((k,k+2,k+3,k+1) if sign<0 else (k,k+1,k+3,k+2))
mesh('Container corrugated '+('south' if sign<0 else 'north')+' steel wall',vs,faces,green)
box('Container rain-shedding roof',(cx,cy,base+H-.035),(L-.12,W-.12,.055),green,.008)
for i in range(28):box('Container roof corrugation',(xs+.18+i*.21,cy,base+H+.005),(.055,W-.22,.025),green,.006)
# Recognisable double cargo doors at the east end, seals and locking bars.
for y in [cy-.56,cy+.56]:
box('Container cargo door dark gasket',(xe-.055,y,base+1.38),(.045,1.115,2.25),steel,.006)
box('Container cargo door panel',(xe-.021,y,base+1.38),(.04,1.065,2.20),green,.007)
for yy in [y-.25,y+.25]:
rod('Container door locking bar',(xe+.036,yy,base+.30),(xe+.036,yy,base+2.42),.015,metal,sides=16)
for z in [base+.42,base+1.19,base+2.28]:box('Door locking bar keeper',(xe+.051,yy,z),(.035,.075,.075),green,.007)
rod('Cargo door latch handle',(xe+.085,yy,base+1.13),(xe+.085,yy+.16,base+1.13),.013,metal,sides=12)
for z in [base+.48,base+1.36,base+2.21]:box('Container door hinge',(xe+.016,y+(.52 if y>cy else -.52),z),(.07,.12,.095),metal,.008)
# West end is a presentation cutaway, matching the other building cutaway views.
cut=mat('VIEW container west end transparent steel',(.07,.13,.085),.45,.6);ns=cut.node_tree.nodes;ls=cut.node_tree.links;tr=ns.new('ShaderNodeBsdfTransparent');mix=ns.new('ShaderNodeMixShader');mix.inputs[0].default_value=.07;ls.new(tr.outputs[0],mix.inputs[1]);ls.new(ns.get('Principled BSDF').outputs[0],mix.inputs[2]);ls.new(mix.outputs[0],ns.get('Material Output').inputs['Surface'])
cut.diffuse_color=(.07,.13,.085,.07)
ob=box('CONTAINER - west inspection cutaway',(xs+.035,cy,base+H/2),(.04,W-.20,H-.30),cut);ob.hide_set(True);ob['Presentation only']='West wall transparent for inspection. Restore olive container steel material for a closed exterior.'
# Two separate sealed tank vessels; the container shell itself is not a pressure/water vessel.
for x in [cx-1.55,cx+.75]:
z=base+.20
rod('INTERNAL RAINWATER TANK - sealed vessel',(x,cy,z),(x,cy,z+1.88),.92,watermat,sides=64)
rod('Internal water tank lid',(x,cy,z+1.88),(x,cy,z+1.92),.89,watermat,sides=64)
rod('Tank inspection hatch',(x,cy,z+1.92),(x,cy,z+1.965),.17,steel,sides=32)
for j in range(9):
zz=z+.15+j*.19;rod('Tank internal reinforcing band',(x,cy,zz),(x,cy,zz+.02),.933,watermat,sides=64)
rod('Tank top inlet connection',(x,cy,z+1.96),(x,cy,z+2.09),.033,pipe,sides=20)
rod('Tank manifold branch',(x,cy,z+2.09),(x,cy+.63,z+2.09),.033,pipe,sides=20)
rod('Tank low service connection',(x,cy-.88,z+.13),(x,cy-1.02,z+.13),.031,pipe,sides=20)
rod('Rainwater shared inlet manifold',(cx-1.55,cy+.63,base+2.29),(xe-.6,cy+.63,base+2.29),.035,pipe,sides=20)
rod('Rainwater shared outlet manifold',(cx-1.55,cy-1.02,base+.33),(xe-.6,cy-1.02,base+.33),.035,pipe,sides=20)
rod('Rainwater external inlet riser',(xe-.6,yn+.2,base+.1),(xe-.6,yn+.2,base+2.29),.04,pipe,sides=24)
rod('First flush collection chamber',(xe-1.0,yn+.2,base+.25),(xe-1.0,yn+.2,base+1.15),.10,watermat,sides=32)
box('Water service pump plinth',(xe-.7,ys-.65,base+.10),(.64,.72,.20),stone,.01)
rod('Water service pump motor',(xe-.7,ys-.89,base+.35),(xe-.7,ys-.41,base+.35),.13,metal,sides=32)
for x in [xe-.95,xe-.45]:box('Water pump fixing foot',(x,ys-.65,base+.245),(.075,.30,.09),steel,.007)
box('Rainwater outlet isolation valve',(xe-.6,ys-.25,base+.35),(.10,.11,.12),metal,.009)
box('Rainwater valve lever',(xe-.6,ys-.25,base+.46),(.21,.026,.02),green,.004)
rod('Inlet through-wall connection',(xe-.6,cy+.63,base+2.29),(xe-.6,yn+.2,base+2.29),.035,pipe,sides=20)
rod('Outlet through-wall connection',(xe-.6,cy-1.02,base+.33),(xe-.6,ys-.4,base+.33),.035,pipe,sides=20)
# Collection route toward the existing parents-wing downpipe, clear of paths above.
for a,b in [((-15.7,-7.83,-.15),(-18.4,-8.0,-.15)),((-18.4,-8,-.15),(xe-.6,yn+.2,-.15))]:rod('Buried roof collection pipe - concept route',a,b,.04,pipe,sides=20)
# Long-side stencil helps the object read clearly as a service container.
cu=bpy.data.curves.new('Rainwater container stencil','FONT');cu.body='RAINWATER';cu.size=.19;cu.extrude=.0005;cu.materials.append(labelmat)
t=bpy.data.objects.new('Container RAINWATER stencil',cu);c.objects.link(t);t.location=(cx+.7,yn+.035,base+1.5);t.rotation_euler=(pi/2,0,pi)
# Adjust the former tank path to approach the container's east cargo doors.
gardens=bpy.data.collections['34 Garden court - aligned pavilions and flowing landscape'];old=bpy.data.objects.get('Rainwater service garden path')
if old:bpy.data.objects.remove(old,do_unlink=True)
layout=json.load(open(O+'/garden-flow-layout.json'));layout['version']=5;layout['water_container']=[cx,cy,L,W,H]
points=[(-23,8.1),(-28.5,8.2),(-29.3,1),(-29.1,-5),(-29.1,-11.5),(-25,-12),(-20.5,-11.4),(-20.5,-8),(xe,-8)]
# Smooth Catmull-Rom route follows terrain and stops at the east cargo doors.
pts=[];p=[Vector(q) for q in points]
for i in range(len(p)-1):
a=p[max(0,i-1)];b=p[i];cc=p[i+1];d=p[min(i+2,len(p)-1)]
for j in range(20):
f=j/20;v=.5*(2*b+(-a+cc)*f+(2*a-5*b+4*cc-d)*f*f+(-a+3*b-3*cc+d)*f*f*f);pts.append(tuple(v))
pts.append(tuple(p[-1]));vs=[];fs=[]
for i,q in enumerate(pts):
v=Vector(q);d=Vector(pts[min(i+1,len(pts)-1)])-Vector(pts[max(i-1,0)]);side=Vector((-d.y,d.x)).normalized()*.575
for vv in [v-side,v+side]:vs.append((vv.x,vv.y,ground(*vv)+.085))
for i in range(len(pts)-1):k=i*2;fs.append((k,k+1,k+3,k+2))
mesh('Rainwater container service garden path',vs,fs,gravel)
for path in layout['paths']:
if path['name']=='Rainwater service garden path':path.update(name='Rainwater container service garden path',points=pts)
# Refresh only the affected fast display meshes, leaving tree simplification untouched.
def combine(coll,name):
old=bpy.data.objects.get(name)
if old:bpy.data.objects.remove(old,do_unlink=True)
vs=[];fs=[];indices=[];mats=[];lookup={}
for ob in coll.objects:
if ob.type!='MESH' or ob.hide_render or ob.hide_get():continue
remap=[]
for m in ob.data.materials:
if m not in lookup:lookup[m]=len(mats);mats.append(m)
remap.append(lookup[m])
mw=Matrix.LocRotScale(ob.location,ob.rotation_euler.to_quaternion(),ob.scale);off=len(vs);vs.extend(tuple(mw@v.co) for v in ob.data.vertices)
for poly in ob.data.polygons:fs.append(tuple(off+j for j in poly.vertices));indices.append(remap[poly.material_index])
me=bpy.data.meshes.new(name);me.from_pydata(vs,[],fs);me.update()
for m in mats:me.materials.append(m)
me.polygons.foreach_set('material_index',indices);ob=bpy.data.objects.new(name,me);fast.objects.link(ob)
combine(services,'FAST | 05 Water and services');combine(gardens,'FAST | Aligned garden court and flowers');combine(c,'FAST | Container rainwater storage')
cam=bpy.data.objects['PLAY TOUR camera'];chapters=json.load(open(O+'/tour-chapters-garden-flow.json'));chapters[12]['title']='13 / CONTAINER RAINWATER STORAGE'
for f,pos in [(1441,(-17,-2.5,4.6)),(1560,(-17.5,-3.1,4.3))]:
s.frame_set(f);cam.location=pos;cam.rotation_euler=(Vector((-25,-8,1.6))-cam.location).to_track_quat('-Z','Y').to_euler();cam.keyframe_insert('location',frame=f);cam.keyframe_insert('rotation_euler',frame=f);cam.data.lens=40;cam.data.keyframe_insert('lens',frame=f)
fonts=[o for o in bpy.data.collections['22 PLAY - guided camera tour'].objects if o.type=='FONT']
for o in fonts:
if o.data.body.startswith('13 /'):o.data.body=chapters[12]['title'];half=36/40;o.location=(-half*.91,half*9/16*.84,-2)
for m in s.timeline_markers:
if m.frame==1441:m.name=chapters[12]['title']
s['Water storage']='20-foot container-style enclosure with two separate sealed internal tanks, corrugated steel shell, cargo doors, plumbing and a west inspection cutaway. Container shell is not modelled as the water-retaining vessel. Structural/loading, tank product and water-system sizing remain concept design.'
s['Current design']=s.get('Current design','')+' Exposed cylindrical tanks replaced by a container water-storage module in version 005.'
s.frame_set(1441);s.render.resolution_percentage=100
json.dump(layout,open(O+'/container-water-layout.json','w'),indent=2);json.dump(chapters,open(O+'/tour-chapters-container-water.json','w'),indent=2)
report={'container_dimensions_m':[L,W,H],'internal_tanks':sum(o.name.startswith('INTERNAL RAINWATER TANK') for o in s.objects),'old_exposed_tanks_removed':not any(o.name.startswith('2000 mm dark green poly rainwater tank') for o in s.objects),'west_inspection_cutaway':True,'tour_chapters':len(chapters),'removed_old_objects':len(removed)}
assert report['internal_tanks']==2 and report['old_exposed_tanks_removed']
json.dump(report,open(O+'/container-water-checks.json','w'),indent=2)
bpy.ops.wm.save_as_mainfile(filepath=O+'/samford-solarpunk-container-water-tour.blend')
for o in fonts:o.hide_render=True
s.render.resolution_percentage=60;s.cycles.samples=32;s.cycles.use_denoising=True
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU'
for name,f in [('container-water.png',1480),('container-water-overview.png',45)]:s.frame_set(f);s.render.filepath=O+'/'+name;bpy.ops.render.render(write_still=True)
cam.animation_data_clear();cam.data.animation_data_clear();cam.location=(-33,-3.5,4);cam.rotation_euler=(Vector((-25.5,-8,1.6))-cam.location).to_track_quat('-Z','Y').to_euler();cam.data.lens=38;s.render.filepath=O+'/container-water-cutaway.png';bpy.ops.render.render(write_still=True)
print('CONTAINER_WATER_READY '+json.dumps(report),flush=True)

View File

@@ -1,6 +1,6 @@
from pathlib import Path
import json,html
O=Path(__file__).parent;d=json.loads((O/'garden-flow-layout.json').read_text());p=[]
O=Path(__file__).parent;d=json.loads((O/('container-water-layout.json' if (O/'container-water-layout.json').exists() else 'garden-flow-layout.json')).read_text());p=[]
p.append('<svg xmlns="http://www.w3.org/2000/svg" width="1400" height="1180" viewBox="0 0 1400 1180"><rect width="1400" height="1180" fill="#f3f0e7"/><style>text{font-family:Arial,sans-serif;fill:#30433b}.sub{fill:#68756b}</style><text x="60" y="58" font-size="31" font-weight="600">A home held together by its garden.</text><text x="60" y="91" font-size="16" class="sub">SAMFORD VALLEY / Aligned pavilions, soft garden curves and room to grow · Concept 004</text>')
def pt(x,y):return (600+x*13,500-y*13)
def line(pts,color,w,dash=''):
@@ -39,8 +39,11 @@ rect(*d['solar'],'#849a9d');label(9.4,-18.7,['GROUND SOLAR'],9)
label(0,-25,['Aligned garage, training and energy zone'],11)
x,y=d['sauna'];ellipse(x,y,2.2,2.0,'#ba9b75');label(x,y+.15,['SAUNA'],10)
rect(-27,6.8,1.3,1.3,'#b0c5c1');label(-29,10,['Outdoor shower'],10)
for x in [-23.95,-26.25]:ellipse(x,-8,1,1,'#6d8563')
label(-25,-10.8,['Rainwater tanks'],10)
if 'water_container' in d:
rect(*d['water_container'][:4],'#6d8563');label(-25,-13.8,['CONTAINER WATER','2 enclosed tanks'],10)
else:
for x in [-23.95,-26.25]:ellipse(x,-8,1,1,'#6d8563')
label(-25,-10.8,['Rainwater tanks'],10)
rect(24.2,-7.5,4.3,5,'#c3d7c2');label(24.2,-7.4,['GREENHOUSE'],9)
for x in [23.8,27.5]:
for y in [-1.7,1.5,4.7]:rect(x,y,2.3,1.3,'#ad9573')
@@ -51,4 +54,4 @@ label(12,-7,['FLOWER','GARDEN'],10)
rect(*d['future_basketball'],'#edf0e6','stroke-dasharray="6 6"');label(13,-35,['FUTURE','BASKETBALL','Unbuilt reserve'],11)
label(27,-29,['4 m gravel access'],11)
p.extend(['<path d="M1250 220V153m0 0l-9 18m9-18l9 18" fill="none" stroke="#30433b" stroke-width="3"/><text x="1250" y="140" text-anchor="middle" font-size="17">N</text>','<line x1="65" y1="1030" x2="195" y2="1030" stroke="#30433b" stroke-width="4"/><text x="65" y="1060" font-size="13">10 metres</text>','<line x1="60" y1="1090" x2="1340" y2="1090" stroke="#c5cebd"/><text x="60" y="1120" font-size="14">13 planted garden beds · Smooth pedestrian routes · Future pavilions remain shadows · Table-tennis deck removed</text>','<text x="60" y="1147" font-size="13" class="sub">Concept only: illustrative terrain, no surveyed boundary. Plant forms and structural connections require site-specific design development.</text></svg>'])
(O/'garden-flow-plan.svg').write_text(''.join(p))
(O/('container-water-plan.svg' if d['version']==5 else 'garden-flow-plan.svg')).write_text(''.join(p).replace('Concept 004','Concept 005' if d['version']==5 else 'Concept 004'))

View File

@@ -0,0 +1,19 @@
import bpy,json,os,math
from mathutils import Vector
O=os.path.dirname(__file__);s=bpy.context.scene;chapters=json.load(open(O+'/tour-chapters-buddha-garden.json'));fonts=[o for o in bpy.data.collections['22 PLAY - guided camera tour'].objects if o.type=='FONT'];issues=[]
for ch in chapters:
s.frame_set(ch['start']+30);shown=[o.data.body for o in fonts if o.scale.length>.5]
if shown!=[ch['title']]:issues.append([ch['title'],shown])
names=[o.name for o in s.objects];layout=json.load(open(O+'/buddha-garden-layout.json'));x,y,z=layout['buddha']
# Actual rotated rectangular plinth lies outside the pavilion and walking-path ribbon.
mx,my,mw,md=layout['meditation'];assert y-.78>my+md/2
clearance=999
for path in layout['paths']:
if path['kind']=='roofed walk':continue
for q in path['points']:
dist=math.hypot(max(abs(q[0]-x)-.59,0),max(abs(q[1]-y)-.78,0))-path['width']/2
clearance=min(clearance,dist)
assert clearance>.05,clearance
report={'buddha_collection_objects':len(bpy.data.collections['36 Buddha - meditation garden'].objects),'viewport_proxy':'FAST | Garden Buddha statue' in names,'tour_chapters':len(chapters),'caption_issues':issues,'path_clearance_m':round(clearance,3),'statue_outside_room':True,'internal_water_tanks':sum(n.startswith('INTERNAL RAINWATER TANK') for n in names),'kitchen_preserved':'ISLAND - honed marble countertop' in names,'no_table_tennis':not any('table tennis' in n.lower() for n in names),'render_size':[s.render.resolution_x,s.render.resolution_y,s.render.resolution_percentage]}
assert len(chapters)==31 and s.frame_end==3720 and not issues and report['viewport_proxy'] and report['internal_water_tanks']==2 and report['kitchen_preserved'] and report['no_table_tennis'] and report['render_size']==[2560,1440,100]
json.dump(report,open(O+'/buddha-garden-verification.json','w'),indent=2);print('VERIFIED '+json.dumps(report),flush=True)

View File

@@ -0,0 +1,19 @@
import bpy,json,os
from mathutils import Matrix,Vector
O=os.path.dirname(__file__);s=bpy.context.scene
chapters=json.load(open(O+'/tour-chapters-container-water.json'));fonts=[o for o in bpy.data.collections['22 PLAY - guided camera tour'].objects if o.type=='FONT'];issues=[]
for c in chapters:
s.frame_set(c['start']+30);shown=[o.data.body for o in fonts if o.scale.length>.5]
if shown!=[c['title']]:issues.append([c['title'],shown])
names=[o.name for o in s.objects]
report={'internal_tanks':sum(n.startswith('INTERNAL RAINWATER TANK') for n in names),'old_exposed_tanks_removed':not any(n.startswith('2000 mm dark green poly rainwater tank') for n in names),'container':all(n in names for n in ['CONTAINER WATER - steel base frame','Container corrugated north steel wall','CONTAINER - west inspection cutaway']),'tour_chapters':len(chapters),'caption_issues':issues,'render_size':[s.render.resolution_x,s.render.resolution_y,s.render.resolution_percentage],'kitchen_preserved':'ISLAND - honed marble countertop' in names,'no_table_tennis':not any('table tennis' in n.lower() for n in names)}
assert report['internal_tanks']==2 and report['old_exposed_tanks_removed'] and report['container'] and not issues and report['kitchen_preserved'] and report['no_table_tennis']
assert report['render_size']==[2560,1440,100] and s.frame_end==3600
# Internal tank bounding boxes fit within the structural enclosure.
for o in s.objects:
if o.name.startswith('INTERNAL RAINWATER TANK'):
m=Matrix.LocRotScale(o.location,o.rotation_euler.to_quaternion(),o.scale)
for b in o.bound_box:
v=m@Vector(b);assert -27.98<v.x<-22.02 and -9.17<v.y<-6.83 and .58<v.z<2.9
s.frame_set(1441);bpy.ops.wm.save_as_mainfile(filepath=O+'/samford-solarpunk-container-water-tour.blend')
json.dump(report,open(O+'/container-water-verification.json','w'),indent=2);print('VERIFIED '+json.dumps(report),flush=True)

View File

@@ -0,0 +1,15 @@
# Samford presentation and first walkable homestead — v007
Goal: improve the existing approved Blender concept and provide an actual shareable video plus an editable first-person Unreal prototype of the whole site. Preserve all v006 layout decisions and historical files.
Design: natural material detail at human scale; finished edges, soft mineral surfaces, timber end grain and grain variation, fuller garden planting and visible lighting details. Retain the open presentation sides and future ghost pavilions. No new architectural programme or claim of surveyed/construction accuracy.
Implementation:
- [x] Inspect the v006 saved scene and improve materials, architectural detail and planting in a new v007 file. Keep the 31-chapter inspection tour and FAST/DETAIL split.
- [x] Render a small set of actual Cycles views, inspect them, and build a separate short cinematic with deliberate camera moves. Encode an H.264 MP4 for ordinary client playback.
- [x] Export evaluated full-site meshes in logical groups, with transferable material maps. Import into a separate Unreal 5.8 project, preserve the existing meditation study.
- [x] Configure the bundled ArchVisCharacter with WASD/mouse, real floor/terrain collision and furniture/wall obstacles. Save an opening level and presentation cameras.
- [x] Test the saved Unreal level, floor traces and actual first-person movement; capture a real UE preview. Label the result a prototype rather than a packaged production simulation.
- [ ] Save model, video, Unreal assets and usage/context documentation to the public server project; verify repository and published gallery.
Validation: saved-file object/material checks; unchanged building coordinates and preserved features; view actual rendered images and video contact sheet; inspect video dimensions/duration; verify Unreal assets, collision and pawn movement. The MP4 is a concept presentation, not engineering approval or an exact representation of a surveyed property.

View File

@@ -0,0 +1,39 @@
# Samford Valley — presentation and walkable prototype, v007
This revision develops the approved Samford Valley concept for design conversations and client presentations. It preserves the modular layout, future shadow pavilions, natural material direction and all previous house features.
## Watch the film
`video/Samford-Valley-Concept-Film-v007.mp4` is the client presentation master. It contains real animated Blender camera views, introductory and closing cards, and short captions. H.264 MP4, 1920 × 1080, 24 fps, 30 seconds, no audio. It plays in QuickTime or a normal browser.
The film uses Cycles source frames rendered at 1440 × 810, six source frames per second, then optical-flow interpolation within each shot to 24 fps and upscale to 1080p. The editable cinematic retains the camera animation at 24 fps and 1920 × 1080 for a future full-frame, higher-sample render. This is a first concept film rather than final photorealistic marketing output.
## Walk in Unreal Engine
Open `SamfordHomestead/SamfordHomestead.uproject` in Unreal Engine 5.8.2 on this Mac. Allow the first shader load to finish. The homestead level opens automatically.
1. Press the green Play button, then click inside the viewport.
2. Use W/A/S/D to walk and the mouse to look around.
3. Escape stops play. Shift+F1 releases the mouse while playing.
4. Start on the main verandah, walk into the kitchen/living room or down the front steps to the garden. The curved covered walkway leads to the meditation room.
The pawn uses Epic's bundled ArchVisCharacter plugin. It has a human-scale collision capsule and walking movement rather than free flight. The new project contains the entire site as grouped meshes with transferred material maps, collision, lights and presentation cameras. Python Editor Script, Editor Scripting Utilities, ArchVisCharacter, Sequencer Scripting and Movie Render Pipeline are bundled plugins enabled in the project; no external paid plugin is required.
This is an editable editor-play prototype, not a packaged application or browser-hosted simulation. Some large mesh groups and procedural material approximations will need finer optimization and art direction before production delivery. Open presentation faces are retained to match the Blender concept. Unbuilt pavilions have no collision. There are no interactive doors, product switches, VR controls or construction-stage simulation yet.
## Blender files
- `samford-solarpunk-presentation-tour.blend`: current enhanced whole-site scene, Cycles 2560 × 1440, all 31 inspection-tour chapters. FAST TOUR is the lightweight viewport; DETAIL contains the editable render geometry.
- `samford-client-cinematic.blend`: separate 24-second, eight-shot camera edit with the detailed geometry and no inspection captions. The opening/closing cards and film labels are added during encoding.
Changes: finer natural-finish variation and roughness, 420 softened construction/furniture edges, original woven cane kitchen pendants, stoneware table settings, a woven living rug and loose cushions, visible track/bolt details, fuller curved-leaf planting, and mineral chips along garden paths. Building positions remain unchanged.
## Continue development
`source/` contains the Blender enhancement, export, render, encode and verification scripts. `transfer/` contains the full-site FBX, portable textures and a manifest. Unreal setup and validation scripts live under `SamfordHomestead/Content/Python/`. The previous meditation-only Unreal study remains a separate historical project.
Next useful work: choose a surveyed property; refine human-scale access and all room routes; replace illustrative vegetation and some material approximations with selected production assets; optimize mesh grouping, LODs and collision; add optional closed-façade mode and interactive doors; author an Unreal Sequencer film; render a final full-frame presentation; package and test a client application for their target computer. LiDAR import and construction coordination remain later stages.
The design has no supplied cadastral boundary, surveyed terrain or engineering documentation. Treat the video and walkable model as concept communication, not an approved or site-verified construction proposal.
Final presentation review also repaired the kitchen mixer riser, which had been hidden by the clay lining, and replaced the obstructed exterior bedroom film angle with an interior view. These adjustments are retained in the final Blender model/cinematic and in the Unreal map. The base FBX is supplemented by `fix_tap_connection.py` for the final copper riser.

View File

@@ -0,0 +1,14 @@
import bpy,json,os
from mathutils import Matrix
s=bpy.context.scene
r={'collections':{c.name:len(c.objects) for c in bpy.data.collections},'materials':[],'objects':[],'cameras':[]}
for m in bpy.data.materials:
p=next((n for n in m.node_tree.nodes if n.type=='BSDF_PRINCIPLED'),None) if m.node_tree else None
r['materials'].append({'name':m.name,'color':list(m.diffuse_color),'roughness':p.inputs['Roughness'].default_value if p else None,'nodes':[n.type for n in m.node_tree.nodes] if m.node_tree else []})
for o in s.objects:
if o.type=='MESH' and not o.name.startswith('FAST'):
r['objects'].append({'name':o.name,'loc':list(o.location),'dim':list(o.dimensions),'mats':[m.name if m else '' for m in o.data.materials],'polys':len(o.data.polygons),'collections':[c.name for c in o.users_collection]})
for f in [1,121,241,361,481,601,721,841,961,1081,1201,1321,1441,1561,1681,1801,1921,2041,2161,2281,2401,2521,2641,2761,2881,3001,3121,3241,3361,3481,3601]:
s.frame_set(f);c=s.camera;r['cameras'].append({'f':f,'pos':list(c.location),'rot':list(c.rotation_euler),'lens':c.data.lens})
json.dump(r,open(os.path.dirname(__file__)+'/../scene-audit.json','w'),indent=2)
print('AUDIT',len(r['objects']),len(r['materials']))

View File

@@ -0,0 +1,24 @@
from pathlib import Path
import subprocess,json
from PIL import Image,ImageDraw,ImageFont
O=Path(__file__).resolve().parents[1];V=O/'video';F=V/'frames6';parts=V/'parts';parts.mkdir(exist_ok=True)
font='/System/Library/Fonts/Supplemental/Arial.ttf';bold='/System/Library/Fonts/Supplemental/Arial Bold.ttf'
def run(a):subprocess.run(['ffmpeg','-hide_banner','-loglevel','error','-y',*a],check=True)
labels=['A home held together by its garden','Open living and a shaded verandah','Natural materials / a shared kitchen','Gather around the outdoor table','A separate private sleeping wing','A quiet place for meditation','Growing food and living with the landscape','Leave space for the years ahead']
for i,label in enumerate(labels):
frames=list(F.glob('shot%02d_*.jpg'%(i+1)));assert len(frames)==18,(i,len(frames))
cached=parts/('shot%02d.mp4'%(i+1))
if cached.exists() and cached.stat().st_mtime>max(f.stat().st_mtime for f in frames):continue
overlay=Image.new('RGBA',(1920,1080),(0,0,0,0));d=ImageDraw.Draw(overlay);d.rectangle((0,960,1920,1080),fill=(0,0,0,82));d.text((64,992),label,font=ImageFont.truetype(font,30),fill='white');labelpath=parts/('label%02d.png'%(i+1));overlay.save(labelpath)
vf="[0:v]tpad=stop_mode=clone:stop_duration=0.5,minterpolate=fps=24:mi_mode=mci:mc_mode=aobmc:vsbmc=1,trim=duration=3,setpts=PTS-STARTPTS,scale=1920:1080:flags=lanczos[base];[base][1:v]overlay=0:0,format=yuv420p[v]"
run(['-framerate','6','-i',str(F/('shot%02d_%%03d.jpg'%(i+1))),'-i',str(labelpath),'-filter_complex',vf,'-map','[v]','-t','3','-an','-c:v','libx264','-preset','medium','-crf','18','-r','24',str(parts/('shot%02d.mp4'%(i+1)))])
for name,title,subtitle in [('opening','SAMFORD VALLEY','A home that grows with you'),('closing','Start simple. Leave room to grow.','DESIGN CONCEPT / SEPTEMBER 2026')]:
img=F/('shot01_000.jpg' if name=='opening' else 'shot08_017.jpg')
overlay=Image.new('RGBA',(1920,1080),(20,37,30,168));d=ImageDraw.Draw(overlay);d.text((960,445),title,font=ImageFont.truetype(bold,68 if name=='opening' else 54),fill='white',anchor='mt');d.text((960,550),subtitle,font=ImageFont.truetype(font,30),fill=(229,221,201),anchor='mt');labelpath=parts/(name+'.png');overlay.save(labelpath)
vf="[0:v]scale=1920:1080[base];[base][1:v]overlay=0:0,fade=t=in:st=0:d=0.3,fade=t=out:st=2.7:d=0.3,format=yuv420p[v]"
run(['-loop','1','-i',str(img),'-i',str(labelpath),'-t','3','-filter_complex',vf,'-map','[v]','-an','-c:v','libx264','-preset','medium','-crf','18','-r','24',str(parts/(name+'.mp4'))])
order=['opening']+['shot%02d'%(i+1) for i in range(8)]+['closing'];lst=V/'concat.txt';lst.write_text('\n'.join("file '%s'"%(parts/(name+'.mp4')) for name in order))
output=V/'Samford-Valley-Concept-Film-v007.mp4';run(['-f','concat','-safe','0','-i',str(lst),'-c','copy','-movflags','+faststart',str(output)])
probe=json.loads(subprocess.check_output(['ffprobe','-v','error','-show_streams','-show_format','-of','json',str(output)]));stream=probe['streams'][0];assert stream['width']==1920 and stream['height']==1080 and 29.9<float(probe['format']['duration'])<30.1
(V/'video-verification.json').write_text(json.dumps({'status':'PASS','output':output.name,'width':1920,'height':1080,'fps':stream['r_frame_rate'],'duration_seconds':probe['format']['duration'],'codec':stream['codec_name'],'size_bytes':output.stat().st_size,'source':'Animated Cycles renders, 1440x810 at 6 source frames/s, per-shot optical-flow interpolation to 24 fps and upscale to 1080p. No audio.'},indent=2))
run(['-i',str(output),'-vf','fps=1/3,scale=480:270,tile=5x2','-frames:v','1',str(V/'film-contact-sheet.jpg')]);print('CLIENT_FILM_READY',output,flush=True)

View File

@@ -0,0 +1,152 @@
import bpy,os,json,math,random
from mathutils import Matrix,Vector
from math import sin,cos,pi
random.seed(712);O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));s=bpy.context.scene;detail=bpy.data.collections['DETAIL - full geometry for renders'];fast=bpy.data.collections['00 FAST TOUR - lightweight viewport']
c=bpy.data.collections.new('37 Presentation - crafted details and fuller planting');detail.children.link(c);COL={'new':c};active='new'
src=open(O+'/../samford-modular/build_scene.py').read();exec(src[src.index('def mesh('):src.index('timber=textured(')])
cubefs=[tuple(reversed(f)) for f in cubefs]
wood=bpy.data.materials['Unpainted hardwood - long X grain'];steel=bpy.data.materials['Reusable dark steel bolts and shoes'];linen=bpy.data.materials['Undyed flax linen'];stone=bpy.data.materials['Split sandstone facing - mineral grain'];ceramic=bpy.data.materials['Ceramic tea bowls warm white']
rattan=textured('Handwoven cane - fine warm fibres',(.22,.135,.062),(.48,.34,.17),(8,100,25),.72,.002)
terracotta=textured('Unglazed terracotta - fine mineral surface',(.22,.092,.044),(.38,.19,.10),(60,60,60),.86,.0015)
pebble=textured('Path aggregate - warm river stone',(.18,.17,.14),(.37,.34,.26),(25,25,25),.86,.002)
print('PHASE # Existing anisotropic',flush=True)
# Existing anisotropic grain retains direction; subtle roughness variation and random board tone.
material_changes=[]
for m in list(bpy.data.materials):
if not m.node_tree or m.name.startswith('VIEW'):continue
p=next((n for n in m.node_tree.nodes if n.type=='BSDF_PRINCIPLED'),None)
if not p:continue
ns=m.node_tree.nodes;ls=m.node_tree.links
if any(k in m.name.lower() for k in ['hardwood','spotted gum','timber','bamboo']):
old=p.inputs['Base Color'].links[0].from_socket if p.inputs['Base Color'].is_linked else None
if old:
oi=ns.new('ShaderNodeObjectInfo');ramp=ns.new('ShaderNodeValToRGB');ramp.color_ramp.elements[0].color=(.73,.70,.65,1);ramp.color_ramp.elements[1].color=(1,1,.98,1);ls.new(oi.outputs['Random'],ramp.inputs[0]);mix=ns.new('ShaderNodeMixRGB');mix.blend_type='MULTIPLY';mix.inputs[0].default_value=.30;ls.new(old,mix.inputs[1]);ls.new(ramp.outputs[0],mix.inputs[2]);ls.new(mix.outputs[0],p.inputs['Base Color'])
p.inputs['Roughness'].default_value=.57;material_changes.append(m.name)
if any(k in m.name.lower() for k in ['clay plaster','concrete','sandstone','marble','linen','textile']):
tex=ns.new('ShaderNodeTexNoise');tex.inputs['Scale'].default_value=135;tex.inputs['Detail'].default_value=2
ramp=ns.new('ShaderNodeMapRange');base=p.inputs['Roughness'].default_value;ramp.inputs['To Min'].default_value=max(.20,base-.12);ramp.inputs['To Max'].default_value=min(.96,base+.08);ls.new(tex.outputs['Fac'],ramp.inputs['Value']);ls.new(ramp.outputs[0],p.inputs['Roughness']);material_changes.append(m.name)
print('PHASE # Accurate small',flush=True)
# Accurate small highlights on edges and softer upholstered furniture.
beveled=0
for ob in list(detail.all_objects):
if ob.type!='MESH' or len(ob.data.polygons)>12 or ob.modifiers:continue
if not ob.data.materials:continue
names=' '.join(m.name for m in ob.data.materials if m)
if any(x in names.lower() for x in ['timber','hardwood','clay','marble','concrete','linen']):
ds=sorted(ob.dimensions)
if ds[0]<.018:continue
width=min(.004,ds[0]*.15)
if 'sofa' in ob.name.lower() or 'cushion' in ob.name.lower():width=min(.065,ds[0]*.35)
mod=ob.modifiers.new('Presentation softened real-world edge','BEVEL');mod.width=width;mod.segments=3;ob.modifiers.new('Presentation weighted corner normals','WEIGHTED_NORMAL');beveled+=1
print('PHASE # Simple lathed',flush=True)
# Simple lathed ceramic and woven forms, all original procedural assets.
def lathe(n,xy,profile,ma,sides=48):
vs=[];fs=[]
for z,r in profile:
for i in range(sides):a=i*2*pi/sides;vs.append((xy[0]+r*cos(a),xy[1]+r*sin(a),z))
for j in range(len(profile)-1):
for i in range(sides):k=j*sides+i;l=j*sides+(i+1)%sides;fs.append((k,l,l+sides,k+sides))
ob=mesh(n,vs,fs,ma)
for p in ob.data.polygons:p.use_smooth=True
return ob
def curve(n,pts,r,ma):
cu=bpy.data.curves.new(n,'CURVE');cu.dimensions='3D';cu.bevel_depth=r;cu.bevel_resolution=1;sp=cu.splines.new('POLY');sp.points.add(len(pts)-1)
for p,co in zip(sp.points,pts):p.co=(*co,1)
cu.materials.append(ma);ob=bpy.data.objects.new(n,cu);c.objects.link(ob);return ob
print('PHASE # Cane pendant',flush=True)
# Cane pendant shades and warm concealed bulbs over kitchen island.
for x in [-4.37,-3.22]:
rod('Island pendant black suspension',(x,.1,3.32),(x,.1,4.10),.007,steel,sides=10)
profile=[(3.12,.29),(3.18,.30),(3.34,.25),(3.45,.12)]
for i in range(40):
a=i*2*pi/40;curve('Cane pendant vertical weave',[(x+r*cos(a),.1+r*sin(a),z) for z,r in profile],.0038,rattan)
for j in range(17):
t=j/16;z=3.12+.33*t;r=.30-.18*t*t;curve('Cane pendant horizontal weave',[(x+r*cos(i*2*pi/64),.1+r*sin(i*2*pi/64),z) for i in range(65)],.003,rattan)
bulb=mat('Pendant warm diffuser '+str(x),(.9,.65,.35),.7);p=bulb.node_tree.nodes['Principled BSDF'];p.inputs['Emission Color'].default_value=(1,.62,.28,1);p.inputs['Emission Strength'].default_value=2
lathe('Warm pendant diffuser',(x,.1),[(3.18,.02),(3.20,.055),(3.26,.055),(3.28,.01)],bulb)
ld=bpy.data.lights.new('Warm island practical light','POINT');ld.energy=12;ld.color=(1,.72,.45);ld.shadow_soft_size=.14;ob=bpy.data.objects.new(ld.name,ld);c.objects.link(ob);ob.location=(x,.1,3.14)
print('PHASE # Stoneware',flush=True)
# Stoneware table settings make dimensions legible at eye level.
for x in [-.65,.1,.85]:
for y in [-.02,.63]:
lathe('Handmade stoneware dinner plate',(x,y),[(1.921,0),(1.922,.085),(1.94,.118),(1.947,.118),(1.938,.083),(1.937,0)],ceramic)
box('Folded flax table napkin',(x+.19,y,1.928),(.12,.16,.014),linen,.005)
lathe('Handmade tea cup',(x-.17,y+.04),[(1.92,.026),(2.00,.033),(2.004,.037),(1.92,.033)],ceramic,32)
lathe('Dining table terracotta bud vase',(.1,.30),[(1.92,.04),(1.95,.065),(2.07,.057),(2.13,.025),(2.15,.025)],terracotta)
for dx,dy in [(-.04,.015),(.045,.025),(0,-.03)]:rod('Vase dried grass stem',(.1,.30,2.06),(.1+dx,.30+dy,2.36),.002,rattan,sides=6)
print('PHASE # Low woven',flush=True)
# Low woven living rug, extra loose cushions with softened edges.
box('Living woven jute rug',(3.2,1.10,1.136),(3.25,2.15,.016),rattan,.008)
for x,a in [(2.47,-.12),(3.9,.10)]:
ob=box('Loose linen sofa pillow',(x,-.75,1.88),(.48,.17,.43),linen,.065);ob.rotation_euler[1]=a
print('PHASE # Stainless',flush=True)
# Stainless track rails and small timber fixings visible in close camera views.
for y in [2.89,3.05,3.21]:box('Sliding door stainless track inset',(0,y,1.152),(11.82,.013,.009),bpy.data.materials['Appliance brushed metal'],.002)
for x in [-6,-3,0,3,6]:
for z in [1.3,3.43]:
for dx in [-.032,.032]:rod('Verandah exposed bolt head',(x+dx,5.466,z),(x+dx,5.475,z),.008,steel,sides=6)
print('PHASE # Richer planted',flush=True)
# Richer planted borders: broad curved leaves, fine flowering stems, aggregate along paths.
layout=json.load(open(O+'/../samford-retreat-garage/buddha-garden-layout.json'))
def ground(x,y):return -.024*y+.004*x+.12*sin(x*.19)*cos(y*.14)+.055*sin(x*.72+y*.32)
leafm=[bpy.data.materials['Garden leaf '+str(i)] for i in range(4)];flower=bpy.data.materials['Garden flower soft ivory']
vs=[];fs=[];mi=[]
for bed in layout['beds']:
x,y=bed['center'];rx,ry=bed['radii']
for j in range(max(8,int(rx*ry*14))):
a=random.random()*2*pi;r=math.sqrt(random.random())*.9;xx=x+rx*r*cos(a);yy=y+ry*r*sin(a);zz=ground(xx,yy)+.10
for k in range(7):
a=random.random()*2*pi;L=random.uniform(.18,.47);w=L*.15;off=len(vs)
for t in [0,.25,.5,.75,1]:
reach=L*t;z=zz+L*(sin(t*pi*.65)*.65+.08*t);width=w*sin(pi*t)
for sg in [-1,0,1]:vs.append((xx+cos(a)*reach-sin(a)*width*sg,yy+sin(a)*reach+cos(a)*width*sg,z+(.014*sin(pi*t) if sg==0 else 0)))
for k in range(4):
for h in range(2):idx=off+k*3+h;fs.append((idx,idx+1,idx+4,idx+3));mi.append(random.randrange(4))
ob=mesh('Fuller garden borders - curved lanceolate leaves',vs,fs)
for m in leafm:ob.data.materials.append(m)
ob.data.polygons.foreach_set('material_index',mi);ob.data.polygons.foreach_set('use_smooth',[True]*len(fs))
print('PHASE # Small mineral',flush=True)
# Small mineral chips follow the path ribbons, with low height to preserve walking.
vs=[];fs=[]
for path in layout['paths']:
if path['kind']=='roofed walk' or 'VEHICLE' in path['name']:continue
pts=path['points']
for i in range(1,len(pts)-1,2):
q=Vector(pts[i]);v=(Vector(pts[i+1])-Vector(pts[i-1])).normalized();side=Vector((-v.y,v.x))
for j in range(4):
pos=q+side*random.uniform(-.46,.46)*path['width'];z=ground(*pos)+.095;rx=random.uniform(.012,.038);ry=random.uniform(.009,.025);off=len(vs)
vs.extend([(pos.x+rx*cos(k*pi/3),pos.y+ry*sin(k*pi/3),z+random.uniform(0,.009)) for k in range(6)]+[(pos.x,pos.y,z+.013)])
fs.extend((off+k,off+(k+1)%6,off+6) for k in range(6))
mesh('Garden paths - scattered mineral aggregate',vs,fs,pebble)
print('PHASE # A more neutral',flush=True)
# A more neutral, readable morning exposure; practical lights remain gentle.
s.view_settings.view_transform='AgX';s.view_settings.look='AgX - Medium High Contrast';s.view_settings.exposure=.20
s.cycles.samples=96;s.cycles.use_denoising=True;s.render.resolution_x=2560;s.render.resolution_y=1440;s.render.resolution_percentage=100
print('PHASE # Refresh additional',flush=True)
# Refresh additional detail proxy (existing geometry only changed through render modifiers).
print('PHASE detail.hide_viewport=False',flush=True)
detail.hide_viewport=False;bpy.context.view_layer.update();dg=bpy.context.evaluated_depsgraph_get();vs=[];fs=[];mi=[];mats=[];smooth=[]
for ob in c.objects:
if ob.type not in ['MESH','CURVE']:continue
ev=ob.evaluated_get(dg);me=ev.to_mesh();off=len(vs);mw=Matrix.LocRotScale(ob.location,ob.rotation_euler.to_quaternion(),ob.scale);vs.extend(tuple(mw@v.co) for v in me.vertices)
real_mats=[bpy.data.materials.get(m.name) for m in me.materials]
for m in real_mats:
if m not in mats:mats.append(m)
for p in me.polygons:fs.append(tuple(off+i for i in p.vertices));mi.append(mats.index(real_mats[p.material_index]));smooth.append(p.use_smooth)
ev.to_mesh_clear()
me=bpy.data.meshes.new('Presentation detail proxy');me.from_pydata(vs,[],fs);me.update()
for m in mats:me.materials.append(m)
me.polygons.foreach_set('material_index',mi);me.polygons.foreach_set('use_smooth',smooth);ob=bpy.data.objects.new('FAST | Crafted details and fuller gardens',me);fast.objects.link(ob)
detail.hide_viewport=True
s['Current revision']='v007 — presentation detail, textured materials, fuller garden borders and a separate cinematic/Unreal walkthrough prototype.'
print('PHASE s.frame_set(1);bpy.ops.wm.save',flush=True)
s.frame_set(1);bpy.ops.wm.save_as_mainfile(filepath=O+'/samford-solarpunk-presentation-tour.blend')
json.dump({'version':7,'beveled_objects':beveled,'materials_refined':material_changes,'new_detail_objects':len(c.objects),'new_leaf_faces':len(bpy.data.objects['Fuller garden borders - curved lanceolate leaves'].data.polygons),'tour_chapters':31},open(O+'/blender-enhancement-checks.json','w'),indent=2)
# Actual Cycles stills for presentation review.
for ob in bpy.data.collections['22 PLAY - guided camera tour'].objects:
if ob.type=='FONT':ob.hide_render=True
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU';s.cycles.samples=48;s.render.resolution_percentage=75
for name,f in [('presentation-overview',45),('presentation-kitchen',3520),('presentation-garden',3270)]:s.frame_set(f);s.render.filepath=O+'/renders/'+name+'.png';bpy.ops.render.render(write_still=True)
print('PRESENTATION_READY',beveled,len(c.objects),flush=True)

View File

@@ -0,0 +1,57 @@
import bpy,os,json,re,math
from mathutils import Vector,Matrix
from collections import defaultdict
O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));OUT=O+'/transfer';os.makedirs(OUT+'/Textures',exist_ok=True);source=bpy.context.scene;detail=bpy.data.collections['DETAIL - full geometry for renders'];detail.hide_viewport=False;source.frame_set(1);bpy.context.view_layer.update();deps=bpy.context.evaluated_depsgraph_get()
objects=[o for o in detail.all_objects if o.type in ['MESH','CURVE'] and not o.hide_render and not any(c.name.startswith(('15 ','22 ','30 ')) for c in o.users_collection)]
used=[]
for o in objects:
for m in o.data.materials:
if m and not m.name.startswith('VIEW') and m not in used:used.append(m)
new=bpy.data.scenes.new('Homestead Unreal transfer');new.unit_settings.system='METRIC';new.unit_settings.scale_length=1;bpy.context.window.scene=new
manifest={'version':7,'source_blend':'samford-solarpunk-presentation-tour.blend','coordinate_transform':'UE centimetres: (100*x,-100*y,100*z)','objects':[],'materials':{},'source_objects':len(objects)}
# Bake portable colour and tangent normal maps using the existing procedural shaders.
new.render.engine='CYCLES';new.cycles.samples=1;new.cycles.device='CPU';new.render.bake.margin=4
bpy.ops.mesh.primitive_plane_add(size=2);tile=bpy.context.object
replacement={}
for i,m in enumerate(used):
key='M_%03d_'%i+re.sub('[^a-zA-Z0-9_]','_',m.name)[:65];p=next((n for n in m.node_tree.nodes if n.type=='BSDF_PRINCIPLED'),None) if m.node_tree else None
base=list(m.diffuse_color);rough=float(p.inputs['Roughness'].default_value) if p else .7;metal=float(p.inputs['Metallic'].default_value) if p else 0
record={'source':m.name,'base_color':base,'roughness':rough,'metallic':metal,'emission':float(p.inputs['Emission Strength'].default_value) if p else 0,'transmission':float(p.inputs['Transmission Weight'].default_value) if p else 0}
exported=bpy.data.materials.new(key);exported.diffuse_color=base;replacement[m]=exported
if p and p.inputs['Base Color'].is_linked:
bake=m.copy();tile.data.materials.clear();tile.data.materials.append(bake);ns=bake.node_tree.nodes;ls=bake.node_tree.links;bp=next(n for n in ns if n.type=='BSDF_PRINCIPLED');out=next(n for n in ns if n.type=='OUTPUT_MATERIAL');im=bpy.data.images.new(key+'_BaseColor',width=512,height=512);im.filepath_raw=OUT+'/Textures/'+key+'_BaseColor.png';im.file_format='PNG';target=ns.new('ShaderNodeTexImage');target.image=im;ns.active=target;em=ns.new('ShaderNodeEmission');ls.new(bp.inputs['Base Color'].links[0].from_socket,em.inputs['Color']);ls.new(em.outputs[0],out.inputs['Surface']);bpy.context.view_layer.objects.active=tile;tile.select_set(True);bpy.ops.object.bake(type='EMIT');im.save();record['base_color_texture']='Textures/'+key+'_BaseColor.png'
if bp.inputs['Normal'].is_linked:
nm=bpy.data.images.new(key+'_Normal',width=512,height=512);nm.colorspace_settings.name='Non-Color';nm.filepath_raw=OUT+'/Textures/'+key+'_Normal.png';nm.file_format='PNG';target.image=nm;ns.active=target;ls.new(bp.outputs[0],out.inputs['Surface']);bpy.ops.object.bake(type='NORMAL');nm.save();record['normal_texture']='Textures/'+key+'_Normal.png'
bpy.data.materials.remove(bake)
manifest['materials'][key]=record
print('BAKED',i,key,flush=True)
bpy.data.objects.remove(tile,do_unlink=True)
# Partition by collection and material: static world transforms, proper normals and box UVs.
groups={}
for idx,o in enumerate(objects):
ev=o.evaluated_get(deps);me=ev.to_mesh();mw=Matrix.LocRotScale(o.location,o.rotation_euler.to_quaternion(),o.scale)
category=next((c.name for c in o.users_collection if c.name!='DETAIL - full geometry for renders'),'Other');prefix=re.sub('[^a-zA-Z0-9_]','_',category)[:55]
verts=[tuple(mw@v.co) for v in me.vertices]
if not verts:ev.to_mesh_clear();continue
lo=[min(v[k] for v in verts) for k in range(3)];hi=[max(v[k] for v in verts) for k in range(3)]
for mi,em in enumerate(me.materials):
m=bpy.data.materials.get(em.name) if em else None
if m not in replacement:continue
polys=[p for p in me.polygons if p.material_index==mi]
if not polys:continue
key=(prefix,replacement[m].name);g=groups.setdefault(key,{'verts':[],'faces':[],'uvs':[],'smooth':[],'sources':[]});g['sources'].append(o.name)
off=len(g['verts']);g['verts'].extend(verts)
for p in polys:
g['faces'].append(tuple(off+i for i in p.vertices));g['smooth'].append(p.use_smooth)
normal=mw.to_3x3()@p.normal;drop=max(range(3),key=lambda i:abs(normal[i]));axes=[i for i in range(3) if i!=drop]
for vi in p.vertices:g['uvs'].append(tuple((verts[vi][k]-lo[k])/max(.08,hi[k]-lo[k]) for k in axes))
ev.to_mesh_clear()
if idx%800==0:print('GEOMETRY',idx,flush=True)
for number,((cat,matname),g) in enumerate(groups.items()):
name='SM_%03d_'%number+cat;me=bpy.data.meshes.new(name);me.from_pydata(g['verts'],[],g['faces']);me.update();me.materials.append(bpy.data.materials[matname]);me.polygons.foreach_set('use_smooth',g['smooth']);uv=me.uv_layers.new();uv.data.foreach_set('uv',[v for q in g['uvs'] for v in q]);ob=bpy.data.objects.new(name,me);new.collection.objects.link(ob)
noncoll=cat.startswith(('08_','09_','24_')) or any(k in matname.lower() for k in ['leaf','grass','flower','glazing','shadow','haze','flame','annotation']) or all(any(k in n.lower() for k in ['leaves','aggregate','weave','pendant','plate','cup','stem','vase','track inset','bolt head']) for n in g['sources'])
manifest['objects'].append({'name':name,'material':matname,'category':cat,'collision':not noncoll,'vertices':len(g['verts']),'faces':len(g['faces']),'source_count':len(g['sources'])})
bpy.ops.object.select_all(action='SELECT')
bpy.ops.export_scene.fbx(filepath=OUT+'/SamfordHomestead.fbx',use_selection=True,object_types={'MESH'},use_mesh_modifiers=False,add_leaf_bones=False,bake_anim=False,axis_forward='-Y',axis_up='Z',path_mode='RELATIVE')
json.dump(manifest,open(OUT+'/homestead-manifest.json','w'),indent=2)
print('HOMESTEAD_EXPORT_READY',len(groups),len(used),flush=True)

View File

@@ -0,0 +1,22 @@
import bpy,os,json
from mathutils import Vector
from math import sin,cos,pi
O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));s=bpy.context.scene;mode='cinematic' if 'cinematic' in bpy.data.filepath else 'model';c=bpy.data.collections['37 Presentation - crafted details and fuller planting'];fast=bpy.data.collections['00 FAST TOUR - lightweight viewport']
a=Vector((-4.32,-2.74,2.067));b=Vector((-4.32,-2.74,2.475));q=(b-a).to_track_quat('Z','Y');N=24
vs=[tuple(a+q@Vector((.014*cos(i*2*pi/N),.014*sin(i*2*pi/N),z))) for z in [0,(b-a).length] for i in range(N)];fs=[tuple(reversed(range(N))),tuple(range(N,2*N))]+[(i,(i+1)%N,(i+1)%N+N,i+N) for i in range(N)]
me=bpy.data.meshes.new('Connected copper mixer riser');me.from_pydata(vs,[],fs);me.update();me.materials.append(bpy.data.materials['Copper cookware - brushed warm patina'])
for p in me.polygons:p.use_smooth=len(p.vertices)==4
ob=bpy.data.objects.new('Kitchen mixer - visible connected copper riser',me);c.objects.link(ob);proxy=bpy.data.objects.new('FAST | Connected kitchen mixer riser',me);fast.objects.link(proxy);s.frame_set(1);bpy.ops.wm.save_as_mainfile(filepath=bpy.data.filepath)
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU';s.cycles.use_denoising=True;s.render.use_persistent_data=True;s.render.resolution_percentage=75
if mode=='model':
for c in ['22 PLAY - guided camera tour','15 Expansion labels - toggle to hide']:
for ob in bpy.data.collections[c].objects:
if ob.type=='FONT':ob.hide_render=True
s.cycles.samples=48;s.frame_set(3520);s.render.filepath=O+'/renders/presentation-kitchen.png';bpy.ops.render.render(write_still=True)
r=json.load(open(O+'/blender-enhancement-checks.json'));r['new_detail_objects']+=1;r['tap_connection_corrected']=True;json.dump(r,open(O+'/blender-enhancement-checks.json','w'),indent=2)
else:
s.cycles.samples=8;s.cycles.adaptive_threshold=.12;s.render.image_settings.file_format='JPEG';s.render.image_settings.quality=95
for j in range(18):s.frame_set(145+j*4);s.render.filepath=O+'/video/frames6/shot03_%03d.jpg'%j;bpy.ops.render.render(write_still=True)
print('TAP_CONNECTION_REPAIRED',mode,flush=True)

View File

@@ -0,0 +1,37 @@
import bpy,os,json,math
from mathutils import Vector
O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));s=bpy.context.scene
for c in ['22 PLAY - guided camera tour','15 Expansion labels - toggle to hide']:
for o in bpy.data.collections[c].objects:
if o.type=='FONT':o.hide_render=True
cam=s.camera;cam.animation_data_clear();cam.data.animation_data_clear();cam.data.dof.use_dof=False
# Eight compact camera movements; no fly-through through walls or furniture.
shots=[
('A home in the garden',(35,43,29),(32,40,27),(0,-3,1),38),
('Timber verandah and open living',(7,11,3.3),(5.8,9.7,3.1),(0,1.5,2.1),31),
('Kitchen / natural materials',(1.5,2.35,2.85),(.7,2.1,2.75),(-3.5,-1.3,2.15),27),
('Room for shared meals',(17,9,4.3),(16,8.2,4.0),(10,3.5,1.9),36),
('A private sleeping wing',(-6.4,.7,4.2),(-7.3,.4,3.9),(-12,-5,2),34),
('Meditation in the garden',(-6.9,18.5,3),(-7.7,17.7,2.6),(-12.4,15.35,.65),42),
('Growing food / collecting water',(34,15,17),(32,13,15),(21,-3,1),37),
('Space to grow over time',(23,33,20),(20,30,18),(0,13,1),35)]
s.render.fps=24;s.frame_start=1;s.frame_end=8*72
for i,(label,a,b,target,lens) in enumerate(shots):
start=i*72+1;end=(i+1)*72
for f,p in [(start,a),(end,b)]:
cam.location=p;cam.rotation_euler=(Vector(target)-cam.location).to_track_quat('-Z','Y').to_euler();cam.keyframe_insert('location',frame=f);cam.keyframe_insert('rotation_euler',frame=f);cam.data.lens=lens;cam.data.keyframe_insert('lens',frame=f)
for owner in [cam,cam.data]:
for layer in owner.animation_data.action.layers:
for strip in layer.strips:
for bag in strip.channelbags:
for fc in bag.fcurves:
for k in fc.keyframe_points:k.interpolation='LINEAR'
s.render.engine='CYCLES';s.cycles.samples=12;s.cycles.use_denoising=True;s.cycles.use_adaptive_sampling=True;s.cycles.adaptive_threshold=.08;s.render.resolution_x=1920;s.render.resolution_y=1080;s.render.resolution_percentage=100;s.render.image_settings.file_format='PNG';s.render.filepath=O+'/video/frames/frame_';s.render.film_transparent=False
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU';s.render.use_persistent_data=True;s.frame_set(1)
bpy.ops.wm.save_as_mainfile(filepath=O+'/samford-client-cinematic.blend')
json.dump([dict(title=sh[0],start=i*72+1,end=(i+1)*72,seconds=3) for i,sh in enumerate(shots)],open(O+'/video/cinematic-shots.json','w'),indent=2)
# Compare a real-time preview frame before choosing the final video renderer.
s.render.engine='CYCLES';s.cycles.samples=12;s.frame_set(145);s.render.filepath=O+'/renders/cinematic-kitchen-test.png';bpy.ops.render.render(write_still=True)
print('CINEMATIC_PREPARED',flush=True)

View File

@@ -0,0 +1,13 @@
import bpy,os
from mathutils import Vector
O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));s=bpy.context.scene;cam=s.camera
for f,p in [(289,(-10.7,-6.95,3.30)),(360,(-10.9,-6.75,3.15))]:
s.frame_set(f);cam.location=p;cam.rotation_euler=(Vector((-12.5,-5,2.02))-cam.location).to_track_quat('-Z','Y').to_euler();cam.keyframe_insert('location',frame=f);cam.keyframe_insert('rotation_euler',frame=f);cam.data.lens=23;cam.data.keyframe_insert('lens',frame=f)
s.frame_set(1);bpy.ops.wm.save_as_mainfile(filepath=O+'/samford-client-cinematic.blend')
s.render.resolution_percentage=75;s.cycles.samples=8;s.cycles.use_denoising=True;s.cycles.adaptive_threshold=.12;s.render.use_persistent_data=True;s.render.image_settings.file_format='JPEG';s.render.image_settings.quality=95
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU'
for j in range(18):
s.frame_set(289+j*4);s.render.filepath=O+'/video/frames6/shot05_%03d.jpg'%j;bpy.ops.render.render(write_still=True)
print('BEDROOM_SHOT_REFINED',flush=True)

View File

@@ -0,0 +1,16 @@
import bpy,os,time,json
O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));s=bpy.context.scene
# Six source frames per second, interpolated per shot to the 24 fps presentation master.
s.render.resolution_percentage=75;s.cycles.samples=8;s.cycles.adaptive_threshold=.12;s.render.use_persistent_data=True;s.render.image_settings.file_format='JPEG';s.render.image_settings.quality=95
prefs=bpy.context.preferences.addons['cycles'].preferences;prefs.compute_device_type='METAL';prefs.get_devices()
for d in prefs.devices:d.use=d.type=='METAL'
s.cycles.device='GPU'
started=time.time()
for shot in range(8):
for j in range(18):
f=shot*72+1+j*4;path=O+'/video/frames6/shot%02d_%03d.jpg'%(shot+1,j)
if os.path.exists(path):continue
s.frame_set(f);s.render.filepath=path;bpy.ops.render.render(write_still=True)
if j%12==0:print('FILM_PROGRESS',shot+1,j,round(time.time()-started),flush=True)
json.dump({'source_size':[1440,810],'source_fps':6,'shots':8,'source_frames':144,'seconds':24,'renderer':'Cycles','samples':8},open(O+'/video/render-checks.json','w'),indent=2)
print('FILM_FRAMES_READY',flush=True)

View File

@@ -0,0 +1,12 @@
import bpy,json,os
s=bpy.context.scene;O=os.path.abspath(os.path.join(os.path.dirname(__file__),'..'));names=[o.name for o in s.objects];r={}
r['required_features']={n:n in names for n in ['ISLAND - honed marble countertop','FAST | Garden Buddha statue','CONTAINER WATER - steel base frame','Living woven jute rug','Fuller garden borders - curved lanceolate leaves','FAST | Crafted details and fuller gardens']}
assert all(r['required_features'].values())
r['render']=[s.render.engine,s.render.resolution_x,s.render.resolution_y,s.render.resolution_percentage];assert r['render']==['CYCLES',2560,1440,100]
r['ghosts']=len(bpy.data.collections['24 LATER - Shadow spaces only'].objects);assert r['ghosts']==26
r['captions']=[];fonts=[o for o in bpy.data.collections['22 PLAY - guided camera tour'].objects if o.type=='FONT']
for f in range(1,3721,120):s.frame_set(f+20);visible=[o.data.body for o in fonts if o.scale.length>.5];assert len(visible)==1,(f,visible);r['captions']+=visible
assert len(r['captions'])==31 and s.frame_end==3720
r['no_ping_pong']=not any('table tennis' in n.lower() for n in names);assert r['no_ping_pong']
r['material_references_valid']=all(m in bpy.data.materials.values() for o in s.objects if o.type=='MESH' for m in o.data.materials if m);assert r['material_references_valid']
r['status']='PASS';json.dump(r,open(O+'/blender-verification.json','w'),indent=2);print('BLENDER_VERIFIED',flush=True)

View File

@@ -0,0 +1,19 @@
[/Script/Engine.RendererSettings]
r.DynamicGlobalIlluminationMethod=1
r.ReflectionMethod=1
r.GenerateMeshDistanceFields=True
r.RayTracing=False
r.AntiAliasingMethod=4
r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
r.AllowStaticLighting=False
[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Game/Homestead/SamfordHomestead
GameDefaultMap=/Game/Homestead/SamfordHomestead
GlobalDefaultGameMode=/Game/Homestead/Walkthrough/BP_HomesteadGameMode.BP_HomesteadGameMode_C
[ConsoleVariables]
Interchange.FeatureFlags.Import.FBX=False
r.Shadow.Virtual.Enable=0
r.Streaming.PoolSize=1500

View File

@@ -0,0 +1,97 @@
[/Script/Engine.InputSettings]
-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
+AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gesture_Pinch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gesture_Flick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gesture_Rotate",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
bAltEnterTogglesFullscreen=True
bF11TogglesFullscreen=True
bUseMouseForTouch=False
bEnableMouseSmoothing=True
bEnableFOVScaling=True
bCaptureMouseOnLaunch=True
bEnableLegacyInputScales=True
bEnableMotionControls=True
bFilterInputByPlatformUser=False
bShouldFlushPressedKeysOnViewportFocusLost=True
bAlwaysShowTouchInterface=False
bShowConsoleOnFourFingerTap=True
bEnableGestureRecognizer=False
bUseAutocorrect=False
bEnabledLegacyMappingDeprecationWarnings=True
bEnablePreferredInputAPIPreferences=False
DefaultPreferredInputAPIList=
DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
DefaultViewportMouseLockMode=LockOnCapture
FOVScale=0.011110
DoubleClickTime=0.200000
+AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W)
+AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S)
+AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
+AxisMappings=(AxisName="MoveRight",Scale=-1.000000,Key=A)
+AxisMappings=(AxisName="Turn",Scale=1.000000,Key=MouseX)
+AxisMappings=(AxisName="LookUp",Scale=-1.000000,Key=MouseY)
DeprecatedActionAndAxisNames=()
DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
-ConsoleKeys=Tilde
+ConsoleKeys=Tilde

Some files were not shown because too many files have changed in this diff Show More