摘要:汽車的實(shí)體展示主要是依托汽車展廳來實(shí)現(xiàn)的,但通過展廳的方式在實(shí)際展示中存在空間、時(shí)間、地域的限制及成本高昂等問題。隨著虛擬現(xiàn)實(shí)技術(shù)的快速發(fā)展,文章使用3DMax來制作汽車模型,利用Unity3D虛擬開發(fā)平臺(tái)來完成各種元素的整合、材質(zhì)光效的制作、運(yùn)動(dòng)動(dòng)畫的實(shí)現(xiàn)以及人車交互效果的達(dá)成,從而設(shè)計(jì)一款汽車虛擬展示系統(tǒng)。該系統(tǒng)可以彌補(bǔ)汽車展廳存在的各種不足,使用戶獲得更好的感觀體驗(yàn)。
關(guān)鍵詞:Unity3D;汽車;虛擬展示系統(tǒng)
中圖分類號(hào):TP311" 文獻(xiàn)標(biāo)志碼:A
0 引言
隨著科學(xué)技術(shù)的飛速發(fā)展,虛擬現(xiàn)實(shí)(Virtual Reality,VR)技術(shù)已經(jīng)融入各行各業(yè)乃至人們衣食住行的方方面面,成為現(xiàn)代社會(huì)的一大熱門技術(shù)。虛擬現(xiàn)實(shí)技術(shù)能夠提供一種沉浸式的環(huán)境,讓用戶可以全方位、無干擾地體驗(yàn)展覽內(nèi)容,個(gè)性化的設(shè)置使得用戶能夠按照自己的節(jié)奏和興趣瀏覽展品,呈現(xiàn)一種全新的、高度互動(dòng)的體驗(yàn)方式。Unity3D是Unity Technolgies公司開發(fā)的3D虛擬現(xiàn)實(shí)開發(fā)平臺(tái),能夠?qū)崿F(xiàn)桌面式虛擬現(xiàn)實(shí)系統(tǒng)。這種系統(tǒng)是以計(jì)算機(jī)屏幕為窗口,采用3D圖形技術(shù),建立一個(gè)三維立體空間的交互場(chǎng)景,用戶可以通過鼠標(biāo)和鍵盤來操作和體驗(yàn)虛擬場(chǎng)景,達(dá)到交互的效果。因此,通過Unity3D來設(shè)計(jì)開發(fā)汽車虛擬展示系統(tǒng)是不錯(cuò)的選擇。
1 汽車展廳存在的不足
汽車展廳存在的不足主要表現(xiàn)在3個(gè)方面。
1.1 空間限制
汽車展廳受限于實(shí)體空間的大小和布局,無法展示大量的實(shí)物,往往某種品牌的車輛只能擺下10臺(tái)左右,無法涉及各種車型、顏色、配置等內(nèi)容,觀眾只能看到車輛的一小部分信息,很多感興趣的內(nèi)容無法通過展廳獲取。
1.2 時(shí)間和地域限制
汽車展廳的開放時(shí)間和地點(diǎn)受到限制,觀眾需要在特定的時(shí)間和地點(diǎn)進(jìn)行參觀。比如汽車展廳通常在節(jié)假日開放展示,但很多觀眾因?yàn)槁糜巍⑻接H、工作等原因,沒有辦法抽出時(shí)間來現(xiàn)場(chǎng)參觀。還有的觀眾居住地距離展廳較遠(yuǎn),需要花費(fèi)比較多的時(shí)間在往返的路上,因此有的參觀者直接放棄觀展的打算,影響了參觀的客流量。
1.3 成本高昂
汽車展廳需要投入大量的資金用于展覽策劃、運(yùn)輸、存儲(chǔ)和管理等方面的費(fèi)用開銷。一種品牌車輛花費(fèi)在場(chǎng)地、宣傳費(fèi)用、展位搭建、展具物流、人員餐飲、發(fā)布會(huì)等各種支出,一次展覽就可以達(dá)到幾十萬元。
2 汽車虛擬展示系統(tǒng)設(shè)計(jì)
汽車虛擬展示系統(tǒng)不受空間限制,用戶能夠自主掌握體驗(yàn)時(shí)間,制作成本與汽車展廳相比有了極大的降低。用戶只需要運(yùn)行計(jì)算機(jī)上的虛擬展示系統(tǒng)應(yīng)用程序,就可以靈活便捷地觀看具體的展示效果??紤]到汽車需要進(jìn)行靜態(tài)展示,同時(shí)用戶也需要看到汽車動(dòng)態(tài)行駛的狀態(tài),所以本系統(tǒng)設(shè)計(jì)了汽車靜態(tài)展示模塊和汽車動(dòng)態(tài)展示模塊,由這2個(gè)模塊共同實(shí)現(xiàn)了汽車虛擬展示系統(tǒng)的所有功能。
3 汽車靜態(tài)展示模塊實(shí)現(xiàn)
3.1 車體材質(zhì)的選擇
車體材質(zhì)要實(shí)現(xiàn)在燈光下能夠?qū)崟r(shí)反射周圍環(huán)境以及在不同顏色之間進(jìn)行柔和的過渡切換。本文選擇Unity3D著色器Shader[2]中的車漆CarPaint,CarPaint具有2組色彩屬性,分別是(Base Color 1,Tone 1,Tone 2)和(New Base Color,New Tone 1,New Tone 2)。通過設(shè)置這2組屬性,可以將不同的車體顏色存儲(chǔ)在系統(tǒng)中。CarPaint的Lerp屬性可以控制不同顏色間進(jìn)行漸變的快慢程度,而通過設(shè)置CubeMap屬性則可以實(shí)現(xiàn)車體在燈光下的反射效果。
3.2 車體陰影效果實(shí)現(xiàn)
車體在聚光燈下逼真的陰影效果可以通過Unity3D系統(tǒng)自帶的聚光燈對(duì)象[1]來進(jìn)行實(shí)時(shí)生成,但用這種方式生成的陰影需要依靠Unity3D系統(tǒng)大量的實(shí)時(shí)計(jì)算,消耗了大量的運(yùn)行資源,影響了其他功能的運(yùn)作,最終影響整體的虛擬效果呈現(xiàn),因此本文提出一種通過手動(dòng)制作陰影貼圖來實(shí)現(xiàn)陰影效果的方法。雖然與Unity3D通過燈光來產(chǎn)生陰影相比,手動(dòng)制作陰影貼圖從制作角度來看的確步驟有所增加,但卻解決了燈光陰影過高耗費(fèi)系統(tǒng)運(yùn)行資源的問題。陰影貼圖效果實(shí)現(xiàn)步驟如下:
(1)在3DMax中,將視圖切換到汽車模型的頂視圖,通過渲染汽車模型,獲得頂視圖。
(2)在Photoshop中,通過調(diào)整色階的level參數(shù),將汽車的頂視圖全部轉(zhuǎn)為黑色,之后對(duì)圖片進(jìn)行高斯模糊和透明度修改,設(shè)定高斯模糊的半徑為1.0像素,設(shè)定透明度為50%,按住shift鍵和鼠標(biāo)左鍵生成一個(gè)正方形選框,將制作的陰影圖片放入選框進(jìn)行裁減,同時(shí)改變圖片大小,長(zhǎng)寬全部設(shè)為256像素,最后以.png的格式完成保存。
(3)在Unity3D中新建一個(gè)Plane對(duì)象,將該對(duì)象置于汽車模型下方。在資源面板中新建一個(gè)材質(zhì),將已經(jīng)完成的陰影貼圖設(shè)置在該材質(zhì)的Texture屬性上,之后將該材質(zhì)通過鼠標(biāo)拖放的方式,置于Plane對(duì)象的Material屬性上,同時(shí)將Shader屬性設(shè)置為Transparent下的Diffuse,最后等比縮放Plane對(duì)象,貼合地放置在汽車的車底位置,陰影效果制作完成。
3.3 車身燈光反射效果實(shí)現(xiàn)
汽車車身需要在聚光燈的照射下產(chǎn)生燈光反射效果,同時(shí)伴隨車身在旋轉(zhuǎn)展臺(tái)上位置角度的變化,車身的反光效果也要實(shí)時(shí)地進(jìn)行改變。要實(shí)現(xiàn)這種復(fù)雜的光感效果,就需要用到CubeMap貼圖集,通過CubeMap來記錄車身周圍環(huán)境的實(shí)時(shí)信息。CubeMap貼圖集制作步驟如下:
(1)首先,在3DMax中創(chuàng)建一個(gè)和Unity3D類似的展示環(huán)境,用VR-面光源替代Unity3D中的聚光燈對(duì)象,用一臺(tái)攝像機(jī)來替代Unity3D中的汽車,同時(shí)設(shè)定V-Ray渲染器為3DMax的默認(rèn)渲染器。其次,新建一個(gè)Reflect/Refract反光材質(zhì),將材質(zhì)的貼圖尺寸設(shè)定為512像素,并確定貼圖來源為“從文件獲取”以及設(shè)定貼圖的存放位置。最后,選中攝像機(jī),點(diǎn)擊“Pick Object and Render Maps”按鈕,就能通過渲染得到6張記錄周圍環(huán)境的貼圖。
(2)在Unity3D的資源面板新建一個(gè)CubeMap貼圖集,依次將6張環(huán)境貼圖拖放到貼圖集的Right、Left、Top、Bottom、Front、Back屬性上,最后將完成的CubeMap貼圖集通過鼠標(biāo)拖放的方式,設(shè)置到車身使用的車漆材質(zhì)CarPaint中的CubeMap屬性上,車身燈光反射效果制作完成。
3.4 車身顏色變化實(shí)現(xiàn)
汽車需要展示不同的顏色效果,車身的顏色變化需要柔和漸變,這里就需要對(duì)車身的CarPaint車漆材質(zhì)進(jìn)行相應(yīng)的設(shè)置,同時(shí)用到Unity3D提供的動(dòng)畫剪輯功能,具體實(shí)現(xiàn)步驟如下:
(1)在Unity3D中,通過對(duì)CarPaint車漆材質(zhì)的不同顏色進(jìn)行賦值,確定車身色彩變化前后用到的顏色。
(2)首先,在Unity3D的動(dòng)畫面板中新建動(dòng)畫剪輯changeColor。其次,在面板中找到CarPaint車漆材質(zhì)的Lerp屬性,設(shè)定Lerp值為0,表示車身色彩變化前的顏色,設(shè)定Lerp值為1,表示車身色彩變化后的顏色。最后,由Lerp屬性建立動(dòng)畫曲線,移動(dòng)時(shí)間軸到2 s的位置設(shè)定Lerp值為1,運(yùn)行該動(dòng)畫,車身顏色變化效果實(shí)現(xiàn)。
3.5 人車交互效果實(shí)現(xiàn)
汽車靜態(tài)展示提供了一種人機(jī)交互效果,即用戶通過使用鼠標(biāo)能夠自如地操控汽車,進(jìn)而從任意角度觀看欣賞汽車,具體實(shí)現(xiàn)步驟如下:
首先,在Unity3D的資源面板中導(dǎo)入腳本程序包Scripts[1]。其次,選擇攝像機(jī)對(duì)象Main Camera,同時(shí)在場(chǎng)景視圖中設(shè)定Main Camera的拍攝對(duì)象為汽車,并添加組件Mouse Orbit。最后,在場(chǎng)景對(duì)象面板中,將汽車對(duì)象用鼠標(biāo)拖動(dòng)的方式移動(dòng)到Main Camera對(duì)象的target屬性上,這樣人車交互制作完成。
4 汽車動(dòng)態(tài)展示模塊實(shí)現(xiàn)
4.1 汽車車輪轉(zhuǎn)動(dòng)效果實(shí)現(xiàn)
汽車動(dòng)態(tài)展示離不開車輪轉(zhuǎn)動(dòng)效果,具體制作步驟如下:首先,在Unity3D中選中汽車的車輪對(duì)象。其次,在Unity3D動(dòng)畫面板中新建動(dòng)畫剪輯chelun,預(yù)設(shè)車輪繞著坐標(biāo)軸的X軸旋轉(zhuǎn),由Rotation.x屬性建立動(dòng)畫曲線,移動(dòng)時(shí)間軸到1.5 s的位置,設(shè)定Rotation.x屬性值在原有的基礎(chǔ)上增加360?;谄囓囕喌难h(huán)滾動(dòng),在資源面板中選中chelun動(dòng)畫,在對(duì)象屬性面板中將該動(dòng)畫的Wrap Mode屬性設(shè)為L(zhǎng)oop。最后,再次選中車輪對(duì)象,添加Animation組件,將 chelun動(dòng)畫通過鼠標(biāo)拖動(dòng)到車輪屬性面板Animation組件的Animation屬性上,車輪轉(zhuǎn)動(dòng)效果制作完成。
4.2 車頭燈光效制作
汽車在正常行駛中需要車頭燈光效,Unity3D提供的Lens Flare[3]鏡頭光斑特效組件可以實(shí)現(xiàn)這一效果,實(shí)現(xiàn)步驟如下:首先,在Unity3D的資源面板中新建一個(gè)Lens Flare特效資源,同時(shí)命名該資源為light,通過鼠標(biāo)將車燈效果貼圖集laser.dds拖到light的屬性FlareTexture上。其次,在Unity3D中新建一個(gè)對(duì)象并命名為chedeng,給chedeng對(duì)象添加一個(gè)Lens Flare組件,并將燈光特效資源light拖到chedeng的Lens Flare組件的屬性Flare上,這樣車頭燈光效便制作完成,如圖1所示。
4.3 汽車隧道行駛效果實(shí)現(xiàn)
汽車的行駛效果設(shè)定在隧道中進(jìn)行,為了使汽車的運(yùn)動(dòng)和真實(shí)情況接近,本文通過讓汽車所在的隧道向汽車行駛的反方向進(jìn)行運(yùn)動(dòng),最終產(chǎn)生汽車直線正向行駛的效果,具體實(shí)現(xiàn)步驟如下:
(1)在Unity3D場(chǎng)景對(duì)象面板中選中隧道對(duì)象,之后在動(dòng)畫面板中新建動(dòng)畫剪輯move,因?yàn)槠嚽斑M(jìn)方向是坐標(biāo)Z軸的正方向,根據(jù)動(dòng)畫設(shè)計(jì),隧道的運(yùn)動(dòng)方向就是坐標(biāo)Z軸的負(fù)方向。
(2)在Unity3D動(dòng)畫面板中找到Position.z屬性,移動(dòng)時(shí)間軸到1 s,再將Position.z屬性值設(shè)為-10。之后在資源面板中選中move動(dòng)畫剪輯,將move的Wrap Mode屬性設(shè)為L(zhǎng)oop。最后通過鼠標(biāo)拖動(dòng)該動(dòng)畫至隧道對(duì)象的Animation組件的Animation屬性上。
(3)在Unity3D中新建一個(gè)對(duì)象資源,將隧道對(duì)象通過鼠標(biāo)拖動(dòng)到新建的對(duì)象下,使其成為該對(duì)象的子物體,之后將該對(duì)象復(fù)制多份,并將它們拼接成一條供汽車行駛的完整隧道,汽車隧道行駛效果制作完成。
5 系統(tǒng)測(cè)試與發(fā)布
在Unity3D中,點(diǎn)擊File-gt;Buildamp;Run,在Platform中選擇PC.Macamp;Linux Standalone選項(xiàng),之后點(diǎn)擊Switch Platform,就可以將此項(xiàng)目構(gòu)建為PC端的展示平臺(tái)。點(diǎn)擊Build and Run,選擇保存目錄,就可以保存并運(yùn)行。至此,汽車虛擬展示系統(tǒng)制作完成。
6 結(jié)語
Unity3D是一款功能強(qiáng)大的虛擬現(xiàn)實(shí)開發(fā)平臺(tái),可以將3D模型、動(dòng)畫和交互式元素進(jìn)行整合,制作出逼真的虛擬展示效果,解決傳統(tǒng)汽車展廳存在的各種不足。各種先進(jìn)技術(shù)包括高清渲染管線(High Definition Render Pipeline,HDRP)、可以支持光線追蹤的深度學(xué)習(xí)超級(jí)采樣(Deep Learning Super Sampling,DLSS)算法等的不斷出現(xiàn),使虛擬展示系統(tǒng)能夠獲得3A級(jí)的畫質(zhì)效果。同時(shí),Unity3D支持Mac OS、Windows等操作系統(tǒng),使得系統(tǒng)能夠在包括手機(jī)、PC、Web、XR等多種平臺(tái)上流暢運(yùn)行,最終讓越來越多不同平臺(tái)的用戶可以享受到汽車虛擬展示系統(tǒng)帶來的良好感觀體驗(yàn)。
參考文獻(xiàn)
[1]劉國柱.UNITY3D/2D游戲開發(fā)從0到1[M].北京:電子工業(yè)出版社,2018.
[2]熊新科.UNITY3D內(nèi)建著色器源碼剖析[M].北京:人民郵電出版社,2019.
[3]周頔,孫辛欣,盛歆漪.UNITY3D PLAYMAKER游戲設(shè)計(jì)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2019.
Design and implementation of automobile virtual display system based on Unity3D
Abstract: ""The physical display of cars is mainly achieved through car showrooms, but there are limitations in space, time, and geography, as well as high costs in actual display through showrooms. With the rapid development of virtual reality technology, this article uses 3DMax to create car models, and uses the Unity3D virtual development platform to integrate various elements, create material lighting effects, implement motion animations, and achieve human vehicle interaction effects. Therefore, a car virtual display system is designed. By using this system, various shortcomings of car showrooms can be compensated for, and users can obtain a better visual experience.
Key words: Unity3D; automobile; virtual display system