Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 4363/6353 OTHER THINGS YOU SHOULD KNOW. OVERVIEW Matrix Stacks Raytracing and NPR Physics Engines Common File Formats.

Similar presentations


Presentation on theme: "CS 4363/6353 OTHER THINGS YOU SHOULD KNOW. OVERVIEW Matrix Stacks Raytracing and NPR Physics Engines Common File Formats."— Presentation transcript:

1 CS 4363/6353 OTHER THINGS YOU SHOULD KNOW

2 OVERVIEW Matrix Stacks Raytracing and NPR Physics Engines Common File Formats

3 MATRIX STACKS Typically, matrices are stored in a stack to avoid this Stacks give us the ability to rotate one body around another Stacks are also how (character) animation is done Let’s say we wanted to fly through the solar system You still have a camera matrix The sun has been translated (but probably not rotated)

4 MATRIX STACK EXAMPLE Camera matrix

5 MATRIX STACK EXAMPLE Camera matrix “Push” the camera matrix. Note: everything is rotated by our camera matrix…

6 MATRIX STACK EXAMPLE Camera matrix “Push” the translation of the sun Sun trans matrix

7 MATRIX STACK EXAMPLE Camera matrix “Push” the translation of the sun Sun trans matrix Combine everything on the stack into one MV matrix, then draw the sun. Trans first, then camera! mMV Order of operations

8 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix The Earth is both translated Note: yes, yes… I know it’s not to scale…

9 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix The Earth is both translated Earth trans matrix

10 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix The Earth is both translated and rotated (in that order), so we push those on a separate frame… Earth trans matrix Earth rot matrix

11 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix WRONG! The matrices are multiplied TOP DOWN! Earth trans matrix Earth rot matrix

12 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix WRONG! The matrices are multiplied TOP DOWN! Earth rot matrix Earth trans matrix

13 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix Combine everything on the stack into one MV matrix, then draw the Earth! mMV Earth rot matrix Earth trans matrix Order

14 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix What about the moon? Earth rot matrix Earth trans matrix

15 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix Well, the moon has a translation… Moon trans matrix Earth rot matrix Earth trans matrix

16 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix Well, the moon has a translation… as well as a rotation… Moon trans matrix Moon rot matrix Earth rot matrix Earth trans matrix

17 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix Well, the moon has a translation… as well as a rotation… Moon rot matrix Moon trans matrix Earth rot matrix Earth trans matrix

18 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix So we combine everything on the stack into one MV matrix, then draw the moon mMV Earth rot matrix Earth trans matrix Moon rot matrix Moon trans matrix Order

19 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix What if we want to draw a little independent spaceship? Earth rot matrix Earth trans matrix Moon rot matrix Moon trans matrix

20 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix POP the Moon stuff! Earth rot matrix Earth trans matrix

21 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix POP the Earth stuff! Earth rot matrix Earth trans matrix

22 MATRIX STACK EXAMPLE Camera matrix Sun trans matrix POP the Sun stuff!

23 MATRIX STACK EXAMPLE Camera matrix …Leaving us with just the camera matrix. Then, we can add the spaceship matrices on top of that.

24 MATRIX STACK EXAMPLE Camera matrix Push the spaceship trans first! Ship trans matrix

25 MATRIX STACK EXAMPLE Camera matrix Then the rotation! Why? Ship trans matrix Ship rot matrix

26 MATRIX STACK EXAMPLE Camera matrix Now that you have your MV, draw the ship… Ship trans matrix Ship rot matrix mMV

27 RAYTRACING Easy to read article at http://en.wikipedia.org/wiki/Ray_tracing_(graphics) Note: there are independent reflection, refraction and shadow rays

28 EXAMPLES (AGAIN, FROM WIKIPEDIA.ORG)

29

30 RAYTRACING Advantages: Realistic simulation of lighting Natural shadows Simple to implement (but not trivial) Heavily parallelizable Disadvantages Still an approximation not truly photorealistic Must limit depth Recursively adds up light values of rays Ssssssssssssslllllllllllllllloooooooooooooooowwwwwwwwwwwwww

