Skip to content

wengh/window-view

Repository files navigation

Window View

See the view from any window in the world β€” before you ever visit.

Apartment hunting? Curious about a listing's natural light or skyline view? Window View lets you click on any building on a 3D globe, pick a window, and step inside a virtual room to see exactly what you'd see looking out β€” all from your browser.

Try it now: wengh.github.io/window-view


Why This Exists

Listing photos can be misleading. "City views" might mean a sliver of sky between two buildings, and "sun-drenched" might only apply for 20 minutes a day. Window View solves this by letting you:

  • πŸ™οΈ Preview the view from any unit, any floor, any direction β€” before scheduling a tour.
  • β˜€οΈ Check the sunlight using the built-in sun path overlay, which shows you exactly when and where the sun will be visible from a given window throughout the year.
  • πŸ”— Save & share views β€” every window selection is encoded in the URL, so you can bookmark favorites or send them to a friend.

Examples

New York β€” 15 William Street, unit #41I

β†’ Open in Window View

Window View Real Life
Simulated view from 15 William Street, NYC, showing neighbor skyscrapers and clear blue sky Real photo view from 15 William Street, NYC, illustrating the accuracy of the building assets and perspective

Chicago β€” Wolf Point East, unit #4103

β†’ Open in Window View

Window View (+ sun path) Real Life
Simulated view from Wolf Point East, Chicago, with Sun Path overlay displaying hourly sun positions and seasonal arcs Real interior view from Wolf Point East, Chicago, overlooking the river and cityscape through a large window

Waterloo β€” E5 Bridge

β†’ Open in Window View

Simulated view from E5 bridge, Waterloo, depicting railway tracks and surrounding vegetation

Sun path

Detailed sun path overlay showing hourly analemmas (figure-8 loops) indicating the sun's position throughout the year, with date labels for solstices and equinoxes

How to Use

  1. Navigate the 3D globe to find the building you're interested in.
  2. Click "Enter Selection Mode" in the control panel.
  3. Click on a wall to place a window where you want it.
  4. Adjust the width and height sliders to match the window size.
  5. Click "View from Inside" to step into the room and look out.
  6. Use WASD to move around and click-drag to look in any direction.
  7. Toggle "Show Sun Path" to visualize sunlight throughout the year.

Controls Reference

Globe Navigation (default)

Action Control
Pan view Left click + drag
Zoom view Mouse wheel scroll
Rotate view Right click + drag

Selecting a Window

Action Control
Place window Left-click on a building surface
Resize window Width/Height sliders in the panel

Inside View (first-person)

Action Control
Move W A S D
Look around Left-click + drag
Zoom (FOV) Scroll wheel
Reset zoom Middle-click
Sun path Click "Show Sun Path" button

Sharing & Bookmarking

Everything about your current view β€” the window you selected, your camera angle, and whether the sun path is visible β€” is automatically saved in the URL. Just copy the address bar to:

  • πŸ“Œ Bookmark your favorite apartments
  • πŸ“€ Share a specific view with your partner, roommate, or broker
  • πŸ” Come back later and pick up exactly where you left off

Getting a Cesium Ion Token

Window View uses Cesium Ion to stream 3D tiles. If you are running this locally, you will need a free Cesium Ion account and access token.

  1. Sign up for a free account at cesium.com/ion.
  2. Go to the Access Tokens tab.
  3. Create a new token (or use the default one).
  4. Make sure the token has access to the Google Photorealistic 3D Tiles asset. This should be granted by default.

Running Locally

If you'd like to run your own copy:

git clone https://github.com/wengh/window-view.git
cd window-view
npm install
npm run dev

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Then open http://localhost:5173. You can optionally create a .env file with your API key so you don't have to enter it each time:

VITE_CESIUM_ION_TOKEN=your_token_here

Contributors 2

  •  
  •