面向3D虚拟展示的软件定制化系统研究

2021-03-09 16:41郝亚玲朱欣娟吴晓军
计算机工程与应用 2021年5期
关键词:西服厂家构件

郝亚玲,朱欣娟,吴晓军

1.西安工程大学 计算机科学学院/陕西省服装设计智能化重点实验室,西安710048

2.陕西师范大学 计算机科学学院,西安710119

随着计算机三维处理能力的增长和电子商务的飞速发展,人们对产品展示已不再满足于传统的二维图像形式,对产品三维化展示的需求日益增多。Unity3D是由Unity Technologies公司开发的一款让使用者轻松创建三维视频游戏、实时三维动画等类型互动内容的综合型交互式开发工具,拥有高度优化的图形渲染管道,可与一些虚拟现实开发工具相结合实现虚实叠加人机交互功能也可以实现虚拟现实世界的生成[1]。虚拟现实技术通过Unity 3D开发平台生成一个逼真的三维虚拟世界,具有直观性、沉浸性以及交互性等特点[2-4],该技术对产品三维展示方式起到重要的推动作用。目前市场上已有许多行业把虚拟展示方式作为一种电子商务方案[5],基于三维虚拟展示技术的汽车、服装、家具、家电等展示平台可以将产品的虚拟展示和在线预订相结合[6-7],极大地降低企业的展示成本,并大大提高了销售效率,推动了三维虚拟展示软件的研究和发展[8-11]。目前市面上大多数虚拟展示软件开发是针对单一用户的具体需求[12],面向单个产品三维模型来组织的,其界面、功能都是固定编码的,导致软件复用率低且开发费用高、周期长。

近年来,为了提高软件开发的效率,促进软件工程化发展,学者们提出了软件复用[13]、过程重组、基于构件的软件工程和领域工程[14]等思想和方法。与此同时,大规模定制(Mass Customization,MC)作为一种新的生产模式,以其独特的优势在软件开发中逐渐得到重视。大规模定制是通过高度敏捷、柔性和集成的过程,为每一位客户提供满意的个性化定制产品和服务;是一种在不牺牲规模经济的情况下,以单件产品的制造方法满足客户个性化需求的生产模式[15]。在大规模定制思想指导下,文献[16]在基于构件的软件工程、领域工程和并行工程的基础上,提出了面向大规模定制的软件开发模式(Software Development for Mass Customization,SDMC),该模式既可以满足客户的个性化需求,又可以实现软件开发的高效率、低成本。文献[17]在SDMC的研究基础上,进一步阐述了大规模定制背景下面向大规模定制的软件开发与定制过程,提出一种面向软件大规模定制的框架设计实现方法,并以灾害救助快速反应系统的开发为实例验证了该框架的可行性。文献[18]从构件组装角度出发研究软件定制化问题,提出一种利用功能驱动的构件组装方法,以用户需求为驱动目标,进而实现构件的自动组装以提供满足用户需求期望的软件实体。SDMC将大规模标准化软件开发与面向单个用户定制开发有机结合起来,既能快速响应客户的定制需求,又可以实现软件产品的大规模生产,提高开发模式,缩短软件开发周期、降低成本,达到规模经济的效益。

目前对于大规模定制化软件的研究主要应用于二维领域,本文将面向大规模定制的软件开发模式与虚拟现实技术有机结合,开发具有柔性和可定制性的面向虚拟展示的软件定制化系统——3D-SDMC系统,该系统既可以快速、高效地定制满足客户个性化需求的虚拟展示软件,又可以实现虚拟展示软件的大规模定制,增加软件复用率,进一步推动大规模定制软件开发模式在三维领域的发展,这必将带来一定的学术价值和经济效益。

1 系统功能分析及总体结构设计

1.1 功能分析

目前,市面上三维虚拟展示应用已经比较广泛,经过对比分析发现主要有如下公共功能:对三维模型的旋转、缩放、换贴图和部件等。因此,如何利用软件复用技术将通用功能抽取解耦,开发面向虚拟展示软件定制化系统,是亟待解决的问题之一。3D-SDMC系统除了具备普通虚拟展示软件的功能外,还涉及定制相关功能模块。具体某一虚拟展示软件依据厂家的个性化需求进行定制实现,而需求是通过功能的设计来满足。如图1所示为3D-SDMC系统功能模块。

3D-SDMC系统主要分为四个模块——管理员模块、厂家信息定制模块、产品模型定制模块和客户模块。管理员模块主要管理厂家账号问题:(1)注册授权;(2)注销账户。以下针对厂家信息定制模块、产品模型定制模块和用户功能模块进行详细介绍。

