A Place Among the Stars

An Immersive CAVE Journey into the Interstellar Space.

Getting Started with "A Place Among the Stars"

Welcome to Cosmos Journey, an immersive experience that takes you through the wonders of the universe right from your desktop.

This guide will help you set up the project so you can start navigating the cosmos in no time.

Begin your journey by downloading and installing Unity Hub, your portal to managing Unity Editor installations and your Unity projects.

  • Download Unity Hub from the official Unity download site.
  • Through Unity Hub, install Unity Editor version 2019.2.11.
      > installs
      > install editor
      > archive
      > download archives
      > Now in a browser choose Unity 2019.X > 2019.2.11 and click on unity hub to have Unity Hub install that
       version of Unity.
    Note: Ensure you select this specific version to maintain compatibility with the Cosmos Journey project.

Obtain your copy of the project using one of the following methods:

  • Download the project directly from my GitHub repository.
  • If you're familiar with Git, clone the repository using the following command:
    git clone https://github.com/VamsiMunjuluri/A-Place-Among-the-Stars"

After downloading the project, it's time to explore::

  • Open Unity Hub and navigate to the 'Projects' tab.
  • Click on the 'Add' button and browse to the downloaded Cosmos Journey project folder.
  • Select the folder and allow Unity to switch to the correct version and load the project.

When you first open the project, Unity will need to build and import the necessary packages. This process is automatic:

  • Simply wait for Unity to resolve and download all required dependencies. This may take a few minutes.

You're almost ready to launch:

  • In the Unity Editor, locate the 'Project' window.
  • Navigate to the Assets folder and find the CosmosJourney scene(has a Unity Logo).
  • Drag the CosmosJourney scene into the Hierarchy window which is to the top left and add it to the current project.
  • Press the 'Play' button at the top of the Unity Editor to start the simulation.

Voyager's Guide

Navigating through the infinite stretch of the cosmos has never been so interactive and immersive.
In "A Place Among the Stars," you are not just a spectator but a voyager,
capable of traversing the celestial bodies and constellations with unprecedented control and personalization.

Here's your guide to navigating the stars, selecting constellations, adjusting your cosmic scale,
and immersing yourself in the vastness of space with ambient soundscapes.

  • Menu
    Accessing the Menu: The right mouse button is your gateway to the cosmos, opening the menu and selecting   items within it.
    Navigating the Menu: Arrow keys let you traverse the menu options. Move the slider left and right to adjust  settings.
    Exiting Menus: The left mouse button is your tool for going back or closing the menu.

  • Mastering Movement
    Navigating Space: Use 'WASD' to move forward, left, backward, and right through the space.
    Rotating in Space: Press 'Q' and 'E' to turn left or right, altering your viewpoint.
    Vertical Exploration: 'R' and 'F' will raise or lower you through space.
  • Main Menu Overview:
    Exoplanet Colors: By default, stars display their colors based on the classic OBAFGKM spectral
      classification. Engage the toggle to switch to a color scheme representing the number of planets each
      star hosts.
    Constellation Menu: Contains multiple cultures and let's you explore their unique constellation
    Navigation and Scale: Contains Travel style and Scale feature.
    Audio Menu: Let's you select an Audio for background music.

    Additional Menu Functions:
    I'm Coming Home: One click returns you to the origin, our solar system, repositioning you at coordinates
     (0,0,0) and resetting your orientation.
    Compass Reset: Realigns your perspective without moving your location in space.
    Developer Stats: Provides a peek into the technical performance of the application, including frames per
     second and other data.
    Project Details & Controls: Outlines the purpose and story behind "A Place Among the Stars," along with a
      summary of control instructions for CAVE2 Wand.

  • Constellation Menu:
    Cultures: Delve into various astronomical cultures - from modern astronomy to ancient Indian, Egyptian,
     Romanian, and Mayan interpretations of the night sky. Select one or multiple cultures to overlay their
     unique constellation patterns onto the stars, or simply explore without any to appreciate the bare night sky.
    Constellation Fact Feature: A specialized feature which takes you to a particular constellation, reorients
      your view for the best visibility, and presents intriguing facts and image of it.
  • Navigation and Scale:
     Choose your travel style - 'Drive' or 'Freefly' for exploration. Adjust your velocity with a 'Navigation Speed'  slider.
    Cosmos Scale: A scalability option lets you experience the vast distances of space by adjusting the scale
      from a default of 1 Parsec per Foot to a view where stars become distant specks or or zooming in for an
      intimate look at celestial bodies.
  • Audio Menu:
     Accompany your expedition with a selection of my favourite background scores by Hans Zimmer for the
     iconic "Interstellar" movie, handpicked to provide for best audio experience that makes you emotionally
     invested in the experience.
  • Cosmic Milestone:
     Throughout your journey, an on-screen indicator will keep you informed of the distance you've traveled from
     'home,' giving context to your journey through the stars.

    With each of these features, "A Place Among the Stars" promises a celestial odyssey that's as informative as it is beautiful. Ready to step out into the cosmos?

