Difference between revisions of "Project3F16"
(Created page with "=Project 3: Scene Graph= In this project you will need to implement a scene graph The total score for this project is 100 points. Additionally, you can obtain up to 10 poin...") |
|||
Line 48: | Line 48: | ||
* 5 points for the textures | * 5 points for the textures | ||
* 5 points for correct rendering of edges and corners (seamless edges) | * 5 points for correct rendering of edges and corners (seamless edges) | ||
+ | |||
+ | <hr> | ||
+ | |||
+ | More to come shortly... | ||
<!-- | <!-- |
Revision as of 23:07, 21 October 2016
Project 3: Scene Graph
In this project you will need to implement a scene graph
The total score for this project is 100 points. Additionally, you can obtain up to 10 points of extra credit.
1. Sky Box (20 Points)
Start with code that uses your trackball code, and modify it to control the camera instead. (If you didn't get that to work the keyboard controls will suffice.)
Create a sky box for your scene. A sky box is a large, square box which is drawn around your entire scene. The inside walls of the box have pictures of a sky and a horizon. Sky boxes are typically cubic, which means that they consist of six square textures for the six sides of a cube. Here is a great tutorial for sky boxes in modern OpenGL.
Here is is a nice collection of textures for sky boxes, and here is an even bigger one.
Draw a cubic sky box and make it big enough to hold an entire theme park.
Make sure single-sided rendering (triangle culling) is enabled with these lines somewhere in your code to ensure that you will never see the outside of the box:
glEnable(GL_CULL_FACE); glCullFace(GL_BACK);
Use the following settings for your texture after your first glBindTexture(GL_TEXTURE_CUBE_MAP, id)
for correct lighting and filtering settings:
// Make sure no bytes are padded: glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Select GL_MODULATE to mix texture with polygon color for shading: glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); // Use bilinear interpolation: glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Use clamp to edge to hide skybox edges: glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
To familiarize yourself with texture mapping in OpenGL, we provide sample code, which loads a PPM file and uses it as a texture for a quad. If you decide to use one of the above referenced sky box images, you will have to convert them from JPEG to PPM format. The free image processing tool IrfanView for Windows will do this for you. Alternatively, you can use a third party library such as SOIL to natively load JPEG images.
Grading:
- 5 points for functional camera controls with keyboard or mouse
- 5 points for the sky box without textures
- 5 points for the textures
- 5 points for correct rendering of edges and corners (seamless edges)
More to come shortly...