厂家信息定制模块和产品模型定制模块需要将厂家信息和产品模型相关信息上传至定制化系统,从而实现系统的可定制性。厂家信息定制模块分为:(1)页面布局定制,各厂家风格和信息资源不尽相同,系统提供8个首页展示模板供厂家挑选。(2)页面内容定制模块提供文字、图片、视频三种类型信息载体的自由组合及信息上传模板,最大程度满足不同厂家需求。(3)产品类别定制模块满足不同厂家不同产品的分类标签,并自动生成导航图示。产品模型定制模块实现虚拟展示模型信息和资源的上传,录入模型部件和贴图信息,并对模型部件和面料定义;上传的资源主要有3D和图片两种形式。

图1 3D-SDMC系统功能模块

在用户功能模块,用户可详细浏览某一厂家的定制化虚拟展示系统,方便用户了解厂家信息和产品的整体结构及细节特征。例如,用户可以详细浏览该厂家的信息简介,全面了解企业文化;可与产品模型交互及进行个性化设计,全方面观察产品的款式及材质、颜色、贴图搭配等细节效果。

1.2 系统架构设计

3D-SDMC系统架构图如图2所示,采用C/S结构,服务器端存储多租户账号管理数据库和多租户的资源数据库,数据资源库包含厂家配置信息和产品模型资源,包括文字库、图片库、视频库、面料库、模型库等,分别以文档文件、图片文件、视频文件和3Ds MAX文件的形式存在;定制模板规范了多租户上传资源的逻辑关系,是实现3D-SDMC系统可定制化的核心模块。客户端是厂家定制及产品虚拟展示系统,展示厂家宣传信息和产品三维模型,是系统的定制化产物,用户可通过登录系统了解某厂家的企业文化和产品,可以与三维产品模型交互并实时观看三维效果。

图2 系统架构图

2 系统定制功能实现的关键技术

软件定制过程的实质,是客户个性化需求从用户个人域向业务功能域和软件域转化的过程,是以软件形式体现客户的需求和意向。本文提出“功能+流程定制”的方式来实现面向三维虚拟展示这一特定领域的定制过程,以满足不同客户个性化的企业信息和三维产品展示需求。

2.1 定制模板定义

可定制的功能模型是实现3D-SDMC系统的关键。因此,系统研究重点在于建立具有柔性、可复用的定制模板软件开发方法,不再是面向单个用户专门设计一个软件,而是同时完成一组软件设计,即对整个3D-SDMC系统进行综合设计,分析解耦获得虚拟展示软件中的通用功能,设计并实现系统框架和模板。

定义1(厂家信息定制模板)在定制化系统中,厂家企业信息有宣传作用,厂家信息定制模板可用一个三元组Fi=(IDFi,SFi,BFi)表示,i=1,2,…,n,其中:

IDFi表示厂家标识,即厂家ID,是唯一区别一个厂家与其他厂家的标识;

SFi表示可供厂家定制的首页布局样式集,每个厂家首页布局对应SFi中的一个元素;

BFi={WFi,PFi,VFi}表示可供厂家定制的首页业务元素集,WFi表示厂家介绍的文字,PFi表示厂家用于展示产品和宣传企业文化的图片集,VFi表示厂家用于介绍产品和企业的视频。

定义2(产品类别定制模板)产品类别定制模板可以用一个二元组Ki=(KCi,KICi)来表示,i=1,2,…,n,其中:

类别数据结构KCi={IDFi,PIDj,Pnamei,Ci};

PIDj={PID1,PID2,…,PIDm}表示产品ID,j=1,2,…,m表示产品的数量;

Pnamej={Pname1,Pname2,…,Pnamem}表示对应于PIDj的类别/产品名称;

Ci={C1,C2,…,Cm}表示对应于PIDj和Pnamej的类别/产品类别号,每个类别/产品号对应Ci中的一个元素;

KICi表示产品的类别数据结构接口,接口对应产品的分级分类算法,用于连接厂家和该厂家所定制的产品分级分类信息,算法解析用户上传的类别名及产品名称,生成对应的产品分级分类结构。

定义3(三维产品模型定制模板)三维模型定制模板可用一个六元组Pi=(IDFi,PIDj,Ai,Si,SFi,Mi,MFi)来表示,其中:

Ak={A1,A2,…,As}表示某一产品模型的部件名称,k=1,2,…,s,s表示部件名称的数量,一个产品由多个部件组成,每一个部件名称对应Ak中的一个元素;

