86

Click here to load reader

3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Embed Size (px)

Citation preview

Page 1: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D 游戏引擎介绍

Page 2: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Engine游戏引擎:用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等

Page 3: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

History of 3D Game Engine引擎的诞生( 1992 年 ~1993 年)

– 1992 年, 3D Realms 公司 /Apogee 公司 Wolfenstein 3D 《德军司令部》 – 1992 年, Origin 公司 Ultima Underworld 《创世纪:地下世界》 – id Software 公司 Doom 《毁灭战士》 ( Doom 引擎是第一个被用于授权的引擎)

引擎的转变( 1994 年 ~1997 年) – 1994 年为 3D Realms 公司 《毁灭公爵》( Duke Nukem 3D ) – 1994 年 id Software 公司的《雷神之锤》( Quake ) ( Quake 引擎是当时第一款完

全支持多边形模型、动画和粒子特效的真正意义上的 3D 引擎) – 1995 年, id Software 公司推出《雷神之锤 2 》 ( Quake2 ) – Epic Megagames 公司(即现在的 Epic 游戏公司)的《虚幻》( Unreal ) ( Unreal 引擎的应用范围不限于游戏制作,还涵盖了教育、建筑等其它领域。 Digital Design 公司

曾与联合国教科文组织的世界文化遗产分部合作采用 Unreal 引擎制作过巴黎圣母院的内部虚拟演示,Zen Tao 公司采用 Unreal 引擎为空手道选手制作过武术训练软件 )

Page 4: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

History of 3D Game Engine

引擎的革命( 1998 年 ~2000 年) – 1998 年, Valve 公司的《半条命》( Half-Life ) 《半条命》采用的是 Quake 和 Quake II 引擎的混合体 – LookingGlass 工作室《神偷:暗黑计划》( Thief : The Dark Project )在 人工智能方面真正取得突破的游戏是 Looking Glass 工作室的《神偷:暗黑计划》 – 2000 年, 3D 引擎朝着两个不同的方向分化。一是如《半条命》、《神 偷》和《杀出重围》那样通过融入更多的叙事成分和角色扮演成分以 及加强游戏的人工智能来提高游戏的可玩性,二是朝着纯粹的网络模 式发展 id Software 《雷神之锤 3 竞技场》( Quake III Arena ),它与 Epic 公司稍后推出的《虚幻竞技场》( Unreal Tournament )

Page 5: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

History of 3D Game Engine

– Monolith 公司的 LithTech 引擎,这款引擎最初是用在机甲射击游戏《升

刚》( Shogo )引擎的今天( 2001 年 ~ )

– 由于受到技术方面的限制,把第一人称射击游戏放入大型网络环境中 的构想至少在目前还很难实现。因此, id Software 公司重新把目光放 在了单人模式上,《雷神之锤 4 》和《毁灭战士 3 》将重新建构一个以 单人游戏为主的引擎 ,同时 Epic 游戏公司也在紧锣密鼓地开发新一代 Unreal 引擎和《虚幻竞技场 2 》的引擎

Page 6: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D Game Engine

The Render

Character Skeletal Animation

Natural Physics Simulation

我国的 3D 网络游戏的现状

The Render

Page 7: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

The Renderer

How models and worlds are stored is a part of the function of the render, more than it is part of the application / game. The game logic doesn't need to know how objects are represented in memory, or how the render is going to go about displaying them. The game simply needs to know that the renderer is going to represent objects using the correct view, and displaying the correct models in their correct frames

of animation.

Page 8: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

The Render

3D world

3D space partition

– BSP-tree(Binary Space Partitioning)

Hidden surface remove

– Portal

– PVS(Potentially Visible Set)

Page 9: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D world

3D objects are stored as points in the 3D world (called vertices)

Lines of these points form many triangles

These triangles create the while 3D world

Page 10: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Creating the 3D world

Page 11: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D space partition

What a BSP-tree is?

