• Nem Talált Eredményt

Business

In document Game Development (Pldal 15-0)

• Business development

• business development executive

• Studio head

• Lawyers

• Licensing

• Marketing

• Manufacturing

Game Development

2.1. Blender

• http://www.blender.org

Explore the interface!!!

2.2.

Game Development

1.

Camera movement:

ALT + LMB : rotate ALT + RMB : zoom ALT + MMB : pan

Game Development

2.

3.: Save as Default Concept "art"

2.3. Final goal

Game Development

[fragile]

2.4. Base blueprint

Game Development

http://cg.iit.bme.hu/gamedev/KIC/02_DevToolsAssets/01/frontview.jpg http://cg.iit.bme.hu/gamedev/KIC/02_DevToolsAssets/01/sideview.jpg

2.5. Screens

Game Development

• Create new screens

Toggle full screen for one view: SHIFT+SPACE

2.6. Setup 3 views

• New scene

• Delete cube (Delete)

• Rearrange subwindows:

Toggle full screen for one view: move mouse over the screen and SHIFT+SPACE

Perspective Front Side (Left/Right)

2.7. Background image

Game Development

Game Development

2.8. Create polygonal object: cube

Move cursor to origin (hit Space and type "snap", Then choose: Snap Cursor to Center)

Game Development

Game Development

Helyezzük ide a sarokba TAB

MMB

Game Development

2.9.

• Result after:

• extrude,

• scaling,

• translate or

Game Development

• Movement of individual vertices

After choosing extrude press ESCAPE:

New faces are created but moved to zero distance from the base face After extrude scale the new face down a little

Game Development

• We should modify the geometry a little:

• The red edge should be merged with the yellow one.

• Moving the edge is not enough (NO ZERO AREA POLYGONS!!)

• Knife tool. Click on edges to cut polygons. If ready, press ENTER.

Switch to vertex mode and select two vertices

Merge tool: Merges the vertices together and removes zero sized polygons Do the same for the other vertices, and we can continue extruding...

Game Development

Game Development

Game Development

Extruding the side polygon

Game Development

Delete

Game Development

Game Development

Select all

Copy geometry:

"Add duplicate" then ESC!!!

Game Development

I.

Game Development

II.

III.

Game Development

IV.

Create the:

extrude REGION

ESC (zero distance extrusion) Scale it up a bit

Game Development

Loop cut and slide

Game Development

Rims and indentations

Game Development

Game Development

The End

3. 3 Texture painting

[fragile]

3.1. GIMP

• Dowload GIMP and install: http://www.gimp.org/downloads/

• Load: http://cg.iit.bme.hu/gamedev/KIC/02_DevToolsAssets/02/Gate_UVMap.png

Game Development

3.2. Explore the interface...

Windows Single-Window Mode

3.3. Creating selections

• Paths tool

3.4. Path tool

Game Development

If ready hit ENTER

Game Development

3.5. New channel

Game Development

Game Development

3.6. Use channels as selections

Right click Final chanells!!

Game Development

3.7. Open: wall.jpg

Game Development

3.8. Rescale

Game Development

1000 x 666

3.9. Offset

Game Development

500 x 333

3.10. Not OK!!! Undo!

Game Development

Undo

3.11. Correct luminance differences

Game Development

Soft light, 100% opacity

3.12. Now offset again!

Game Development

Game Development

3.13. Clone tool

• CTRL + click: where to copy from

• Start painting

• Source should be reset often(step 1)

Game Development

Offset again to test the result!

[fragile]

3.14. Define pattern

• CTRL+A (select all)

• CTRL+C (copy)

• (Create directory: GIMP\Data\settings\patterns)

Game Development

• Select mortared walls

• Use clone tool or bucket paint tools, and set the source to pattern

• Paint or fill...

Game Development

3.16. Bricks under the mortar

• Load brick3.jpg

• Rescale

• Clone tool, define the source

• Back to archwayBase.psd

Game Development

3.17. Smoothing the boundaries

• Smudge tool

• Clone tool

• Eraser

• etc...

Game Development

3.18. Fill all other areas

Game Development

3.19. Dirt and smudge

Game Development

Paint dirty areas where water

Game Development

3.20. Dirt and smudge

