謝新慧 司占軍 劉恩銳



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