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:
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.