Game Development

Smudge it!

Game Development

Game Development

3.21.

The end

4. 4 Character Modelling

4.1. Start

Game Development

4.3. Front view / background image

4.4. Delete half of the cylinder faces, adjust vertices to face

4.5. First refinement: Loop subdivide (CTRL+R)

Game Development

4.6. Position vertices in front view

Game Development

4.8. Move vertices to their place

Start with vertices on the face and move them only along the z direction (green arrow), as the other two coordinates were already placed correctly in front view.

4.9. Delete lower cap faces

Game Development

4.10. We don't have a blueprint for back view, but in a free

camera view, we can adjust the geometry. In free view always

move vertices along one axis at a time.

Game Development

4.11. Smoothed normals

4.12. Freeze rotation

Game Development

4.13. Duplicate in object mode

Game Development

4.14. Loop subdivide refinements...

Game Development

4.15. Refine the geometry along both horizontal and vertical

planes

Game Development

4.16. After vertex adjustment the geometry is ready...

Game Development

4.17. Creating texture coordinates

4.18. Texture

Game Development

4.20. Create an automatic UV layout

Game Development

4.21. Adjust the uv coordinates in the UV Editor...

We can use:

Game Development

4.23. The "completed" head model

Game Development

4.24. The End

5. 5 Character Modelling II. Modelling the body

5.1. Start

• http://cg.iit.bme.hu/gamedev/KIC/02_DevToolsAssets/04/

• Load head.blend into Blender

Game Development

5.2. New Cylinder

5.3. Set background image in front view

Set background image in front view: torso_front.jpg Rotate cylinder to look like this:

Game Development

5.4. Move vertices to their place

Game Development

5.5. Refinement (loop subdivide), vertex position adjustment:

Game Development

5.6. Delete cap faces

Game Development

5.7. Set background image for side view (torso_side.jpg)

Game Development

5.8. Move vertices to their place in side view

Game Development

5.9. Extrude the shoulders, adjust vertex positions

Game Development

5.10. Extrude the collar (torso.blend)

Game Development

Game Development

5.11. Extrude the arm, adjust vertices

Game Development

5.12. Help

Help: Front view image (arms_front.jpg) extrude, scale...

Game Development

Game Development

5.14. Creating legs

Creating legs is similar.

Details are up to you!

We can use: extrude, scale, rotate faces

(cut faces (knife cut), vertex merge, create new faces etc...)

5.15. legs.blend

Game Development

5.16. We also need:

• Hands (glove)

• Foot (shoes)

• Accessories (back sack, belt, sunglasses etc..)

• TEXTURING

• Refinement of the whole model

6. 6 Character animation in Blender - Rigging

6.1. Start

Game Development

6.2. Create one bone of a skeleton

Game Development

6.3. Create new bones

Game Development

Game Development

Game Development

Game Development

6.5. Name the bones (_l postfix)

Game Development

Game Development

Game Development

6.6. Renaming the bones

Game Development

6.7. Bind geometry to the skeleton

Game Development

6.8. Test (skeleton can be posed in Pose mode)

6.9. Undo transformation of a bone

6.10. Vertex groups

Game Development

6.11. Bone weight painting

Red: high influence (1.0) Blue: low influence (0.0)

6.12. Just paint weights until we are satisfied...

Game Development

7. 7 Game engine modules

7.1. What is a game engine?

• An extremely complex software package

• A class library

• Additional tools

• level editors

• modeling software plugins

7.2. Tasks of a game engine I

• Multi-threading

Game Development

• Rendering

• resource (tesh, texture, shader) management

• material/shader system

• GPU state change management

• geometry instancing

• visibility culling

7.3. Tasks of a game engine II

• Animation

• Physics simulation

• Character animation

• Particle systems

• Camera animation

• Audio

• GUI

7.4. Tasks of a game engine III

• Artificial intelligence

• state management

• pathing

• Scripting

• Procedural content generation

• global illumination

• vegetation generation

• Networking

Game Development

7.6. Multi-threading library?

• There are some, e.g.

• Intel Thread Building Blocks

• Microsoft Parallel Patterns Library

• but the challenge is to design engine modularization, parallelism, communication, task granularity