Sk={S1,S2,…,Ss}表示对应Ak模型部件的款式名称,k=1,2,…,s,s表示款式名称的数量,产品的每个款式名称对应Sk中的一个元素;

SFk={SF1,SF2,…,SFs}表示对应Ak模型部件和款式的文件名称,每个三维模型款式名对应SFk中的一个元素;

Mkj={Mk1,Mk2,…,Mkv}表示对应Ak模型部件和款式名称Sk的材质集,j=1,2,…,v,v表示材质集中材质的数量;

MFj={MF1,MF2,…,MFv}表示对应某一产品模型的材质集Mkj的材质文件名,每个材质文件对应MFj中的一个元素。

定义4(三维产品模型交互展示模板)该定制模板用于三维产品模型展示及交互,用一个三元组Di=(IDFi,PIDj,F(PIDj))来表示,其中:

F(PIDj)表示交互功能操作数据接口集,F(PIDj)={F放缩(PIDj),F手动旋转(PIDj),F自动旋转(PIDj),F部件选择(PIDj),F贴图选择(PIDj)},其中每一元素对应一个对产品编号PIDj的相应功能的API调用。

2.2 系统典型功能实现算法

2.2.1 分级分类算法

在3D-SDMC系统中,每个厂家都是一个独立租户,厂家通过定制模板上传产品分级分类信息后,根据输入的产品级别和分类信息建立分级分类定制项与产品之间的关联关系,从而为厂家自动创建产品类别存储架构对应的数据库实例。类别号定义规则:用一组2位数的类别号代表在分级分类结构中处于第一级的分类名称;用4位数的分类号代表第二级的分类名称,其中前两位数值代表该第二级分类所归属的上一级分类;以此类推,从而实现对分类名称的类别号定义。示例如下:服装01,服装分为上装0101和下装0102,上装再分为外套010101、衬衣010102和毛衣010103等等,如图3为服装局部分类编号示例图。

图3 分类编号示例图

定制化的产品分级分类实现算法如下:

算法1层次结构分类算法

输入:三维模型产品名称、上级类别名称(可以为Null)

输出:分级别的分类结构

(1)输入产品名称检索该分类是否已经创建,若已经创建返回第一步,若没有创建执行第二步。

(2)检索产品名称上级类别名称对应的类别号S(若上级类别名称对应类别号为Null,则S=Null),检索以S打头的下一级类别个数m,令n=m+1,将n转换为2位字符串常量K。

(3)创建分类名称及编号,编号由S连接K得到;将分类名称及编号写入数据库,转第一步重复执行,直到类别名不再输入,输出产品分级分类导航栏。

2.2.2 虚拟展示界面UI动态排列算法

3D-SDMC系统可应用于不同企业,所以其产品类别、数量必定各不相同,产品对应的部件、款式等也不同,算法2实现了产品虚拟展示界面UI按照产品部件个数动态排列控制按钮的功能。如图4所示为UI动态排列示例图。

图4 UI动态排列示例图

算法2三维虚拟展示界面UI动态排列算法

UI动态排列规则:按钮默认自身的大小规格为160×30,以左下角为坐标原点,始终沿垂直方向对称排列。即奇数个按钮时,中心按钮压垂直平分线;偶数个按钮时,没有按钮压垂直平分线。一组按钮个数为10,当大于10个时,激活第二组按钮,这里设置按钮个数最多不超过20。

输入:JSON配置文档

输出:展示界面按钮布局

(1)读取JSON数据配置文档获得当前展示产品的按钮数量N。

(2)获取屏幕垂直方向中心点坐标高度Y=屏幕高度/2。

(3)按钮默认自身的规格为160×30,界面中任意一个按钮m的y轴坐标值y为:

(4)读取JSON数据配置文档中当前展示产品文字描述设置给按钮,生成布局。

2.2.3 三维模型交互功能算法

在完成产品分级分类模块和三维虚拟展示界面实现UI动态排列后,要实现三维产品模型展示模块的交互功能——旋转、缩放、换部件和贴图,人机交互的实现更利于全方位展示厂家产品,让用户更有参与感。参考市场上各三维虚拟展示软件,其交互功能都是具体一个三维模型固定编码的,本文研究的3D-SDMC系统将交互算法做成可复用构件,通过定义各交互功能算法,将其封装成构件并赋予公共参数,使三维交互功能的固定连接方式变成了构件之间灵活连接方式,其中构件的集成实现了系统的可定制性。

