AstroCurve

High-Level Project Summary

AstroCurve is a versatile interactive application developed in Unreal Engine 4. A user can select various real and highly exaggerated asteroid models of different shapes, and using sliders, a user can adjust the asteroids rotation speed along any axis they choose. AstroCurve allows people of all ages and education levels to play with an asteroid and it's rotation to explore how the light curve behaves based on its shape and rotation. AstroCurve serves as a spiritual successor to the KillerAsteroids Light Curves web application which has now been shutdown after Adobe Flash went offline in January 2021.

Detailed Project Description

Purpose

AstroCurve is a standalone interactive application for multiple platforms (windows, mac, linux, android, IOS) that allows users of all skillsets and knowledge to investigate how different asteroid properties affect the behavior of it's light curve. The only known application that used to do this was KillerAsteroids Light Curves, and we envision AstroCurve to serve as a spiritual successor to the original Adobe Flash web application which has now been shutdown after Adobe Flash support went offline in January 2021 [2].


How do you use the app?

From the main menu, a user can select various real and unrealistic asteroid models of various shapes from a grid. These include basic geometric shapes such as cubes, cones, ellipsoids, and cylinders to real asteroid models such as 216 Kleopatra and other unusual objects such as a teapot, a house plant, or a car.


Once in the main app window, users are presented with their chosen asteroid model, initially frozen in space, and a directional light to simulate the sun. Users will also notice a skybox of the Milky Way in the background. On the right-hand side of the screen is a user interface widget which contains sliders to change the asteroids rotation speed along any axis they wish. Below that is a graphing tool that will graph the asteroids brightness over time as it rotates. While the asteroid is rotating, users can orbit their camera around the asteroid and zoom in and out however they please with the mouse and mouse wheel.


The main buttons in the user interface are:



  • Play - Starts or resumes the light curve graphing.
  • Pause - Stops the asteroid's rotation and light curve graphing.
  • Clear - Clears the light curve graph without stopping or resetting the rotation of the asteroid.
  • Reset Rotation - Resets the asteroid's position and rotation back to the default.

Users can return to the main menu and select another asteroid shape model to try out.


How does AstroCurve work?


AstroCurves algorithm computes Lambertian reflection on a per-triangle basis, comparing the normal of the triangle with the incoming direction of the sun to figure out how much light is being absorbed by the triangle. We weigh all of these values based on triangle area - so that bigger triangles contribute more than smaller triangles - and sum the total to get the total amount of reflected sunlight. We then normalize this sum by comparing the current amount of reflected sunlight with a theoretical maximum amount of reflected sunlight, giving us a number between 0 and 1. This number is computed and plotted at a small interval, yielding a seemingly continuous graph of brightness vs time. The light curve that is computed is from a fixed position, looking directly at the asteroid, where the camera starts.


The key variables we chose to focus on were:



  • Asteroid shape.
  • Rotation Axis.
  • Rotation Rate.
  • Surface reflectance (albedo).


Methods, Tools and Development

AstroCurve was developed by two graduate students in astrophysics and computer science at the University of Calgary. AstroCurve was developed in Unreal Engine 4.27 using a combination of C++ and visual/blueprint scripting [3,4]. The asteroid models were obtained from NASA's 3D resources and NASA JPL's Asteroid Shape Models server [6,7]. Other 3D models include a the famous teapot model, a house plant, and a car [8,9,10]. Most of the geometric 3D shapes used were engine content that came built-in with Unreal Engine. However, some Python code was used inside a Jupyter notebook to generate some ellipsoid shape models. The skybox was created from a texture cube using the NVIDIA Texture Tools Exporter [5]. All images and audio used are obtained under the Creative Commons Attribution 4.0 International License unless otherwise stated [12,13,14,15].


Future Work

If provided more time, we would like to be able to add multiple asteroids and light curves on the screen at the same time. This would allow users to easily compare different asteroid's light curves on the same screen. Additionally, We would also like to include more variables such as surface texture and use a more complex reflectance model. Furthermore, we would like to be able to also compute a light curve based on where the viewer/camera is around the asteroid, rather than a pre-defined, fixed position. This way a user can further explore how the observers position impacts the light curve. Perhaps we have a button to toggle between the two.


Another interesting idea to add would be to simulate asteroid orbits around the Sun with a 'telescope' positioned in another orbit to simulate data gathering. This way we can also take into account the rotation of the viewer and the asteroid around the sun, before data analysis would typically begin to correct this.

Space Agency Data

3D Model Data

Asteroid Shape Models (2018). [online] NASA. Available at: https://echo.jpl.nasa.gov/asteroids/shapes/shapes.html [Accessed September 28, 2021]


3D Models (2021). [online] NASA 3D Resources. Available at: https://nasa3d.arc.nasa.gov/models [Accessed September 28, 2021]


Light Curve Science

Bonilla, D. (2015). Light Curve Analysis. [online] NASA. Available at: https://www.nasa.gov/content/asteroid-grand-challenge/characterize/light-curve-analysis

Hackathon Journey

We chose this challenge because it perfectly matched our combined skillsets and allowed us to tackle a new problem of interest to us both. As a published astrophysicist, most of Ryan Johnston's work focused on extragalactic objects such as galaxies and quasars, and so the opportunity to work on a problem in planetary astronomy was very appealing. Alejandro Garcia is a graduate student in computer science who specializes in computer graphics with a broad interest in space. And so, this challenge was right up our alley.


Having attend multiple iterations of the NASA Space Apps challenge, our experience has been very rewarding. When we first started out we were very inexperienced and didn't perform very well, but we all have to start somewhere. Now, we are experienced problem solvers and this year has been a huge improvement for us.

References

Tags

#asteroids #coding #game #3dmodelling #lightcurves

Global Judging

This project has been submitted for consideration during the Judging process.