Difference between revisions of "GAM670/DPS905 Weekly Schedule 20121"

From CDOT Wiki
Jump to: navigation, search
(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()
* Visibility Determination
 
** Plane
 
**: normal + constant - examples
 
**: equation of a plane: dot(n, x) + D = 0
 
**: positive side of a plane dot(n, x) + D > 0
 
<!--
 
**: test a point for presence within a set of planes
 
**: normal calculations - general rotation matrix - vector and angle
 
** camera, sound, and light attachments now made at the Frame class
 
** textures still attach at the object level
 
** texture connection uncoupled from drawing
 
** time tracking now within HUD class completely
 
** introduction of relative reference frames
 
** very simple collision detection
 
** 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
 
*: Bounded Volume
 
*:: BoundedVolume : Frame
 
*:: BoundedVolume::setRadius()
 
*:: BoundedVolume::getRadius()
 
-->
 
  
 
=== 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 22:21, 19 January 2012


GAM670/DPS905 | Weekly Schedule | Student List | Project Requirements | Teams and their Projects | Student Resources


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
  • Relative Reference Frames
    • Recursive calls
      Vector Frame::position()
      Matrix Frame::rotation()
      Matrix Frame::world()
    • Detaching from and attaching to a parent frame
      Frame::attachTo()

To Do

  1. add your name to the student list
  2. 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
  • Collision Detection
    types of colliders
    spheres
    planes
    axis-aligned bounding boxes
    oriented bounding boxes
  • 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)
    • 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

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

-->