Computer graphics/2014-2015/Laborator 12

From Wikiversity
Jump to navigation Jump to search

Linkuri Rapide: Prima Pagină; Laboratoare agenda, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, JOGL template.


Building a simple space simulator[edit]

This project is intended as a recap of the previous laboratories dealing with 3D graphics. All the main issues that we have discussed in this second part of the labs should be included in this application.

Space simulators usually mean that the user have to move around a 3D space populated with planets, stars and other space objects. The overall aim of your task is to do the following:

  • Create a scene by using a perspective projection
  • Add one central sphere with a texture representing the Sun on it. Put a billboard in the center of the image that is large enough to simulate the Sun corona
  • Add four spheres revolving around the central one with textures of Mercury, Venus, Earth and Mars on them
    • Add clouds to Earth (should be created by using another greater sphere on top of the initial one and by applying blending on it) (BONUS)
  • Add the Moon around Earth
  • Add camera movement support
    • Add support for object picking. The user should be informed of which object he/she clicked on by displaying a text message (use GLUT) on the top-left corner of the viewport (BONUS)
  • Add a world box around the scene and apply a texture with stars around it
    • Add a simple collision detection mechanism so that the user should not leave the world box or go through any of the existing spheres (BONUS)
    • Add a comet by using a simple particle engine (BONUS)

NOTE:

  • the requirements marked as BONUS are mandatory for the students who didn't send in their homework or for teams of up to 2 students.
  • the code should be placed inside a package called simulator
  • add the texture related classes in a package called simulator.texturing
  • place the methods for the billboard inside a separate class and package called simulator.billboarding
  • place the camera related methods in a separate class and put it inside a package called simulator.camera
  • place the particle related methods in a separate class and put it inside a package called simulator.particles