当前位置: 首页 > article >正文

基于unity的多人家装应用的设计与实现

摘要

本课题根据主流家装应用存在的问题和结合了Unity3D引擎所具有的优势,在主流家装应用的基础上弥补了常见的缺憾,实现了一种新型的交互更强的家装展示系统。

本系统主要通过将家具模型资源和材质等资源导入Unity3D平台中,通过C#代码开发,搭建UGUI框架,实现室内漫游、家具替换、墙体地面材质的更换,场景烘焙,光照渲染等一系列操作让用户与本系统具有更灵活的互动体验。

为了满足家居的多样性和用户不同的需求,本系统还通过XLua脚本语言结合Unity的AssestBundle资源加载实现了后期的模型、材质等资源的注入,无需重新打包安装本系统。使用户的体验感更强。考虑到室内设计往往涉及到伴侣和亲人的共同心愿,要满足彼此共同的需求,因此,本系统还设计了多人互联模式,用户之间可以共同打造和设计彼此都称心如意的室内环境。

在当前这个足不出户的时代,本系统可以为有室内改造需求的用户提供一种高效方案且更符合用户心意的方案。让用户足不出户便可以直观看到成品的效果图和心理预期。

关键词

Unity3D;XLua;AssestBundle;室内设计

Abstract

  This paper analyzes the problems existing in home decoration application and combines the advantages of unity3d to realize a new 3D visual home decoration display system.

The system mainly imports the home decoration model resources, materials and other resources into the unity3d platform, builds the ugui framework through c# code development, and realizes a series of operations such as indoor roaming, furniture replacement, wall and ground material replacement, lighting rendering, etc., so that users can get an interactive experience.

In order to meet the diversity of the home and the different needs of users, the system also realizes the injection of resources such as models and materials in the later stage through xlua script language combined with the Assestbundle resource loading of unity, without repackaging and installing the system. Make users feel more experienced. Considering that interior design often involves the common wishes of partners and relatives to meet each other's common needs, the system also designs a multi person interconnection mode, so that users can jointly create and design an indoor environment satisfactory to each other.

In the current era of staying at home, this system can provide users with an efficient scheme and a scheme more in line with users' wishes. Users can intuitively see the effect picture and psychological expectation of the finished product without leaving home.  

Key words

Unity3D; XLua; AssestBundle; Hardware 

目录

摘要

Abstract

第一章 前言

1.1 研究背景与意义

1.1.1研究背景

1.1.2研究意义

1.2国内外研究现状

1.2.1国内研究现状

1.2.2国外研究现状

1.3相关技术介绍

1.3.1 Unity3D

1.3.2开发语言

1.3.3 MySql数据库

1.4论文组织结构

第二章 需求分析

2.1可行性研究

2.1.1经济可行性分析

2.1.2技术可行性分析

2.1.3操作可行性

2.2系统功能模型

2.2.1系统构成

2.2.2系统用例模型

2.3模块用例描述

2.3.1登录模块用例描述

2.3.2注册模块用例描述

2.3.3 UI管理模块用例描述

2.3.4物品管理模块用例描述

2.3.5 JSON数据传输模块用例描述

2.3.6角色管理模块用例描述

2.本章小结

第三章 系统总体设计

3.1系统总体设计

3.1.1模块设计原则

3.1.2系统结构图

3.2系统详细设计

3.2.1用户注册登录

3.2.2家装场景切换

3.2.3家具交互

3.3数据库设计

3.3.1数据库概念模型设计

3.3.2数据库表设计

3.3本章小结

第四章 系统详细设计与实现

4.1系统功能模块设计与实现

4.2客户端模块

4.2.1 UI管理

4.2.2场景切换

4.2.3家具交互

4.2.4热更新与资源加载

4.3服务器端模块

4.3.1连接服务器

4.3.2连接数据库

4.3.3 JSON编码解码

4.4本章小结

第五章 系统测试

5.1测试的目的与意义

5.2测试方法

5.3测试过程

5.3.1用户注册测试

5.3.2用户登录测试

5.3.3场景跳转功能测试

5.3.4家具交互功能测试

5.3.5存档功能测试

5.4本章小结

结论

参考文献

致谢

第一章 前言

近年来,随着人们的物质生活越来越好,对于家庭的居住环境就有了一定的需求和Unity3D在游戏和建筑可视化等行业的兴起,为传统室内设计和家装的发展与改革提供了良好的条件。毛泽东在《矛盾论》中这样说:外因是变化的条件,内因是变化的根据。外因通过内因而起作用。在以往的传统装修过程中,需要家装客户和室内设计师进行反复推敲制定的三维效果图的设计。如果家装客户的想法与之前的设计有新的想法时,三维效果图就需要重新设计,修改的频率过多时,就会消耗大量的时间和金钱。为了快速便利的满足客户需求。一种更快捷高效,且成本更低的Unity多人家装应用由此被设计出来。

1.1 研究背景与意义

1.1.1研究背景

随着经济水平的提高,人民的生活水平也都大幅度上升。大家对于家庭的居住环境的要求也越来越高,都希望自己有一个温馨舒适的家。一般情况下的室内设计会制作出大概的施工效果图给户主看,但效果图也都是二维的,静态的。如果有的楼盘是精装修楼盘,为了吸引消费者,需要先将房屋内部装修实际做出来,然后让消费者上门看房,需要大量的人力物力财力。消费者是希望可以方便的观察到尽可能多的房屋装修的实际效果,并且可以免去反复的来回看房的复杂流程。所以制作三维的室内设计展示程序很有意义。在过去制作三维家装参观由于技术有限,具有一定的难度。近几年三维技术也快速发展,Unity3D成为当下的流行的三维物理引擎,使得实现三维家装展示也成为可能。