31 “…holds that when human replicas look and act almost, but not perfectly, like actual human beings, it causes a response of revulsion among human observers” THE UNCANNY VALLEY… http://en.wikipedia.org/wiki/Uncanny_valleyFinal Fantasy: The Spirits Within

32 NPR (NON-PHOTOREALISTIC RENDERING) Stylistic Water color Impressionism Example: Toon Shading Geometry remains the same Shading changes Commonly seen in video games Borderlands http://en.wikipedia.org/wiki/File:Toon_Shader.jpg

33

34 WORKING WITH PHYSICS ENGINES There are several out there: Tokamak (open source, no longer maintained) Bullet (open source – several commercial games and movies like “2012” and “Bolt”) Havok (commercial – Ireland, loads of commercial games) PhysX (commercial – Ageia/NVDIA, CUDA, uses PPU, tons of games as well) Usually provide: Gravity Collision (between static and dynamic bodies) Soft-body physics Ragdoll physics Vehicle dynamics Fluid simulations Cloth simulations

35 HOW WE USE THEM… Physics engine is a black box We “load” the physics engine Tell it which objects are dynamic Tell it which are static Define parameters, such as gravity, bounce and so on During each frame of animation: Update the physics engine by a delta time Ask the physics engine for: The location of each dynamic object The orientation of each dynamic object

36 TOKAMAK EXAMPLE Typically have a limited number of basic shapes Cube Capsule Sphere Must declare variables to hold all of the objects in your scene #include neSimulator* gSim = NULL; neRigidBody* gCubes[NUM_CUBES]; neRigidBody* sphere; neAnimatedBody* floor1 = NULL; neT3 t;