– A Binary Space Partitioning-tree is a structure that, as the name suggests, subdivides the space into smaller sets.

Why to use BSP-trees in the 3D engine?

– Optimize a wide variety of areas, such as radiosity calculations, drawing of the world,portal.

Page 12: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

Page 13: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

BSP-tree algorithm:

The original idea for the creation of a BSP-tree is that you take a set of polygons that is part of a scene and divide them into smaller sets, where each subset is a convex set of polygons.

Page 14: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

Convex(cell): each polygon in this subset is in front

of every other polygon in the same set.

Page 15: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

A problem: (unbalance)

– You can choose an arbitrary plane in space and divide the polygons by putting the one son the positive side of the plane in the right sub tree and the polygons on the negative side in the left sub tree. The problem with this approach is that it is very difficult to find a plane that divides the polygons into two approximately equally sized sets. (approximately balance)

Page 16: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

A unbalance tree

Page 17: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

The solution: splitting such a polygon into two polygons.

Page 18: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

A example: how a BSP-tree is generated

Page 19: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-treeChoose polygon 16 as the divider.

|negative|= 15 and |positive| = 13

approximate balance

Page 20: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-treeChoose polygon 4 as the divider.

|negative|= 7 and |positive| = 8 approximate balance

Choose polygon 21 as the divider.

|negative|= 6 and |positive| = 8. approximate balance

Page 21: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

BSP-tree

Page 22: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Hidden surface remove

Is it necessary that each hidden polygon is drawn ?

Answer: unnecessary.

Page 23: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Hidden surface remove

Portal

PVS(Potentially Visibility Set)

Page 24: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Portal rending

The common technique:

– Portal rendering

The basic idea: – When you render a scene from a viewer’s position with

a viewing frustum and encounter a portal polygon, the portal clips the viewing frustum. Then the adjacent sector is rendered from the same viewer’s position but with the new viewing frustum.

Page 25: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Portal rending

Page 26: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Portal rending

How to know if an object is in the viewing frustum?

If it is on the completely

negative side of any one of

those planes the object is

not visible

Page 27: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portals

How to place the portals is one of the big problems in a portal engine.A solution need to use BSP-tree.

Page 28: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

The general idea: 1.each portal in the tree must be coinciding with a plane defined by a

dividing polygon in the tree. Out of each of these planes a portal polygon is created.

2.each portal polygon is pushed down the sub trees of the node it is in.

3.If a polygon is clipped, the two resulting parts are sent down from the top of the tree. When a portal polygon is not in need of any clipping, it is sent down to the sub trees of the node currently visiting. This means that if it is on the positive side of the plane it will be sent down the right sub tree, and if it is on the negative side it will be sent down the left sub tree.

Page 29: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

An example of the algorithm

s2

s3s4

Page 30: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

1. Portal polygon 1 (s1) enters node n1. In n1 the splitting polygon will be clipped

to fit and one part will be removed since it coincides with one of

the polygons in the pillar. p1 and p2 replace s1.

Page 31: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

2. p1 and p2 enters node s2 In node s2 p1 since it is on the positive side of s2 together

with splitting polygon s2 will be sent to node n2. p2 together with s2 will be sent further down to s3, none of them will be clipped since they do not cross splitting polygon s2.

Page 32: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

3. p1 and s2 enters node n2

In n2 p1 is accepted as a portal, so it is not changed in

node n1 either,Polygon s2 that was sent down to s3 in the previous step is now called p3.

Page 33: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

4. p3 and s3 enters node n3. Since neither of p2 or p3 is clipped they are pushed down

wards together with s3. P3 and s3 goes down to

node n3 and p2 and s3 is pushed down to node s4.

Page 34: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

5. p3 and s3 enters node n3

6. p2 and p4 enters node s4

Page 35: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

7. p2, p4 and s4 enters node n4

Neither of p2 or p4 need clipping, except for that to fit the

