3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算...
Click here to load reader
-
Upload
hubert-gordon -
Category
Documents
-
view
309 -
download
5
Transcript of 3D 游戏引擎介绍. Engine 游戏引擎:用于控制所有游戏功能的主程序,从计算...
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 引擎为空手道选手制作过武术训练软件 )
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 )
History of 3D Game Engine
– Monolith 公司的 LithTech 引擎,这款引擎最初是用在机甲射击游戏《升
刚》( Shogo )引擎的今天( 2001 年 ~ )
– 由于受到技术方面的限制,把第一人称射击游戏放入大型网络环境中 的构想至少在目前还很难实现。因此, id Software 公司重新把目光放 在了单人模式上,《雷神之锤 4 》和《毁灭战士 3 》将重新建构一个以 单人游戏为主的引擎 ,同时 Epic 游戏公司也在紧锣密鼓地开发新一代 Unreal 引擎和《虚幻竞技场 2 》的引擎
3D Game Engine
The Render
Character Skeletal Animation
Natural Physics Simulation
我国的 3D 网络游戏的现状
The Render
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.
The Render
3D world
3D space partition
– BSP-tree(Binary Space Partitioning)
Hidden surface remove
– Portal
– PVS(Potentially Visible Set)
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
Creating the 3D world
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.
BSP-tree
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.
BSP-tree
Convex(cell): each polygon in this subset is in front
of every other polygon in the same set.
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)
BSP-tree
A unbalance tree
BSP-tree
The solution: splitting such a polygon into two polygons.
BSP-tree
A example: how a BSP-tree is generated
BSP-treeChoose polygon 16 as the divider.
|negative|= 15 and |positive| = 13
approximate balance
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
BSP-tree
Hidden surface remove
Is it necessary that each hidden polygon is drawn ?
Answer: unnecessary.
Hidden surface remove
Portal
PVS(Potentially Visibility Set)
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.
Portal rending
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
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.
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.
Placing the portal
An example of the algorithm
s2
s3s4
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.
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.
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.
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.
Placing the portal
5. p3 and s3 enters node n3
6. p2 and p4 enters node s4
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.
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.
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.
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.
PVS(Potential Visibility Set)
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
3D Game Engine
The Render
Character Skeletal Animation
Natural Physics Simulation
我国的 3D 网络游戏的现状
Character Skeletal Animation
Character Animation Techniques
Layered Model
Deformation Techniques
Animation
Layered Model
1.Two layers
skeletal and skin
2.Three layers
skeletal,muscle and skin
3.Four layers
skeletal,muscle,skin
and clothes
Layered Model
Three layers
1. Skeletal
2. Muscle/fatty
3. Skin
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
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
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.
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.
Joint Dependant Local Deformations
Non-linear Global Deformation
Implicit Surfaces
Free Form Deformations
Deformation Techniques
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.
Joint Dependant Local Deformations
Disadvantage:
this method relies on data that is specific to a given joint.
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)
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.
Implicit Surfaces
Advantages Smoother and more precise
More compact
Easier to interpolate and deform
Disadvantages More difficult to display in real time
Implicit Surfaces
Types of Implicit Surfaces
Mathematic – Polynomial or Algebraic
– Non polynomial or Transcendental
Exponential, trigonometric, etc.
Implicit Surfaces
Algebraic Surfaces
Degree 6Cubic Degree 4
Implicit Surfaces
• Non-Algebraic Surfaces
Implicit Surfaces
Compression with mesh
Mesh of 473,000 vertices and 871,000 facets Implicit function of 32,000 terms
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
Free Form Deformations
Advantage:
– Generality
– Naturally
Disadvantage:
– In the co-ordinate
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
Free Form Deformations
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.
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)
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.
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)
3D Game Engine
The Render
Character Skeletal Animation
Natural Physics Simulation
我国的 3D 网络游戏的现状Natural Physics Simulation
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.
Natural Physics Simulation
Particles
Rigid bodies
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
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)
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
Particle Simulation
UpdateParticle(float time) {Force=ComputeTotalForce();
Momentum=Momentum+Force*time;
Velocity=Momentum/Mass;
Position=Position+Velocity*time;
}
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)
Rigid Bodies
Offset Forces Torque resulting from offset force: τ=r×f (r:质点的位置方程 )
Total force:
Total torque:
iffcg
)f(r iicg
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);
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
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
Circles and Planes
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
Circles and Planes
What if more complex background:
–For complex surfaces, pre-compute and fill an array with
collision points (and surface normals).
Circles and Spheres
If the distance between two objects is less than twice their radii
– (r1 + r2)2 > ((x1 –x2) 2 + (y1 –y2) 2)
Other Simulation technologies
Deformable bodies
Fluid dynamics
Vehicle dynamics
Characters
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
3D Game Engine
The Render
Character Skeletal Animation
Natural Physics Simulation
我国的 3D 网络游戏的现状我国的 3D 网络游戏的现状
我国的 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 个重点招商项目之一。