310 likes | 402 Views
Managing Your Objects. Paul Taylor 2009 Assignment Due Fri 5/6/2009. What is an Object. A Bunch of Polygons (or one), or a Sprite Each Object can have: A Translation A Rotation A Scale A Shear (not super common). Our Test Objects. A Sweet Car!. The Simplest Representation.
E N D
Managing Your Objects Paul Taylor 2009 Assignment Due Fri 5/6/2009
What is an Object • A Bunch of Polygons (or one), or a Sprite • Each Object can have: • A Translation • A Rotation • A Scale • A Shear (not super common)
Our Test Objects • A Sweet Car!
The Simplest Representation • Car Body Translation, Rotation and Scale • Wheel 1 Translation, Rotation and Scale • Wheel 2 Translation, Rotation and Scale
Scale Rotate Translate Scale Rotate Translate Scale Rotate Translate
With our Matricies Scale Rotate Translate Scale Rotate Translate Scale Rotate Translate
Directed Acyclic Graphs (DAG) • Technically this is a Specialised case of a Directed Graph • The rule is there are no paths that start at a vertex and end at the same vertex (No Loops)
What is the benefit? We can Reuse Objects Cars have four wheels A flock of birds may all be the same A turret may have 4 Cannons
Connecting All your Objects • We are creating a Scene Graph
In effect Object Storage Looks Like Root Child 1 Child 2 Sibling 1 Sibling 2 Sibling 2 Child 1 Child 3 Sibling 2 Child 2 Sibling 2 Child 2 Sibling 1
Creating Bounding Boxes BBs are typically used For Collision Detection With a Hierarchical Object generation can still be relatively simple. Outlier detection in X Y Z and –X-Y-Z directions A Bounding Sphere simply needs the most distant vertex from the Object Center More Complicated routines can be used, or you can use a Human!
Constructive Geometry • Not generally used during real time renders • Consist of using Logical Operators on Polygon Objects to combine them • Intersections, Unions and Difference • A Typical Use of Constructive Geometry is in 3D Game Level creation and CAD Design
Constructive Solid Geometry CSG • http://dic.academic.ru/pictures/enwiki/67/Csg_tree.png
We have our Objects Nicely packed • Why? • To Create Structures that define the 3D Worlds we are creating • Intersecting the Bounding Boxes/Spheres in the game world is much faster. • Once we know that 2 objects intersect (via BB collision) we can go deeper into the collision (If needed)
Space Subdivision We have already covered BSP Trees, now we will look at 1 1/2 more Space Partitioning methods Oct-Trees KD-Trees
Quad-Trees Quad Trees are the 2D baby brother of Oct Trees Computationally similar, conceptually easier Space is Divided into 4 areas If more than one object exists in a region it is again subdivided into 4 sub-regions, and so on….
http://www.directionsmag.com/images/articles/spatialDBMS/quadtree.gifhttp://www.directionsmag.com/images/articles/spatialDBMS/quadtree.gif
Oct-Trees • http://en.wikipedia.org/wiki/File:Octree2.png
http://www.cs.ucl.ac.uk/research/equator/papers/Documents2002/Jean-Daniel_Nahmias/Massive_Model_Rendering.htmhttp://www.cs.ucl.ac.uk/research/equator/papers/Documents2002/Jean-Daniel_Nahmias/Massive_Model_Rendering.htm
KD-Trees • A specialisation of Binary Trees (Similar to BSP Trees) • In a similar way to Oct Trees a KD Tree splits space in an Axis Aligned Fashion. • Different to Oct-Trees a KD Tree does not always split the world into even parts
KD-Trees • http://en.wikipedia.org/wiki/Kd-tree
http://www-hpcc.astro.washington.edu/old_content/papers/marios/perform/node3.htmlhttp://www-hpcc.astro.washington.edu/old_content/papers/marios/perform/node3.html
What else can you do? • Oct-Trees and KD-Trees can be used for: • View Frustum Culling • Occlusion Culling • Level of Detail Detection • Spatial Indexing (Similar to a BSP Tree) • Ray Casting
Bringing it all together • You organise all of your objects • Binary Tree, Object Tree, Hash Table etc • You have a method of generating Collisions • Firstly by Simplifying objects • Bounding Boxes, Spheres • Secondly by finding Collisions between objects • Oct-Trees, KD-Trees • Thirdly we can check the collision of the actual objects if required • Finally we need to do something appropriate with the collision!
Open Scene Graph (OSG) http://www.openscenegraph.org/ Multipass Object Grouping and Ordering Middleware that does Object Handling Things you could do with it: • Prototyping • Offline Rendering • A Sluggish Game