1.1.2研究意义

近几年来,Unity3D在国内的流行和应用,大家都开始关注这款游戏引擎的附加价值,或者在除游戏场景外的应用,如果将普通室内设计,看房模式转化为基于Unity的室内三维参观,就如同打游戏一样在一个三维空间中来回走动,观察房屋设计的各个角落和效果,一定会受到消费者的欢迎。相比于传统的看房模式,这种模式简单,方便,节约成本,符合现代人的生活习惯。进一步提高参观感受还可以加上大型显示设备,让参观者真正达到身临其境的效果。本课题所设计的多人家装展示程序不仅参观便捷,并且运用三维技术和游戏引擎,还可以做到简单的人机交互,可以直观且有趣的进行参观。

1.2国内外研究现状

1.2.1国内研究现状

()家装设计在国内的发展

家装设计为建筑业的一大分支,在美化室内环境、完善建筑方面有着重要作用。而家装行业在以往的传统装修过程中,需要家装客户和室内设计师进行反复的三维效果图的设计。如果家装客户的想法与之前的设计有新的想法时,三维效果图就需要重新设计,修改的频率过多时,就会消耗大量的时间和金钱。国内关于Unity3D技术的研究是迫在眉睫,但同国外发达国家相比,我国在此方向上的研究还有很长的路要走,随着我国高新技术飞速发展的速度越来越快,Unity3D技术已越来越被业界人员所重视,正逐渐地被社会所关注,并处于研究与应用中。同时也受到了国家的关注,并制定了关于开展Unity3D技术的研究工作。呼吁国内科研机构、企业以及高校纷纷投入到Unity3D技术的研究工作当中。在最近几年来nity3D技术的研究及应用都取得了蓬勃的发展。Unity3D技术在我国的发展更如雨后春笋般茁壮成长。应用也更加广泛,在军事、教育、医疗、培训、工程等各个领域中都有所应用[1]

(二)家装设计软件在国内的现状

目前,在国内是以打扮家、91家居装修软件比较流行,其特点是操作简单以及功能强大,因此受到用户的青睐。该软件将设计、创造、分享集于一身,支持用户上传自己设计好的三维模型,同时具备光线渲染、素材库、户型库、一键生成户型功能等,但是存在渲染效果不佳,没有虚拟现实的真实感,无法沉浸于虚拟现实中。

1.2.2国外研究现状

(一)家装设计在国外的发展与现状

当前国外最为流行的室内装修软件当属 Sweet Home 3D,Sweet Home 3D是一款免费的家装辅助设计软件。它能帮助用户通过二维的家居平面图来设计和布置家具,还可以用三维的视角浏览整个装修布局的全貌。该软件内置了很多户型提供给用户使用,只需拖拽到绘画区域就可以自动下载你需要的户型,给非专业的用户提供了自己设计户型的能力。与此同时,用户还可以进入到户型当中,进行第一人称视角的浏览,极大地增强了用户的体验度。国内外的家装软件,虽然能满足常见的场景渲染、场景漫游、户型绘制、模型操作等功能,但是,缺少场景的真实感,模型加载速度过慢、模型数量少、人机交互体验不友好等缺点。

(二)家装设计软件在国外的现状

通过几十年的研究实践证明,国外室内设计相对于与建筑结构、建筑体系打交道所花费的心思要多得多,也要求加强室内设计实践更有针对性、导向性。[1]从90年代至今,国外家装设计呈现出的一大特点就是改变空间感,而空间是室内环境的最大财富,要尽可能通过硬性或软性地处理手法来增加室内的空间感,换而言之,就是通过设计使室内空间看起来更舒服、更方便。[1]当前的室内空间装饰为彰显出人居环境特点,而需要追寻返璞归真,体现使用人与室内空间物体的原貌[1]。当前国外最为流行的室内装修软件当属 Sweet Home 3D,Sweet Home 3D是一款免费的家装辅助设计软件。它能帮助用户通过二维的家居平面图来设计和布置家具,还可以用三维的视角浏览整个装修布局的全貌。该软件内置了很多户型提供给用户使用,只需拖拽到绘画区域就可以自动下载你需要的户型,给非专业的用户提供了自己设计户型的能力。与此同时,用户还可以进入到户型当中,进行第一人称视角的浏览,极大地增强了用户的体验度。国内外的家装软件,虽然能满足常见的场景渲染、场景漫游、户型绘制、模型操作等功能,但是,缺少场景的真实感,模型加载速度过慢、模型数量少、人机交互体验不友好等缺点。

1.3相关技术介绍

1.3.1 Unity3D

Unity3D是由 Unity Technologies开发的多平台、综合型、全面整合的专业游戏引擎。Unity3D是一款图形化的开发环境,它最大的特点是交互性与Director,Blendergame Engine,Virtools或Torque Game Builder 等类似,其编辑器可运行在MicrosoftWindows和 MacOS X 下,可发布游戏至Microsoft Windows、Mac、Wii、iPhone、Windowsphone8和Android等多种平台。

Unity3D的特色包括对DirectX和OpenGL拥有高度优化的图形渲染管道,内置的NVIDIA PhysX物理引擎,提供了具有柔和阴影与烘焙的高度完善的光影渲染系统,实时三维图形混合音频流、视频流等。这些强大的功能使Unity3D越来越普及,适用面越来越广。在该项目中,开发工作大部分是在 Unity3D中实现的。

1.3.2开发语言

本系统主要是使用Unity引擎开发为主,所以采用了最适用于unity的原生语言C#作为主要开发语言。

