Reference no: EM13309846
Design Your Own Planets
This assignment is an exercise in lighting and texture mapping, together with projection geometry/ray tracing.Write a Java program that renders an imaginary science fiction scene from the point of view of a space probe approaching a hypothetical "ocean planet" with an orbiting rocky moon together with a distant gas giant planet in the background. These fictional planets orbit a star near the Orion Nebula.
A jpg file of the Orion Nebula is provided on the course website. Use this as your background image. Your imaginary planet and moons should have surface detail rendered on them. To achieve this you can use the texture mapping technique. Some image files are provided that you can use as texture images.
A start-up program is given. This provides the (x, y, z) coordinates for each of the ocean planet, moon, and gas giant. The origin of this coordinate system is the projection point and the eye point. The size and location of the projection plane is also specified in the start-up code. You will need to use the techniques of projection/ray tracing so that projected sizes of the planet on the image come out correctly.
Note: a graphical user interface is not required in this assignment. Your program should directly display the rendered scene to the screen upon running the program. Note also that here you will be working directly with spheres which have simple properties (no input "wireframe" data are required).
For lighting the planet and moon surfaces, you need to decide on their surface properties using some appropriate combination of ambient, diffuse, and specularillumination models. You can choose any values to give the effect you want, but note that water behaves as a specular reflector. You may assume that these surfaces are illuminated by a single Sun emitting white light and you may choose any appropriate location of this light source.
The best performance will be obtained if you draw the scene onto a JavaBufferedImageand then draw the image to the screen.
Do not use Java 3D. Do not use java.awt.GradientPaint.
A sample scene is provided at the course website. You may render your scene in any way you like. However, your scene should clearly demonstrate the effects of the various lighting techniques and it should give some impression of depth.