天天看點

Havok Physics 翻譯資料(1)Chapter 1.介紹

Chapter 1.介紹

1. Introduction

1. Introduction

2. What is Havok?

3. 它是如何工作的

3.1. 設定模拟的islands

3.2. 使用動作

3.3. 設定系統

3.4. Solve

3.5. 整合

3.6. 碰撞檢測

3.7. 連續模拟

4. 關于這個文檔

5. 關于Demos

5.1. 示例架構

5.2. 示例類型

5.3. 使用示例架構時運作visual debugger

3.5.    整合

整合器根據解決器提供的資訊來計算在模拟中的每一個物體的新運動狀态(初始和最終的位置、方向、速度、加速度等等)。新的位置和旋轉(狀态)就可以傳遞到你的渲染系統中,讓你來更新遊戲中的角色。一個物體的運動狀态存儲着兩個和它在模拟中的始末位置、方向有關的變換。這樣一來,計算兩個模拟幀中物體的位置。當運作慢動作的顯像和在許多顯像幀中用一個模拟步(simulation step)時,這非常有利。

注意這一系列的操作“使用動作、設定系統規定參數、處理、整合”有時候可以簡單的歸結為“融合”,比方說:hkpWorld::integrate()這個函數進行的就事這一系列的操作。

3.6.    碰撞檢測

模拟器需要确定在你場景中的任何物體是否正在發生碰撞或者重疊。在Havok Physics中,碰撞檢測被分成3個階段——廣碰撞檢測階段(是說快速的粗略計算出可能發生碰撞的幾對物體),中碰撞檢測階段(計算出可能發生的碰撞的更加詳細估算值),最後呢,是窄碰撞檢測階段(确定這個碰撞哪些會真的發生)。如果一些物體正在發生碰撞,那麼從窄檢測中得到的交叉資訊就用來建立碰撞代理和碰撞接觸點。這些碰撞代理和碰撞接觸點在下一個模拟幀就被模拟處理器使用了。

在模拟中每一個自然界的物體都有一個hkpCollidable,都有一個hkpShape來定義物體的形狀,以友善碰撞檢測。這些shape可以是簡單的圓,方盒子,也可以是更加複雜的形狀和網格(meshes)。hkpCollidable 也有轉移資訊,并且在動力學子系統中都有一個相應的實體轉移資訊與之相對應。你可以在“碰撞檢測”一章找到個多關于使用Havok碰撞檢測的資訊,包括建立形狀,碰撞過濾。

3.7.    連續模拟

這部分解決了所有的在碰撞檢測部分産生的”碰撞瞬間”事件。每一個碰撞瞬間事件又會産生新的碰撞瞬間事件,是以這是一個重複的部分,不可計算。模拟的這部分在世界模拟類型是分離的時候是并不被調用的。你可以在“連續Physics”這一章找到更多關于連續模拟的資訊。

4.關于這個文檔

這個手冊的每一部分都提供給你關于如何使用前面描述的SDK元件的詳細資訊。我們解釋了有用的概念,代碼例子(通常是從Havok 的Demo裡找的)很多地方都已經給出來了,包含有幫助的提示等。

這個幫助檔案同樣包括Havok Physics SDK的參考手冊。這個手冊提供給你了完整的SDK API文檔。包括類和包的描述,詳細的類成員描述,和繼承類圖。他在類圖和描述中有完整的超連結,索引,搜尋工具,是你查找資訊更加簡單。在使用手冊與例子以及在你的遊戲中使用SDK的時候,你可以用這個手冊作為一個指南。

5.關于Demos

你的安裝目錄裡的demos檔案夾,包括了很多有用的例子,你可以用來學習Havok。這些例子是以一定的邏輯方法設計的,主要是考慮到這個文檔的設計。每一個例子的源代碼都已經給了出來,你可以快速找到如何執行重要的工作,提供的代碼你也可以剪切粘貼到你自己的應用程式中。在每個例子和任務中都有對你有幫助的注釋。和這個文檔一起,我們希望例子能幫助你是你自己熟悉SDK,并且在你的遊戲中使用Havok Physics。

5.1.示例架構

我們所有的例子都使用同樣的架構,抽象了Havok支援的不同硬體平台的差別,也将顯示(圖形方面)和模拟方面區分開來。這種抽象将實體學部分的代碼放在一個地方使得代碼很容易閱讀和了解,而不會對控制句柄(controller handler)和具體的顯示資訊感到迷惑。架構包括了一個基本的示例類——hkDefaultDemo——和一個GUI應用程式,你可以在例子之間來回浏覽和使用例子。

你可以在相關平台的文檔中弄清如何建立以及如何在你選擇的平台下與例子發生互動。

5.2.例子類型

例子被分成兩個廣義的種類——api和examples。每個api的例子都說明了一個在使用Havok實體引擎時非常明确的方面,例如在兩個剛體之間設定單一限制。這些例子會幫助你增加對SDK一系列特征,與這些特征相關的概念以及與單獨的特征有關的關鍵類的熟悉程度。相比之下,examples的示例将兩個或者更多的特征整合在了一起來說明它們是用在一起的,比如在角色扮演和駕駛遊戲中。我們已經使這些例子盡可能的簡單了,以至于孤立了關鍵概念,說明了如何和另外的概念相關。

5.3.使用示例架構時運作Visual  debugger.

使用Visual Debugger運作一個示例架構時要用一個“-d”的指令行參數。

更多關于使用Visual Debugger的資訊(以及在不同的控制台使用時的資訊)可以在Visual Debugger部分可以找到。

繼續閱讀