基于移动终端的家具互动展示系统的应用研究

2018-07-28 07:18谢新慧司占军尚博
电脑知识与技术 2018年15期
关键词:虚拟现实

谢新慧 司占军 尚博

摘要:该研究实现了基于移动终端的家居互动展示系统。通过Auto CAD创建房屋的户型图,利用3d max创建建筑物以及所有家具的三维模型,并在Photo shop中对家具及建筑物贴图进行修饰,最后导入到unity中实现房屋漫游以及其他交互功能。在最终的展示系统中,用户可以任意进入家具城、品牌家具的网上展厅,并以第一人称的角度对家具城里的家具进行参观。同时,用户可以根据自己的意愿选择某个家具,对其进行移动,旋转等操作,实现近距离观看家具的功能。

关键词:虚拟现实;家具互动;房屋漫游

中图分类号:TP319 文献标识码:A 文章编号:1009-3044(2018)15-0209-03

随着科技飞速发展,人们的生活质量不断提高[1]。人们早已不能满足二维的平面世界,虚拟现实技术(VR技术)应运而生[2]。虚拟现实技术是把现实世界构建成一个新的3D虚拟立体模型,用户可以借用第三方设施或设备体验身临其境的处于所构建的3D模型中[1]。VR技术打破了很久以来的平面展示系统的限制,它利用自己所创建的立体仿真环境的优点在很多领域占有一席之地。比如现在的房地产业,客户看到的不仅仅是简单的户型图,或者是房屋的室内照片,而是以第一人称的视角,真正进入到自己喜欢的房屋内进行游览、观看。对房屋的各个部位和角落都可以清楚地了解。另外,对家具的摆放和布局也可以有一个清楚地了解。

基于移动终端的家具互动展示系统,顾名思义,就是把某一个户型和家具在移动终端上展示出来的系统[2],这里的移动终端可以是平板电脑,手机等。在向用户展示的过程中,用户可以完成与家具的简单交互,比如对家具进行简单的移动,旋转等。在该系统中,人们可以全方位地了解自己喜欢的户型,并且对户型里面的家具也可以有比较明确的了解。

1 开发环境与软件

制图环境: Windows 8系统,Intel(R) Core(TM)i7 CPU ,4G内存,64位操作系统

建模环境:Windows 8系统,Intel(R) Core(TM)i7 CPU ,4G内存,64位操作系统

开发环境:Windows 7系统,Intel(R) Core(TM)i7 CPU ,4G内存,64位操作系统

制作软件: Auto CAD 2014、3ds Max 2014、Unity 5.6.1f1 (64-bit)、Photo shop cc

2 设计思路

首先进行市场调研,了解虚拟家装的应用市场,确定所要建立的户型结构以及搜集相关的贴图素材。然后在3ds Max中进行建模并实现相应的渲染效果。在Unity3D中实现后期交互功能,并进行发布及性能的測试。

3 设计与实现

3.1 前期准备工作

对整个虚拟家装市场进行调研,根据市场需求制定出相应的策划方案。同时通过书籍的查阅和互联网查询来收集相关贴图和模型素材,并下载相关软件,储备相关知识,为后期制作做好充分准备[3]。

3.2 房屋模型的构建

房屋模型构建过程分为三部分,房子的户型建立、门窗的建立、家具及电器模型的建立。

房子的户型建立。首先在3D MAX设置毫米为基本单位。然后,将CAD户型图拖入3D MAX的透视图中,先描轮廓,并选择校准工具将描好的轮廓进行校准,使用捕捉工具将所有点的横坐标和纵坐标对齐到一个点上。将户型图描好并且校准之后,选中户型图,右键选择“转换为可编辑多边形”,然后选择“边”工具,随后选择“挤出”工具,将户型挤出为立体状,高度设置为2550mm,房屋的墙体则建立完毕。如图2所示。

门窗的建立。在建立门模型时,为了整个门呈现动态,需要制作为打开的状态,首先要选中这个门,利用“捕捉”工具,将门旋转,并且移动到门框的边上,即可实现。如图3所示。在建立窗户时,关键在于玻璃材质的参数设置,为了渲染出逼真的玻璃效果,在这里要指定Vray渲染器并选用Vray材质。具体参数如下:漫反射设置为116,141,196;反射参数为22,22,22;反射高光为0.95;折射参数为200,200,200;折射光泽度为0.9。

