Git Product home page Git Product logo

access-mars's Introduction

Access Mars

Access Mars is a collaboration between NASA, Jet Propulsion Lab, and Google Creative Lab to bring the real surface of Mars to your browser. It is an open source project released as a WebVR Experiment.

alt text

This is an experiment, not an official Google product. We will do our best to support and maintain this experiment but your mileage may vary.

Background

The Curiosity rover has been on the surface of Mars for over five years. In that time, it has sent over 200,000 photos back to Earth. Using these photos, engineers at JPL have reconstructed the 3D surface of Mars for their scientists to use as a mission planning tool โ€“ surveying the terrain and identifying geologically significant areas for Curiosity to investigate further. And now you can explore the same Martian surface in your browser in an immersive WebVR experience.

Access Mars features four important mission locations: the Landing Site, Pahrump Hills, Marias Pass, and Murray Buttes. Additionally, users can visit Curiosity's "Current Location" for a look at where the rover has been in the past two to four weeks. And while you explore it all, JPL scientist Katie Stack Morgan will be your guide, teaching you about key mission details and highlighting points of interest.

Interaction Models

Access Mars supports Desktop 360, Mobile 360, Cardboard, Daydream, GearVR, Oculus, and Vive.

Users use their primary interaction mode (mouse, finger, Cardboard button, etc.) to:

  • learn about the Curiosity mission by clicking points of interest and highlighted rover parts.
  • move from point to point by clicking on the terrain.
  • travel to different mission sites by clicking the map icon.

6DOF users can use their room scale environments to explore on foot.

Technologies

Access Mars is built with A-Frame, Three.js, and glTF with Draco mesh compression.

Our fork of Three.js implements a progressive JPEG decoding scheme originally outlined in this paper by Stefan Wagner. We load low-resolution textures initially, then high-resolution textures are loaded in the background as the user explores. The textures closest to the user are updated first.

These high-resolution textures are loaded using the progressive decoding scheme, which allows us to load a large texture without disrupting the render thread. An empty texture of the correct size is allocated before the rendering process begins. This avoids the usual stutter experienced when allocating a new texture during runtime. The desired JPEG is then decoded in 32x32 blocks of pixels at a time, and this data is sent to the texture we allocated earlier. Using the texSubImage2D function, only the relevant 32x32 portion of the texture is updated at once. The decoding itself is done in a WebWorker, which uses an emscripten version of libjpeg to decode the JPEG manually.

Building

Install node and browserify if you haven't already npm install

Running npm run start will spin up a local Budo server for development. The URL will be given in the terminal.

Contributors

This is not an official Google product, but an experiment that was a collaborative effort by friends from NASA JPL Ops Lab and Creative Lab.

access-mars's People

Contributors

mannytan avatar ryburke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

access-mars's Issues

Microsoft Edge and Windows Mixed Reality motion controller support

It is possible to enter the immersive experience in Microsoft Edge using the Windows Mixed Reality headsets, but the version of A-Frame that is used here (0.6.0) does not have support for motion controllers, so it is impossible to interact with the scene.

A-Frame 0.7.0 added support for the Windows Mixed reality headsets and motion controls, updating to that will give you access to the windows-motion-controls component.

Google Cardboard: clicking doesn't work

Just tried out the VR experience on my Nexus 5X running Android Oreo with basic Google Cardboard. Animation and initial landing location load fine, head tracking works, but clicking on points of interest or on terrain does nothing. Initial tooltip about 'how to use' stays on screen.

Tried tapping on phone screen directly instead of using Cardboard's button - still no results. It's ignoring any clicks completely.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.