CS528 - Shining Star - Cave Automated Virtual Environment (CAVE) Assignment

Download Solution Order New Solution

Assignment Task

Over a decade ago we worked with the Adler Planetarium on a visualization of the constellations, but one that allowed the user to move away from the earth and see how the constellations involved stars at very different distances from us, and keep flying even further away through the stars of the Milky Way.

This CAVE2 project is an enhancement of this idea including not only the 88 official IAU constellations from 1930 but also those of other cultures.

Getting started with Unity for CAVE2

The press play and you should have a sample VR environment running in unity on your laptop that you can also configure to run in CAVE2

  • WASD move the CAVE through the virtual space
  • QE turn the CAVE within the virtual space
  • RF raise and lower the CAVE within the virtual space 
  • JKL move the user within the CAVE (and even out of the CAVE if you move too far)
  • U and O rotate the user within the CAVE

Getting started with Unity and C#

While CS 428 made use of a combination of models and code, this class project will be primarily code based.

Unity can launch a variety of external editors for working with code - a good multi-platform one is Microsoft's Visual Studio Code Unity's preferences allow you to set an external editor under External Tools.

Personally, when creating applications with Unity I like to have a fair number of separate accessible backups. Time Machine on the mac is really nice for this, and there are similar programs on Windows and Linux, but if I am being really careful, once I get a part of my project working, I quit Unity and make a backup copy of the entire project directory before moving on to the next part. Its really easy to make one simple change somewhere that breaks the entire project and its often much faster to just go back to a prior version of the code than to hunt down the problem. I make these kinds of regular backups every 30 minutes, to an hour or two once I have gotten to the point that I have something worth keeping. I highly suggest investing in a big USB drive and just keeping lots of backups until you are sure you don't need them.

Getting started with the stars

The athyg_26_reduced_m10 dataset is 69 MB decompressed and has all stars out to 100 light years + all stars to mag +10. Removing unnecessary columns reduces the dataset to 27 MB. You will need the following columns:

  • HIP - hipparcos #  - needed to link to the other datasets DIST
  • distance from sol in parsecs - could be useful to do an initial cutoff
  • X0, Y0, Z0 - 3D position relative to Sol at 0, 0, 0 in parsecs
  • ABSMAG - absolute magnitude (brightness) of the star - to get brightness
  • MAG - relative magnitude (brightness) of the star as seen from Earth - if we want to see mag from earth perspective
  • VX VY VZ - the velocity of the star relative to sol in km per second
  • SPECT - spectral class of the star - to get the size and color of the star

Note that the SPECT column has some lines with commas in them that may cause trouble for your parser. All you really need from this column is the first letter OBAFGKM.

You should also remove any rows with missing X, Y, Z or spectral type as those will be necessary to add the star to the scene.

Wikipedia has information on colors and sizes at Stellar_classification that you should use to set the color and sizes of the stars

It will likely be more useful to convert the velocity to parsecs per year (1 km/sec = 1.02269 E-6 pc/year) Initially sol should be positioned 1 meter above the floor in center of CAVE. Initially stars with a negative declination should be lower than sol and stars with a positive declination should be above sol to put the north star near the zenith. This means you will need to adjust what X, Y, Z map to in the CAVE.

Initially a parsec should map to a foot in CAVE2

It is really really important to keep the frame rate interactive, at least 30 fps in CAVE2 so you will likely only be able to use a subset of the data. A good starting point is all stars within 25 light years and everything with a hipparcos #. You will likely want an easy way to change the number of stars shown as you move from testing in the simulator to testing in the CAVE. You should try and show as many stars as possible while keeping the frame rate up.

Once you have the stars, then you can move onto the constellations

Stellarium Skycultures at skycultures has information on the constellations for various cultures. You will probably want to start with 'modern'.

  • constellationship.fab gives the star pairs based on their hipparcos #s to draw the constellations
  • constellation_names.eng.fab give the full constellation names that will be useful for menus

You should make sure that all of the stars with a hipparcos # in Stellarium are loaded into your application.

Initially the user should see all of the 88 modern constellations. You can use lines to link the stars into the constellations but make sure you pick a nice color for the constellations and not the default pink / magenta.

The user should be able to start time moving and see how the currently visible constellations (and preferably all the other visible stars) will change over time using the VX, VY, and VZ values for each star. Note that you should pick an appropriate time scale factor to make this change visible, maybe 1,000 years per second. There should also be a display in the space showing how much time has elapsed.

Pick one constellation and add additional educational information into your application about that constellation that the user can bring up. This could include visuals or voice over. It could discuss the constellation from a scientific, historic, cultural point of view.

Then you can move onto the exoplanet data

The NASA Exoplanet archive has a lot of data at app=ExoTbls&config=PS By selecting columns we can reduce this down to the HIP ID and the number of planets. There is a large number of duplicate lines in this reduced dataset and you can ignore any lines without an HIP ID.

The user should be able to re-color the dataset from OBAFGKM to a usable color scheme based on the number of known planets in the system. The user should be able to bring up information to explain this color scheme within the application.

Interaction

The user should be able to use the CAVE wand to do various things in the application:

fly in any direction, and rotate (roll, pitch, and yaw) in any direction using one of the hand controllers. The standard CAVE flight mode should work for this and that should be the default. As the user moves in the CAVE or flies the CAVE through the dataset the virtual world should tell the user how far they are away from Sol in parsecs. Note that in particular 'walk mode' is a bad idea when there is no floor.

bring up a menu of at least 5 other sets of constellations to choose from and have those displayed instead, or display no constellations. Allowing the user to choose from more constellations is better.

  • start and stop time to see the evolution of the constellations (and all visible star locations) over time
  • by default this should move forward in time, but could also be backward in time.
  • bring up additional information on at least one constellation.
  • change the color scheme from stellar type to number of known planets in the system
  • reset the location and orientation and time back to the starting point.
  • change the scale mapping of parsecs to feet to increase or decrease the distances between the stars

Everything should be very smooth and look very classy

There should be an appropriate, and not at all annoying, music file playing on loop in the background. The user should be able to easily swap out that file for another of their choice.

Any lines and text should look very nice.

You should create an initial information panel about your application

Roughly the point break down on the project implementation will be:

  • 25% for core functionality for Phase 1
  • 25% for core functionality for Phase 2
  • 25% for the constellations
  • 10% for the exoplanet data
  • 15% for interaction and general classiness

Much of the work on this project is going to be optimizing the application to look good while running at greater than 30 frames per second in stereo in CAVE2, so its important to get a version working in the simulator and then CAVE2 quickly to have enough time to iterate on the optimizations. You can also do some debugging on an HMD like the Quest and through the CAVE2 simulator, but the different platforms have different graphics capabilities, and CAVE2 runs on a cluster, so its important to test on CAVE2 regularly. I will be holding office hours in the main EVL lab so people can test on CAVE2.

This Arts and Humanities has been solved by our PhD Experts at My Uni Paper.

Get It Done! Today

Country
Applicable Time Zone is AEST [Sydney, NSW] (GMT+11)
+

Every Assignment. Every Solution. Instantly. Deadline Ahead? Grab Your Sample Now.