3D 引擎做什麼

       3D引擎的任務是在屏幕上顯示整個世界,更爲精確的應該是顯示用於感興趣的部分。這意味着,3D引擎只需要顯示整個世界的一個子集,這個子集是用戶視野當中可見的部分。
  所以,3D引擎的一個任務就是以儘可能快的速度找出整個遊戲世界中的可見部分的這個子集。爲了達到這個目的,我們將世界分成多個區域,每個區域中保存了該區域中包含的3D物體。然後,引擎會通過照相機的視點(camera point of view)來找到可視的區域,從而得知哪些物體需要進行渲染。這個過程稱作揀選(culling)。
  渲染是3D引擎的另一個任務。當引擎找到了需要渲染的物體的最小子集時,它必須以儘可能快的速度將他們渲染出來。那些相互獨立的硬件製造商如AMD,NVIDIA,PowerVR等,出版了許多文章來介紹快速渲染的方法,其中有兩個主要點:一個是最少化狀態變換,另一個是幾何數據批量化。
  3D引擎還有一個任務,就是讓遊戲角色(character)做出動畫,這在現在一般使用的是蒙皮(skinning)。蒙皮的過程是這樣的:模型內部處理頂點外還有骨骼(skeleton)數據,骨骼通過骨骼節點(bone)的形式組織成一個層次結構(這樣child bones跟隨着parent bone一起移動),動畫計算時,計算出每個骨骼節點的偏移(transform)信息;模型內部的頂點和骨骼節點之間擁有綁定關係,一個頂點可能跟隨幾個骨骼節點進行移動,不同骨骼節點對頂點的影響用權重表示,拿權重*偏移之和作爲頂點的偏移對頂點進行變換就可以將遊戲角色移動到正確的位置。這個計算過程比較大,一般是在幀更新時進行的。
  這三個步驟按照下面的順序進行:更新,揀選,渲染。爲了做到最好,3D引擎必須高效地執行這三個步驟。爲了達到這個目的,必須正確的使用一套3D API。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章