37 void setupPhysicsEngine() { // This will define the size and shape of each cube neGeometry* geom; // length, width and height of the cube neV3 boxSize1; neV3 gravity; neV3 pos; float mass; float fmass = 0.2f; // The number of total objects the simulator has to keep track of... neSimulatorSizeInfo sizeInfo; // Fill in the size info about the environment sizeInfo.rigidBodiesCount = NUM_CUBES+1; sizeInfo.animatedBodiesCount = 1; // total number of objects sizeInfo.geometriesCount = sizeInfo.rigidBodiesCount + sizeInfo.animatedBodiesCount; // total number of collisions possible n*(n-1)/2 sizeInfo.overlappedPairsCount = sizeInfo.geometriesCount*(sizeInfo.geometriesCount-1)/2; sizeInfo.rigidParticleCount = 0; sizeInfo.constraintsCount = 0; sizeInfo.terrainNodesStartCount = 0; gravity.Set(0.0f, -3.0f, 0.0f); gSim = neSimulator::CreateSimulator(sizeInfo, NULL, &gravity); // Setup a box - using loop for (int i = 0; i < NUM_CUBES; i++) { gCubes[i] = gSim->CreateRigidBody(); // Get the geometry object from the cube geom = gCubes[i]->AddGeometry(); boxSize1.Set(1.0f, 1.0f, 1.0f); geom->SetBoxSize(boxSize1[0], boxSize1[1], boxSize1[2]); gCubes[i]->UpdateBoundingInfo(); mass = 1.0f; gCubes[i]->SetInertiaTensor(neBoxInertiaTensor(boxSize1[0], boxSize1[1], boxSize1[2], mass)); gCubes[i]->SetMass(mass); pos.Set(i%10-5, i/10+0.5, -30); gCubes[i]->SetPos(pos); } // Create the sphere sphere = gSim->CreateRigidBody(); geom = sphere->AddGeometry(); geom->SetSphereDiameter(2); sphere->UpdateBoundingInfo(); sphere->SetInertiaTensor(neSphereInertiaTensor(2, fmass)); sphere->SetMass(fmass); pos.Set(0, 1, -4); sphere->SetPos(pos); sphere->SetAngularDamping(0.01f); // Create the floor floor1 = gSim->CreateAnimatedBody(); geom = floor1->AddGeometry(); boxSize1.Set(100, 0.001, 100); geom->SetBoxSize(boxSize1[0], boxSize1[1], boxSize1[2]); floor1->UpdateBoundingInfo(); pos.Set(0, 0, 0); floor1->SetPos(pos); }

38 void display () { degree += 0.1f; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gSim->Advance(0.015); //Cubes for (int i = 0; i < NUM_CUBES; i++) { t = gCubes[i]->GetTransform(); cube_state[0][0] = t.rot[0][0]; cube_state[1][0] = t.rot[1][0]; cube_state[2][0] = t.rot[2][0]; cube_state[3][0] = t.pos[0]; cube_state[0][1] = t.rot[0][1]; cube_state[1][1] = t.rot[1][1]; cube_state[2][1] = t.rot[2][1]; cube_state[3][1] = t.pos[1]; cube_state[0][2] = t.rot[0][2]; cube_state[1][2] = t.rot[1][2]; cube_state[2][2] = t.rot[2][2]; cube_state[3][2] = t.pos[2]; cube_state[0][3] = 0.0f; cube_state[1][3] = 0.0f; cube_state[2][3] = 0.0f; cube_state[3][3] = 1.0f; drawCube(…); } // Sphere t = sphere->GetTransform(); sphere_state[0][0] = t.rot[0][0]; sphere_state[1][0] = t.rot[1][0]; sphere_state[2][0] = t.rot[2][0]; sphere_state[3][0] = t.pos[0]; sphere_state[0][1] = t.rot[0][1]; sphere_state[1][1] = t.rot[1][1]; sphere_state[2][1] = t.rot[2][1]; sphere_state[3][1] = t.pos[1]; sphere_state[0][2] = t.rot[0][2]; sphere_state[1][2] = t.rot[1][2]; sphere_state[2][2] = t.rot[2][2]; sphere_state[3][2] = t.pos[2]; sphere_state[0][3] = 0.0f; sphere_state[1][3] = 0.0f; sphere_state[2][3] = 0.0f; sphere_state[3][3] = 1.0f; drawSphere(…); glutSwapBuffers(); glutPostRedisplay(); }

39 COMMON FILE FORMATS.3ds – AutoDesk 3DS Max (legacy).blend - Blender.c4d – Cinema 4D.dae – COLLADA (xml).fbx – AutoDesk.lwo – LightWave Object.ma/.mb – AutoDesk Maya.max – AutoDesk 3DS Max.md2/.md3 – Quake 2/Quake 3.pov – POV ray file.skp – Google Sketchup.sldasm – SolidWorlds Assembly.smd – Valve’s format.u3D – Universal 3D (3D Industry Consortium - xml)

40 THE.OBJ FILE FORMAT Also called WaveFront OBJ Text-based Easy to work with and widely accepted File specifies: Position of each vertex UVs of each vertex Normals of each vertex List of faces (triangles)

41 EXAMPLE (HTTP://EN.WIKIPEDIA.ORG/WIKI/WAVEFRONT_.OBJ_FILE) # List of Vertices, with (x,y,z[,w]) coordinates, w is optional. v 0.123 0.234 0.345 1.0 v...... # Texture coordinates, in (u,v[,w]) coordinates, w is optional. vt 0.500 -1.352 [0.234] vt...... # Normals in (x,y,z) form; normals might not be unit. vn 0.707 0.000 0.707 vn...... # Face Definitions (see below) f 1 2 3# Vertices only f 3/1 4/2 5/3# Vertices/Texture coords f 6/4/1 3/5/3 7/6/5# Vertices/Textures/Normals f......

42 OTHER OPTIONS Smooth shading s 1 – smoothing is true s off – no smoothing Materials may be put into a separate.mtl file newmtl myMat Ka 1.000 1.000 1.000#ambient white Kd 1.000 1.000 1.000#diffuse white Ks 0.000 0.000 0.000#specular off Ns 50.000# size of spec (s from our lighting equation) Tr 0.9#transparency


Download ppt "CS 4363/6353 OTHER THINGS YOU SHOULD KNOW. OVERVIEW Matrix Stacks Raytracing and NPR Physics Engines Common File Formats."

Similar presentations


Ads by Google