A screen capture of the scene. You can see the sun, Haley's Comet, Jupiter, Earth, and Mars in this image. |
Features
For advanced features outside of what was taught in class, I added in-scene point lighting for the sun. I also changed how the sun itself was rendered in order to make it bright, setting it's ambient lighting to 1. A skybox with a starfield texture was used as the backdrop for the scene, rendered similarly to the sun with an ambient lighting setting of 1. Direct Sound was used to add music and a sound effect when the camera is moved, simulating a spaceship sound.
Particle System
Unfortunately, despite this success, the particle system in the final product is still not perfect. The sorting is not set up when a particle is killed, and this causes a brief flicker of artifacts across the system. Additionally, I didn't realize that in addition to not sorting particles properly, the example also set up the particles as billboards only facing (and only rendered) in one direction. This means that from the sides the system seems distorted, and from the back it does not appear at all due to culling. Finally, the particles blinking instantly out of existence looks a bit odd. Instead, they should have an decreased alpha over time, fading out gently. All of these issues would be easy enough to fix, given time, and I may do just that simply to improve this project as an entry in my portfolio.
Program Structure
I am rather disappointed with my program structure for this project. Code organization is something I am intrigued by and generally pride myself on. Unfortunately, I was hindered in this project because I was learning as I went, and using primarily code from rastertek.com's excellent tutorial series. This code, while quite effective and great for single feature tutorials, is less than ideal for a larger project using many features at once. It takes zero advantage of C++'s inheritance features, and I found encapsulation difficult as well. In my coursework report for this project, I took the time to fully plan out a better program organization, and I may implement this organization in the future.
Moving Forward
This project isn't dead. I hope to continue improving it in the future in order to use it as a prime example of my work in my career portfolio. There are many interesting features I'd like to add, including:
- Program restructure
- Particle system fixes
- All other moons and dwarf planets
- Better representation of the sun's light, i.e. bloom, lens flare, glow
- Re-sizing, re-positioning of planets for better realistic representation
- Asteroid Field
- Planetary rings
- Mouse-assisted camera control
- Pause button
- Readout of current coordinates relative to the center of the sun
- Representation of planetary orbit (line)
- Select-able planets with readout giving information (possibly including voice-over)
- Clicking shoots a probe (possibly giving more readings)
The idea is an interactive, exploratory simulation of the solar system. Something like this could be used for education purposes. Ultimately, though, the goal is simply to create something nice for my portfolio. And I think, even in it's current state, that goal was accomplished!
If you would like to try out the scene, it is available online on my portfolio github. Enjoy!
If you would like to try out the scene, it is available online on my portfolio github. Enjoy!
No comments:
Post a Comment