其次,由于后期需要大量的资源注入,所以,热更新是必要的。这里采用了腾讯维护的Xlua。用以实现后期的资源热更新。

同时,XLua与C#互相调用实现热更新也有了十分成熟框架与方案,这也是我选择C#和XLua作为本系统开发语言的重要原因。

1.3.3 MySql数据库

数据库是研究数据管理的技术。即如何妥善保存和科学地管理数据。数据管理是指对数据进行分类、组织,编码、存储、检索和维护等操作。本课题使用MySQL作为其数据库,MySQL是Microsoft中相对较好的数据库系统,适用于中小型数据库。之所以使用MySQL,是因为它可以容纳很多用户同时进行访问,并且会对数据进行分类处理,然后存在对应的表中。MySQL可以满足用户和一般网站的数据管理,在系统管理结构优化升级上具有很好地效果,而且因为MySQL可以满足开放性源代码的分析,因此在数据的分析和系统设计上效率高、科学性好。

1.4论文组织结构

本文主要内容与结构共有五章,梗概如下:

第一章 前言,主要介绍系统的开发背景、意义和国内外的研究现状以及相关技术简介和论文主要工作以及论文的组织结构。

第二章 需求分析,包含了各个模块的用例描述以及可行性分析,包含经济、操作、技术可行性等。

第三章 系统总体设计,主要介绍了本系统的实现原则、功能设计和数据库设计。

第四章 系统实现,主要介绍了服务器端模块和客户端模块的实现和表现效果。

第五章 系统测试,对本系统的各个模块用例等进行测试。 

最后是本文的结论部分,对论文的工作及成果进行总结。


第二章 需求分析

需求分析是系统开发的一个重要的环节,需求分析是系统开发的依据,也是开发人员掌握用户需求的依赖场所,需求分析的好坏直接影响开发人员的开发进度和开发质量。随着人们对生活环境的要求越来越高时,如何设计一款能够满足大众对室内设计的系统成为关键。

2.1可行性研究

在系统或者软件开发之前要进行可行性分析。可行性研究的基本任务,是项目的主要问题,从技术经济等角度进行全面的分析研究,并对其产生的经济效果进行预测,在既定的范围内进行方案论证的选择,以便最合理地利用资源,达到预定的效益。本节将分别从经济,技术,实现等方面进行了可行性分析。

2.1.1经济可行性分析

传统的室内设计都是通过设计师设计草图,然后会制作出大概的施工效果图给户主看,但效果图也都是二维的,静态的。如果有的楼盘是精装修楼盘,为了吸引消费者,就会制作样板房,需要先将房屋内部装修实际做出来,然后让消费者上门看房,需要大量的人力物力财力。但是消费者是希望可以方便的观察到尽可能多的房屋装修的实际效果,并且免去反复的来回看房的复杂流程。而本系统开发的目的是减少传统方式的财务成本,所以具有可执行性。

2.1.2技术可行性分析

本课题是基于三维设计和游戏软件的家装设计及其展示,涉及到人们日常生活家庭装潢中的样板房参观的情景。此次我的课题还融入了当下流行的虚拟现实技术。由于原来的传统样板房参观模式不仅需要费时费力搭建好样板房,客户参观时也受时间、地点的限制,浪费了人力、物力、财力的同时还极为不便。因此我认为可以将Unity的3D渲染技术运用到样板房参观系统中,这样不仅参观便捷,并且节省成本。设计房屋的主题包含各种各样的风格,更适合年轻家庭。我运用3DMax设计样板房模型,运用Unity3D技术模拟真实参观场景,使得参观者可以与我所设计的房屋模型进行人机交互,提高他们的参观体验。具有技术可行性。

2.1.3操作可行性

室内家装系统采用Unity引擎使用C#语言进行开发,基于MVC框架进行设计,在开发上轻快、便捷,跨平台运行上也有Unity提供的现成方案,只需要在发布时选择不用的发布平台即可,不需要其他的软件的支持和辅助,极大的方便了开发者的使用和后期维护。

2.2系统功能模型

2.2.1系统构成

室内家装设计系统主要包括两个部分,分别是客户端和服务器端,室内家装设计系统通过系统客户端收集到用户填写的登陆信息,然和再与服务器端已存在数据进行比对判定。如表2-1主要构成表所示。

表2-1 主要构成表

序号

词汇

描述

1

客户端

进入室内家装设计系统后可以进行登陆、注册、查看样板间、新建设计、室内家具交互、多人联机、存档读档的操作

2

服务器端

服务器端主要进行进行系统的数据的比对、操作用户信息、读取存档信息的操作

2.2.2系统用例模型

家装系统的整体用例模型如图2-1所示。

图2-1系统整体用例模型图

基于Unit室内家装设计系统主要分为两个模块和七个子模块,下面对各个模块做具体说明:

1.客户端:

注册:用户首次进入本系统执行注册操作,在本系统申请个人账户,向服务器端发送个人账户信息。 

登录:用户在已有账户后,执行登录操作,向服务器端发送个人数据,核对信息。

新建场景:用户通过登录进入本系统后可以新建自己喜欢的房型。

创建家具:在新建场景后,用户可以在该场景中创建新的家具。

家具交互:用户在新建家具后,可以选择这些创建的家具,对他们进行操作,包括替换、删除、旋转、移动、更换材质等。

JSON数据:当用户即将退出新建场景后,本系统会提示是否保存当前场景的设计,如果保存,则将这些设计数据转换为JSON数据发送至服务器端进行保存。

样板间参观:新用户如果没有自己创建场景的需求,也可以参观本系统提供的样板间进行设计风格的选择。

