--:--:--
Break the page
Song of the Day
Mera Safar

Realty Looks

Interactive 3D Real Estate Visualization Platform

Interactive 3D WebGL Platform & Blender Cloud Rendering
Stack // JavaScript / Three.js / WebGL / Blender / Python / Blender Cycles / Vite
[ STATUS: Live ]
Realty Looks interface preview

Live Demonstrations & Interactive Tours

3 Production Deployments

Realty Looks bridges the gap between unbuilt architectural blueprints and interactive spatial exploration. Instead of asking prospective buyers to interpret flat 2D blueprints or wait for static offline renderings, Realty Looks combines lightweight browser-based Three.js WebGL viewing with high-end Blender Cycles offline photorealistic raytracing rendered on cloud GPU clusters. Users can inspect the entire residence in an interactive 3D dollhouse perspective, click projected hotspot markers to step into any room, toggle between daylight and golden-hour lighting conditions, and navigate naturally room-by-room.

// Key Engineering Highlights

  • Built interactive 3D visualization and room navigation using Three.js and WebGL.
  • Implemented projected navigation hotspots, smooth camera transitions, and interactive floor-plan navigation.
  • Developed Blender Python rendering workflows using Cycles and PBR materials, leveraging Blender Farm cloud GPU infrastructure for 4K architectural renders.

// 01. The Challenge

Converting static 2D CAD and architectural PDF floor plans into photorealistic, interactive 3D browser experiences without requiring multi-gigabyte downloads or specialized client hardware, while maintaining smooth 60 FPS performance on consumer laptops and mobile devices.

// 02. System Architecture

The platform's core architectural principle is strict separation of concerns: computationally intensive photorealistic raytracing is performed offline via headless Python scripts inside Blender and executed on distributed cloud GPUs, while real-time spatial navigation, projective hotspot math, and camera choreography are handled client-side via a lightweight, zero-backend Three.js/WebGL viewer running in Vite.

+-----------------------------------------------------------------------------+
|                     OFFLINE / CLOUD PIPELINE (Headless Python)              |
|  [2D CAD / PDF Floor Plan]                                                   |
|          |                                                                  |
|          v (Procedural extrusion, wall alignment, station coordinates)      |
|  [Blender 5.2.2 Engine] ---> PBR Shaders + Calibrated Lights (Day / Evening) |
|          |                                                                  |
|          v (Packaging .blend & asset validation)                            |
|  [Blender Farm Cloud GPU Infrastructure] ---> 4K Equirectangular Panoramas  |
+-----------------------------------------------------------------------------+
                                   |
                                   | (Optimized WebP/JPEG + JSON Station Graph)
                                   v
+-----------------------------------------------------------------------------+
|                      CLIENT-SIDE RUNTIME (Three.js & WebGL)                 |
|  [Dollhouse Mode]                [360° Panoramic Tour Mode]                 |
|  - Orthographic Camera Rig       - Inverted Equirectangular Sphere Mesh     |
|  - Interactive Room Pins (01-16) - 3D-to-2D Screen-Space Hotspot Projection |
|  - OrbitControls Bounds          - Progressive Texture Streaming (2K -> 4K) |
|  - Top-down Floorplan Plane      - Frustum Culling & View Forward Vector    |
|          \                                 /                                |
|           +-----> [Seamless Camera Tweening] <-----+                         |
+-----------------------------------------------------------------------------+
Three.js / WebGL / Vite

Client-Side WebGL Viewport

Custom Three.js renderer featuring dual camera configurations: an orthographic camera with bounded OrbitControls for top-down isometric dollhouse inspection, and a perspective camera (FOV 65°-75°) placed at human eye height (1.55m) inside an inverted equirectangular sphere for 360° panoramas.

Three.js Vector3 / Screen-Space Math

Spatial Hotspot & Projection Math

Projects 3D world coordinates of adjoining room stations into normalized device coordinates (NDC) and maps them to responsive, clickable DOM elements. Implements dot-product directional testing to dynamically cull markers outside the camera's forward frustum, preventing ghost hotspots behind the viewer.

HTML5 Canvas / Texture Loader / WebGL

Progressive Texture Lifecycle

Mitigates mobile WebGL memory crashes by streaming lightweight 2K preview textures during rapid room navigation, asynchronously swapping to 4K equirectangular textures when the viewport stabilizes, and actively calling texture.dispose() on unmounted rooms.

Python 3.11 / Blender bpy API / Cycles

Headless Blender Python Engine

Automated scripts (build.py, interior_lighting.py, render_panoramas.py) that parse structured floor plan JSON data, procedurally generate wall geometry, set up PBR materials, position spherical cameras at calibrated station nodes, and deploy batch jobs to cloud GPU rendering nodes.

// 03. Visual Showcase & Tour Exploration

