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

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:neverer123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该研究实现了基于移动终端的家居互动展示系统。通过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).
其他文献
跳起欢乐的蹉蹉舞,弹起悠扬的四弦琴。普米族的姑娘与小伙,多么快乐多么温馨。四弦琴呀多么迷人,一段恋情传颂古今。从前有个小伙叫阿布,恋上了阿乃操碎了心。
目的改进乳块消片中丹参素钠含量测定的提取方法,优化测定条件。方法采用反相高效液相色谱法,选用Ultimate AQ-C18色谱柱,流动相为乙腈-甲醇-水-冰醋酸(0.5∶8∶92∶1),流速为1
提起农资连锁,业内几乎都会先想到苏农连锁,因为自上个世纪末,苏农就已经开始了农资连锁的探索,对连锁网点进行“六统一”连锁管理:即统一采购配送、统一经营管理、统一标识品牌、
目的建立中药材中有机磷和氨基甲酸酯农药残留的快速检测方法。方法采用2种提取方法,用农药速测卡测定中药材中农药残留量。结果对有机磷和氨基甲酸酯农药有较好的选择性,最
遥望大江莽莽地横流,谁在洞庭湖上唱晚舟。风吹依依杨柳,月照相思渡口。恰似你—低头的温柔,为我守候。
藏族民间歌谣历史悠久,源远流长,在祖国浩瀚的民间文学海洋可谓是一颗闪烁的珍宝。居住在怒江山脉和云岭山脉的德钦藏族人民,在漫长的社会生活斗争中,创作了不朽的民间艺术,
茅草屋,篱笆墙,你的旧模样,树木少,道路窄,有点荒凉,辛勤的父母起早贪黑,把滚烫的汗珠播进田野洒向山岗。故乡呀故乡,你有什么魅力?让人穷也难舍,苦也守望。
滩涂的芦苇青了又黄,丹顶鹤冬去春来度春光,海风阵阵总在呼唤,乌云片片总想泪淌,难忘那位黑龙江姑娘,她的灵魂天天在飞翔,北方嫁给南方,他乡久了就是故乡。
在系列“国培班”的培训过程中,学员们最感兴趣、收获最大的培训形式是专家引领下的共同备课:7-10住学员围坐一起,在1-2位专家指导和引领下,就某篇课文畅谈自己备课中的困惑和想
语文学科是人文性很强的一门学科,它的临门一脚不在于做多少试题,而在于回归阅读与写作的本质。在大阅读观的统领下,让学生在构全知识网络的基础上实现阅读写作能力的质的飞跃。  一、大小阅读  【重点】通读文本,深读文本。  【策略】四个方面。  1.精选典型的文章,涵盖各种类型的文章  加强对学生整体阅读的指导,强调“裸读”。所谓裸读,是指不给题目的文本阅读,指导学生从标题、行文思路、主旨思想、写作技巧