2.服务器端:

注册:从客户端接收用户发送的注册信息,并将其保存至数据库。

登录:读取客户端发送的用户登录信息,在数据库中进行比对。

多人互联:接收不同客户端用户发来的数据,通过Socket将数据同步更新至每个连接的客户端,进行多人互联。

存档管理:读取用户要进入的存档,在该账户中查找JSON存档信息,将其解析发送至客户端,实现存档操作。

2.3模块用例描述

2.3.1登录模块用例描述

登录模块用例详细描述如表2-2所示。

2-2 登录模块用例描述

用例条目

描述

用例名称

登录管理

主要业务参与者

用户

描述

用户使用前需要登录

前置条件

用户注册过账户

后置条件

可以完成系统其他功能

触发条件

用户点击登录按钮

基本流程

  1. 输入用户名称和密码
  2. 系统向服务器端发送数据

3. 服务器端数据库中查询用户信息

4. 返回登录结果

替代流程

1. 用户名称密码为空时进行提示 

2. 用户名密码错误使进行提示用户密码错误

3. 登录成功时转到主界面

结束

用户登录成功

实现约束和说明

1.登录用户可以进行系统内后续操作

2.可随时退出重新登录

待解决的问题

同时登陆问题

2.3.2注册模块用例描述

注册模块用例详细描述如表2-3所示。

2-3 注册模块用例描述

用例条目

描述

用例名称

注册管理

主要业务参与者

用户

描述

用户首次登录前需要注册

前置条件

未注册账户

后置条件

执行登录模块

触发条件

用户点击注册按钮

基本流程

    1. 输入用户名称和密码
    2. 确认密码
    3. 系统向服务器端发送数据
    4. 服务器端数据库保存用户信息
    5. 返回登录模块

结束

用户注册成功

实现约束和说明

1.注册用户可以进行系统内后续操作

2.可执行登录操作

2.3.3 UI管理模块用例描述

UI管理模块用例详细描述如表2-4所示。

2-4 UI管理模块用例描述

用例条目

描述

用例名称

UI管理

主要业务参与者

用户

描述

负责用户与界面交互

前置条件

进入本系统

后置条件

触发条件

用户对UI面板进行操作和交互

基本流程

    鼠标或键位操作

结束

退出本系统

实现约束和说明

进入本系统

2.3.4物品管理模块用例描述

物品管理模块用例详细描述如表2-5所示。

2-5 物品管理模块用例描述

用例条目

描述

用例名称

物品管理

主要业务参与者

用户

描述

负责用户与物品之间的操作,包扩增删改存等

前置条件

进入新建场景或者Demo场景

后置条件

对家具物品进行操作或对新建场景存档

触发条件

新建物品或点击可操作物品

基本流程

  1. 点击物品或新建物品
  2. 点击当前高亮物品
  3. 点击具体设置按钮
  4. 执行相关操作(删除、替换、旋转、移动、更换材质等)

结束

物品操作成功

实现约束和说明

联机模式不可同时操作同一物品

2.3.5 JSON数据传输模块用例描述

Json数据传输模块用例详细描述如表2-6所示。

2-6 Json数据传输模块用例描述

用例条目

描述

用例名称

Json数据传输管理

主要业务参与者

服务器端

次要参与者

用户

描述

负责用户新建场景的存档功能

前置条件

用户确定存档

后置条件

服务器端对当前场景的修改进行保存

触发条件

用户点击保存按钮

基本流程

  1. 执行场景修改
  2. 保存当前新建场景
  3. 服务器端接收请求,将修改的json文档存入当前账户的数据库中

结束

退出场景,回到开始界面

实现约束和说明

只有房主才可以保存当前新建场景,其他用户只可以修改场景

2.3.6角色管理模块用例描述

角色管理用例详细描述如表2-7所示。

2-7 角色管理用例描述

用例条目

描述

用例名称

角色管理

主要业务参与者

用户

次要参与者

客户端

描述

负责用户操作角色的移动和视角切换

前置条件

用户进入新建场景或Demo场景

后置条件

触发条件

相关键位或鼠标

基本流程

  1. 键位或鼠标接收到用户反馈
  2. 回调相关函数
  3. 视图更新

结束

退出场景,回到开始界面

实现约束和说明

系统正常接收外设反馈

2.本章小结

本章对家装系统进行设计和分析,主要从技术可行性、经济可行性方面分析,还介绍了系统的功能模型,并对各个功能模块进行了用例描述,这样可以一目了然的看出各功能模块的作用和使用方法,可以方便后续的开发与执行。


第三章 系统总体设计

在实现系统功能之前,首先需要明确各游戏功能模块之间的关联和关系。遵循系统设计原则,合理的构建框架、设计场景、分离界面与业务逻辑,设计不同的模型的多种特性。

3.1系统总体设计

系统的总体设计包含客户端和服务端两个模块。服务端模块式主要分为两大部分:基础部分和数据管理部分。基础部分主要通过Socket 网络发送协议来达到客户端与服务端进行数据传输的目的,这部分内容负责基础网络通信和协议管理。而数据管理部分则是通过服务器和数据库相连,达到数据库和客户端互相传输信息的功能需求。

3.1.1模块设计原则

本系统的设计原则首先遵循MVC的设计模式,所图3-1所示:

图3-1 MVC框架设计图

组成MVC的三个模式分别是组合模式、策咯模式、观察者模式,MVC在软件开发中发挥的威力,最终离不开这三个模式的默契配合。

组合模式的类层次结构是树状的, 只在视图层活动

