自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone 游戲開發(fā)教程 游戲引擎 (3)

移動開發(fā) iOS 游戲開發(fā)
本文講解的是iPhone 游戲開發(fā)教程 游戲引擎,手機(jī)游戲開發(fā)已經(jīng)成為了一種主流趨勢,先來看內(nèi)容詳解。

iPhone 游戲開發(fā)教程 游戲引擎 (3)是本文要介紹的內(nèi)容,繼續(xù)上一章的內(nèi)容開始介紹,本文主要介紹動畫的一些內(nèi)容,詳細(xì)內(nèi)容先來看內(nèi)容。

動畫

通過渲染連續(xù)的圖片,我們可以確保玩家看到一個移動的物體,盡管他所做的僅僅是在同樣的像素上,但這些像素在快速的改變顏色。這就是動畫的基本概念。2D動畫很簡單,但3D動畫通常牽扯到更多的物體與動作,因此更復(fù)雜。

除了討論動畫技巧,這一節(jié)還會討論主要的優(yōu)化類型可以使得我們的圖像引擎有效的和可靠的完成復(fù)雜的不可能以原始方式來完成的圖形任務(wù)。一些主要的優(yōu)化技巧包括淘汰、紋理排序、使用智能紋理文件、資源管理和細(xì)節(jié)級別渲染。

2維動畫:精靈

在2D圖像中,如果我們要渲染馬兒奔馳的完整場景,我們可以先創(chuàng)建出馬兒的奔馳各個姿態(tài)的圖片。這種圖片成為一幀。當(dāng)一幀接一幀的渲染到屏幕上時,馬兒動起來了(見圖2-7)。這和電影創(chuàng)建動畫的方式非常相似,電影也是通過展示連續(xù)的幀來達(dá)到移動效果。

iPhone 游戲開發(fā)教程 游戲引擎

圖2-7 斯坦福德的馬的動作

為了將這些幀保存在一起,我們將它們放在同一個紋理中,稱為精靈。通過前面章節(jié)我們描述的裁剪方法,將只包含當(dāng)前幀內(nèi)容的部分渲染到屏幕上。

你可以將每一幀渲染多次直到渲染該序列的下一幀。這取決于你希望你的動畫播放的多快,以及提供了多少幀圖片。事實(shí)上,通過渲染的幀速和順序,你可以創(chuàng)造出多種特效。

3維動畫:模型

與2D動畫中每次重畫時都維護(hù)一幅用來渲染的圖片--精靈不同,3D動畫是通過實(shí)際的計算的計算運(yùn)動的幾何效果。正如我們之前描述的,所有的3D物體都由包含一個或多個三角形構(gòu)成,被稱作網(wǎng)格。有多種可以使網(wǎng)格動起來的方法,這些技術(shù)與游戲發(fā)展與圖形硬件有關(guān)。這些技術(shù)后的基本概念都是:關(guān)鍵幀。

關(guān)鍵幀與我們之前討論的2D動畫中的幀有些許不同。2維動畫的美術(shù)人員畫出每一幀并保存在紋理中。但是在3D中,只要我們保存了最特殊的幾幀,我們就可以通過數(shù)學(xué)計算得到其他幀。

最開始的使用網(wǎng)格動畫的游戲?qū)嶋H上存儲了網(wǎng)格的多個拷貝,每一個拷貝都是都在不同的關(guān)鍵幀方向上。例如,如果我們在3D中渲染馬兒,我們應(yīng)該為上面精靈的每一個關(guān)鍵幀都創(chuàng)建網(wǎng)格。在time(1),***幀被描畫出來,在time(2),第二針被描述出來。

在主要關(guān)鍵幀之間,使用一種叫做“插值”的技術(shù)方法。因?yàn)槲覀冎纓ime(1)的關(guān)鍵幀和time(2)的關(guān)鍵幀有著相同數(shù)量的三角形,但是方向稍有區(qū)別,我們可以創(chuàng)建當(dāng)前時間點(diǎn)的臨時的,融合了前面兩個網(wǎng)格的網(wǎng)格。所以在時間time(1.5),臨時網(wǎng)格看起來正好介于time(1)與time(2)之間,而在time(1.8),看起來更偏向于time(2)。

