240 likes | 398 Views
Tools of the Trade. Design Tools. Tools for creating 2D and 3D graphics off-line Model building Animation Particle effects Pyrotechnic, atmospheric, fluid… Scene graph management Shaders Textures Fur, hair, clothing…. Design Tools. Alias – Maya, now owned by AutoDesk www.alias.com
E N D
Tools of the Trade CSC505
Design Tools • Tools for creating 2D and 3D graphics off-line • Model building • Animation • Particle effects • Pyrotechnic, atmospheric, fluid… • Scene graph management • Shaders • Textures • Fur, hair, clothing… CSC505
Design Tools • Alias – Maya, now owned by AutoDesk • www.alias.com • $$$ • Discreet – 3DS Max (3D Studio Max), now owned by AutoDesk • www.discreet.com • $$$ • Renderman • renderman.pixar.com • $$$ • Chumbalum-soft – MilkShape 3D • http://www.swissquake.ch/chumbalum-soft/ • Shareware CSC505
Programming Libraries • Libraries for creating 2D and 3D graphics real-time • Provide access to graphics hardware accelerators • Provide software emulation in the absence of hardware accelerators • Describe 3D objects • Describe properties of 3D objects • Texture, color, shading, lighting, etc. • Describe 3D viewing geometries CSC505
Programming Libraries • OpenGL • Multi-platform • www.opengl.org • 3D graphical libraries • Microsoft DirectX • Windows platform • www.microsoft.com/windows/directx/ • User interface libraries CSC505
Programming Libraries • Java 3D API • Multi-platform • java.sun.com/products/java-media/3D/ • User interface libraries • Java OpenGL • OpenGL library for Java • opengl.j3d.org • Various others • Virtual Reality Mark-up Language (VRML) • www.vrmlsite.com • Internet based 3D content creation CSC505
OpenGL • What is OpenGL? • Came out of Silicon Graphics (SGI)in the early 90’s (was IRIS GL specifically for their graphic workstations) • A software interface to graphics hardware • Provide a uniform API • Hardware independent • Operating system independent • About 200 core commands CSC505
OpenGL • What if your graphics hardware doesn’t support OpenGL? • Then OpenGL will run in pure software mode CSC505
OpenGL • What OpenGL does not do • It does not provide support for user interface devices • It does not provide audio support • It does not provide game play support • It does not provide network interface support • It merely provides access to your graphics hardware CSC505
OpenGL Basics • 3D graphics – nothing more, nothing less • There is no user interface definition • But…there are available libraries and SDKs • GL Utility Toolkit (GLUT) • http://www.opengl.org • Flash Light Toolkit (FLTK – Full Tick) • http://www.fltk.org/ • Jules' Utility Class Extensions (JUCE) • http://www.rawmaterialsoftware.com/juce/ CSC505
OpenGL Basics • All the primitive tools we’ve looked at are included • Line drawing (polygon) • Shading • Lighting • Projections (orthographic, perspective) • Hidden surface removal • Texture mapping • Alpha blending CSC505
OpenGL Basics • Special effects • Motion-blur • Fog • Depth-of-field (depth-of-focus) CSC505
OpenGL Code int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; } CSC505
OpenGL Concepts • Modeled as a state machine • You set states (modes) that remain in effect until you change them • Current color • Viewing transformations • Line/polygon patterns • Lighting characteristics • Object material properties • OpenGL State Machine CSC505
OpenGL Rendering Pipeline Vertex data Pixel data CSC505
OpenGL Rendering Pipeline • Display List • A storage area for holding objects to be displayed at a later time • Evaluators • Conversion of parametric objects (e.g. curves) to vertices • Per-vertex operations • Conversion of vertex primitives to screen objects (4x4 matrix transformations among others) CSC505
OpenGL Rendering Pipeline • Primitive assembly • Clipping (so things don’t display off the window), culling (hidden surface removal), depth cues (perspective transformations) • Pixel operations • Packing and unpacking of pixel data, scaling (for size) • Texture assembly • Texture mapping CSC505
OpenGL Rendering Pipeline • Rasterization • Conversion of geometric (polygons) and pixel data to fragments (pixels in the frame buffer) • Fragment operations • Final modification of frame buffer pixels (texturing, blending, dithering, masking, …) CSC505
OpenGL Demonstrations CSC505
Bibliography • Books • OpenGL Programming Guide (Red book) • Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis • Addison Wesley publisher • The OpenGL Reference Manual (Blue book) • OpenGL Architecture Review Board, Shreiner • Addison Wesley publisher • OpenGL: A Primer • Edward Angel • Addison Wesley publisher CSC505
Bibliography • Books • The Zen of Direct3D Game Programming • Peter Walsh • Prima Tech publisher • Special Effects Game Programming With DirectX • Mason McCuskey • Premier Press publisher • Physics for Game Developers • David M. Bourg • O’Reilly publisher CSC505
Bibliography • Periodicals • Game Developer Magazine • CMP publisher • www.gdmag.com (free subscriptions available) • Computer Graphics World • PennWell publisher • www.cgw.com (free subscriptions available) • ACM Transactions on Graphics • IEEE Computer Graphics and Applications Magazine CSC505
Bibliography • Conferences • ACM SIGGRAPH • www.siggraph.org • Game Developer’s Conference • www.gdconf.com • E3 (Electronic Entertainment Expo) • www.e3expo.com CSC505
Things To Do • Tonight • Final project proposal • What is your project going to entail? • What algorithms will you use? • What will be the final deliverable? • Programming help/questions • Next week • Demonstrate your deliverable to the class • Write (and turn in) the report describing your project CSC505