• for garage projects giving their own thread to physics and audio suffices

7.7. Rendering - resource management

• Mesh models, textures, shaders must be loaded from files

• Streamed/removed from CPU/GPU memory

• Game objects can reference these resources

• Intermediate buffers, render targets

7.8. Rendering - material/shader system

• New materials should be editable, changeable without touching the code: a kind of scripting is needed

• e.g. Ogre's material scripts

• e.g. the Effects system of D3D

• Assignment of materials to game objects

• Application of material for rendering

7.9. Rendering - GPU state change management

• GPUs are fast - CPU-GPU communication is the bottleneck

• to minimize this, minimize state changes

• render objects with the same materials, textures contiguously

• render queues

• geometry instancing

7.10. Rendering - Visibility culling

• Do not render hidden geometry

• View frustum culling

• PVS - possibly visible set

• a conservative guess on what is visible

Game Development

• if a proxy object inside A fully occludes a proxy object around B, then B is surely not visible

• hierarchies

• GPU support - visibility queries

• when rasterizing proxy of B, did we draw anything?

7.11. Rendering Engine

• Ogre3D

• Crystal Space

• Genesis3D

• Irrlicht

• Truevision3D

7.12. Animation - Physics simulation

• The virtual world should not only look real - it should act real!

• Rigid body mechanics

• Collision detection and response

• Contact forces and joints

• Cloth simulation

• Fluid simulation

7.13. Physics Engine

• Bullet

• open source

• ODE - Open Dynamics Engine

• NVidia PhysX

Game Development

• input: bone orientations at keyframes

• skinning

8. 8 Rendering pipeline - Ogre3D

8.1. Pipeline stages I.

• Prepare vertex data

• Vertex Shader

• World and View transformation

• Shading

• Projection Transformation

• Make up primitives

• Geometry Shader [sm4, DX10]

• Additional geometry creation

8.2. Pipeline stages II.

• Rasterization

• Backface culling

• Clipping

• Homogeneous division

Game Development

• Viewport transformation

• Pixel shader

• Defining pixel color

• z-test

• blending

8.3. Preparing vertex data

• Vertex buffer

• Array of vertex records

8.4. Vertex shader

• Input data

• varying: [position, normal, color, texture coordinates, ...]

• uniform: model, view, projection matrices, light data, ...

• Output data

• Position in homogenous screen coordinates

• Shaded color

• Other data [normal, texture coordinates]

8.5. Primitive assembler

• non-indexed / indexed

• Adjacent vertices define a triangle

Game Development

8.6. Backface culling

• Based on vertex order (clockwise, counter clockwise)

• If the model has a consistent vertex ordering (preferable)

• The model should be a closed shell

8.7. Clipping

• Offscreen triangle parts are cut

• normalized screen coordinates[-1, -1, 0] [1, 1, 1] [Cartesian]

• Wrap-around problem

• Clipping in homogeneous coordinates

8.8. Rasterization

• Homogeneous division

• Viewport transformation: pixel coordinates

• Linear interpolation

• Interpolation of vertex output data for each covered pixels

• Execute pixel shader for each covered pixel

8.9. Pixel shader

• Input data

• vertex shader output data, linearly interpolated

• pixel coordinates

• Output data

Game Development

• pixel color [RGBA]

• Pixel depth

• Optional, interpolated values can be overriden

• If not overriden: early test

8.10. Output merger

• buffers

• target: frame buffer or texture

• depth-stencil buffer

• operations

• Depth test

• Stencil test

• Alfa blending

8.11. Z-test

• Solution for visibility problems

8.12. Blending

Game Development

8.13. "Standard" vertex shader (Cg)

Game Development

8.14. "Standard" pixel shader

Game Development

8.16. Phong shading

8.17. Ogre3D

8.18. Object-Oriented Graphics Rendering Engine

• www.ogre3d.org

• Manual

• API reference

• SDK

• Demos

• Tools (exporter)

• Wiki

• Forum

8.19. Object Oriented

Game Development

• Main interfaces are independent from:

• 3D API

• Scene type

• Platform

• Extendable

• plugins

• Clear design

8.20. Features

• Multi platform

• Various scene graph management

• Resource management

• Dedicated model format

• Level of detail

• Skinning

