□ 沈有福 石連栓
隨著計(jì)算機(jī)技術(shù)的高速發(fā)展,其軟硬件方面都有了極大的提升,從而人們對(duì)計(jì)算機(jī)的畫面質(zhì)量、維度顯示都有了更高的要求。近來(lái),3D電影越來(lái)越受人們的喜愛(ài),究其原因,無(wú)非就是3D電影采用了新的三維視覺(jué)效果來(lái)呈現(xiàn)故事內(nèi)容,它使觀看者更加覺(jué)得自己融入電影的世界中,即增強(qiáng)了用戶的沉浸感。那么,在三維環(huán)境呈現(xiàn)的基礎(chǔ)上再加上人機(jī)互動(dòng),使用戶親身進(jìn)入三維環(huán)境,并且通過(guò)簡(jiǎn)單的鍵盤或者鼠標(biāo)操作就可以自由控制人物,瀏覽整個(gè)虛擬場(chǎng)景,這樣的一種虛擬漫游系統(tǒng)也一定會(huì)受到人們的歡迎,如2010年的上海世博會(huì)虛擬現(xiàn)實(shí)系統(tǒng)。
虛擬現(xiàn)實(shí)系統(tǒng)可分為桌面式、分布式、沉浸式以及增強(qiáng)式四種類型,一般的虛擬漫游系統(tǒng)均屬于桌面式虛擬現(xiàn)實(shí)系統(tǒng),它具有沉浸感、構(gòu)想性、交互性以及多感知性四個(gè)特點(diǎn)。那么如何開發(fā)一個(gè)桌面式的虛擬漫游系統(tǒng),接下來(lái),筆者將結(jié)合親身開發(fā)的一個(gè)虛擬漫游系統(tǒng)系統(tǒng)來(lái)闡述其具體過(guò)程及關(guān)鍵技術(shù)。
一個(gè)虛擬漫游系統(tǒng)包括的幾個(gè)要素有人物角色、環(huán)境場(chǎng)景、實(shí)體物件、控制系統(tǒng)以及其他附屬效果(天氣、聲音、火焰等)。因此,開發(fā)過(guò)程主要分為以下幾個(gè)階段(圖1)。
如圖1所示,一個(gè)虛擬漫游系統(tǒng)的開發(fā)主要包括素材收集、人物模型操作、實(shí)體物件模型的修改以及控制腳本的編寫。其中素材收集主要包括圖片/貼圖、人物模型以及實(shí)體物件模型;人物模型操作包括骨骼、蒙皮、封套及動(dòng)作的制作;實(shí)體物件模型包括貼圖創(chuàng)建及修正,模型調(diào)整及優(yōu)化,父子關(guān)系、坐標(biāo)及尺寸設(shè)定;控制系統(tǒng)部分包括模型導(dǎo)入及調(diào)整,燈光、攝像機(jī)架設(shè),材質(zhì)的修正,物體屬性設(shè)定以及控制腳本的編寫。
虛擬漫游系統(tǒng)開發(fā)的過(guò)程可分為上述四個(gè)階段,在開發(fā)的過(guò)程中各個(gè)階段是相互聯(lián)系、相互影響的。如人物動(dòng)作制定好后,導(dǎo)入Virtools中發(fā)現(xiàn)人物的動(dòng)作不協(xié)調(diào),顯得并不真實(shí),則需返回3d max中重新制作動(dòng)作。因此,在開發(fā)之前,一定要將所有可能發(fā)生影響的因素以及可能發(fā)生的結(jié)果進(jìn)行具體規(guī)劃考慮。
一個(gè)虛擬漫游系統(tǒng)開發(fā)過(guò)程中的技術(shù)細(xì)節(jié)很多,如素材收集階段搜索引擎的使用,人物模型操作階段坐標(biāo)、尺寸的設(shè)定,Virtools中物體模型的調(diào)整等。筆者使用的開發(fā)軟件為3d max 9以及Virtools 5.0。文中主要針對(duì)以下幾方面技術(shù)進(jìn)行闡述:1)人物角色模型骨骼架設(shè),蒙皮及封套編輯,動(dòng)作制作及導(dǎo)出;2)實(shí)體物件模型材質(zhì)制定及模型優(yōu)化;3)Virtools中燈光架設(shè)及材質(zhì)修正;4)物體模型屬性設(shè)定;5)角色腳本控制;6)碰撞處理機(jī)制;7)攝像機(jī)架設(shè)及腳本控制。
為了表現(xiàn)出較為真實(shí)的漫游效果,虛擬角色的存在是必不可少的。對(duì)于虛擬角色的制作步驟,分為以下三點(diǎn):1)人物角色模型骨骼架設(shè);2)蒙皮及封套編輯;3)動(dòng)作制作及導(dǎo)出。
1.人物角色模型骨骼架設(shè)
人物角色模型建立好后將其位置置于世界坐標(biāo)中心位置(0,0,0),將人物角色模型凍結(jié),以免在調(diào)整骨骼的時(shí)候不小心破壞掉源模型。創(chuàng)建骨骼(Biped),在體型模式下利用移動(dòng)、旋轉(zhuǎn)、縮放、鎖定工具,并且配合捕捉工具調(diào)整骨骼,使其與模型的位置和大小均匹配。
圖1 虛擬漫游系統(tǒng)開發(fā)過(guò)程
2.蒙皮及封套編輯
調(diào)整好骨骼后,解凍人物角色模型,選中模型,添加蒙皮修改器。然后進(jìn)入封套級(jí)別進(jìn)行每一塊骨骼影響模型位置及權(quán)重。影響位置通過(guò)封套半徑來(lái)控制,權(quán)重設(shè)定可通過(guò)權(quán)重表來(lái)實(shí)現(xiàn)。
3.動(dòng)作制作及導(dǎo)出
骨骼及蒙皮編輯好后就可以制作人物角色動(dòng)作了,一般動(dòng)作的制定可以通過(guò)3d max中動(dòng)作編輯器來(lái)實(shí)現(xiàn)。由于開發(fā)者自己調(diào)整的動(dòng)作并不是非常自然、協(xié)調(diào),稍微復(fù)雜點(diǎn)的動(dòng)作可以加載外界以制作好的動(dòng)作BIP文件,結(jié)合軌跡視圖,根據(jù)需要進(jìn)行修改。人物角色走路的動(dòng)作可以利用3d max中足跡模式來(lái)實(shí)現(xiàn)自然流暢的效果。動(dòng)作制作完畢,在導(dǎo)出時(shí),應(yīng)先將骨骼隱藏,再將角色模型以character類型導(dǎo)出,動(dòng)作則以animation類型導(dǎo)出。
為展示出形象、逼真的虛擬場(chǎng)景,需要為模型添加材質(zhì)。在添加材質(zhì)的時(shí)候,需要注意幾個(gè)問(wèn)題:1)根據(jù)不同的模型賦予材質(zhì)不一樣的名稱;2)材質(zhì)類型的選擇盡量使用Virtools支持的材質(zhì)類型,如標(biāo)準(zhǔn)材質(zhì)、多維/子對(duì)象材質(zhì)等;3)盡量減少使用貼圖,因?yàn)橘N圖非常耗費(fèi)系統(tǒng)資源,如果能夠采用3d max中自己調(diào)的材質(zhì),如簡(jiǎn)單物體顏色及反射光設(shè)定,就可以極大地加快系統(tǒng)運(yùn)行速度;4)如果使用貼圖則需使用2的冪次方文件大小的圖片,減少內(nèi)存浪費(fèi),因?yàn)橛?jì)算機(jī)的儲(chǔ)存機(jī)制為二進(jìn)制;5)如果需要使用陰影,可將材質(zhì)烘焙好再賦予模型。
通常建模時(shí)主要采用多邊形建模的方式,放樣、NURBS等建模方式配合使用。為了保證模型在后期Virtools中顯示正確,模型建立好以后要全部轉(zhuǎn)化為可編輯多邊形或者可編輯網(wǎng)格,避免凹多邊形的面出現(xiàn)。為了減少系統(tǒng)負(fù)擔(dān),需要對(duì)模型進(jìn)行優(yōu)化處理:1)刪除不可見面,移除孤立的頂點(diǎn),刪減模型的面數(shù),適當(dāng)減少模型分段;2)一樣的模型使用實(shí)例方式復(fù)制,材質(zhì)相同的模型使用合并材質(zhì);3)一些模型,如樹木等采用十字交叉面片創(chuàng)建;4)遠(yuǎn)處物體,如背景或者較小的物體,使用圖片來(lái)實(shí)現(xiàn);5)草地、花叢等模型利用面片來(lái)制作等。
模型導(dǎo)入Virtools,調(diào)整好位置后,則應(yīng)該先為其架設(shè)燈光,燈光可分為主光和輔光。在Virtools中,燈光分為點(diǎn)光源、聚光燈以及目標(biāo)聚光燈三種類型。點(diǎn)光源可理解為泛光燈,用于全局照明;聚光燈用于表現(xiàn)實(shí)物理世界中以點(diǎn)光源作為照明的燈光,比如射燈、筒燈等;目標(biāo)聚光燈用于表現(xiàn)表現(xiàn)真實(shí)物理世界中的陽(yáng)光,這是平行光的一大特點(diǎn),而且平行光不用考慮燈光的衰減。
模型導(dǎo)入Virtools中如果為黑色,需要調(diào)整模型的材質(zhì)自發(fā)光。Virtools中物體材質(zhì)的表現(xiàn)要結(jié)合模型自身材質(zhì)的環(huán)境光、漫反射、透明度以及自發(fā)光參數(shù)以及架設(shè)的燈光來(lái)進(jìn)行調(diào)整。另外,可以利用材質(zhì)屬性面板中的Effect增強(qiáng)空間環(huán)境的真實(shí)性。
在虛擬漫游系統(tǒng)中,用到的物體屬性包括地板屬性、固定障礙物屬性、移動(dòng)障礙物屬性等。雨、雪、霧、噴泉等效果可以用粒子系統(tǒng)實(shí)現(xiàn),配合利用系統(tǒng)的屬性包括粒子系統(tǒng)導(dǎo)向板以及粒子系統(tǒng)交互器。
在層級(jí)管理器中,選中要添加屬性的物體,添加屬性,或者在物體的設(shè)置面板,左側(cè)選擇其屬性項(xiàng)標(biāo)簽也可以實(shí)現(xiàn)添加屬性操作。如果需要移除物體的某一個(gè)屬性,在物體設(shè)置面板中屬性標(biāo)簽選擇要移除的屬性項(xiàng)右鍵執(zhí)行刪除即可。
準(zhǔn)備工作做好以后,如果想讓角色動(dòng)起來(lái),就需要為人物角色添加控制腳本。通常情況下我們可以使用Virtools中 Building Blocks下面的Keyboard Controller、Character Controller以及Character Keep On Floor三個(gè)BB模組來(lái)實(shí)現(xiàn)人物控制及保持在地板上。使用這種方法,人物后退、左轉(zhuǎn)、右轉(zhuǎn)、前進(jìn)和跑的動(dòng)作控制對(duì)應(yīng)鍵盤按鍵是固定的,即2、4、6、8及Insert按鈕。如果想要改變動(dòng)作對(duì)應(yīng)按鍵以及設(shè)定一些其他參數(shù),可以使用Keyboard Mapper、Unlimited Controller以及Enhanced Character Keep On Floor模組來(lái)進(jìn)行操作。實(shí)現(xiàn)人物碰撞效果的腳本,將在下面“碰撞處理機(jī)制”中進(jìn)行闡述。
在虛擬漫游系統(tǒng)中使用到的人物與物體碰撞檢測(cè)方法主要有以下三種:1)物體障礙物屬性設(shè)定配合Prevent Collision BB模組;2)碰撞網(wǎng)格(Grid)配合Layer Slider BB模組;3)碰撞群組配合Object Slider BB模組。實(shí)現(xiàn)方法分別為:1)為碰撞物體添加固定障礙物屬性,在人物角色控制腳本中添加Prevent Collision BB;2)創(chuàng)建Grid,將Grid中對(duì)應(yīng)障礙物的各個(gè)網(wǎng)格選中,在人物角色控制腳本中添加Layer Slider BB;3)創(chuàng)建一個(gè)群組,將需要實(shí)現(xiàn)碰撞的物體全部放進(jìn)去,人物角色控制腳本中添加Object Slider BB,模組中參數(shù)選擇創(chuàng)建的碰撞群組。Prevent Collision BB在檢測(cè)到碰撞時(shí),人物會(huì)產(chǎn)生碰撞效果,但是人物不會(huì)滑動(dòng),而包含“Slider”的BB則會(huì)產(chǎn)生一定的滑動(dòng)效果,防止人物卡住。為了達(dá)到較好的碰撞效果,應(yīng)將上述幾種方法結(jié)合使用。
漫游系統(tǒng)中,針對(duì)人物角色,一般有第一人稱視角、第三人稱視角、跟隨視角以及全景視角。這幾種視角實(shí)現(xiàn)的方法大致相同,區(qū)別在于攝像機(jī)的位置及視野位置、范圍的差異。
調(diào)整好視圖,創(chuàng)建攝像機(jī),并制定初始值,為攝像機(jī)添加腳本,加入Set Position和Look At BB,連接循環(huán)就可以實(shí)現(xiàn)攝像機(jī)跟隨角色移動(dòng)(圖2)。實(shí)現(xiàn)按鍵控制不同視角之間的切換功能,加入Switch On Key和Set As Active Camera兩個(gè)BB模組,設(shè)定按鍵及對(duì)應(yīng)的攝像機(jī)即可(圖3)。
圖2 攝像機(jī)控制腳本
圖3 攝像機(jī)切換腳本
Virtools引擎可以制作出許多不同用途的3D產(chǎn)品,如網(wǎng)際網(wǎng)絡(luò)、計(jì)算機(jī)游戲、多媒體、建筑設(shè)計(jì)、交互式電視、教育訓(xùn)練、仿真與產(chǎn)品展示等。目前全世界有超過(guò)270所大學(xué)使用Virtools,已經(jīng)獲得許多媒體技術(shù)學(xué)系學(xué)生的肯定和支持,并且越來(lái)越多的多媒體技術(shù)公司開始應(yīng)用Virtools開發(fā)其產(chǎn)品,如水晶宮、奇士等公司。由此可見,Virtools引擎的應(yīng)用前景十分看好。
[1]劉明昆.三維游戲設(shè)計(jì)師寶典——Virtools開發(fā)工具篇[M].四川電子音像出版中心,2005.
[2]韓靜華.森林公園虛擬漫游裝置關(guān)鍵技術(shù)研究[D].北京林業(yè)大學(xué),2011.
[3]劉妍.樓盤虛擬漫游技術(shù)及應(yīng)用研究[D].中南林業(yè)科技大學(xué),2012.
[4]陳彥菲.校園內(nèi)場(chǎng)景的虛擬漫游技術(shù)研究[D].大連理工大學(xué),2008.
[5]曾敏.成都職業(yè)技術(shù)學(xué)院校園漫游系統(tǒng)[D].西南交通大學(xué)大學(xué),2011.
[6]黃煒.基于的工廠虛擬漫游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].電腦知識(shí)與技術(shù),2011.
[7]王兆豐,厲曉飛,崔伊飛.基于虛擬現(xiàn)實(shí)技術(shù)的3D虛擬漫游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].China Academic Journal Electronic Publishing House.1994-2012.