GithubHelp home page GithubHelp logo

new_beginning_cs184's Introduction

Computer Science 184 - Assignment 4

By: Juan Gonzalez (cs184-am) and Alvin Wong (cs184-ax)

WEBSITE: http://inst.cs.berkeley.edu/~cs184-am/new_beginning

A New Beginning

How to run the program: 
Using the Makefile, type

make

This will create an executable program called new_beginning. To run this, type

./new_beginning

The scene starts in the dark scene, next to the gravestones. To go to the nature scene, locate the bridge that extends to a portal to another dimension. In the nature scene, to go back to the dark scene, locate the black tombstone of death.

______________________________________________________________________________

Requirements:

1) A complete scene. 
   - The dark scene has a small house, and inside the house is a fireplace, a bed, a pillow, a picture, a computer, etc. Outside the house are wilted, dark trees and a skeleton (for added spookiness). There is a path from the house to a certain destination.
   - The nature scene has shiny trees, some animals, including cows, a horse, sheep, and fish. It has a river that can be crossed over by a bridge. A fence surrounds the whole scene, and the sun shines overhead.
   
2) One object created by hand.
   - Using old-style OpenGL, the portrait of George Washington, the fireplace, and the portal leading to the nature scene were all constructed as rectangles.
   - Using the OBJ parser, we also manually constructed text files that follow the obj format. From this, we created polygons based on our own specified coordinates and our own calculated normals, and these include the fence and the bridge and the river base.

3) One object loaded from a .obj file.
   - We have plenty - trees, all the animals, and the skeleton, for example.
   
4) All placement done by hand.
   - We didn't even use a modeling program to help load objects into the scene. We stuck with the framework of HW2 by using a readfile to parse different commands from a scene file.

5) Two objects textured with an image.
   - This can be seen in the dark scene, where we have a portrait of George Washington, a texture to support the fireplace, and a nebula texture to symbolize a portal to another dimension.
   
6) Shiny objects, dull objects.
   - A good example is in the nature scene. The bridge over the river is very shiny (high specular term), whereas the fish in the river are very dull.
   
7) At least one directional light.
   - The sun in the nature scene.

8) At least one point light source.
   - The fireplace in the dark scene.

9) At least one object instantiated more than once.
   - We implemented this by only loading each .obj file's vertices, texture coordinates, and normals ONE time. We stored this data in an array, so that whenever we make a call to create a new object, the "new" object uses the preexisting generated coordinates, and is transformed to another place in the world via different Model View Matrix.

10) At least half of the objects in the scene must have correct normals to interact with the lights correctly.
   - All the OBJ files we pulled in had normals specified, so we used those. For the objects we created, most of them are specified with correct normals. Take the nature scene, for example. Everything except the fish there has correct normals. This definitely satisfies > 1/2 of all objects.
   
11) Use double buffering, hidden surface elimination, and a perspective projection.

    - We took the framework from HW2, which includes double buffering, depth testing (Z Buffer), and our own perspective projection matrix defined in Transform.cpp.

12) Mechanism to turn on/off texture
    - Press 't'.
    
13) Programmable fragment shaders + 1 add-on.
    - We took the shader code from HW2. We also implemented bump mapping, which is generating bumps on objects via a normal map. This can be seen in the road leaving the house in the dark scene.
    
14) Both the mouse and keyboard.
    - Mouse rotates view. Keyboard translate character according to the WASD keys. The p,t,i,o,h keys are defined. p = pause/start animation. t = turn on/off textures, i = zoom in, o = zoom out, h = print help

15) User must be able to look around their current position and move forward and backwards.
    - Again, mouse movement and WASD keys.
    - 'i' to zoom in, 'o' to zoom out.
    
16) Animation
    - The character is animated when he moves. The fish in the river and the skeleton move. Press p to toggle on/off animation.
    

Extra Credit
1) Parametric or curved Surfaces - the river was modeled after a cosine curve, sampled at 20 points.
2) Animated Textures - the computer in the deathbed scene shows this.
3) Anything Else / Collision Detection (Very simple) - The nature scene has a minimal function collision detection scheme so that the character does not go off the plane or into the river. The character animation and creation was done from scratch. And yes, the character does have eyes.

new_beginning_cs184's People

Watchers

 avatar  avatar

Forkers

dis123

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.