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

From CDOT Wiki
Jump to: navigation, search
(GAM670/DPS905 -- Weekly Schedule 20121)
(GAM670/DPS905 -- Weekly Schedule 20121)
Line 96: Line 96:
 
*:: [http://staff.science.uva.nl/~leo/cinderella/line1.html Dorst's site]
 
*:: [http://staff.science.uva.nl/~leo/cinderella/line1.html Dorst's site]
 
*:: [http://sinai.apphy.u-fukui.ac.jp/gcj/software/GAcindy-1.4/GAcindy.htm Hitzer's site]
 
*:: [http://sinai.apphy.u-fukui.ac.jp/gcj/software/GAcindy-1.4/GAcindy.htm Hitzer's site]
 +
* Visibility Determination
 +
**: test a point for presence within a set of planes
 +
**: normal calculations - general rotation matrix - vector and angle
 +
** ViewFrustum
 +
**: parameter - view * projection
 +
**: 6 planes
 +
**:: near and far planes
 +
**:: left and right planes
 +
**:: top and bottom planes
 +
**: coding
 +
**:: constructor
 +
**:: ViewFrustum::contains()
 +
** Finite Size of Objects
 +
**: Expansion of the View Frustum
 
* Index Buffers
 
* Index Buffers
 
*: amount of storage needed for vertex data
 
*: amount of storage needed for vertex data
Line 113: Line 127:
 
* indexBuffering sample
 
* indexBuffering sample
  
<!--
 
 
== Week 4 - Jan 30 ==
 
== Week 4 - Jan 30 ==
 
=== This Week ===
 
=== This Week ===
 
* Meshes
 
* Meshes
 +
*: What is a mesh?
 +
*:: vertex list -> vertex buffer
 +
*:: index list -> index buffer
 +
*:: attribute list -> subset to which primitives belong
 
*: Stock Objects
 
*: Stock Objects
 
*:: Sphere
 
*:: Sphere
Line 122: Line 139:
 
*:: Torus
 
*:: Torus
 
*:: Utah Teapot
 
*:: Utah Teapot
*: Simple Mesh COM object
+
*: Custom Mesh COM object
*:: What is a mesh?
 
 
*:: Create a Mesh
 
*:: Create a Mesh
 
*:: DrawSubset
 
*:: DrawSubset
Line 145: Line 161:
 
*::: normal is fixed (difference between viewpoint position and camera heading)
 
*::: normal is fixed (difference between viewpoint position and camera heading)
 
*::: up is open to change
 
*::: up is open to change
* Visibility Determination
 
**: test a point for presence within a set of planes
 
**: normal calculations - general rotation matrix - vector and angle
 
** ViewFrustum
 
**: parameter - view * projection
 
**: 6 planes
 
**:: near and far planes
 
**:: left and right planes
 
**:: top and bottom planes
 
**: coding
 
**:: constructor
 
**:: ViewFrustum::contains()
 
** Finite Size of Objects
 
**: Expansion of the View Frustum
 
 
=== To Do ===
 
=== To Do ===
 
=== Resources ===
 
=== Resources ===
Line 164: Line 166:
 
* [http://www.digitalrune.com/Products/GameEngine/Particles.aspx DigitalRune]
 
* [http://www.digitalrune.com/Products/GameEngine/Particles.aspx DigitalRune]
  
 +
<!--
 
== Week 5 - Feb 6 ==
 
== Week 5 - Feb 6 ==
 
=== This Week ===
 
=== This Week ===
Line 171: Line 174:
  
 
=== To Do ===
 
=== To Do ===
<!--
 
 
* reorganize framework code so that vertex shader receives product of world, view, and projection matrices
 
* reorganize framework code so that vertex shader receives product of world, view, and projection matrices
 
** store viewProjection matrix as an instance variable in Display
 
** store viewProjection matrix as an instance variable in Display
Line 180: Line 182:
 
* reorganize framework code to minimize duplication of heading normalization
 
* reorganize framework code to minimize duplication of heading normalization
 
** perform normalization of heading in Display::beginDraw()
 
** perform normalization of heading in Display::beginDraw()
-->
+
 
 +
== Week 6 - Feb 13 ==
 +
=== This Week ===
 +
* Effects Framework
 +
=== To Do ===
 +
=== Resources ===
 +
 
 +
== Week 7 - Feb 20 ==
 +
=== This Week ===
 +
=== To Do ===
 +
=== Resources ===
  
  
<!--
+
== Week 8 - Mar 4 ==
== Week 6 - Feb 13 ==
 
 
=== This Week ===
 
=== This Week ===
 
* [http://msdn.microsoft.com/en-us/library/bb147178%28v=VS.85%29.aspx Mathematics of Lighting]
 
* [http://msdn.microsoft.com/en-us/library/bb147178%28v=VS.85%29.aspx Mathematics of Lighting]
Line 242: Line 253:
 
*** [http://msdn.microsoft.com/en-us/library/bb509617%28v=vs.85%29.aspx length()] - length of a vector
 
*** [http://msdn.microsoft.com/en-us/library/bb509617%28v=vs.85%29.aspx length()] - length of a vector
 
*** [http://msdn.microsoft.com/en-us/library/bb509645%28v=vs.85%29.aspx saturate()] - clamp scalar, vector, or matrix to [0, 1]
 
*** [http://msdn.microsoft.com/en-us/library/bb509645%28v=vs.85%29.aspx saturate()] - clamp scalar, vector, or matrix to [0, 1]
=== To Do ===
 
=== Resources ===
 
-->
 
 
<!--
 
== Week 7 - Feb 20 ==
 
=== This Week ===
 
 
=== To Do ===
 
=== To Do ===
 
=== Resources ===
 
=== Resources ===
 
-->
 
-->

Revision as of 21:13, 28 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

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

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

To Do

  • Research the feature that you are going to add and prepare a plan of action
  • Prepare a team page for your team so that repos can be ordered
  • Add a section to your team page to track your project and solicit commentary

Resources

Week 3 - Jan 23

This Week

  • Collision Detection (cont'd)
    Shape
    Shape : Frame
    Shape::setRadius()
    Shape::getRadius()
    Shape::setRadius(float r);
    Shape::setRadius(float x, float y, float z);
    Shape::getRadius() const { return radius; }
    Shape::setPlane(Vector n, float d);
    Shape::setAxisAligned(Vector min, Vector max);
  • Comprehensive Camerawork
    rotation about an axis
    order of rotation matters
    Euler angles
    3-2-1 angles
    gimbal lock
    StephenSeefeld.net
    complex numbers
    solution of cubic equations 16th century
    two-dimensional representation
    matrix representation
    quaternions
    extension of complex numbers
    four-dimensional representation
    matrix representation
    geometric algebra (more abstract)
    Dorst's site
    Hitzer's site
  • Visibility Determination
    • test a point for presence within a set of planes
      normal calculations - general rotation matrix - vector and angle
    • ViewFrustum
      parameter - view * projection
      6 planes
      near and far planes
      left and right planes
      top and bottom planes
      coding
      constructor
      ViewFrustum::contains()
    • Finite Size of Objects
      Expansion of the View Frustum
  • Index Buffers
    amount of storage needed for vertex data
    duplication of vertex data
    indexing
    indexed primitives

To Do

Resources

Week 4 - Jan 30

This Week

  • Meshes
    What is a mesh?
    vertex list -> vertex buffer
    index list -> index buffer
    attribute list -> subset to which primitives belong
    Stock Objects
    Sphere
    Cylinder
    Torus
    Utah Teapot
    Custom Mesh COM object
    Create a Mesh
    DrawSubset
    FVF settings
  • SkyBox
    definition of a skybox
    other forms
  • Billboards
    definition, purpose of a billboard
    types of billboards
    screen-aligned - useful for annotation text, lens flares
    normal is opposite to camera heading
    up is camera->up
    axial - useful for cylindrical symmetry - trees (textured object does not face straight on)
    up is fixed
    normal faces the viewer as much as possible
    view_plane - no distortion - useful for
    normal is fixed (opposite to camera heading)
    up is open to change
    viewpoint - simulates distortion due to perspective projection - useful for clouds
    normal is fixed (difference between viewpoint position and camera heading)
    up is open to change

To Do

Resources