以上技術(shù)效率低下的原因是很明顯的。它僅在只有少量的三角形和少量的關(guān)鍵幀時才是可接受的,但是現(xiàn)代圖像要求有高解析度與生動細(xì)節(jié)的動畫。幸運(yùn)的是,有更好的存儲關(guān)鍵幀數(shù)據(jù)的方法。

這就技術(shù)叫做“骨骼動畫”(skeletal animation, or bone rigging)。還是以馬兒為例,你可能注意到了大多數(shù)的三角形都是成組的移動,比如頭部組、尾部組和四肢組。如果你將它們都看成是骨頭關(guān)聯(lián)的,那么將這些骨頭組合起來就形成了骨骼。

骨骼是由一組可以適用于網(wǎng)格的骨頭組成的。當(dāng)一組骨骼在不同方向連續(xù)的表示出來的時候,就形成了動畫。每一幀動畫都使用的是相同的網(wǎng)格,但是都會有骨頭從前一方位移動到下一個方位的細(xì)小的動作變化。

通過僅存儲在某一個方位的網(wǎng)格,然后在每一關(guān)鍵幀時都利用它,我們可以創(chuàng)建一個臨時的網(wǎng)格并將其渲染到屏幕上。通過在兩個關(guān)鍵幀之間插值,我們可以以更小的成本來創(chuàng)建相同的動畫。

動畫控制器

動畫控制器對象在抽象低層次的任務(wù)非常有用,如選擇哪一幀來渲染,渲染多長時間,決定下一幀代替前一幀等。它也起到連接游戲邏輯與圖像引擎等動畫相關(guān)部分的作用。

在頂層,游戲邏輯只關(guān)心將設(shè)某些東西,如播放跑動的動畫,和設(shè)定它的速度為可能應(yīng)該每秒跑動數(shù)個單位距離??刂破鲗ο笾滥膫€幀序列對應(yīng)的跑動動畫以及這些幀播放的速度,所以,游戲邏輯不必知道這些。

粒子系統(tǒng)

另外一個與動畫控制器相似的有用對象是粒子系統(tǒng)管理器。當(dāng)需要描畫高度支離破碎的元素,如火焰、云朵粒子、火苗尾巴等時可以使用粒子系統(tǒng)。雖然粒子系統(tǒng)中的每個對象都有有限的細(xì)節(jié)與動畫,它們組合起來卻能形成富有娛樂性的視覺效果。

淘汰

***的增加每秒鐘描畫到屏幕上的次數(shù)的方法是在每次迭代中都減少描畫在屏幕上的數(shù)目的總量。你的場景可能同時擁有成百上千的物體,但是如果你只需要描述其中的一小部分,你仍然可以將屏幕渲染得很快。

淘汰是從描畫路徑上移除不必要的物體。你可以在多層次上同時進(jìn)行淘汰。例如,在一個高層次,一個用戶在一間關(guān)閉了門的房間里面是看不到隔壁房間的物體的,所以你不必描畫出隔壁其他物體。

在一個低層次,3D圖像引擎會經(jīng)常移除部分你讓它們描畫的網(wǎng)格。例如,在任意合適的給定時間點(diǎn),半數(shù)的網(wǎng)格幾何體在攝影機(jī)背面,你從攝像機(jī)中看不到這些網(wǎng)格,看到的只是攝影機(jī)前方的網(wǎng)格,因此,當(dāng)網(wǎng)格被渲染時,所有的在攝影機(jī)背后的網(wǎng)格都會被忽略。這叫做背面淘汰。

紋理排序

每次當(dāng)一個物體被渲染到屏幕上時,圖形硬件都會將紋理源文件載入到內(nèi)存中。這是被稱作上下文交換(context switching)的一部分。

如果要將三幅圖片描畫到屏幕上,而其中兩幅圖片共用同一個紋理資源,有兩種辦法來處理紋理排序:高效的方法是連續(xù)的渲染兩幅共享資源的圖片,這樣只需要以此上下文交換,而低效的方法則需要兩次上下文交換。你不應(yīng)該將第三幅圖片放在共享紋理的兩幅圖片之間描畫。

在渲染處理過程中,通過排列共享紋理的物體可以減少上下文交換的次數(shù),從而提高渲染速度。

紋理文件

