謝新慧 司占軍 尚博
摘要:該研究實現(xiàn)了基于移動終端的家居互動展示系統(tǒng)。通過Auto CAD創(chuàng)建房屋的戶型圖,利用3d max創(chuàng)建建筑物以及所有家具的三維模型,并在Photo shop中對家具及建筑物貼圖進行修飾,最后導入到unity中實現(xiàn)房屋漫游以及其他交互功能。在最終的展示系統(tǒng)中,用戶可以任意進入家具城、品牌家具的網上展廳,并以第一人稱的角度對家具城里的家具進行參觀。同時,用戶可以根據自己的意愿選擇某個家具,對其進行移動,旋轉等操作,實現(xiàn)近距離觀看家具的功能。
關鍵詞:虛擬現(xiàn)實;家具互動;房屋漫游
中圖分類號:TP319 文獻標識碼:A 文章編號:1009-3044(2018)15-0209-03
隨著科技飛速發(fā)展,人們的生活質量不斷提高[1]。人們早已不能滿足二維的平面世界,虛擬現(xiàn)實技術(VR技術)應運而生[2]。虛擬現(xiàn)實技術是把現(xiàn)實世界構建成一個新的3D虛擬立體模型,用戶可以借用第三方設施或設備體驗身臨其境的處于所構建的3D模型中[1]。VR技術打破了很久以來的平面展示系統(tǒng)的限制,它利用自己所創(chuàng)建的立體仿真環(huán)境的優(yōu)點在很多領域占有一席之地。比如現(xiàn)在的房地產業(yè),客戶看到的不僅僅是簡單的戶型圖,或者是房屋的室內照片,而是以第一人稱的視角,真正進入到自己喜歡的房屋內進行游覽、觀看。對房屋的各個部位和角落都可以清楚地了解。另外,對家具的擺放和布局也可以有一個清楚地了解。
基于移動終端的家具互動展示系統(tǒng),顧名思義,就是把某一個戶型和家具在移動終端上展示出來的系統(tǒng)[2],這里的移動終端可以是平板電腦,手機等。在向用戶展示的過程中,用戶可以完成與家具的簡單交互,比如對家具進行簡單的移動,旋轉等。在該系統(tǒng)中,人們可以全方位地了解自己喜歡的戶型,并且對戶型里面的家具也可以有比較明確的了解。
1 開發(fā)環(huán)境與軟件
制圖環(huán)境: Windows 8系統(tǒng),Intel(R) Core(TM)i7 CPU ,4G內存,64位操作系統(tǒng)
建模環(huán)境:Windows 8系統(tǒng),Intel(R) Core(TM)i7 CPU ,4G內存,64位操作系統(tǒng)
開發(fā)環(huán)境:Windows 7系統(tǒng),Intel(R) Core(TM)i7 CPU ,4G內存,64位操作系統(tǒng)
制作軟件: Auto CAD 2014、3ds Max 2014、Unity 5.6.1f1 (64-bit)、Photo shop cc
2 設計思路
首先進行市場調研,了解虛擬家裝的應用市場,確定所要建立的戶型結構以及搜集相關的貼圖素材。然后在3ds Max中進行建模并實現(xiàn)相應的渲染效果。在Unity3D中實現(xiàn)后期交互功能,并進行發(fā)布及性能的測試。
3 設計與實現(xiàn)
3.1 前期準備工作
對整個虛擬家裝市場進行調研,根據市場需求制定出相應的策劃方案。同時通過書籍的查閱和互聯(lián)網查詢來收集相關貼圖和模型素材,并下載相關軟件,儲備相關知識,為后期制作做好充分準備[3]。
3.2 房屋模型的構建
房屋模型構建過程分為三部分,房子的戶型建立、門窗的建立、家具及電器模型的建立。
房子的戶型建立。首先在3D MAX設置毫米為基本單位。然后,將CAD戶型圖拖入3D MAX的透視圖中,先描輪廓,并選擇校準工具將描好的輪廓進行校準,使用捕捉工具將所有點的橫坐標和縱坐標對齊到一個點上。將戶型圖描好并且校準之后,選中戶型圖,右鍵選擇“轉換為可編輯多邊形”,然后選擇“邊”工具,隨后選擇“擠出”工具,將戶型擠出為立體狀,高度設置為2550mm,房屋的墻體則建立完畢。如圖2所示。
門窗的建立。在建立門模型時,為了整個門呈現(xiàn)動態(tài),需要制作為打開的狀態(tài),首先要選中這個門,利用“捕捉”工具,將門旋轉,并且移動到門框的邊上,即可實現(xiàn)。如圖3所示。在建立窗戶時,關鍵在于玻璃材質的參數設置,為了渲染出逼真的玻璃效果,在這里要指定Vray渲染器并選用Vray材質。具體參數如下:漫反射設置為116,141,196;反射參數為22,22,22;反射高光為0.95;折射參數為200,200,200;折射光澤度為0.9。
部分家具及電器模型的建立。為了在展示系統(tǒng)中呈現(xiàn)逼真的效果,家具的建模需要精細一些,對每個家具進行建模之前要了解其構造,進行有步驟有層次地建模過程。如圖4所示是制作完成的椅子。
3.3 模型的貼圖重建
在家具互動展示系統(tǒng)中,主要對以下四部分進行貼圖:房屋內部墻體的貼圖、門和窗戶的貼圖、所有的家具以及部分電器的貼圖以及地面的貼圖。貼圖需要“材質編輯器”命令來實現(xiàn)。在3D MAX中可以執(zhí)行“渲染”—“材質編輯器”命令,或者在主工具欄中單擊“材質編輯器”命令按鈕。目前材質編輯器有“材質編輯器”和“Slate材質編輯器”兩種。在這里使用“精簡材質編輯器”,然后將提前搜集好的貼圖素材賦予不同的模型,實現(xiàn)最終的貼圖效果。
3.4 場景設計與相關腳本的編寫
將模型導入到unity中后,可能會存在貼圖大量丟失等問題,這時就需要進行重新貼圖。首先在assets文件夾的models文件夾下建立新的文件夾,命名為materials,然后把所有貼圖素材放在文件夾里面,用英文名稱命名。完成之后,將materials貼圖文件夾復制到unity的根目錄下,然后再導入由3D MAX生成的 fbx格式的文件,模型就自動恢復成先前的貼圖。
建模過程和貼圖渲染過程結束后,需要在Unity3D中實現(xiàn)房屋漫游和交互效果。房屋漫游是第一人稱攝像機的自由移動過程,在該過程的設置中要注意的是房屋和家具要設置“碰撞”效果,這樣可以防止人物的“穿墻”效果和“掉落”現(xiàn)象。交互過程是用戶和家具的交互,用戶可以通過點擊家具實現(xiàn)家具的簡單移動和旋轉[4]。而漫游和交互功能需要通過編寫腳本代碼來實現(xiàn),腳本如下:
1)漫游腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveObject : MonoBehaviour {
public Vector3 pos;
public Quaternion rot;
// Use this for initialization
void Start () {
pos = this.transform.position;
rot = this.transform.rotation;
}
}
2)交互效果腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public GameObject OBJECTS, PROPS, target, btn_quit;
public Transform this_cam;
public Rigidbody this_rigid;
public EasyJoystick stick_move, stick_rotate;
public bool isMobileControl = false, canMove = true;
private Vector3 pos;
private Quaternion rot;
private float speed = 3.0f, sideSpeed = 1.5f;
// Use this for initialization
void Start () {
pos = this.transform.localPosition;
rot = this.transform.localRotation;
}
// Update is called once per frame
void Update () {
if (!isMobileControl)
MovePlayer ();
Shoot ();
}
private void MovePlayer(){
if (canMove) {
Screen.lockCursor = true;
if (Input.GetKey (KeyCode.W)) {
this.transform.Translate (Vector3.forward * speed * Time.deltaTime);
} else if (Input.GetKey (KeyCode.S)) {
this.transform.Translate (Vector3.back * speed * Time.deltaTime);
}
if (Input.GetKey (KeyCode.A)) {
this.transform.Translate (Vector3.left * sideSpeed * Time.deltaTime);
} else if (Input.GetKey (KeyCode.D)) {
this.transform.Translate (Vector3.right * sideSpeed * Time.deltaTime);
}
} else {
Screen.lockCursor = false;
}
}
private void Shoot(){
if (Input.GetMouseButtonDown (0)) {
Ray ray = new Ray();
RaycastHit hit;
if (!isMobileControl) {
ray = new Ray (this_cam.position, this_cam.forward);
} else {
ray = this_cam.transform.GetComponent
}
if (Physics.Raycast (ray, out hit, 100.0f, ~(1 << 5))) {
if (hit.collider.transform.GetComponent
target = hit.collider.gameObject;
OBJECTS.SetActive (false);
for (int i = 0; i < PROPS.transform.childCount; i++) {
PROPS.transform.GetChild (i).gameObject.SetActive (false);
}
target.SetActive (true);
btn_quit.SetActive (true);
canMove = false;
this_rigid.useGravity = false;
this_rigid.isKinematic = true;
stick_move.XAxisTransform = target.transform;
stick_move.YAxisTransform = target.transform;
stick_rotate.XAxisTransform = target.transform;
stick_rotate.YAxisTransform = target.transform;
} else if (hit.collider.tag == "UI") {
return;
}
}
}
}
public void QuitEditMode(){
target.transform.position = target.transform.GetComponent
target.transform.rotation = target.transform.GetComponent
target = null;
//this.transform.localPosition = pos;
//this.transform.localRotation = rot;
OBJECTS.SetActive (true);
for (int i = 0; i < PROPS.transform.childCount; i++) {
PROPS.transform.GetChild (i).gameObject.SetActive (true);
}
btn_quit.SetActive (false);
canMove = true;
this_rigid.useGravity = true;
this_rigid.isKinematic = false;
stick_move.XAxisTransform = this.transform;
stick_move.YAxisTransform = this.transform;
stick_rotate.XAxisTransform = this.transform;
stick_rotate.YAxisTransform = this_cam;
}
}
3.5 測試及發(fā)布
功能實現(xiàn)后在工具欄中點擊“播放”按鈕進行場景的初步測試,觀察模型與貼圖是否符合實際情況[5]。保存之后,使用快捷鍵“CTRL+ALT+B”, 導出“EXE”文件。然后運行“EXE”文件,測試軟件是否能夠正常運行,同時注意內容是否完整以及所有的功能是否都能實現(xiàn)。在檢查無誤后,選擇文件左上角的file工具欄,點擊Build Settings,然后點擊Android,把作品發(fā)布到Android手機上。
4 總結
本設計利用Auto CAD 、3ds MAX、Unity3D軟件對家具展示系統(tǒng)App進行設計及開發(fā),實現(xiàn)了家具的虛擬交互展示[6]。在后續(xù)開發(fā)中,可以使用VR眼鏡,達到更好的沉浸式的漫游體驗?;贏ndroid平臺的App應用程序,讓使用者可以更生動和直觀的展示家具工藝、造型、裝飾等藝術風格。
參考文獻:
[1] 石寧. 淺談建筑施工管理創(chuàng)新策略[J]. 房地產導刊, 2015(34).
[2] 趙鵬程. 虛擬現(xiàn)實中三維動畫建模方法的研究[J]. 信息與電腦, 2016(19): 59-60.
[3] 張姣姣, 董明治, 司占軍. 兒童三維互動讀物的設計與制作[J]. 電腦知識與技術, 2017.
[4] 唐蕾, 林作新, 張亞池. 家具產品互動設計中的行為本質研究[J]. 家具與室內裝飾, 2016(10): 20-23.
[5] 董春俠, 司占軍. 基于Unity3D的虛擬校園App設計與開發(fā)[J]. 軟件導刊, 2017(2): 94-96.
[6] 郭海新. 基于Unity3D的在線家具展示系統(tǒng)的實現(xiàn)[J]. 商情, 2017(47).