观察者模式有两部分组成,被观察的对象和观察者,观察者也被称为监听者。对应到MVC中,Model是被观察的对象,View是观察者,Model层一旦发生变化,View层即被通知更新。View层和Model层互相之间是持有引用的View提交数据给服务器,服务器上的Model接受到数据执行某些操作,再通过响应函数将结果回送给ViewView接受到数据更新界面,这就是观察者模式的另一种表现形式。

策略模式是ViewController之间的关系,ControllerView的一个策略,Controller对于View是可替换的, ViewController的关系是一对多,在实际的开发场景中,也经常会碰到一个View被多个Controller引用,这便是策略模式的一种体现,只是不那么直观而已。

总结:View层,单独实现了组合模式Model层和View层,实现了观察者模式View层和Controller层,实现了策略模式

图3-2 MVC结构图

MVC的关键在于业务划分,代码分离,其实跟三层架构比较相似,把业务层、逻辑层、数据层分开来,互相通过一个接口进行调用,但是并不知道接口是怎么实现的。如图3-2所示。

3.1.2系统结构图

在清晰各模块之间的关系与设计原则后,针对系统具体功能做出设计,保证功能设计的完整性,才能使系统运行时没有逻辑缺陷。主要包含:角色管理、UI管理、界面交互、物品交互、物品管理、场景切换、光照渲染、数据处理。所图3-3所示:

图3-3家装系统功能结构图

3.2系统详细设计

3.2.1用户注册登录

用户想要继续执行本系统的后续功能就必须要进行注册、登录的操作。用户注册登录时序图如图3-2-1所示:

3-2-1注册登录时序图

3.2.2家装场景切换

用户可以在主界面选择系统内提供的不同风格的样板间场景,给用户自己设计提供参考价值。场景切换时序图,如图3-2-2所示

3-2-2 场景切换时序图

3.2.3家具交互

家具替换的交互设计不仅丰富了家装的功能, 大大刺激了用户的参与性, 任意地布置家具使得用 户身临其境,有种对房间的掌控权,更利于用户设计 出自己心目中的理想居室,获得一种幸福感[4]。家具交互时序图如图3-6所示。

3-2-3 家具交互时序图

3.3数据库设计

将需求分析得到的用户需求抽象为信息结构及概念模型的过程就是数据库的概念结构设计,简称为数据概念设计,它的主要目的就是分析数据之间内在语义关联,在此基础上建立一个数据的抽象模型。错误!未找到引用源。

3.3.1数据库概念模型设计

本系统主要是为用户所服务的,因此,在系统设计时要将用户的需求放在第一位,保证用户信息的快捷安全,如图3-10所示:

图3-10家装系统数据交换ER图

3.3.2数据库表设计

在数据库的设计中,由于本系统对物品的操作会极为频繁,为了避免大量的增删改查操作,特地采用MySQL5.7版本以后新增的功能。MySQL5提供了一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素的内部二进制格式,在Json列插入或者更新的时候将会自动验证Json文本,更方便的实现了用户存档的读取[2]。用户信息的数据库表如表3-1:

表3-1  用户

列名

数据类型

约束条件

允许为空

注释

id

integer

主键

Id

name

varchar

姓名

password

varchar

密码

File

json

房间信息存档

3.3本章小结

本章节对室内家装设计系统的功能模块和数据库结构进行了设计,在需求分析的基础上,对本系统进行数据建模,将各个表之间的关联关系进行展示,为本系统的实现做准备。

第四章 系统详细设计与实现

室内家装设计系统的主要服务群体是广大对室内设计有需求的用户,随着互联网行业的飞速发展,学生生活水平的逐步提高,对居住环境有需求的人越来越多,给用户设计一个方便表述自己需求的室内设计平台逐渐成为一个发展趋势。

4.1系统功能模块设计与实现

室内家装设计系统主要包括客户端模块、和服务器模块。客户端模块主要包含UI管理功能、场景切换功能、家具交互功能、热更新和资源加载功能。服务器模块主要包含服务器连接、数据库连接、Json数据解析。如图4-1所示:

图4-1 系统流程图

4.2客户端模块

4.2.1 UI管理

为了用户能有良好的交互体验,场景会涉及大量的UI交互,所以,一个流程清晰且便捷的UI框架尤为重要。

在本系统中,采用了BasePanel结合PanelManager和UIManager、UITool共同组成的UI框架进行管理,此框架优点在于,易于管理和保证各个UI之间的独立性,同时也统筹了UI之间的共性,让代码的复用性更强。

BasePanel是各种和用户交互Panel的父类,这里采用了abstract抽象类,让后来扩展更多面板和更新资源面板也更加便利。

用户注册登录界面包括用户名、密码。用户注册,登录界面如图4-2所示:

图4-2 注册登录界面

在Base Panel里,编写了大部分UI都需要使用的功能,这里UITool是封装的工具类,使得大量繁琐的工作变得更加便捷。若子类Panel有自己的需求,可在父类BasePanel的基础之上进行重写父类方法。如需添加新的功能,可在子类重写方法中加入base.(重写的方法名),即可在父类功能的基础上添加功能和需求。UIType类是指定Panel面板唯一性的一个类,是通过加载路径进行确认。所以在构造BasePanel时是必不可少的。

主界面如图4-4所示:

图4-3 主界面

PanelManager是管理Panel面板出栈入栈和在出栈入栈时必须要进行的操作的一个管理类。在PanelManager类中,构建了一个面板栈用于管理UI的显示、隐藏和可交互性。这里使用栈来存储一是因为和Unity的渲染层级相关。这里需要注意的是,PanelManager只在场景加载时被构造一次,避免多个UI栈的出现,导致程序的复杂度升高和避免一条指令在多个栈中被执行导致程序异常的问题。