node. But s4 is completely coinciding with a polygon in

the pillar so it is removed.

Page 36: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Placing the portal

8. Nothing enters node n5.9. The result

Portal p1 is in both n1 and n2.

Portal p2 is in both n1 and n4.

Portal p3 is in both n2 and n3.

Portal p4 is in both n3 and n4.

Page 37: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

PVS(Potential Visibility Set)This PVS is the set of convexes that is visible from the first convex; it is not only of use during the drawing phase.

The PVS is calculated

during the pre-

rendering of the map.

Page 38: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

PVS(Potential Visibility Set)

TRACE-VISIBILITY

Input: Tree – The BSP-tree to trace visibility in.

Output: None

Effect: – For each leaf in the tree it traces visibility to that leaf’s

connected nodes. Every node that is found visible is added to the PVS of that node.When a visible leaf is found we have to trace for visibility to the visible nodes connected nodes.

Page 39: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

PVS(Potential Visibility Set)

Page 40: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

PVS(Potential Visibility Set)TRACE-VISIBILITY (Tree)1 for (each leaf L in Tree)2 for (each leaf C that is connected to L)3 Add C to L’s PVS4 for (each leaf L1 in Tree)5 while (there exist a leaf L2 in L’s PVS which’s connected nodes hasn’t been checked for visibility yet)5 for (each leaf C that is connected to L2)6 if (C isn’t in L1’s PVS already and CHECK- VISIBILITY (L1, C))7 Add C to L1’s PVS7 Add L1 to C’s PVS

Page 41: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D Game Engine

The Render

Character Skeletal Animation

Natural Physics Simulation

我国的 3D 网络游戏的现状

Character Skeletal Animation

Page 42: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Character Animation Techniques

Layered Model

Deformation Techniques

Animation

Page 43: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Layered Model

1.Two layers

skeletal and skin

2.Three layers

skeletal,muscle and skin

3.Four layers

skeletal,muscle,skin

and clothes

Page 44: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Layered Model

Three layers

1. Skeletal

2. Muscle/fatty

3. Skin

Page 45: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Layered Model

Skeletal

– A method to animate articulated objects by determining the position of the different elements by the influence of a series of bones and joints.

How to store skeletal?

1. Positional information of joints

2. Relationship between those joints

3. Bones do not have to be saved in the file

Page 46: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Layered Model

Muscle/fatty is applied by attaching geometric primitives to the

underlying skeleton.

Skin

Mesh (vertices) or skin is attached to the muscle/fatty

Page 47: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Layered Model

Advantage:

1. The smooth transitions while changing from one

animation to the other.

2.A number of animations can be added whereas the

mesh remains constant.

3.Use a relative small memory footprint.

Page 48: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Deformation TechniquesBy using the layered approach for character animation, the animator can rely on the skeletal layer to control the motion of the character.

In order to achieve perceptually realistic movement, the higher layers must deform in accordance with the surrounding layers.

Page 49: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Joint Dependant Local Deformations

Non-linear Global Deformation

Implicit Surfaces

Free Form Deformations

Deformation Techniques

Page 50: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Joint Dependant Local Deformations

Joint Dependant Local Deformations This animation technique, which uses a polygonal mesh

skin digitized from a sculpture, maps each vertex point to a particular point on the skeleton using JLD operators.

Depend on the nature of the joints, and control the evolution of the surface.

Page 51: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Joint Dependant Local Deformations

Disadvantage:

this method relies on data that is specific to a given joint.

Page 52: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Non-linear Global Deformation

• General idea:

– Changing the transformation matrix while it is being applied to the object. Thus the way in which the matrix is altered becomes a function of the position at which it is applied.

(X,Y,Z) = F(x,y,z)

(X,Y,Z) represent the new tapered vertex., F represent the tapering operation

the vertex (x,y,z)

Page 53: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Implicit Surfaces

Implicit Surfaces

Surface representation through a function:

F(P) – Iso=0

