Giter Club home page Giter Club logo

solarsystem's Issues

Add parallax mapping?

I don't recall how many of the textures used for bump/normal mapping are normal maps and how many are height maps, but for the later ones parallax mapping could be used, that should improve the appearance of '3D' effect.

Improve shadows

Shadow implementation is pretty basic, there are various ways to improve it.

Improve spaceship movements

Currently following a movement command, the spaceship rotation accelerates up to a certain angular velocity then it rotates with a constant angular velocity (if the angle is large enough, otherwise this constant velocity won't be reached), then it decelerates up to the target angle, it rests there for a little while then it turns back orienting itself in the direction of the camera.

The problem is that a new command during this time will interfere with the movement, because the code takes into account only the spaceship orientation, but not the angular velocity when a new orientation is required.

This obviously can be improved.
It's quite boring stuff so I probably won't change it for a while.

Add skysphere

There are textures out there that could be used for the sky that map nicely on a sphere, so a sphere (with normals inwards) could be used instead of the cubemap for such a case.

It could be very similar with the implemented skybox, just have a big sphere moving along with the camera (but not rotating along with it).

I'll think about implementing it.

Add bump mapping

If I recall correctly, for some planets I found bump mapping textures. It would be nice to add bump mapping at least for one (preferably Earth). Just add an optional parameter for each planet/moon for the bump mapping texture and if one is available for a planet/moon, do bump mapping https://en.wikipedia.org/wiki/Bump_mapping.

More layers/details

There are more textures available, some of them could be added.
For example, adding an alpha blended layer over the planet texture, such as clouds for Earth.
There are also specular maps and there is even a city lights map for Earth, check them out and add the ones that could result in a nice improvement of the aspect.

Missing Textures

The Textures directory and texture files are missing from the repository.

Add a spaceship

An optional spaceship obj could be added somewhere in front of the camera. I already implemented an obj loader in the ray tracing project, it could be adapted for this project as well.

Add 3D appearance to atmosphere

With alpha blending it could be done to look more spectacular, probably some transparent blue sphere on top, then another trasparent layer with the clouds...

Object loader and rendering

There is some benefit of having the vertices indexed. As it is now, it duplicates the vertices, adding unnecessary overhead (and it's more than simply a vertex, it's also the normal, the texture coordinates, whatever).
OpenGL can deal with indexed stuff.

It ended it as it is now because I ported it from the ray tracing project, where it made sense to avoid the indexing complexity at the time when I implemented it.

As it's only a toy project, I'm not sure I'll do the change, but maybe later the code could be reused in some other project so it might be worth changing it.

about android

Hello! This project is great, very interested, may I ask, how can I implement it in android?

Movement smoothing

The problem with the windows timers is that the messages do not necessarily come at the specified interval.

To have the 'proper' planets position at the actual time of the timer message, one could use a previous state to interpolate/extrapolate positions/rotations.

A similar issue exists for the camera movements.

This jittering effect is not something very visible in this program case but for correctness it should be handled.

Improve camera movements with keyboard or mouse

They can be improved to be smoother in a similar way as for #15, right now they are driven by keyboard and mouse events and time is not taken into account (those events do not necessarily come at equal time intervals)

Avoid loading the same texture twice

Many obj files have set the same texture file for different parts of the object and/or the same one for both ambient and diffuse textures. Avoid loading them multiple times by using a 'cache', first check in there and if it's not already loaded, then load it.

Add a billboard with info

Add a billboard in a corner, with some alpha blending, to display info about the simulation, such as years/days/hours since the simulation begun.

how to compile?

I have Visual Studio 2019, should I start by just downloading the code and trying to build it?

Command line instructions would be nice

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.