• Morphing

• Material scripting system (XML)

• Render state

• Textures(2D,3D,CUBE,animated)

• Shaders

• Particle system (scripts)

• Common shadow computation methods

• Render to texture

• Post processing framework (scripts)

• Overlay framework (scripts)

Game Development

8.21. Basic Ogre usage

OgreRoot root = new Root(...);

root.loadPlugin("RenderSystem_Direct3D9");

RenderSystemList list = root.getAvailableRenderers();

root.setRenderSystem(list.at(0));

root.initialise(...);

RenderWindow renderWindow = root.createRenderWindow(...);

SceneManager sceneManager = root.createSceneManager(...);

ResourceGroupManager.getSingleton().addResourceLocation(...);

ResourceGroupManager.getSingleton().initialiseAllResourceGroups();

setupScene();

setupListeners();

root.startRendering(); //main loop ( )

8.22. setupScene

SceneNode rootSceneNode = sceneManager.getRootSceneNode();

camera = sceneManager.createCamera("Main Camera");

camera.setPosition(0, 10, 20);

Viewport viewport = renderWindow.addViewport(camera, ...);

renderWindow.setActive(true);

Game Development

Entity entity = sceneManager.createEntity("cake", "zuh.mesh");

SceneNode cakeNode = rootSceneNode.createChildSceneNode();

cakeNode.attachObject(entity);

cakeNode.setPosition(-3.5f, 0, 0);

8.23. setupListeners

8.24. Material script (.material)

Game Development

8.26. Shader program definitions (.program)

Game Development

8.27. The End

9. 9 Ogre3D

9.2. Media files

Game Development

Win32 Console Application

9.4. Settings for all configurations

Game Development

Game Development

9.6. Required dlls (files ending with _d are from the debug folder, others are from the release folder)

9.7. OgreLab1.cpp

Game Development

9.8. Test: build and run

9.9. Log file

Game Development

9.10. Camera / viewport

9.11. Test

Game Development

9.12. Exported Ogre meshes

9.13. Test

Game Development

9.14. Several copies of the model

9.15. Test

Game Development

9.16. Lightsource!

9.17. Test

Game Development

9.18. Animated light

9.19. Test

Game Development

9.20. Ground

Game Development

9.21. Test

9.22. Tessellated ground

Game Development

9.23. Test

Don't forget to set segmentation back to 1!!

Game Development

9.25. Test

9.26. Shaders / Phong shading

Game Development

9.27. Shaders / Phong shading

Game Development

9.28. Test

Yes, this is our shader!!!

Game Development

9.29. Test

Game Development

9.30. Test

Game Development

9.31. Test

Game Development

9.32. The End

10. 10 Billboard, Particle System

10.1. Basics

• http://cg.iit.bme.hu/gamedev/KIC/04_GraphicsEngine/

• 04_03_Ogre3D_BillboardsParticles_Base.zip

• Extract

• Run: OgreBillboardParticles.sln

• Set include and library paths (if not correct)

• Set working directory (if not (SolutionDir)/bin)

• Compile

• Run

10.2. Run

Game Development

10.3. New file: Tree.h

Game Development

10.5. OgreBillboardParticles.cpp

10.6. Test

Game Development

10.7. Blending

Game Development

10.9. Several trees

10.10. Test

Game Development

10.11. No depth buffer write

Game Development

10.13. Sorted rendering of transparent objects

• Individual work: Rewrite the code to contain only one billboard set which should contain all billboards

• Take care of:

• Ordering

• Culling

• Pool (maximal size of the billboardset)

10.14. Solution

10.15. Test

Game Development

10.16. A more realistic approach: Billboard Clouds

Game Development

10.17. A more realistic tree

10.18. Tree.material: new material

Game Development

10.19. Test

Game Development

10.20. Tree.material: new material

10.21. Test

Game Development

10.22. Particle systems

10.23. New file: Particles.h

Game Development

10.24. New file in media folder: example.particle

10.25. New material file: Particles.material

10.26. OgreBillboardParticles.cpp

Game Development

10.27. Test

10.28. Individual Work

Explore the scripts, play with them, try several:

• Emitters

Game Development

10.30. The End

In document Game Development (Pldal 15-0)