謝新慧 司占軍 劉恩銳
摘要:目的:在Unity3D中實現(xiàn)汽車展示系統(tǒng)的開發(fā)。方法:汽車展示系統(tǒng)使用Adobe Photoshop進(jìn)行展示系統(tǒng)按鈕等相關(guān)素材的設(shè)計,使用3ds Max軟件建造汽車模型。然后是在Unity進(jìn)行資源的整合,通過C#語言編程完成汽車三維模型的虛擬展示。結(jié)果:制成一個完整的汽車展示系統(tǒng)的設(shè)計并完成系統(tǒng)的測試與發(fā)布工作。結(jié)論:基于Unity3D的汽車展示系統(tǒng)能夠讓用戶足不出戶了解車輛的相關(guān)信息,既能降低了汽車廠商的銷售成本,又能擴(kuò)大其品牌影響力。
關(guān)鍵詞:汽車展示;Unity3D;C#
中圖分類號:TP319? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ? 文章編號:1009-3044(2018)31-0093-03
基于unity3D的汽車展示系統(tǒng),即窗口式虛擬現(xiàn)實展示系統(tǒng),屬于桌面式虛擬現(xiàn)實系統(tǒng)范圍。它是以計算機(jī)屏幕為窗口,利用了計算機(jī)或初級圖形工作站等設(shè)備,采用立體圖形技術(shù),建立了一個三維立體空間的交互場景[1]。用戶則通過鍵盤和鼠標(biāo)等輸入設(shè)備來操作和體驗虛擬場景,達(dá)到交互的效果[2]。
隨著互聯(lián)網(wǎng)電子商務(wù)的發(fā)展,促使企業(yè)需要根據(jù)客戶對產(chǎn)品的要求,為客戶提供一個能夠從不同角度對產(chǎn)品細(xì)節(jié)進(jìn)行展示的虛擬交互性展示系統(tǒng)[3]。交互性成為現(xiàn)代汽車展示發(fā)展趨勢,而且,各種不同類型汽車展示系統(tǒng)中有很多使用了高新技術(shù)的例子,比如多媒體技術(shù)和虛擬現(xiàn)實技術(shù),并且在技術(shù)發(fā)展的同時,不斷豐富,既展示的企業(yè)的實力,也吸引了更多人的眼球。因此,基于Unity的汽車展示系統(tǒng)將會成為未來虛擬展示的重要技術(shù)手段之一[4]。
1 系統(tǒng)設(shè)計思路
該文通過游戲開發(fā)引擎Unity3D和強(qiáng)大的建模工具 3ds Max等軟件,完成對基于Unity3D的汽車展示系統(tǒng)的設(shè)計與制作這一課題[6]。
該系統(tǒng)設(shè)計主要由3ds Max 制作出汽車模型,然后導(dǎo)出到 Unity 中進(jìn)行場景搭建,此時應(yīng)避免模型的材質(zhì)貼圖出現(xiàn)丟失。最后進(jìn)行腳本編寫生成與運行測試。如圖1所示為該系統(tǒng)設(shè)計的框架結(jié)構(gòu)圖。
2 系統(tǒng)設(shè)計
2.1 前期準(zhǔn)備
前期準(zhǔn)備工作主要是確定展示車型,對應(yīng)汽車型號搜集制作車模所需要的相關(guān)素材,包括汽車三視圖、材質(zhì)素材、模型貼圖素材,并搜集汽車的相關(guān)資料,包括汽車圖片等[5]。將搜集好的資料歸類存放到固定的文件夾,方便進(jìn)行管理。利用Adobe Photo和Adobe Illustrator制作UI,下載汽車廣告視頻和展示的背景音樂。如圖2所示為UI界面的設(shè)計。
2.2 車輛模型
在3ds Max中制作好的車輛模型在導(dǎo)出時需要將單位設(shè)置為厘米,這樣在模型導(dǎo)入Unity后才能按正常的比例進(jìn)行縮放,否則會出現(xiàn)模型大小的偏差。在制作車輛建模時,在保證模型外觀完整度的情況下,盡可能對模型精度進(jìn)行優(yōu)化,增加頂點數(shù)和模型面數(shù)以達(dá)到更精確的效果。車輛模型如圖3所示。
3.3 Unity場景搭建
將車模與材質(zhì)、貼圖、展臺模型、UI等文件整理打包,一起導(dǎo)入到Unity工程中的Assets文件夾下,分類整理。在Unity中利用天空盒子、畫筆等工具,更改展示所需的光線效果,最后在Unity中進(jìn)行UI界面的制作,配合之前制作好的光線與模型,實現(xiàn)基本展示場景的繪制。
3.3.1 歡迎頁面的制作
歡迎頁面采用圖片的形式,在網(wǎng)上找到奧迪S5汽車的平面廣告作為背景,利用Photoshop制作進(jìn)入展示按鈕的UI圖片,在Unity中使用Button,編寫跳轉(zhuǎn)頁面代碼實現(xiàn)交互功能。
3.3.2 內(nèi)部展示頁面的制作
內(nèi)部展示頁面是從展示頁面進(jìn)入,其原理也是利用跳轉(zhuǎn)頁面的代碼,從展示頁面點擊按鈕,進(jìn)入汽車內(nèi)部。內(nèi)部展示如圖4所示。內(nèi)部的展示是使用Unity中第一人稱視角攝影機(jī)來完成,新建一個場景,放入汽車模型,之后導(dǎo)入RigidBodyFPSController攝像機(jī),放在汽車內(nèi)部,即可實現(xiàn)汽車內(nèi)部的展示。
3.4 交互功能實現(xiàn)
3.4.1 車輛顏色切換
顏色切換功能是點擊按鈕改變車身的顏色,奧迪汽車的每款車型會有多個顏色,通過該功能,用戶可以查看同一車型在不同顏色下的外觀。
該功能的實現(xiàn)思路是首先定義一個車身數(shù)組,用于存放需要改變顏色的車身對象,然后獲取該數(shù)組中所有對象的Renderer組件,并改變所有對象的材質(zhì)顏色為指定的顏色,顏色色塊作為一個按鈕,當(dāng)點擊該按鈕時,實現(xiàn)顏色的切換。顏色切換的部分代碼如下:
//定義變顏色的車身數(shù)組
public GameObject[] CarBody;
//改變車身顏色的點擊函數(shù)
public void OnblackClick()
{
CarBody[0].GetComponent<Renderer>().materials[0].color = Color.black;
CarBody[1].GetComponent<Renderer>().materials[0].color = Color.black;
CarBody[2].GetComponent<Renderer>().materials[0].color = Color.black;
CarBody[3].GetComponent<Renderer>().materials[0].color = Color.black;
……
}
public void OnredClick()
{
CarBody[0].GetComponent<Renderer>().materials[0].color = Color.red;
CarBody[1].GetComponent<Renderer>().materials[0].color = Color.red;
CarBody[2].GetComponent<Renderer>().materials[0].color = Color.red;
CarBody[3].GetComponent<Renderer>().materials[0].color = Color.red;
……
}
……
3.4.2 開關(guān)門動畫
開關(guān)門動畫是該次設(shè)計中最核心的部分,它是通過單擊車門實現(xiàn)的,也是汽車展示系統(tǒng)交互動作的重要組成部分。
部分代碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class openDoor : MonoBehaviour {
public? ?bool _OPEN = false;
public float speed = 0.5f;
public Animation _anim;
// Use this for initialization
void Start () {
_anim = this.gameObject.GetComponent<Animation>();
_anim.Stop();
}
// Update is called once per frame
void Update () {
if (_OPEN==true)
{
//當(dāng)沒有播放動畫的時候,播放動畫
if (_anim.isPlaying)
{
_anim.Play();
//-----改變動畫的播放狀態(tài)-----
//動畫的當(dāng)前時間置為初始
_anim["New Animation"].speed = 1;
//動畫的播放速度為正常速度
_OPEN = false;
}
}
else
{
if (_anim.isPlaying)
{
_anim.Play();
//-----改變動畫的播放狀態(tài)-----
//動畫的當(dāng)前時間置為初始
_anim["New Animation"].speed = -1;
//動畫的播放速度為正常速度
_OPEN = true;
}
}
}
}
3 系統(tǒng)測試及發(fā)布
點擊File>Build & Run,在Platform中選擇PC . Mac & Linux Standalone選項,之后點擊Switch Platform,就可以將此工程構(gòu)建為PC端的展示平臺。點擊Build and Run,選擇保存目錄,就可以保存并運行。至此,完成汽車展示系統(tǒng)的制作,見圖5。
4 結(jié)束語
該次基于Unity3D的汽車展示系統(tǒng)的設(shè)計主要研究C#語言編寫代碼,并在Unity3D中實現(xiàn)開關(guān)車門、旋轉(zhuǎn)汽車、更改汽車顏色等交互動作,從而制作出具有多種交互功能的汽車展示系統(tǒng)。隨著互聯(lián)網(wǎng)和電子商務(wù)的發(fā)展,基于Unity3D的虛擬產(chǎn)品展示系統(tǒng)對產(chǎn)品的市場適應(yīng)力具有重要作用,眾多優(yōu)點預(yù)示著,它將會成為未來虛擬展示的重要技術(shù)手段之一。
參考文獻(xiàn):
[1] 朱志超. 虛擬現(xiàn)實展示設(shè)計及其應(yīng)用[J]. 河南科技, 2010(7): 29-30.
[2] 孟祥斌, 王艷敏, 陳圣鵬. 交互式汽車虛擬展示及個性化定制系統(tǒng)設(shè)計與實現(xiàn)[J]. 機(jī)械工程師, 2014(11): 91-94.
[3] 李為. 產(chǎn)品虛擬展示平臺的研究與開發(fā)[D]. 北京: 北京郵電大學(xué), 2014.
[4] Wei Jiang, Teng Fei Dou, Bin Zhou. Web-Based Interactive Visualization of Virtual Reality[J]. Advanced Materials Research, 2013(760): 2542.
[5] 張茜. 基于Unity3D的汽車功能模擬與駕駛場景演示系統(tǒng)的設(shè)計和實現(xiàn)[D]. 南京: 東南大學(xué), 2016.
[6] 張冬寒, 司占軍. 基于WebGL技術(shù)的游戲設(shè)計與制作[J]. 電腦知識與技術(shù), 2017, 13(9): 193-194.