图3-5所示为PanelManager对UI设置面板进行入栈操作

4-4 设置面板

本系统注册登录是在同一界面完成,处理过程一致,需录入两种信息,用户的个人账户和密码,当都符合本系统要求时完成登录与注册。其登录注册流程图如图4-5所示:

4-5登录注册流程图

UImanager则是对所有UI负责执行具体操作的一个类,BasePanel和PanelManager都是在逻辑层面对UI进行操作,但要如何让用户能够感受和交互,则是UIManager类所管理的。

在UIManager类中,初始化了一个用来存储UI的字典,由于字典的特性,键值对是一一对应的,我们利用这一特点,避免了UI被重复打开的情况。而如何标识UI的唯一性,则是之前提到的UIType通过路径来进行判断唯一性的。字典将UIType作为键,映射到每一个被实例的对象GameObject上,当需要对这个实例进行具体操作时,即可通过字典拿到唯一的实例对象。

4.2.2场景切换

用户可以在主界面选择系统内提供的不同风格的样板间场景,给用户自己设计提供参考价值。

为了满足用户对于不同房型和风格的要求,在不同场景和房型之间切换是不可避免的,所以为了在场景切换时,不显得过于突兀,影响用户体验,设计了基于SceneState结合SceneSystem的场景切换系统。如图4-6所示为艺术摄影风格样板间:

4-6 影棚风场景

用户在登陆本系统后,可选择已存档的场景继续设计,也可选择系统自带的场景作为参考设计,还可以新建场景重新设计,场景跳转流程图如图4-7所示:

4-7场景跳转流程图

4.2.3家具交互

实例化家具:当物体点击“家具替换”->“家具 库”时,会出现各种样式家具的菜单,用户根据菜单中的家具图片选择自己喜欢的进行替换[4],如图4-9所示:

效果图如图4-8,4-9所示:

4-8 家具交互效果图

在家具栏中点击家具图片的按钮, 点击的过程即为按钮本身添加了一个响应事件, 分别根据其名称,添加各自的了鼠标监听方法,一旦点击按钮就会执行添加相应的实例代码,实例对应的家具[4]。 以其中一个为例,如图4-10所示为新建家具:

4-9 新建家具效果图

第一张图片是沙发,所以其对应的就是沙发预制体, 点击第一张图片,通过其名称,在资源库中查找对应的预制体,将其实例化至画面正中央。

当用户点击实例好的预制体时,系统从屏幕向鼠标位置进行检测,被检测到的物体将会执行高亮。若是对已有的家具进行点击操作,则会替换当前家具。

此外,可以对被选择的家具添加拖拽事件,对其进行任意地摆放,也可以通过控制面板(如图4-6)对家具进行放大缩小、水平移动、旋转等一系列操作,当不满意当前的家具布置,也可以再次选中这个家具,点击删除按钮即可删除[4]。如图4-8所示。

用户进入任意场景后,便是对室内的环境进行设计了,用户可选择已有的家具进行设计,也可新建家具,按照自己的意愿来设计。家具交互模块流程图如图4-10所示:

4-10 家具交互流程图

4.2.4热更新与资源加载

在后期,如果有新的资源需要注入或者系统逻辑出现Bug时,可以通过AssestBundle将提前打包好的资源或Xlua代码注入,实现新资源的更新和临时替换Bug所在部分的代码逻辑,达到修改Bug的目的。

4.3服务器端模块

服务器端的核心功能是为了用户互联和存储用户信息,以及存档功能提供支持,使客户端可以向服务器端传递数据,同时服务端还连接着MySQL数据库,可将用户的数据保存数据库中,方便读取

4.3.1连接服务器

创建Socket,使用异步方式Connect服务器,然后调用BeginReceive()开始等待服务器数据的到来。

服务器数据到来后,触发回调函数ReceiveCallback(),然后将发送来的的消息转换为二进制,存储至二进制数组之中,然后继续调用BeginReceive回调方法,等待服务器消息,响应数据的接受。

Unity的Update方法根据设定从二进制消息队列取出指定数量的信息,将其转换为自己想要的数据类型后,将其分割,信息里包含协议名,通过反射机制,调用对应协议名的函数来处理消息内容。其流程图如图4-11所示:

图4-11 服务器连接流程图

4.3.2连接数据库

其流程图如图4-12示:

图4-12 数据库连接流程图

4.3.3 JSON编码解码

和客户端不同的是,因为服务端程序和Unity无关,无法使用JsonUtility,所以改用System.Web提供的方法实现。(需要手动引用System.web.Extensions)如图4-10所示:

4-10服务器JSON编码解码

4.4本章小结

该章节详细的介绍了室内家装设计系统的各个功能模块的实现和其效果展示,还有服务器端的数据传输实现思路与方法。

第五章 系统测试

本章节将对已实现的功能模块进行黑盒测试,主要目的是发现系统所存在的问题和测试用例是否达到预期要求。

5.1测试的目的与意义

系统测试是本系统开发的最后一个环节,也是不可或缺的一部分,系统测试保障了本系统的完整性和完备性。良好的系统测试能发现在设计时出现的缺陷和功能开发时遗漏的差错,不断地修复,最终达到用户满意的效果。同时,通过的不断的系统测试,可以保证室内家装设计系统上线后的产品质量。

