2024 Project - Shining Star

Phase 1 Due Sunday 2/11 at 8:59pm Chicago time
Phase 2 Due
Sunday 4/7 at 8:59pm Chicago time




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.

See 43 seconds into this video for an idea what the stars looked like without the constellations showing - https://www.youtube.com/watch?v=d5XDbzy7vuE&t=3s

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

It will use our CAVE2 Unity Template as a starting point.

download unity hub from https://unity.com/unity-hub then from within unity hub install
Unity 2019.2.11 by going to installs - install editor - archive - download archives - and 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.

you should then grab the CAVE2 unity template from
https://github.com/uic-evl/omicron-unity/releases/tag/v3.12.3 where you can download and unzip omicron-unity-v3.12.3.zip and unzip it. You can then add the omicron-unity directory to Unity Hub.

then look at the CAVE2 Unity Guide at https://github.com/uic-evl/omicron-unity/wiki/Guide-for-running-Unity-in-CAVE2 and follow 'Configure a Unity project for use with the CAVE2 Simulator' now that you have the example project:

remove the default scene

drag Assets / module-omicron / CAVE2 / Scenes / cube world example into the hierarchy

in the top Omicron menu select Configure for CAVE2 Simulator

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
IJKL 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#

The tutorials at https://unity.com/learn are a good place to start learning the Unity3D IDE, and there are quite a few intro tutorials on YouTube such as https://www.youtube.com/watch?v=gEARZ20M-Zc

Another good place to look are the notes from CS 427 creative coding - https://www.evl.uic.edu/datsoupi/2023_CC/schedule.html in particular week 6 and week 8.

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 - https://code.visualstudio.com/ 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

A good place to start for the star data is https://github.com/astronexus/ATHYG-Database

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:

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 https://en.wikipedia.org/wiki/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 https://github.com/Stellarium/stellarium/tree/master/skycultures has information on the constellations for various cultures. You will probably want to start with 'modern'.
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 https://exoplanetarchive.ipac.caltech.edu/cgi-bin/TblView/nph-tblView?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:



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.

We will have three class periods devoted to project testing in CAVE2. Each person will have a guaranteed 10 minute time slot for testing during class time based on the final presentation order. People presenting on 4/9 and 4/11 can test on 3/28, people presenting on 4/16 and 4/18 can test on 4/2 and people presenting on 4/23 and 4/25 can test on 4/4. Additional time will be available during office hours after class as usual.


Some suggestions:

Notes on deploying the CAVE2 version




There are two deadlines for the project.

For the first deadline you should have a version of your application running in the Unity CAVE2 simulator that loads and display the stars and allows the user to navigate through the stars at high frame rate and shows at least one known constellation. This will make sure everyone is making progress on the project and has the basics of loading and displaying the data worked out so there is time to add in and refine the remaining features before the second deadline.

Create a GitHub repository and upload all of your source code and data files there. Its a good idea to then re-download this repository and make sure that your code compiles and runs in a stock version of Unity 2019.2.11. Create a web page with your name along with a link to this repository and any instructions necessary to get your code running. This web page should also include a link to a 1-minute video showing your application running in the unity CAVE2 simulator that shows off all of its features. Email the location of this web page to andy before the deadline.




To turn in your final project you should set up a web page with several pages describing your work, including the well-commented source code and required files on GitHub to be able to compile and run your program, and some photographs and screen captures showing what your application looks like when its running. You should then email andy with the location of this website before the deadline. It would probably be a good idea to put a backup copy of the web page at a second website just in case I can't get to the first one.

These web pages should include:

all of which should have plenty of screenshots or photographs with meaningful captions.

Be sure to document any external libraries or tools that you make use of - give credit where credit is due.

You should also create a 2-3 minute YouTube video in CAVE2 and/or using screen capture showing your application running and feature the video prominently on your project web page. The video should be narrated and rehearsed to show off the important features of your project.

Remember that this website may be useful to you later on when you are looking for a job and want to show off the projects you have done.

When you send andy the location of your webpage you should also email a scaled down version of your favorite photo that is 1920 pixels wide by 1080 pixels tall in jpg format named p.<your_last_name>.jpg. This image will be used on the class web pages along with the link to your project web page.


Each student will also give a short demonstration about your project in-class and answer some questions about your work. Be sure to practice your presentation so you finish within the allotted time so everyone has equal time to present.


last revision 3/28/2024 added notes on making it easier to move the project over to CAVE2
2/25/2024 - added additional information on CAVE2 testing times
2/10/2024 - added some notes about alpha centauri to help test the initial scale and orientation of the simulation
1/23/2024 - corrected the text re the version of the CAVE2 unity template