Real Ball PhysicsPaired AnimationPhysical interation in character movement Cloth Simulation
하프라이프 이후로 물리엔진이 게임의 핵심 요소로 자리잡았음However, “Physics” usually just means solid, unbreakable, unbendable objects.[ Run demo ]Like this. This shows some nice features of Havok Physics, but objects can’t bend or break.
게임 기술의 공통적인 발전 방향 : Dynamic and Realistic 대표적인 물리 엔진 하복 피직스로 시작 기술 트랜드에 맞춰 영역을 확대 했고근간을 이루는 피직스의 최적화에 끊임없는 노력화두혁신1. 온라인 게임 = AI대신 사람이혁신2. 물리 엔진의 사용게임에 물리 엔진을 도입한 대표적인 성공 사례 하프라이프 그 이후10년간 하복의 물리 엔진은 꾸준한 발전을 거듭성능 측면안정성 측면융합최근 발매된 게임 세가지 소개자유도, UCC= 마인크래프트많은 컨텐츠 = 아키에이지Visual = ToD, Dyn Light, Dyn ShadowPhysics and Anmation기술 = 리액션, 사실적임매번 바뀜 > 오래해도 질리지 않음사실적인 표현 >몰입Different, NEW > 신선함PC 를 교두보 삼아 콘솔 시장으로
I’d like to highlight some shipped games that use Havok Destruction.“Uncharted 3”, by Naughty Dog, published by Sony.And “INVERSION”, by Saber, published by Namco.I’d like to finish by playing you a short gameplay video of “INVERSION”.[ Play video; I don’t plan to speak during this part ]
Simple breakable body design workflow
So let’s do that. I’ve got 3ds Max already open here.[ Switch to Max ]So we’ve got a simple vase like we saw in the demo at the beginning. These yellow icons here are the tools for Havok Physics. We can create rigid bodies and setup constraints.These red icons are the plugins for Havok Destruction. This set allows us to create a breakable body, choose a fracture algorithm, and choose a controller – that specifies what type of destruction we want. For example, we have basic fracture, deformation, wood, structures, or buildings.If I click here, then it will export the scene. [Click] Right now, it’s just a graphics mesh, so there’s no physics or destruction set up yet.[ Preview Tool launces ]See, we just have render geometry here.[ Close Preview Tool ]So let’s add some Physics. [Click some buttons]In our modifier stack for the vase, you can see the physics shape and the rigid body. The rigid body allows us to set properties like mass, friction, and restitution. So let’s give the vase a mass of 5 kilograms.Let’s also make the floor a rigid body. We’ll leave its mass at 0 kilograms. That makes it a fixed, immovable object.[ Click export ]Now, the vase falls and bounces around the scene. But it is only a physics object; there’s no destruction yet.[Close preview]I’ll go back to my vase and make it a “breakable body”. Now we have properties like “strength”. This allows me to specify the amount of force required to break the object. We’ll set 10 Newtons. We also need to tell Havok Destruction what type of fracture to use. We’ve talked about “random split”, so let’s use that.Here we can specify the number of child pieces to create. To keep things simple for now, we’ll only create two broken pieces. We can preview that right here in Max by clicking this button [Click].And we can visualize the broken pieces using “exploded view” [Click menu].So you see how the vase is going to be fractured in the game. Well, that’s a good start, but the vase doesn’t really look like it’s made of clay – this break is too smooth. We expect a clay vase to have jagged edges when it is broken. So let’s add some jaggedness to the fracture.We can specify an extra “splitting geometry” which will be applied to the edges of the fracture. That’s what this pink plane is here in the background. Also, we’re going to be creating new interior faces as we generate new geometry. Texture information is taken from this splitting geometry, so that’s how the artist controls the texture for the vase’s interior.[ Select splitting geometry ]Ok, so now if I re-run the fracture, you see the extra bumps that we’ve added to the render geometry in the broken pieces. Also, note that the interior faces are pink – that also comes from the texture on the splitting geometry.We can also have multiple levels of fracture – up to four for this fracture type. That means we can break the vase into pieces, then break each of those pieces, and so on.Let’s increase the number of broken pieces to 5 at the first level, and 10 at the second level.So let’s go ahead and see what this looks like. To see how it behaves in the game, so I’m going to click export[ Click export, new window opens ]And this launches the Havok Preview Tool, which allows us to see how the vase will break in the game.I can also turn on the physics shapes – you see them in light blue here – so we can see the difference between the render geometry and the physics geometry.
We have already talked about breakable objects and buildings. Now we’re going to talk about other use cases of Havok Destruction. Let’s start with deformation.[ Launch Demo ]We have seen objects breaking and being destroyed. But Havok Destruction isn’t just about things breaking, it’s also about things holding together.Here we have two metal plates.[ Throw balls ]Rather than breaking, the plates deform.Likewise for the barrels, we have deformation on them as well.[ Picking up the deformed plate ]This is the physics representation for the deformed plate. We use each piece like a bone, and skin the graphics mesh to produce the deformation.
Deformation simulation runs only on impact !
We have already talked about breakable objects and buildings. Now we’re going to talk about other use cases of Havok Destruction. Let’s start with deformation.[ Launch Demo ]We have seen objects breaking and being destroyed. But Havok Destruction isn’t just about things breaking, it’s also about things holding together.Here we have two metal plates.[ Throw balls ]Rather than breaking, the plates deform.Likewise for the barrels, we have deformation on them as well.[ Picking up the deformed plate ]This is the physics representation for the deformed plate. We use each piece like a bone, and skin the graphics mesh to produce the deformation.
The last use case is structures.[ Launch demo ]This is a complex bridge for a train. Every piece is destructible, and I can create explosions.This example took a couple of our artists a few hours to put together. There are only about 6 individual pieces – the concrete pipe, a few pieces of wood, and the track – and they are instanced all over.
Strength - The constraints are only created and inserted into the Rigid Body once the Breakable Body is hit with an impulse exceeding this initial threshold value.Inertia Multiplier - For each piece converted into a Rigid Body, this allows for increasing its inertia to stabilize the constraints. Max Inertia Ratio - For each piece converted into a Rigid Body, this parameter clamps the minimum diagonal element in the inertia matrix. This helps to make long thin objects more stable.Connect To Type - This parameters allows for automatically creating constraints between this Breakable Body (or its Fracture Pieces) and any surrounding objects. You can choose between the following types (this value overrides 'Breakable Body: Attach To Nearby Objects'):CONSTRAIN_TO_NONE: No extra constraints are created.CONSTRAIN_TO_FIXED_UNBREAKABLE: Additional constraints are created between this Breakable Body and its neighboring fixed Rigid Bodies. All neighboring Breakable Bodies as well as movable Rigid Bodies are ignored.CONSTRAIN_TO_FIXED: Additional constraints are created between this Breakable Body and its neighboring fixed Rigid and Breakable Bodies. Neighboring movable Rigid and Breakable Bodies are ignored.CONSTRAIN_TO_UNBREAKABLE: Additional constraints are created between this Breakable Body and its neighboring Rigid Bodies (both movable and fixed). Neighboring Breakable Bodies are ignored.CONSTRAIN_TO_ALL: Additional constraints are created between this Breakable Body and all of its neighboring Bodies (Rigid as well as Breakable Bodies).
Let’s look at a simpler case.[ Launch demo 1 ]So here, there’s no actual fracture. Instead of fracturing the bodies, here, Havok Destruction has inserted breakable constraints between adjacent bodies. When I hit them hard enough, the constraints break and the structure collapses.[ Launch demo 2 ]Let’s look at another example. Here, we are mixing structures and breakable bodies. So the bodies are both destructible, and constrained together into a single structure. This is one of my favorite demos: it shows both fracture and structures working together.
Building – differentdebris size / debris optimization / rigid body Action - explosion / Tank – Vehicle Kit / Barrel DeformationI have another demo showing lots of buildings[ Launch demo ]In this demo, I’ve got a tank which is physically simulated. You can see the treads, the mud flaps in the back. Even the turret is a physical body constrained to the chassis.And we’ve got two city blocks that I can destroy. The buildings on the right are fully destructible. As I shoot at them, you see the building break apart and crumble. So that looks really nice; we’ve got full scale destruction on each of these buildings.But that can stress the CPU if we have a lot buildings like this.So over here on the other block, we have similar looking buildings, but with a simpler form of Destruction. These are more like the brick building I just showed. Here, we are removing large pieces – creating holes – and spawning in small debris pieces. I can still collapse the entire building, but there is less to simulate, so the CPU requires less power.
Havok Animation StudioIncludes optimized animation blending system (state machines, scripts, modifiers, etc)Advanced animation compression algorithmsGraphical authoring tool to create animation state machinesRagdoll blending (sync to skeleton)animation syncing, mirroring, attachmentsfoot IK, etcShow the transition state machin hereC:\Users\Thomas.Pollak\Documents\Havok\Havok Animation Tool 2013.1.0.0-r1\ToolAssets\SiegeFiendMore complex sample in vForge:C:\Havok\AnarchySDK\Data\Vision\Samples\Engine\CharacterDemo
Locomotion (Walk/Run/Strafe)Run/Turn 180Jump / grab SwordTake CoverVaultingHangingHero Sample (Havok Behavior Tool)Hanging from ledge DemoConstrained motion Demo Moving target Demo Environmental Interaction(a) Take Cover(b) Vault Over Walls(c) Climb LedgesPaired animation case : Sliding. Sense the other characters movement and take it into account for the character's next movement. + If the character A has sensed character B in his sight, and if B is close enough to A, character A's statemachinetransite to 'get sliding/falling' state. otherwise, it will transite to 'fend sliding' state. - Control on the line of sight, and use it for the body balance control. + use Look at IK + Tweist modifier - Vary the dribbling style by sensing the opponent character's position. Also take those information into account to decide and change the deffender's positions. change the trap pattern. + use sense modifier- graphs already done - locomotion (starting, walking, running, turning, stopping) - doing parametric blending with 3 levels of speed. - dribling and turning - short pass - sliding and tackling (paired animation with ragdoll) - graphs not yet done - heading - trapping (large number of animations) - shooting (large number of animations) - planned after the milestone in Oct. - long pass - planned after the milestone in Oct. - about the use of parametric blending - Currently they use parametric blending for locomotion (walking and running) only. - For others, animations are not adjusted to be used for parametric blending. - It is quite possible to do those adjustment after Oct milestone and use more parametric blending. - they use blender transition effect intensively. - about sending their entire graph to us - They think it is not possible for us to sit next to them and work together at their site for security reasons and due to their policy. - But they think they want to send the whole graph to us so we can review it. but there's license issues about shirts assets etc. but they'd be happy to work on that.
Parametric Blending ( Walk , Run, Strafe, Turn 180, Tilting) Left Arm LayerGun SweepHand IKJiggle Bone(Bag) Soldier : drop Ball from 3 way , StaggerTakes parameters and generates procedurally range of animations out of limited number of animations.
Soldier : drop Ball from 3 way , Stagger(16kg weight drops)Grunt Rigid Body : 16kg weight drops (GDC Level)Grunt Player : Simple Param Blending >> Foot IK >> RB Ragdoll vs RB Ragdoll Interaction Blown Back angle on stair >> Powered Ragdoll >> Get up pose matcher
2-3 link IK 지원Spline Bending 은 약간의 수정으로 표현은 가능(= Chain IK, = Cyclical Coordinate Descent)FullBody IK 미지원(Stagger 로 표현 가능, 커스텀 코드 필요)Paired Animation 커스텀 코드를 통해 구현 가능SolutionsAutodesk HumanIK, Natural Motion Morpheme, Rad GrannyHavok Animation Foot IKUneven groundStairsDynamic objectsSeesaw (aka teeter-totter) Look-at IKHead faces camera or objects of interest Hand IKHand connects with stair bannisterThe hkaFootPlacementIKSolver is a specialized solver for handling foot placement over terrain.Provides an abstract interface to sense (raycast) terrain.Stores the contact state of each foot to eliminate sliding.Allows the user to independently adjust the height of the pelvis above ground.hkaLookAtSolverUseful for directing the gaze of a characterhkaTwoJointsIkSolverUseful for Shoulder-Elbow-Wrist, or Hip-Knee-AnklehkaThreeJointsIkSolverUseful for animal legs like a Horse or ChickenhkaCcdIkSolverGeneral solver handling any number of bones (slower)hkaFootPlacementIkSolver...
GDC06 videoStagger DemoFull Body IKDynamic motion synthesisBalanceHit Reaction