F(P): the implicit function

Iso: threshold value at which

the surface is defined.

Page 54: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Implicit Surfaces

Advantages Smoother and more precise

More compact

Easier to interpolate and deform

Disadvantages More difficult to display in real time

Page 55: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Implicit Surfaces

Types of Implicit Surfaces

Mathematic – Polynomial or Algebraic

– Non polynomial or Transcendental

Exponential, trigonometric, etc.

Page 56: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Implicit Surfaces

Algebraic Surfaces

Degree 6Cubic Degree 4

Page 57: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Implicit Surfaces

• Non-Algebraic Surfaces

Page 58: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Implicit Surfaces

Compression with mesh

Mesh of 473,000 vertices and 871,000 facets Implicit function of 32,000 terms

Page 59: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Free Form Deformations

Instead of applying deformations to the object directly, the object is embedded in a space that is then deformed using Bezier theory

Page 60: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Free Form Deformations

Advantage:

– Generality

– Naturally

Disadvantage:

– In the co-ordinate

Page 61: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Free Form Deformations

Extended FFD

– Alter the control point mesh from a parallelepiped arrangement to a different shape (cylindrical) that results

in a more closely fitting lattice.

– Avoids unusual deformations

Page 62: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Free Form Deformations

Page 63: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Free Form DeformationsIn this way the EFFD and the object become disassociated from one another.This overcomes the problem of unwanted global deformations which occur as a result of changes to the co-ordinate system.

Page 64: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Animation

Method 1:(Traditional Method) – An articulated figure in computer graphics involves

specifying each particular part at certain key locations in space, and then using some interpolation technique to animate the in between frames for the motion in question.

(key framing and the manual input of poses)

Page 65: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Animation

Method 2: inverse-kinematics: – Determines the position and orientation of all joints in the hierarchy

given an end-effectors state. accelerations. It does allow for a more dynamic approach to character animation, however, since specific motions do not have to be predefined.

forward-kinematics: – The process of explicitly specifying all joint motions in order to

determine the position of the free end of a chain.

Page 66: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Animation

Method 3: (Popular technique)

– Realistic motion is generated by capturing the motion of a real world actor, either by optically tracking special sensors attached to key points on the actor’s body or by tracking them magnetically.

(motion capture)

Page 67: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D Game Engine

The Render

Character Skeletal Animation

Natural Physics Simulation

我国的 3D 网络游戏的现状Natural Physics Simulation

Page 68: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Natural Physics Simulation

Why Physics?

Games based on the real world should look realistic, meaning realistic action and reaction.It is easy to get it right, or at least approximately such as Newton’s Laws and Gravity but not easy Deformable bodies, Cloth and Fluid dynamics.

Page 69: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Natural Physics Simulation

Particles

Rigid bodies

Page 70: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Particles

Kinematics of Particles – Position x

– Velocity v = dx/dt

– Acceleration a = dv/dt = d2x/dt2

Motion Under Uniform Acceleration – Acceleration a=a0

– Velocity

– Position00

20

00

xva2

1vx

vaav

ttdt

tdt

Page 71: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Particles

• Mass & Momentum – Mass m

– Momentum p = mv

– Force f = dp/dt = m(dv/dt) = ma

• Gravity – Gravity near Earth’s surface is constant:

f=mg (g = -9.8 m/s2)

– Gravity for distant objects:

f=Gm1m2/r2 (G=6.673×10-11 m3/kg·s2)

Page 72: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Particles

• Newton’s Laws 1. A body at rest tends to stay at rest, and a body in motion

tends to stay in motion, unless acted upon by some force.

2. Forces lead to changes in momentum and therefore accelerations:

f=ma

3. Every action has an equal and opposite reaction.

fij=-fji

Page 73: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Particle Simulation

UpdateParticle(float time) {Force=ComputeTotalForce();

Momentum=Momentum+Force*time;

Velocity=Momentum/Mass;

Position=Position+Velocity*time;

}