在一開始就計劃好紋理組織結(jié)構(gòu)可以幫助你以***化方式排列你的紋理。假設(shè)你準(zhǔn)備在你的游戲中描畫幾何體,一個主角和一些生物。

如果前兩個關(guān)卡是草地,接下來的關(guān)卡是沙漠,你可以將所有的樹木、草、灌木、巖石以及花兒的圖片來放到一起來渲染前兩關(guān),并將沙子圖片放在另外一個紋理文件中用來渲染第三關(guān)。同樣的,你可以將玩家虛擬人偶放到一個紋理中。如果所有的生物在所有關(guān)卡中都用到了,***的方式可能是將它們放在一個紋理文件中。但是,如果***關(guān)有吼猴與鼯鼠,而第二關(guān)只有森林鼠與蘇里南蛤蟆,你可以將***次前兩種動物放在一個紋理中,將后兩種放在一個紋理中。

資源管理

大部分的視頻游戲在一個時間點(diǎn)只會渲染它們所有圖片內(nèi)容的一小部分。將所有紋理同時載入內(nèi)存是非常低效的。

幸運(yùn)的是,游戲設(shè)計通常決定了哪些資源在游戲的各個章節(jié)是可見的。通過保留必須的紋理為載入狀態(tài)并卸載不使用的紋理,可以最有效的利用有限的內(nèi)存資源。

還是使用前一節(jié)的例子,當(dāng)游戲引擎載入***關(guān)時,資源管理代碼必須確保 吼猴與鼯鼠的紋理被載入到內(nèi)存中。當(dāng)程序進(jìn)行到下一關(guān)時,資源管理代碼會卸載那些紋理,因?yàn)樗呀?jīng)知道它們不會在第二關(guān)被使用。

細(xì)節(jié)層次

另外一個優(yōu)化技巧,尤其是對3D圖像,叫做細(xì)節(jié)層次??紤]當(dāng)一個物體遠(yuǎn)離攝像機(jī)時,它看起來非常小,而且大部分細(xì)節(jié)都丟失了。你可以描畫一個同樣大小,卻僅擁有簡單網(wǎng)格的物體,或者甚至一張平面貼圖。

通過保留不同細(xì)節(jié)層次的物體的副本在內(nèi)存中,圖像引擎可以根據(jù)與攝像機(jī)的距離決定使用哪個副本。

小結(jié):iPhone 游戲開發(fā)教程 游戲引擎 (3)的內(nèi)容介紹完了,希望本文對你有所幫助!想要深入了解iPhone  游戲引擎的更多內(nèi)容,請參考以下幾篇文章:

iPhone 游戲開發(fā)教程 游戲引擎 (1)

iPhone 游戲開發(fā)教程 游戲引擎 (2)

iPhone 游戲開發(fā)教程 游戲引擎 (4)

iPhone 游戲開發(fā)教程 游戲引擎 (5)

iPhone 游戲開發(fā)教程 游戲引擎 (6)

責(zé)任編輯:zhaolei 來源: CSDN博客
相關(guān)推薦

2011-07-18 11:07:12

iPhone 游戲 引擎

2011-07-18 10:53:09

2011-07-18 12:29:10

2011-07-18 11:39:58

iPhone 游戲 引擎

2011-07-21 16:48:19

iPhone 游戲

2015-07-08 16:38:10

Cocos游戲引擎

2012-12-24 09:04:04

iOSUnity3D

2015-07-06 17:12:31

游戲開發(fā)引擎cocos游戲引擎

2015-07-06 17:36:17

Cocos游戲開發(fā)引擎

2011-07-27 13:57:36

iPhone 游戲 Cocos2d

2011-12-12 13:58:11

TinyCoiOSAndroid

2013-04-19 01:42:02

2012-03-06 10:56:32

HTML 5

2023-09-14 11:45:11

Godot項目游戲

2012-12-24 08:46:50

iOSUnity3D

2013-12-04 16:21:02

Android游戲引擎libgdx教程

2012-06-23 20:06:21

jQuery

2013-12-04 16:28:29

Android游戲引擎libgdx教程

2013-12-06 09:59:53

Android游戲引擎libgdx教程

2015-07-10 10:27:21

Cocos游戲開發(fā)引擎
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號