部分家具及电器模型的建立。为了在展示系统中呈现逼真的效果,家具的建模需要精细一些,对每个家具进行建模之前要了解其构造,进行有步骤有层次地建模过程。如图4所示是制作完成的椅子。

3.3 模型的贴图重建

在家具互动展示系统中,主要对以下四部分进行贴图:房屋内部墙体的贴图、门和窗户的贴图、所有的家具以及部分电器的贴图以及地面的贴图。贴图需要“材质编辑器”命令来实现。在3D MAX中可以执行“渲染”—“材质编辑器”命令,或者在主工具栏中单击“材质编辑器”命令按钮。目前材质编辑器有“材质编辑器”和“Slate材质编辑器”两种。在这里使用“精简材质编辑器”,然后将提前搜集好的贴图素材赋予不同的模型,实现最终的贴图效果。

3.4 场景设计与相关脚本的编写

将模型导入到unity中后,可能会存在贴图大量丢失等问题,这时就需要进行重新贴图。首先在assets文件夹的models文件夹下建立新的文件夹,命名为materials,然后把所有贴图素材放在文件夹里面,用英文名称命名。完成之后,将materials贴图文件夹复制到unity的根目录下,然后再导入由3D MAX生成的 fbx格式的文件,模型就自动恢复成先前的贴图。

建模过程和贴图渲染过程结束后,需要在Unity3D中实现房屋漫游和交互效果。房屋漫游是第一人称摄像机的自由移动过程,在该过程的设置中要注意的是房屋和家具要设置“碰撞”效果,这样可以防止人物的“穿墙”效果和“掉落”现象。交互过程是用户和家具的交互,用户可以通过点击家具实现家具的简单移动和旋转[4]。而漫游和交互功能需要通过编写脚本代码来实现,脚本如下:

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 ().ScreenPointToRay (Input.mousePosition);

}

if (Physics.Raycast (ray, out hit, 100.0f, ~(1 << 5))) {

if (hit.collider.transform.GetComponent () != null) {

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 ().pos;

target.transform.rotation = target.transform.GetComponent ().rot;

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 测试及发布

功能实现后在工具欄中点击“播放”按钮进行场景的初步测试,观察模型与贴图是否符合实际情况[5]。保存之后,使用快捷键“CTRL+ALT+B”, 导出“EXE”文件。然后运行“EXE”文件,测试软件是否能够正常运行,同时注意内容是否完整以及所有的功能是否都能实现。在检查无误后,选择文件左上角的file工具栏,点击Build Settings,然后点击Android,把作品发布到Android手机上。

4 总结

本设计利用Auto CAD 、3ds MAX、Unity3D软件对家具展示系统App进行设计及开发,实现了家具的虚拟交互展示[6]。在后续开发中,可以使用VR眼镜,达到更好的沉浸式的漫游体验。基于Android平台的App应用程序,让使用者可以更生动和直观的展示家具工艺、造型、装饰等艺术风格。

参考文献:

[1] 石宁. 浅谈建筑施工管理创新策略[J]. 房地产导刊, 2015(34).

[2] 赵鹏程. 虚拟现实中三维动画建模方法的研究[J]. 信息与电脑, 2016(19): 59-60.

[3] 张姣姣, 董明治, 司占军. 儿童三维互动读物的设计与制作[J]. 电脑知识与技术, 2017.

[4] 唐蕾, 林作新, 张亚池. 家具产品互动设计中的行为本质研究[J]. 家具与室内装饰, 2016(10): 20-23.

[5] 董春侠, 司占军. 基于Unity3D的虚拟校园App设计与开发[J]. 软件导刊, 2017(2): 94-96.

[6] 郭海新. 基于Unity3D的在线家具展示系统的实现[J]. 商情, 2017(47).

猜你喜欢
虚拟现实
论虚拟现实艺术的“沉浸”
REALITY BITES
虚拟现实产业进入高速发展期
虚拟现实技术向科幻小说借灵感
虚拟现实:另一个真实世界
诺基亚推出虚拟现实摄像机OZO
虚拟现实炫酷来袭走出实验室坎坷漫长
浅谈虚拟现实