assignment 1
Download
Skip this Video
Download Presentation
Assignment 1

Loading in 2 Seconds...

play fullscreen
1 / 25

Assignment 1 - PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on

Assignment 1. Projection, HSR, and Shading. Description. To implement an OpenGL program that does viewing transform , viewing projection , Z buffer , and Gouraud shading based on Phong model. Need to read two kinds of data: Viewing data (*.view) Object data(*.obj). A simple view data.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Assignment 1' - selina


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
assignment 1

Assignment 1

Projection, HSR, and Shading

description
Description
  • To implement an OpenGL program that does viewing transform, viewing projection, Z buffer, and Gouraud shading based on Phong model.
  • Need to read two kinds of data:
    • Viewing data (*.view)
    • Object data(*.obj)
a simple view data
A simple view data

light -100 -100 100 0 0 0 0.8 0.3 0.8 0.8 0.8 0.8

light 100 100 100 0 0 0 0.2 0.2 0.5 0.8 0.8 0.8

ambient 1 1 0

eye 11.32 -9.23 19.69

vat 0 0 12.5

vup -0.62 0.51 0.6

fovy 45

dnear 10

dfar 1000

viewport 0 0 400 400

viewing data 1 5
Viewing Data 1/5
  • Describes lights, viewing parameters, viewport information.
    • view coordinate system is a right-handed coordinate system.
    • the viewing direction is negative Z direction in view coordinate system.
    • the projection is perspective.
viewing data 2 5
Viewing Data 2/5
  • light x y z ar ag ab dr dg db sr sg sb
    • x y z: light position
    • ar ag ab: light AMBIENT property
    • dr dg db: light DIFFUSE property
    • sr sg sb: light SPECULAR property.
    • There might be multiple light sources.
viewing data 3 5
Viewing Data 3/5
  • ambient r g b
    • r g b : the GLOBAL AMBIENT term
  • eye x y z
    • x y z : eye position
  • vat x y z
    • x y z: the position you are looking at
  • vup x y z
    • x y z: your up vector
viewing data 4 5
Viewing Data 4/5
  • fovy angle
    • angle: your field of view angle
  • dnear d
    • d: The distance between your eye and near plane
  • dfar f
    • f: The distance between your eye and far plane.
viewing data 5 5
Viewing Data 5/5
  • viewport x y width height
    • x y : The lower left corner of the viewport rectangle.
    • width: viewport width
    • height: viewport height
a simple object data 1 3
A simple object data 1/3

g Box01

mtllib ./box.mtl

v -2.5 -2.5 10

v -2.5 2.5 10

v 2.5 2.5 10

v 2.5 -2.5 10

v -2.5 -2.5 15

v 2.5 -2.5 15

v 2.5 2.5 15

v -2.5 2.5 15

# 8 verticies

a simple object data 2 3
A simple object data 2/3

vn 0 0 -1

vn 0 0 1

vn 0 -1 0

vn 1 0 0

vn 0 1 0

vn -1 0 0

# 6 normals

vt 0 0

vt 0 1

vt 1 1

vt 1 0

# 4 texture coordinates

a simple object data 3 3
A simple object data 3/3

usemtl m1

f 1/1/1 2/2/1 3/3/1

f 3/3/1 4/4/1 1/1/1

usemtl m2

f 5/1/2 6/2/2 7/3/2

f 7/3/2 8/4/2 5/1/2

usemtl m3

f 1/1/3 4/2/3 6/3/3

f 6/3/3 5/4/3 1/1/3

usemtl m1

f 4/1/4 3/2/4 7/3/4

f 7/3/4 6/4/4 4/1/4

usemtl m2

f 3/1/5 2/2/5 8/3/5

f 8/3/5 7/4/5 3/1/5

usemtl m3

f 2/1/6 1/2/6 5/3/6

f 5/3/6 8/4/6 2/1/6

object data 1 5
Object data 1/5
  • Define a set of polygon
  • each polygon could have its own material property specified by a material name defined in the material library file (*.mtl).
object data 2 5
Object data 2/5
  • g obj_name
    • specify the object name
  • mtllib filename
    • specify the material library file
  • v x y z
    • define the position of a set of vertex
    • The first vertex is indexed by 1 and subsequent vertices are numbered sequentially
object data 3 5
Object data 3/5
  • #comment
    • indicate this line is a comment
  • vn x y z
    • define a set of normal vector
    • The first normal vector is indexed by 1 and subsequent vertices are numbered sequentially
object data 4 5
Object data 4/5
  • vt u v
    • define a set of texture coordinate
  • usemtl material_name
    • specify which material defined in the material library file you want to use
object data 5 5
Object data 5/5
  • f v1/t1/n1 v2/t2/n2 v3/t3/n3
    • define a polygon consisted of 3 vertex.
    • (v1,v2,v3) is the index of vertex position array for each vertex.
    • (t1,t2,t3) is the index of texture coordinate array for each vertex
    • (n1,n2,n3) is the index of normal vector array for each vertex.
  • http://netghost.narod.ru/gff/graphics/summary/waveobj.htm
a simple material data
A simple material data

# Max2Mtl Version 4.0 Mar 10th, 2001

newmtl m1

Ka 0.0 0.0 0.0

Kd 1.0 0 1.0

Ks 0.3 0.3 0.3

d 1.0

Ns 2.2

illum 2

newmtl m2

Ka 0.1 0.1 0.1

Kd 0.0 1 0.0

Ks 0.3 0.3 0.3

d 1.0

Ns 2.2

illum 2

material data 1 4
Material data 1/4
  • #comment
    • indicate this line is a comment
  • newmtl material_name
    • create a new material
material data 2 4
Material data 2/4
  • Ka r g b
    • define the AMBIENT term
  • Kd r g b
    • define the DIFFUSE term
  • Ks r g b
    • define the SPECULAR term
material data 3 4
Material data 3/4
  • d value
    • Dissolve value. Values from 0~1.
    • 0 is completely transparent
    • 1 is opaque
  • Ns value
    • define the Phong specular component.
material data 4 4
Material data 4/4
  • illum value
    • 0 to disable lighting
    • 1 for ambient & diffuse only
    • 2 for full lighting
  • http://p212.ezboard.com/fnendowingsmiraifrm19.showMessage?topicID=28.topic
requirement 1 3
Requirement 1/3
  • Load the object data and the view data, then write an OpenGL program to draw the object.
    • We provide a loader to help you load *.obj file. You can add the loader (mesh.cpp, mesh.h ) into your work space, and use the class named mesh to load *.obj file.
requirement 2 3
Requirement 2/3
  • We have some test cases. Your program should be designed as flexible as possible.
    • Suggestion: receive 2 command line arguments as view data & object data
      • Ex: prog1.exe box.view box.obj
requirement 3 3
Requirement 3/3
  • At last 5 hotkey:
    • Press ‘w’ : increase the z value of camera position
    • Press ‘s’ : decrease the z value of camera position
    • Press ‘d’ : increase the x value of camera position
    • Press ‘a’ : decrease the x value of camera position
    • Press ‘q’ : quit the program
bonus
Bonus
  • More hotkey:
    • Change light source, change model…
  • Design mouse function:
    • Rotate viewport…
  • Else…
ad