How the Stars Have Aligned

Building the Cosmos in Virtual Reality

Embarking on the journey to create a comprehensive virtual cosmos requires not just creativity but also a solid foundation of data.
The "How the Stars Have Aligned" section provides a comprehensive overview of the data engineering,
developmental insights, and optimization strategies fundamental to crafting this stellar VR experience.

Star Data Source: The backbone of our star-studded sky is the ATHYG database, a meticulous compilation of celestial data found at AstroNexus/ATHYG-Database on GitHub. This dataset, once unpacked, contains an extensive list of stars within 100 light-years from our solar system, plus additional stars up to a magnitude of +10. From this dataset, we extracted essential columns to maintain performance without compromising on detail: HIP: The Hipparcos number, a unique identifier to cross-reference stars across different datasets. DIST: The distance from our sun, Sol, in parsecs, necessary for initial culling based on proximity. X0, Y0, Z0: Three-dimensional coordinates positioning each star relative to Sol, crucial for spatial mapping. ABSMAG: Absolute magnitude of the star for determining its brightness from a standard distance. MAG: Relative magnitude as seen from Earth, offering an Earth-centric perspective on star visibility. VX, VY, VZ: Velocity components for each star relative to Sol, required for simulating motion over time. SPECT: Spectral class of each star, determining its color and size for visualization. During preprocessing, the data was cleaned of any rows with missing values or duplicate entries, while the SPECT column was simplified to only include the primary spectral type letter (O, B, A, F, G, K, M). Constellation Data: Constellations add narratives to our sky, connecting stars to form familiar patterns. To draw these celestial connect-the-dots, we sourced data from the Stellarium software at Stellarium/skycultures, which includes constellations from multiple cultures. This dataset provides HIP numbers in pairs to outline each constellation and full constellation names for our menu systems. Only constellations with complete data in the ATHYG dataset were included. Exoplanet Colors: To highlight the fascinating worlds beyond our solar system, we turned to the NASA Exoplanet Archive, where we filtered the extensive list to HIP ID and the number of planets for each star system. This reduced dataset was then cleansed of duplicates and missing HIP IDs, resulting in a focused collection that would later inform our color-coding scheme. Data Integration and Transformation: With all data cleansed and condensed, we began the intricate process of data transformation: Switched the Y and Z coordinates to match Unity’s 3D space conventions. Converted distances from meters to feet, applying a factor of 3.28084 for scale accuracy within the virtual CAVE environment. Incorporated exoplanet data by adding a new column to the star dataset, painting stars with varying colors depending on their planetary count. Conclusion: Our data preparation involved a meticulous process of selection, cleaning, and transformation to ensure that our virtual cosmos is not only visually compelling but also founded on scientifically sound information. By leveraging Python and data manipulation libraries such as Numpy and Pandas, we harnessed the power of these datasets to create an immersive experience that is both educational and enchanting.
Insights and Innovations: Unveiling the Intricacies of VR Development The process of developing "A Place Among the Stars" was filled with enlightening discoveries and lessons that went beyond basic game development. Here's a comprehensive dive into the fascinating finds: Material Physics Paradox: Materials in VR are typically associated with the visual aspect of objects. However, it was found that they could inadvertently introduce physical properties to objects. A non-physical object could unexpectedly interact with the environment due to the attributes of its material, leading to a need for careful material management. Performance Over Aesthetics with Particle Systems: In the realm of virtual cosmos creation, particle systems and VFX graphs were discovered to be more performance-efficient than traditional game objects. They allowed the simulation of a vast number of stars without significantly impacting frame rates, proving essential for maintaining a smooth user experience. Material and Shader Impact: The choice of materials and shaders was observed to have a profound effect on performance. Shaders, in particular, dictate not only the visual output but also how objects interact with light and the environment, impacting collision effects and computational load. Billboard Effectiveness: Billboarding, the technique of rendering 2D objects to appear as 3D, was found to be an innovative way to achieve visual depth without the computational cost of rendering in full 3D. Shader Programming Discoveries: Shaders are more than visual aids; they're programs that instruct the GPU on rendering visuals. It was discovered that custom shader programming could be leveraged to optimize performance, impacting how objects are rendered and even their physical interactions within the virtual space. GPU Data Management: A key discovery was the cost of data transfer between the CPU and GPU. The use of compute buffers allows for the GPU to manage data directly, significantly reducing the performance overhead associated with data transfer. External Shaders and Their Utility: While implementing custom shaders and compute buffers wasn't within the project's scope, utilizing the PCX point cloud importer's shaders from an external GitHub package proved to be a valuable integration. These shaders were tailored for performance and provided a ready-made solution for visualizing complex star data. CAVE2's Unique Performance Characteristics: Running the application within the CAVE2 system unveiled a surprising truth: despite the raw power of multiple PCs, the need for synchronization across instances can dampen performance. This highlighted the importance of minimizing CPU-GPU data transfer to ensure a responsive experience across all viewing nodes. In this section, we dissect these discoveries, analyzing how they've influenced the development process and how they could inform future VR projects. It’s an intriguing peek into the backend workings that make a rich, immersive experience possible, demonstrating that VR development is as much about performance engineering as it is about creating visual spectacles.
The challenge of rendering an astronomical number of stars was met with a series of strategic optimizations, ensuring a stellar performance across platforms, especially within the demanding environment of CAVE systems. Here's how performance soared: Game Object Limitations: Initially, attempting to render 270,000 stars as game objects resulted in a dismal 3-4 fps. Even reducing the count to 107,000 stars with associated HIP IDs only nudged the fps to 6-8, indicating the need for a different approach. Particle System Efficiency: Switching to particle systems revolutionized performance, allowing all 270,000 stars to be displayed at an impressive 80 fps, and the HIP-specific 107,000 stars at an even more remarkable 180 fps. This shift was pivotal for achieving a decent fps later in CAVE with all the stars. Synchronization in CAVE: Within CAVE's multi-instance environment, setting a manual seed for the particle system was essential to prevent synchronization issues that could disrupt the user experience. Audio Quality Selection: Audio file format played an unexpected role in immersion. WAV files offered superior audio fidelity over MP3s, enhancing the sensory experience of the cosmos. Material and Shader Impact: The use of specialized shaders not only improved visual fidelity—creating a more immersive starry sky without bounce-off effects—but also contributed to a noticeable fps increase, adding approximately 10 fps. Particle Systems as a Switching Mechanism: To toggle between normal and exoplanet-star views, two distinct particle systems were employed. This technique eliminated complex scripting and calculations, relying on simple active/inactive switches for seamless transitions. Shading and Lighting Adjustments: Disabling certain shadow effects and tweaking light settings proved beneficial, freeing up computational resources without compromising visual quality. Billboard Optimizations: Employing billboards for certain sections of the particle system yielded a substantial performance boost, enhancing fps by 70-80% compared to using traditional mesh rendering. By implementing these optimizations, "A Place Among the Stars" achieved not only the delicate balance between performance and visual complexity but also set a benchmark for real-time rendering of large-scale virtual environments.

Demo from CAVE2 at University of Illinois Chicago

UI Screengrabs

Project 1 Screenshot
Project 2 Screenshot
Project 2 Screenshot
Project 2 Screenshot
Project 2 Screenshot