徐 凌
(北京服装学院 计算机信息中心,北京 100029)
随着个人电脑和智能手机的普及,网上购物成为消费者的主要购物方式之一。2018上半年中国的网络购物用户规模达到5.67亿人,占网民的71%。服装行业最先享受网购红利,超越电子产品和食品,成为网购参与度最高的品类。随着服装网购规模的快速提升,截止到2017年,服装网购已经将市场渗透率提升到40%以上[1]。
网店在介绍商品时主要通过文字、图片和短视频,对于消费者来说缺乏直接的购物体验。近几年来,淘宝、京东等各大电商已经开始虚拟现实购物的技术研究。2016年初,淘宝和京东都成立了VR实验室。淘宝在当年的“双十一”正式上线了全新购物方式—BUY+系统,构建了7个虚拟商城,有超过800万的消费者体验了VR购物。而京东则联合英特尔、HTC等数十家企业成立VR/AR产业联盟,推出“VR购物星系”应用[2,3]。
VR即虚拟现实,自2012年来出现了以Oculus为代表的一批可靠实用的VR头盔,可以针对双眼独立成像,相对于普通的显示设备,具有良好的浸入式体验效果[4]。因此,其在虚拟展览、虚拟驾驶、虚拟景观等VR应用领域得到推广[5,6]。
作为新兴的技术,使用标准VR显示设备的虚拟购物应用较少且不成熟,尤其是在服装购买方面。目前的服装VR网购系统存在缺少服装动态展示内容和实用的虚拟试衣方法,对大批量、更新频繁的商品建模成本大、效率低下等缺点,针对以上问题,本文设计了基于Unity的VR购衣系统,使用三维扫描方式批量建模,经过优化处理降低系统成本,并提出一种针对顾客体型定制等比例虚拟试衣模特的方法。
系统按图1的结构进行模型划分。数据采集与处理模块的内容包括商品模型的扫描创建和优化处理、顾客个性化虚拟人体模型的定制和生成;用户信息管理模块的内容包括对顾客、卖家商店相关信息的添加、修改、查询、删除;商品信息管理模块的内容包括对商品相关信息的添加、修改、查询、删除;交易信息处理模块的内容包括对订单流程的处理、留言的处理、网上支付的处理;用户交互模块的内容包括在PC端和Android端的GUI交互界面设计;虚拟展示模块的内容包括虚拟店铺的设计和显示、服装模型的静态展示、服装模型结合虚拟人体模型的动态展示;数据库模块包括数据的存储和管理、数据库连接的实现、数据安全机制的实现。
图1 系统模块划分
2.2.1实体关系
按实体类型主要划分为卖家、顾客、订单、商品、物品五种,如图2所示。其中同一种物品可能在不同的卖家按不同价格、说明出售,因此与商品是一对多关系;同一个订单可能包含了多个商品,同一个商品也可能出现在多个订单里,两者是多对多关系;卖家和顾客可以拥有多个订单,与之是一对多关系;一种物品可以是多种商品,而一种商品只能是一种物品,两者是一对多关系。
图2 E-R关系图
2.2.2物理模型设计
系统的数据主要用图3所示五个表存储。其中物品表除了物品基本介绍内容外还要存储该物品的三维模型;商品表可在所指向物品的基础信息外添加自定义的介绍信息和价格、库存量;顾客表包含顾客的基本信息和定制的虚拟试衣模特的人体模型;订单表包含交易信息和订单状态字段。
图3 数据库物理设计
3.1.1服装建模与处理
服装模型通过三维扫描仪扫描生成外观和纹理。由于初步生成的模型包含噪点、空洞、冗余信息和过多的面,需要经过降噪、表面重建等处理步骤。之后经过蒙皮、绑定骨骼、添加碰撞检测系统的步骤,将服装模型与人体模型的挂载点进行标准化统一,以便实现换装功能。
3.1.2自定义人体模型的生成
系统提供一整套带骨骼和骨骼动画的标准人体模型,用户选择和自己体型近似的模型并对参数进行微调,选择近似的脸型、头型,还可以选择上传正脸自拍照作为面部贴图。服装与虚拟试衣模特结合后效果如图5所示。
图4 带骨骼的虚拟人体着装模型
3.1.3店铺环境建模
使用3dsMax制作货架、灯具等设施,对于店铺内的柜台、墙壁、地板等外形由矩形平面结构拼合的规则物体,可以直接用Unity自带的建模、贴图功能实现。
卖家可以通过菜单在几套标准店铺模型中自选,并在货架、墙壁上添加虚拟商品。具体实现方法是先在Unity中建立店铺场景、导入店铺环境模型、添加第一人称视角VR摄像机对象;然后在后台通过卖家ID在数据库商品表中查询卖家出售的服装种类,获取服装的模型、陈列位置和其他信息;最后将服装对象添加到虚拟店铺的陈列位置上。
顾客在界面通过搜索店铺名获取卖家ID,并加载对应的虚拟店铺。顾客通过佩戴VR头盔浏览虚拟店铺和陈列的服装,通过操作Touch工具发射的光线能够选择服装,打开商品信息界面。在商品信息界面里除了展示服装的图文说明、库存量、价格外,还包括虚拟试衣选项、购买选项。
顾客选择了服装并添加到试衣列表后加载虚拟试衣间,将列表中的服装模型添加到个人的虚拟试衣模特上。可以通过VR头盔在试衣间内围绕着装人体走动并观看效果,试衣人体模型可以按用户在菜单上选择的几种静态姿势展示,也能通过加载骨骼动画演示服装在人体走动、跑动、跳跃时的悬垂和碰撞效果;还能实时调整服装尺寸使之更加合身。
在技术上,通过数据库顾客表读取和加载试衣人体模型,将人体模型的对应位置蒙皮更换成服装就实现了换装,演示中的静态姿势和运动效果是通过播放人体模型在系统中预先录制的几套骨骼动画实现的。
顾客在未登录的情况下就可以搜索和查看出售的服装信息,如果要加入购物车就会弹出登录窗口,只有登录后才能生成订单。确认付款后,卖方会收到消息并发货;顾客则会在发货后收到发货通知消息。顾客可以在发货前取消订单并退款,在收货后可以执行评价或者退换操作,这一过程中订单状态会发生相应改变。顾客购物和订单处理的流程如图5所示。
图5 购物处理流程图
在数据通讯方面,客户端向服务端的API接口发出请求,服务端将接收到的信息转换为JSON字段,根据其类型转入对应处理流程。客户端则在本地解析和加载由服务端发来的打包为JSON格式的信息。
完成开发后,将客户端通过Unity工具栏菜单下的Build功能打包为.apk文件,安装进Android手机和VR头盔设备里;在服务器端安装Oracle数据库和服务端程序并录入数据。顾客购物界面如图6所示。
图6 顾客购物界面
使用Touch控制行走,第一人称VR摄像机向侧面移动后不同视角的试衣效果如图7(a)、图7(b)所示。将VR头盔视角中的画面投射到屏幕上,左、右目镜会单独成像。在实际佩戴头盔时左右目镜各自对应左右眼,通过视觉差能模拟人眼的观察角度,实现视场的深度感和浸入感[7,8]。与同类网购系统相比,基于Unity的VR购衣系统拥有直观的试衣展示效果、更丰富的展示内容。
图7 虚拟试衣的VR头盔视角
网络购物的过程中仅通过图文和视频已经不能满足顾客对服装商品信息的了解需求,随着VR技术的发展,在不亲临实体店的情况下,就可实现虚拟试衣体验。基于Unity工具的引擎和外接式VR头盔构建的VR购衣系统在实现服装网购基本流程的同时提供虚拟试衣功能,较好地实现了服装动态展示的浸入式观看效果,进一步丰富了商品展示手段,也为该类型VR应用的开发提供了有价值的参考。