一般情况下,软件测试是由第三方的小组或者第三方的成员进行测试的,在测试的过程中要严格的按照测试计划进行测试执行,对测试的结果进行详细的记录,最终生成测试报告。系统测试的目的是尽可能多的找出室内家装系统中存在的问题,在室内家装系统系统开发完成后,就必须按照测试用例进行系统的测试。根据软件的测试流程,得到软件测试的结果,通过技术分析与国家的标准进行全方位的比对,保证系统在合法的情况下交由用户进行使用。

5.2测试方法

在室内家装系统的测试执行之前,要进行系统环境的准备的工作,一个良好的测试需要建立在稳定的测试环境之上,才能进行测试内容和测试方法的选择。求职信息管理系统在测试的过程中,主要使用功能测试进行界面问题的发现,如界面的提示信息等。在功能测试没有问题后,对室内家装系统进行压力测试,如对登录接口进行压力测试,保证接口的稳定使用。

5.3测试过程

5.3.1用户注册测试

用户注册测试用例如下表5-1所示。

序号:01;

目的:检测系统的注册功能是否可以正常的使用。

前提:输入账号用户名“lh”,输入密码为“lh123”。

表5-1 用户注册模块测试用例

序号

输入

预期结果

实际结果

测试结果

1

用户名:null

密码:null

注册信息不可以为空,请重新填写

注册信息不可以为空,请重新填写

通过测试

2

用户名:null

密码:lh123

注册信息不可以为空,请重新填写

注册信息不可以为空,请重新填写

通过测试

3

用户名:空格

密码:lh123

非法字符

非法字符

通过测试

4

用户名:lh

密码:lh123

注册成功

注册成功

通过测试

5

用户名:lh

密码:lh123

用户名已存在

用户名已存在,请重新输入

通过测试

6

用户名:lh

密码:lh123

密码必须由数字和字母组合

密码必须由数字和字母组合

通过测试

7

用户名:lh

密码:空格

密码非法字符

密码非法字符

通过测试

8

用户名:delete

密码:add

占用关键字

占用关键字

通过测试

9

用户名:lh

密码:lh

密码与账户不能一致

密码与账户不能一致

通过测试

5.3.2用户登录测试

用户登录的测试用例如下表5-2所示。

序号:02;

目的:检测系统的求职信息管理系统是否可以正常的使用;

前提:用户注册。

表5-2 用户登录模块测试用例

序号

输入

预期结果

实际结果

测试结果

1

前提条件:用户操作

用户名:null

密码:null

系统提示为必填项

系统提示为必填项

通过测试

续表5-2

序号

输入

预期结果

实际结果

测试结果

2

前提条件:用户操作

用户名:lh

密码:null

系统提示为必填项

系统提示为必填项

通过测试

3

前提条件:用户操作

用户名:lh

密码:123

系统提示账号密码错误

系统提示账号密码错误

通过测试

4

前提条件:用户操作

用户名:lh

密码:lh123

登陆成功

登陆成功

通过测试

5.3.3场景跳转功能测试

场景跳转测试用例如下表5-3所示。

序号:03;

目的:检测系统在场景切换间是否可以正常的跳转;

前提:用户登录。

表5-3 场景跳转模块测试用例

序号

输入

预期结果

实际结果

测试结果

1

前提条件:登录

场景名称:null

备注:null

无跳转

无跳转

通过测试

2

前提条件:登录

场景名称:海景场景

备注:null

跳转至海景风场景

跳转至海景风场景

通过测试

3

前提条件:登录

场景名称:田园场景

备注:null

跳转至田园风场景

跳转至田园风场景

通过测试

4

前提条件:登录

场景名称:新建场景

备注:null

进入新建场景

进入新建场景

通过测试

5

前提条件:登录

场景名称:存档1

备注:用户存档

进入存档场景1

进入存档场景1

通过测试

6

前提条件:登录

场景名称:存档2

    备注:用户存档

进入存档场景2

进入存档场景2

通过测试

5.3.4家具交互功能测试

家具交互功能测试用例如下表5-4所示。

序号:04;

目的:检测系统的家具交互功能是否可以正常的使用;

前提:用户登录。

表5-4 家具交互模块测试用例

序号

输入

预期结果

实际结果

测试结果

1

前提条件:海景场景

家具名称:沙发

家具高亮,显示交互界面

家具高亮,显示交互界面

通过测试

2

前提条件:海景场景

家具名称:台灯

家具高亮,显示交互界面

家具高亮,显示交互界面

通过测试

3

前提条件:海景场景

家具名称:壁画

家具高亮,显示交互界面

家具高亮,显示交互界面

通过测试

4

前提条件:田园场景

家具名称:台灯

家具高亮,显示交互界面

家具高亮,显示交互界面

通过测试

5

前提条件:田园场景

家具名称:壁画

家具高亮,显示交互界面

家具高亮,显示交互界面

通过测试

6

前提条件:田园场景

家具名称:沙发

家具高亮,显示交互界面

家具高亮,显示交互界面

通过测试

7

前提条件:新建场景,新建家具

家具名称:沙发

生成新建家具,家具高亮,显示交互界面

生成新建家具,家具高亮,显示交互界面

通过测试

8

前提条件:新建场景,新建家具

家具名称:台灯

生成新建家具,家具高亮,显示交互界面

生成新建家具,家具高亮,显示交互界面

通过测试

5.3.5存档功能测试

存档功能测试用例如下表5-5所示。

表号:05;

目的:检测系统的存档是否可以正常的使用;

前提:用户登录。

表5-6 档案管理模块测试用例

序号

输入

预期结果

实际结果

测试结果

1

前提条件:该账户无存档记录

存档名称:null

新建场景

新建场景

通过测试

2

前提条件:该账户有存档记录1

存档名称:存档1

进入当前账户存档1