Orthographic 3D Dollhouse Floor Plan
Orthographic 3D Dollhouse Floor Plan— Interactive top-down 3D overview of the Raj Mahal 4BHK residence with 16 numbered interactive room pins, camera zoom/pan controls, and instant room selection.
[Dollhouse View]
360° Panoramic Living Room & Balcony Hotspot
360° Panoramic Living Room & Balcony Hotspot— Photorealistic 4K panoramic viewer in the Raj Mahal living room showing ambient ivory illumination, custom furniture, and projected interactive navigation marker to the balcony.
[360° Panorama]
360° Dining & Kitchen Suite
360° Dining & Kitchen Suite— Seamless interior station navigation connecting the living room and open kitchen with real-time yaw/pitch rotation and interactive station hotlinks.
[Interior Navigation]
The Linden Residence — Double-Height Living Room
The Linden Residence — Double-Height Living Room— The flagship two-storey luxury villa virtual tour on realtylook.me/tour with double-height ceiling, fireplace, pool view, and day/golden-hour lighting toggle.
[Luxury Showcase]
The Linden Residence — Dining & Pool Terrace
The Linden Residence — Dining & Pool Terrace— Ground floor dining suite featuring multi-room navigation hotspots linking directly to the kitchen, outdoor kitchen, and living quarters.
[Hotspot Traversal]
Live Video Walkthrough Loop
Cinematic Room Navigation & Motion Showcase— Walkthrough loop showcasing the smooth camera transitions, spatial pacing, and lighting realism across the Linden Residence and Living Room tours.

// 04. Implementation Challenges

WebGL Memory Exhaustion with 4K Equirectangular Textures

CHALLENGE 01
Problem //

Loading multiple uncompressed 4096x2048 32-bit equirectangular textures across 21 rooms rapidly depleted GPU VRAM on mobile browsers (Safari on iOS, Chrome on Android), triggering WebGL context loss and tab crashes.

Engineering Solution //

Architected a dual-tier progressive texture pipeline. Each station initially loads a 2K (2048x1024) compressed texture in under 200ms. Once camera movement pauses, the 4K texture is fetched asynchronously. Inactive room textures are explicitly garbage collected with texture.dispose() to maintain a constant GPU memory ceiling under 120MB.

Takeaway: Disciplined texture lifecycle management and progressive resolution upgrades are essential for consumer-grade WebGL performance on mobile hardware.

Screen-Space Hotspot Projection & Frustum Culling

CHALLENGE 02
Problem //

Interactive 3D navigation pins placed at room doorways must appear as 2D clickable HTML/SVG markers that accurately follow camera rotation and zoom, without lagging behind mouse drag or erroneously showing up when the doorway is behind the user's back.

Engineering Solution //

Implemented custom vector projection math using Vector3.project(camera). Computed normalized device coordinates (NDC) to screen pixels, and performed a dot product vector check (markerDir.dot(cameraForward) > 0) to cull markers positioned outside the active 180° camera field of view.

Takeaway: Combining Three.js vector projections with direct CSS transform styling delivers 60 FPS marker tracking without relying on heavy DOM overlay frameworks.

Disorienting Camera Transitions Between Dollhouse and 360° Spheres

CHALLENGE 03
Problem //

Switching abruptly between the isometric top-down dollhouse perspective and a first-person 360° spherical interior panorama broke the user's mental model of where they were in the building.

Engineering Solution //

Created an animated camera choreography pipeline. When a user clicks a room pin in dollhouse mode, the camera position, lookAt target, and field of view are smoothly interpolated using cubic easing curves toward the room's entrance coordinate, aligning with the initial station yaw angle before crossfading into the 360° panorama sphere.

Takeaway: Spatial continuity in architectural visualization requires easing both position and field-of-view simultaneously to simulate natural human movement.

Headless Procedural Scene Generation & Cloud Farm Orchestration

CHALLENGE 04
Problem //

Manually building 3D walls, assigning materials, placing lights, and rendering 21 panoramas across both Day and Golden Hour modes would require 40+ hours per floor plan and risk human error in camera station placement.

Engineering Solution //

Engineered headless Python scripts for Blender 5.2.2 that read structured JSON floor plan definitions, automatically extrude wall geometries, assign PBR material nodes, place interior luminaires with calibrated color temperatures (2700K warm to 5500K daylight), set up 360° equirectangular panoramic cameras at eye level (1.55m), and deploy parallel batch jobs to Blender Farm cloud GPUs.

Takeaway: Treating 3D scene construction as code (Infrastructure as Code for 3D graphics) eliminates repetitive modeling labor and guarantees mathematical precision.

// 05. The Cloud GPU Rendering Pipeline

The offline rendering pipeline transforms raw architectural floor plans into web-optimized 4K 360° panoramic tours through a 4-stage automated pipeline.

01

Floor Plan Parsing & Spatial Graph Extraction

Architectural floor plans are digitized into structured JSON files (plan.json and stations.json), defining room bounding polygons, wall coordinates, doorway openings, and camera station coordinates.

02

Headless Blender Python Scene Generation

Blender runs headless to procedurally extrude wall geometry, place architectural trim and windows, instance photorealistic furniture assets, and configure PBR materials (diffuse, roughness, normal, ambient occlusion).

03

PBR Lighting & Dual-Look Environment Configuration

Lighting artists' workflows are codified into Python: HDR sky environment maps provide natural outdoor light, while interior area lights with physically accurate lumens and Kelvin color temperatures illuminate living zones for both Day and Golden Hour variants.

04

Cloud GPU Farm Batch Rendering & Web Delivery

Packaged scenes are dispatched to Blender Farm cloud GPU clusters running Cycles with OpenImageDenoise at 4K resolution. Output panoramas are post-processed with color calibration, converted into compressed progressive JPEGs/WebP, and registered into the web station graph.

// 06. The Impact & Results

Delivered sub-second room transitions, seamless 3D-to-2D spatial hotspot navigation, and automated photorealistic 4K architectural rendering pipelines for unbuilt luxury properties across both desktop and mobile web.

// Explore Live Experiences