为满足定制化需要,系统对JSON配置文件中数据的读取,获得三维产品模型需要加载哪些功能脚本。以旋转功能为例,其算法实现方法如下(C#实现):

算法3三维模型手动旋转算法

输入:鼠标拖动三维模型

输出:三维模型旋转对应角度

步骤1获取鼠标按着左键移动的位置。

步骤2将鼠标移动位置转化为x轴坐标,获得鼠标移动相对于上个位置的相对度量值Input.GetAxis(“Mouse X”)。

步骤3将X值带入公式(2)求得旋转角度:

angle表示旋转角度,deltaTime表示增量时间。

步骤4三维模型根据鼠标移动距离旋转一定角度。

定义好功能脚本后,系统对JSON配置文件中数据的读取,需要动态添加脚本(C#实现):

//动态加载脚本

gameObject.AddComponent(Rotation());

3 系统开发

3.1 3D-SDMC系统开发的产品集成过程模型

基于软件构件化的思想开发3D-SDMC系统,构件具有独立性、功能性和互换性,可在不同系统中复用,所以软件构件化是实现软件大规模定制极为重要的技术,是实现软件复用过程的重点,是提高软件开发效率和质量的最佳途径[19]。本文在面向大规模定制的软件开发模式的基础上,结合结合虚拟展示软件的特点,给出了如图5所示的3D-SDMC系统开发的产品集成过程模型。

如图5所示,3D-SDMC系统开发的产品集成过程模型呈二维结构。时间维描述的是从客户订单到产品交付的过程,即软件开发过程,包括系统开发过程和软件定制化过程,可采用定制模型来描述;空间维描述的是将不同三维虚拟展示软件的相似部分进行通用性构件化处理,以增加软件复用率。时间维的优化体现在系统构建多个可重用构件,供后期定制服务提供可靠的保障,显著提高软件开发效率。空间维的优化体现在基于相关性思想和软件开发标准化技术确定构件的适用范围并提高其可重用性。目前在软件开发行业,65%左右的开发成本花费在重复系统开发上[16]。3D-SDMC系统对不同应用软件进行分析解耦,对相似性功能进行归类,形成可共享和复用的构件资源,最大程度地减少软件开发工作量,提高系统的柔性和可定制性。

3.2 3D-SDMC系统可定制界面的实现

为实现3D-SDMC系统可定制的、可柔性扩展的界面,本文以针对界面控件设计的JSON配置文件为基础,将常用的控件进行封装,通过编辑JSON配置文件中的参数及数据,可实现对界面控件自定义的增删改以及控件的相对应数据处理;通过对JSON配置文件的数据提取分析,根据系统定义的控件属性,各个控件从JSON配置文件中读取对应要设置的内容,从而实现界面的可定制性,且上述过程均不需要修改程序代码。

系统读取JSON配置文件的原理如图6所示。

图5 3D-SDMC系统开发的产品集成过程模型

图6 系统读取JSON配置文件的原理图

系统对JSON配置文件中数据的读取,需要Unity 3D开发平台类库的支持。在C#中为开发人员提供了丰富的类库及类方法。其中解析、操作JSON文件可以使用JsonUtility类、StreamReader类、StreamWriter类等。JsonUtility类用于JSON数据的解析,该类虽然方便但是也有缺陷,不能用于读取文本内容,使用的时候必须转换为对象读取。StreamReader类用于从文件中读取数据,需要传入文件路径和编码格式,可以把JSON导入内存当作数据来使用,是十分方便、有效的。而Stream-Writer类主要用于向流中写入数据,允许直接将字符和字符串写入文件,一般不针对二进制数据,比较适合用于JSON配置文件的数据提取。

使用StreamReader类和JsonUtility类对JSON配置文件中的首页布局参数属性进行提取解析的方法如下(C#实现):

4 实验结果与分析

4.1 系统应用实例

3D-SDMC系统可应用于不同企业文化宣传和三维产品展示,本节以西服产品为例,实现了西服产品模型的三维虚拟展示定制化系统。首先,对照图1所示3D-SDMC系统功能模块图,需要定义西服类别和三维模型产品的部件及材质信息。

(1)西服类别标签定义

产品类别标签定义并不唯一,在这里定义服装为系统基类,根据本文前面提出的分级分类算法并结合图7可知西服类别编号为01010101。(2)3D模型产品定义

图7 西服分类标签图

3D模型产品定义包含西服的部件和材质,通过解析JSON配置文件实现。定义西服模型部件的JSON配置代码如下:

同理,以上述解析JSON配置文件的方式可实现首页宣传信息布局选择和录入、产品类别和三维西服模型部件及材质信息的定义。

4.2 实验结果

根据西服3D虚拟展示定制化系统要求,

(1)实现了首页布局个性化定制功能。如图8所示是系统首页布局定制模板,在该模块定制化系统提供了多种不同的首页布局格式,供厂家根据自己企业的宣传资料信息选择合适的、个性化的首页布局,将厂家宣传信息录入选定好的布局模板中,实现个性化首页布局定制,西服3D虚拟展示定制化系统首页宣传图如图9所示。

图8 首页布局选择图

(2)实现了产品分级分类定制和导航功能。如图10所示,在定义好规则的产品分级分类定制模块输入展示产品的上下级详细分类标签及最底层产品名称,创建定制化西服虚拟展示系统的产品导航栏。

图9 首页宣传效果图

图10 西服类别定制图

(3)实现了三维模型资源上传和展示功能。如图11所示在产品模型定制模块录入西装模型的定制化信息——西服面料、部件模型、款式模型以及所对应的名称等信息,客户可以个性化选择所需功能构件,得到图12所示西服定制化虚拟展示效果图,在该模块实现了三维虚拟展示功能的重用性和可定制化,这是本文的研究重点之一。本文所研究系统经过配置能高效地定制出符合客户个性化需求的三维虚拟展示软件。

图11 西服模型信息定制图

图12 西服的虚拟展示图

4.3 结果分析

通过以西服3D产品为例,使用3D-SDMC系统定制了西服产品模型的三维虚拟展示系统,该系统极大地优化了面向三维虚拟展示软件开发的效率,实现了规模效益,且3D-SDMC系统界面更直观简单,即使非计算机专业人员也可操作。

与其他软件定制方法相比,3D-SDMC系统最大的特点是面向三维虚拟展示。文献[17]对面向软件大规模定制的构件化领域框架进行了详细研究,并以灾害快速反应系统为实例进行定制化验证,文献[18]设计了一种利用功能驱动的构件组装算法计算出多种构件组装方法,为用户提供满足个性化功能定制需求的软件,并以一个虚拟的电子政务服务管理平台构件库进行仿真实验。就界面定制、功能定制、是否面向3D领域等方面,表1将3D-SDMC系统与文献[17-18]进行了分析和比较。

表1 3D-SDMC系统与文献[17-18]系统实例比较

表1 主要从以下5方面进行了对比分析:

(1)界面定制。文献[17]中界面定制运用XML配置技术,而3D-SDMC系统采用的是JSON配置技术。JSON相比XML更快捷、更易解析、占用存储空间更小。

(2)响应时间。文献[17]根据用户需求通过构件调度管理器调取对应构件,这个过程要将用户请求进行识别和功能归纳。文献[18]研究的构件组装算法通过计算向客户提供多种方案进行选择,所有配置组装并完成才可得到定制化软件,该过程个性化程度较高,但是需要较多响应时间;3D-SDMC系统是实时响应的,定制化信息上传后即可实时看到效果,具有更快的系统响应速度。

(3)是否面向3D领域。文献[17]和文献[18]均未涉及3D虚拟展示领域,3D-SDMC系统是面向三维虚拟展示领域的,具有产品三维虚拟展示各项功能。

(4)开发效率。文献[17]和文献[18]需要开发大量构件库,且文献[17]所用XML技术本身就比JSON技术相对较复杂。3D-SDMC系统专注于三维产品展示领域及其功能实现,所以开发的功能构件较少,开发效率更高。

(5)可扩展性。文献[17]系统可扩展性较低,其配置模型较复杂,扩展需要涉及视图、功能构件的选择和模型的配置。文献[18]有定义好的功能接口,把扩展的构件放在对应构件库即可通过请求调用。3D-SDMC系统通过添加定制模板和接口来扩展功能构件,视图通过JSON配置文件进行扩展,这种情况下文献[18]和3D-SDMC系统的可扩展性更高。

5 结束语

实现面向领域的软件重用和服务,是软件应用领域一直以来追求的目标。本文研究了工业产品虚拟展示软件可定制化的方法,围绕虚拟展示对中小企业的业务逻辑和功能需求进行了分析抽象,通过功能分析抽取、定制化模板匹配等方式,实现了虚拟展示软件的功能复用。下一步工作的重点是借助云计算,实现基于可定制化虚拟展示系统云端快速搭建和部署各个企业信息系统。

猜你喜欢
西服厂家构件
可变形自收纳便携西服设计研究
高定西服在消费者视域下的色彩应用与发展趋势
百万级水产经销商是怎么练成的!哪种经销商最受厂家青睐,最易获取资源?
建筑构件
建筑构件
建筑构件
建筑构件
美小运载厂家签多次发射协议
“上下床厂家”玩转“互联网+”
尿素厂家的长期亏损牌能打多久