进入当前账户存档1

通过测试

3

前提条件:该账户有存档记录1

存档名称:存档2

新建场景

新建场景

通过测试

4

前提条件:该账户有存档记录2

存档名称:存档2

进入当前账户存档2

进入当前账户存档2

通过测试

5.4本章小结

本章对室内家装系统测试的必要性进行了详细说明,并对室内家装系统的每一个测试点进行详细的记录。

结论

基于Unity3D 的家装设计系统是一款旨在满足用户家装设计的系统,它的提出也是基于Unity 技术的发展和人民物质生活水平的提高。如何更加高效的帮助用户挑选合适且舒心的居家环境是这款装修平台面对的难题。本课题进行了界面需求和模型需求等分析,实现了各模块的功能和需求。

本文的主要工作成果有以下几点:

1、从课题的选题背景出发,对用户环境需求,装修的需求、以及当前室内设计存在的问题做了分析,得出开发一款灵活性强,表现真实的设计平台的重要性。综合当前Unity技术的快速发展和其具备的优良特性和方便的开发步骤,为室内家装平台的设计和实现制定出以 Unity 技术为基础的解决方法。

2、以课题背景和背景分析为基础,提出了系统的需求分析,由此将系统细分为单独模块,并且在划分数据文理模块,用户交互模块,物品交互模块,模型展示模块和多人家装模块的基础上明确了系统任务要求和设计原则。

3、根据需求分析和功能设计,在各个模块之间进行了实现的讨论,包括具体功能的实现和框架的设计以及嵌套的设计模式等。在此基础上展示了功能实现的效果图,基本满足了预先制定的设计需求。室内家装系统的实现在 Unity3D中进行,使用C#和 XLua语言编写脚本。

总体而言,基于Unity的家装设计系统能够满足一定范围的需求,但鉴于开发时间较短和个人水平的限制,当前的系统还存在很多的问题,在以后的工作中,还需要不断的改进和提高,以满足更多的需求。

参考文献

  1. 王锐. 对于国内外室内设计的发展现状研究[J]. 黑龙江国光建筑装饰设计研究院有限公司, 2015.
  2. 张杰. 基于ReactSpring的教学系统设计与实现[D]. 山东师范大学, 2019.
  3. 范晓雨. 基于混合过滤的就医方案推荐系统设计与实现[D]. 湖南大学, 2019.
  4. 杨思瑶,宁宝宽,陆海燕,王守平. 基于Unity3d的家装设计展示系统[J]. 沈阳工业大学建筑与土木工程学院, 2018.
  5. 谢永康. 长沙中支新华人寿档案管理系统的设计与实现[D]. 电子科技大学, 2016.
  6. 宗玮. 现代居室设计中空间的变换与更替[D]. 昆明理工大学, 2015.
  7. 张珂. 国外室内设计思路的借鉴[J]. 现代装饰(理论), 2013.
  8. 夏志民. 浅论当今装潢艺术设计(室内设计)的利弊[J]. [1]吉林工程技术师范学院, 2013.
  9. 刘冕轩. 地质博物馆4D影院室内设计研究[D]. 湖南大学, 2013.
  10. 漆波,郭鹏. 浅论室内设计[J]. 四川职业技术学院, 2012.
  11. 王荣华. 浅议室内设计的发展[J]. 文学界(理论版), 2012.
  12. 贝坚. 中西方艺术文化差异对室内设计的影响及发展[J]. 上海余山国际高尔夫俱乐部有限公司,上海200000, 2012.
  13. 马全福. 现代设计中视觉导向之探究[D]. 西北民族大学, 2011.
  14. 刘晓娜. 环境艺术设计的多学科交叉特性研究[D]. 哈尔滨理工大学, 2010.
  15. 钱斌. 茶文化室内空间设计探讨[J]. 宁夏建筑设计装饰工程有限公司, 2008.


http://www.kler.cn/a/506247.html

相关文章:

  • 如何在谷歌浏览器中设置自定义安全警告
  • 02JavaWeb——JavaScript-Vue(项目实战)
  • 语音合成的预训练模型
  • Linux自学指南(学习路线大纲)
  • 通过maven命令上传jar包至nexus v3.7.1
  • 【2024年华为OD机试】 (C卷,100分)- 用连续自然数之和来表达整数(Java JS PythonC/C++)
  • 【Python】-- 趣味代码 - 发牌游戏
  • 【Web】Web API 简介
  • Portainer CE本地化部署与远程可视化管理Docker容器实战指南
  • [Qt] 系统相关_1 | 常见事件 | 事件分发器 | 过滤器
  • 【Apache Paimon】-- 源码解读之 PaimonSparkSessionExtensions
  • 高阶数据结构之跳表
  • 【NLP高频面题 - 高效微调篇】LoRA微调时有哪些可配置的参数?
  • vscode——如何让标点总是成对出现
  • 启航数据结构算法之雅舟,悠游C++秘境——单链表之美妙构筑
  • Docker PG流复制搭建实操
  • GIS大模型:三维重建与建模
  • C# .NetCore 使用 Flurl.Http 与 HttpClient 请求处理流式响应
  • 狼毒大戟中TPS新型二萜合酶的发现-文献精读99
  • vue组件学习(一)
  • 前端项目打包体积的分析和优化
  • 聊一聊 vPC Peer-gateway 网关增强功能
  • 从Web3到元宇宙:去中心化网络如何改变虚拟空间的体验
  • salesforce在opportunity的opportunity products页面增加一个按钮,可以批量删除products
  • 前端主流Web3D引擎详解大公司现Web3D业务所用引擎分析
  • UDP报文格式