Page 74: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Rigid Bodies

Angular Momentum L=Iω = AI0A-1ω

– L=angular momentum – I=rotational inertia

– ω=angular velocity – A=3x3 orientation matrix

Forces & Torques τ=dL/dt

A torque is a change in angular momentum (similar to a force which is a change in linear momentum)

Page 75: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Rigid Bodies

Offset Forces Torque resulting from offset force: τ=r×f (r:质点的位置方程 )

Total force:

Total torque:

iffcg

)f(r iicg

Page 76: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Rigid BodiesRigid Body Simulation

UpdateRigidBody(float time) { Force=ComputeTotalForce(); Torque=ComputeTotalTorque();

Momentum=Momentum+Force*time; Velocity=Momentum/Mass; Position=Position+Velocity*time;

AngMomentum=AngMomentum+Torque*time; Matrix34 I=Matrix*RotInertia*Matrix.Inverse(); AngVelocity=I.Inverse()*AngMomentum; Matrix.Rotate(AngVelocity*time);

Page 77: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Collision Direction

The objects must be encapsulated in one or more simple geometric shapes.(sphere,ellipse)

Different types of collisions

– Circle/sphere against a fixed object

– Two circles/spheres

Page 78: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Circles and Planes

Simplest case – Assume circle hitting an immovable barrier

• Detect that a collision occurred

– If the distance from the circle to the line < circle

radius

Page 79: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Circles and Planes

Page 80: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Circles and Planes

Facing value: the value that tells how a polygon is directed compared to an object

Calculation: the dot product of the normalized movement vector for the object and the normal for the polygon

Result: a value between –1 and 1

Page 81: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Circles and Planes

What if more complex background:

–For complex surfaces, pre-compute and fill an array with

collision points (and surface normals).

Page 82: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Circles and Spheres

If the distance between two objects is less than twice their radii

– (r1 + r2)2 > ((x1 –x2) 2 + (y1 –y2) 2)

Page 83: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Other Simulation technologies

Deformable bodies

Fluid dynamics

Vehicle dynamics

Characters

Page 84: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

Others technologiesHighly flexible AI system

Real time 3D dynamic lighting and shadows

Real time 3D particle system

Real time 3D sound processing

Cross platform internet TCP/IP based network protocols

Client-Server based on-line game network architecture

Page 85: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

3D Game Engine

The Render

Character Skeletal Animation

Natural Physics Simulation

我国的 3D 网络游戏的现状我国的 3D 网络游戏的现状

Page 86: 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算 碰撞、物理系统和物体的相对位置,到接受玩家的输 入,以及按照正确的音量输出声音等等

我国的 3D 网络游戏的发展状况2003年 7 月科技部将网络游戏纳入 863 项目。2004年,国家新闻出版总署明确指出,支持具有自主知识产权的数字娱乐软件的开发,并对网络游戏的进口采取了部分限制。 2004 年 2月 25日,金山在京召开“技术立业决胜网游——金山公司 2004新架构新战略发布会”。金山公司决定在3年内投资2亿元用于产品研发, 2004 年预计投入 7000万元。《剑侠情缘网络版》后续版本,《剑侠情缘外传》,《剑侠情缘网络版》的全新3D版《封神争霸》2004 年 8月 18日,信息产业部电子教育中心联合香港职业训练局和北京汇众益智科技有限公司,共同推出了本次的游戏专业人才培训项目,组建游戏学院,以期将它发展成为亚洲最大的游戏人员培训基地。 9 月 8日信息产业部组织了 90 名专家对 2004年信息产业发展基金重点招商项目进行了评标,结果网络游戏成为今年信息产业发展基金 19个重点招商项目之一。2004 年 9月 8日信息产业部组织了 90名专家对 2004 年信息产业发展基金重点招商项目进行了评标,结果网络游戏成为今年信息产业发展基金19 个重点招商项目之一。