Difference between revisions of "GAM670/DPS905 Weekly Schedule 20121"
(→Week 1 - Jan 8) |
(→GAM670/DPS905 -- Weekly Schedule 20121) |
||
Line 16: | Line 16: | ||
*** Modelling Layer | *** Modelling Layer | ||
*** API Translation Layer | *** API Translation Layer | ||
+ | ** Notable Features of the Base Code | ||
+ | ** camera, sound, and light are also derived from the Frame class | ||
+ | ** textures attach at the object level | ||
+ | ** texture connection is uncoupled from drawing of the graphics primitives | ||
+ | ** reference frames are relative | ||
+ | ** very simple collision detection | ||
* Relative Reference Frames | * Relative Reference Frames | ||
** Recursive calls | ** Recursive calls | ||
Line 23: | Line 29: | ||
** Detaching from and attaching to a parent frame | ** Detaching from and attaching to a parent frame | ||
**: Frame::attachTo() | **: Frame::attachTo() | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== To Do === | === To Do === | ||
Line 69: | Line 41: | ||
=== Resources === | === Resources === | ||
− | + | ||
== Week 2 - Jan 16 == | == Week 2 - Jan 16 == | ||
Line 75: | Line 47: | ||
=== This Week === | === This Week === | ||
+ | * Geometry | ||
+ | ** Plane | ||
+ | **: normal + constant - examples | ||
+ | **: equation of a plane: dot(n, x) + D = 0 | ||
+ | **: positive side of a plane dot(n, x) + D > 0 | ||
* Collision Detection | * Collision Detection | ||
*: types of colliders | *: types of colliders | ||
Line 88: | Line 65: | ||
*:: quaternions | *:: quaternions | ||
*:: geometric algebra (more abstract) | *:: geometric algebra (more abstract) | ||
+ | <!-- | ||
* Billboards | * Billboards | ||
*: definition, purpose of a billboard | *: definition, purpose of a billboard | ||
Line 110: | Line 88: | ||
*:: DrawSubset | *:: DrawSubset | ||
*:: FVF settings | *:: FVF settings | ||
+ | <!-- | ||
+ | * Visibility Determination | ||
+ | **: test a point for presence within a set of planes | ||
+ | **: normal calculations - general rotation matrix - vector and angle | ||
+ | ** ViewingFrustum | ||
+ | **: parameters | ||
+ | **:: near-clipping plane | ||
+ | **:: far-clipping plane | ||
+ | **:: field of view angle | ||
+ | **:: aspect ratio | ||
+ | **: 6 planes | ||
+ | **:: near and far planes | ||
+ | **:: left and right planes | ||
+ | **:: top and bottom planes | ||
+ | **: coding | ||
+ | **:: constructor | ||
+ | **:: ViewingFrustum::contains() | ||
+ | * Finite Size of Objects | ||
+ | *: Expansion of the Viewing Frustum | ||
+ | *: Shape | ||
+ | *:: Shape : Frame | ||
+ | *:: Shape::setRadius() | ||
+ | *:: Shapee::getRadius() | ||
+ | --> | ||
+ | |||
=== To Do === | === To Do === |
Revision as of 21:21, 19 January 2012
GAM670/DPS905 | Weekly Schedule | Student List | Project Requirements | Teams and their Projects | Student Resources
Contents
GAM670/DPS905 -- Weekly Schedule 20121
Week 1 - Jan 8
This Week
- Assignment Discussion
- Suggested Enhancements
- Review of the Base Code
- Definition of a Framework
- Modularity through stable interfaces
- Re-usability through generic components
- Extensibility through hook methods
- Inversion of control - determines which application methods to invoke in response to external events
- Framework Architecture
- Modelling Layer
- API Translation Layer
- Notable Features of the Base Code
- camera, sound, and light are also derived from the Frame class
- textures attach at the object level
- texture connection is uncoupled from drawing of the graphics primitives
- reference frames are relative
- very simple collision detection
- Definition of a Framework
- Relative Reference Frames
- Recursive calls
- Vector Frame::position()
- Matrix Frame::rotation()
- Matrix Frame::world()
- Detaching from and attaching to a parent frame
- Frame::attachTo()
- Recursive calls
To Do
- add your name to the student list
- create a team page that includes the semester number 20121
- describe the game that you intend to develop
- list the topics of interest to your team in developing its game
- list the other topics of interest
Resources
Week 2 - Jan 16
This Week
- Geometry
- Plane
- normal + constant - examples
- equation of a plane: dot(n, x) + D = 0
- positive side of a plane dot(n, x) + D > 0
- Plane
- Collision Detection
- types of colliders
- spheres
- planes
- axis-aligned bounding boxes
- oriented bounding boxes
- types of colliders
- Comprehensive Camerawork
- rotation about an axis
- order of rotation matters
- Euler angles
- gimble lock
- quaternions
- geometric algebra (more abstract)
To Do
- Form Teams, Identify Members (2-5 members) and add your team and members to Teams 20111 Before Thursday 20th.
- Confirm your name and information at Student List 20111
Resources
Week 3 - Jan 23
This Week
To Do
Resources
Week 4 - Jan 30
This Week
- Mathematics of Lighting
- Vertex Shaders
- Lighting in Vertex Shaders
- Notation
- Ga - global ambient color
- Ca - material ambient color
- Cd - material diffuse color
- Cs - material specular color
- Lai - ambient color of light i
- Ldi - diffuse color of light i
- Lsi - specular color of light i
- Ldiri - direction vector of light i
- N - normal to the surface at the vertex
- Attenuation and Spotlight Factors
- Atteni - attenuation of light i
- di - distance from light i
- di = |Ldiri|
- a0 - constant attenuation factor
- a1 - linear attenuation factor
- a2 - quadratic attenuation factor
- Atteni = 1/(a0 + a1 di + a2 di2)
- Atteni = [0, 1]
- Spoti - spot factor of light i
- Spoti = {[ri - cos(phii/2)]/[cos(thetai/2) - cos(phii/2)]}fi
- ri - cosine of angle from axis of spotlighti
- ri = norm(- light direction in camera space) . norm(Ldiri)
- phii - penumbra (exterior cone) angle of spotlighti
- thetai - umbra (interior cone) angle of spotlighti
- fi - falloff factor of spotlighti
- Blinn-Phong and Phong
- V - viewpoint vector
- V = norm(Cameraposition - Vertexposition)
- V - viewpoint vector
- Phong - account accurately for position of viewer
- Specular reflectance = (Ri . V)pi
- Ri - reflection vector
- Ri = 2 * (N . Ldiri) N - Ldiri
- pi - true specular power of light i
- Blinn-Phong - use halfway vector instead of reflection vector - adjust power to compensate
- Specular reflectance = (N . Hi)p'i
- Hi - halfway vector
- Hi = norm(V + Ldiri)
- Hi = norm([0,0,1] + Ldiri) - less computationally intensive - assumes that camera is at infinity along z axis
- p'i - adjusted specular power of light i
- Ambient
- Ca * ( Ga + sum [Lai * Atteni * Spoti] )
- Diffuse
- Cd * sum [ Ldi * (N . Ldiri) * Atteni * Spoti ]
- Specular
- Cs * sum [ Lsi * (N . Hi)p'i * Atteni * Spoti ] - Blinn-Phong
- Cs * sum [ Lsi * (Ri . V)pi * Atteni * Spoti ] - Phong
- HLSL Intrinsic Functions
- normalize() - normalize a vector
- dot(,) - dot product of two vectors of any size
- length() - length of a vector
- saturate() - clamp scalar, vector, or matrix to [0, 1]
- Notation
To Do
- reorganize framework code so that vertex shader receives product of world, view, and projection matrices
- store viewProjection matrix as an instance variable in Display
- add viewProjection query to Display to extract product of view and projection matrices
- retrieve viewProjection in *::draw() method
- pre-multiply viewProjection by world to obtain composite matrix to pass to vertex shader
- add composite matrix to the constant table in the vertex shader
- reorganize framework code to minimize duplication of heading normalization
- perform normalization of heading in Display::beginDraw()
Resources
Week 5 - Feb 6
This Week
To Do
Resources
Week 6 - Feb 13
This Week
To Do
Resources
Week 7 - Feb 20
This Week
To Do
Resources
-->