王 真
(中船第九设计研究院工程有限公司, 上海 200063)
船舶内装设计是船舶设计的重要组成部分,传统的内装设计大多数通过图纸和效果图的形式来表达,不够直观真实,无法实时动态地变更设计风格以及设计属性信息,如果建立实体样板舱,则存在更新迭代快且成本高等缺点;另一方面,随着内装项目的不断积累,项目重要设计数据等宝贵资源往往以零散的碎片化形式保存,缺少一个满足个性化需求的内装项目知识库管理平台。
本文以国内极地科学考察破冰船内装工程项目为实例,基于虚拟现实(Virtual Reality, VR)技术,开发船舶虚拟样舱可视化体验平台,将舱室设计信息在3D虚拟环境中真实地表达出来,让用户真正融入到内装设计中,实时获得不同的设计风格。不仅如此,该平台还可以不断扩展新的设计项目,作为项目知识库管理工具供设计人员使用,提高设计效率。
虚拟样舱可视化体验平台将VR技术应用于船舶内装设计过程和方案表达中,探索“VR+船舶内装”新模式,平台整体开发设计需要在场景、美工、特效、主程序等各个方面做到统筹把控,包括三维数字模型样舱程序开发和舱室360°VR全景程序开发,如图1所示为平台主界面。
图1 虚拟样舱主界面
(1) 三维数字样舱程序开发。基于三维数字模型的虚拟样舱开发,将设计过程信息化、三维化、交互化,让用户在虚拟舱室中,自主漫游,多视角体验舱室布局,完成对内装设计方案实时互动可编辑的功能需求,大幅提升设计的参与感和趣味性。
(2) 舱室360°VR全景程序开发。使用360°VR全景进行内装设计方案可视化应用,具有制作成本低、周期短、效果满意度高等优点。制定标准开发流程,将舱室三维数字模型导入3D图形渲染工具,生成全景程序所需的六面基础图像素材[1],在此基础上,结合舱室涉及的分析内容(空调通风、光照模拟、环境材料等),完成舱室全景程序开发工作,图2为科考船登船大厅360°VR全景效果。
图2 科考船登船大厅360°VR全景
本平台基于Unity3D开发,适配HTC VIVE虚拟现实硬件系统,集成SteamVR SDK,Unity3D是一款基于开源.net即Mono.net的组件化三维引擎,它对编辑器、跨平台发布、地形编辑、着色器、脚本、网络和物理等特性进行全面整合,具有开发效率高、运行稳定等特点,开发者可将工程文件发布为.exe执行文件提供给用户[2],表1为平台系统主要开发环境。
表1 平台系统开发环境
(1) VR软硬件环境搭建。虚拟样舱可视化体验平台适配HTC VIVE虚拟现实设备,首先需要搭建VR软件和硬件环境,在Unity3D的Asset Store上下载SteamVR SDK,导入Unity3D工程项目中。
(2) VR模型和贴图制作。将极地科考船相关舱室的CAD图纸、参考设计效果图等资料, 结合VR模型制作、材质贴图制作规范相结合,建立三维数字模型以及纹理贴图,导入Unity3D中,完成VR项目音效、图形界面、灯光设置渲染等艺术效果制作工作。
(3) VR内容开发与优化。结合平台开发需求,使用Unity3D开发引擎,集成HTC VIVE硬件设备的SteamVR SDK,进行VR内容方面的开发工作,并依据程序测试分析,进行内容优化。
(4) VR程序打包和发布。在上述工作流程基础上,对VR项目进行打包发布工作,选择Build Setting中的Platform,在目标平台上进行发布[3]。
传统的文件信息管理存在数据冗余且数据结构不一致等缺点,本文采用SQLite数据库搭建平台数据库框架,进行数字样舱属性参数和实体信息的管理工作,实现对舱室内装设计涉及的材料、家具、家电等数据信息进行妥善保存和有效结构化管理,用户在数据库系统中可以便捷地实现数据信息的检索、查询、数据处理、统计分析、编辑等功能。
SQLite是一款轻型的关系型数据库系统,具备数据处理速度快、开源性好、支持多平台等优点,SQL是一种结构化查询语言,通过SQL可实现表数据查询、修改、更新,以及对数据库复杂的访问等控制[4]。Unity3D实现对SQLite数据库的访问,首先需要将Mono目录下的Mono.Data.Sqlite.dll 、System.Data.dll、sqlite3.dll编译到Unity3D->Assets->Plugins文件目录中,并在C#程序中添加Mono.Data.Sqlite.dll引用文件[5]。
UI界面开发是系统中不可缺少的一个环节,Unity3D 4.6版本以后,Unity3D推出了新的UGUI系统,该系统为开发者提供了非常完善且高效的图形化交互界面,运行效率远远高于低级界面(手动实现)。UGUI高级界面的种类很多,包含Label(标签)、Button(按钮)、TextField(输入框)、ToolBar(工具栏)等,开发者可以使用C#和Javascript对UI进行交互功能的开发,实现预期效果[5]。
船舶内装设计要求舱室空间、色彩、照明、家具等具有鲜明的性格和艺术风格,是工程技术与室内艺术的有机结合,所以在VR环境中,对于内装设计方案的艺术效果表达也是十分重要的环节。在Unity3D里,所有的图形绘制都必须通过着色器(Shader),一般用到的都是Unity自带的Shader,开发者也可以通过ShaderLab创建个性化着色器,得到用户想要的特殊效果,进而增强虚拟样舱的画面表现。图3为会议室材质着色器效果。
图3 会议室着色器效果
舱室交互体验功能的开发,适配HTC VIVE 虚拟现实设备(见图4),集成SteamVR SDK,这部分内容实现主要由以下功能组成:
图4 HTC VIVE设备
(1) 舱室墙纸及地面材质动态编辑。舱室墙纸及地面材质动态编辑,可以让用户在虚拟环境中实时更改设计方案,体验不同的设计风格,激发用户按照自己的喜好装饰虚拟样舱,相比于传统效果图的表现形式,更能提升用户满意度,也为设计人员提供有效设计依据。图5为相关代码。
图5 更换材质代码
(2) 舱室家具实例化与互动。舱室家具实例化与互动不仅丰富了虚拟样舱样式,更提高了用户的体验感。与家具的互动可以让用户对舱室内部空间有更好的掌控权,不仅如此,对于舱室内部实体加入了重力感应,使它们可以像真实物理世界一样,具备物理属性。用户可以通过VR手柄控制器,对内部家具进行抓取、拾起、移动以及旋转,个性化配置家具家电(见图6),提前感受真实舱室的日常生活状态。
图6 舱室家具实例化交互界面
(3) 灯光模式切换。在虚拟样舱中,模拟真实世界的灯光模式变换以及灯光强度,让体验者实时感觉到不同的模式所带来的不同视觉效果变化。
(4) 舱室家具实体属性信息查询。通过“射线触发碰撞”方法,进行设计信息的可视化表达,通过手柄控制器点击舱室内部家具实体,获取该实体相关属性信息(如施工工艺、材料报价、空调通风、光照模拟等),达到设计信息“所见即所得”的目的,如图7和图8所示。
图7 舱室家具实例化工程
图8 分析属性信息查询
使用360°VR全景方式进行设计方案的可视化应用,具有制作成本较低,项目周期短等优点,在项目投标或样板舱建设阶段,应用舱室360°VR全景,不仅为舱室设计提供有效依据,也提高了项目投标的市场竞争力。舱室360°VR全景程序包括全景图基础素材制作、全景图片拼接以及全景程序开发等3个主要步骤组成。
(1) 将舱室三维数字模型导入3DMax软件,使用该软件进行全景图基础素材的制作工作,以固定视角,分别渲染舱室上、下、左、右、前、后共6张图片,导入Unity3D引擎中。
(2) 在Unity3D中,创建一个mat,使用天空盒进行六面图的拼接工作,修改shader为skybox/6 sided;在Inspector中,设置TextureType为Texture,并将纹理图片Wrap Mode设置为Clamp,保证拼接缝隙显示最优。
(3) 在MonoDevelop开发环境中,使用C#对全景素材进行功能开发,包括播放模式自由变换、不同舱室选择、功能看板提示、背景音乐设置等。
虚拟样舱可视化体验平台成果发布后,用户可以对项目相关资源文件(如模型文件、材质、纹理和场景资源等)进行动态更新升级,同时,舱室设计相关属性信息(如材料报价、空调通风、光照模拟、家具设施等)进行外部资源的编辑配置,这样可以让平台更加灵活,可扩展性更强。本文采用AssetBuddle项目管理机制进行该功能实现。
AssetBundle是一种特殊格式的文件组织形式,可以在项目中按需加载,它支持所有Unity3D支持的文件类型,Unity3D在导入时将此类文件当作一个TextAsset。首先创建工作流:相同的模型尽量打包在一起,公用一套资源文件,不相同的模型尽量分开打包;相同模型如具有不同的脚本、组件,则需要把他们放在不同的Prefab中。最后把这些Prefab一起打包在一个AssetBundle中,并将其传至服务器,客户端从服务器下载AssetBundle,并按需操作每个AssetBundle中的资源。图9为使用Unity3D AssetBundle动态加载地板材质资源。
图9 AssetBundle动态加载地板材质资源
(1) 完成工程项目的开发工作后,可以将虚拟样舱可视化体验平台发布成为独立的.exe执行程序(见图10),用户点击“虚拟样舱可视化体验平台V1.0Beta.exe”软件图标,即可启动程序。
图10 Unity3D成果打包发布
(2) 可将舱室360°VR全景程序发布在免费云平台上,通过手机移动端进行线下和线上的使用体验。
本文以国内极地科考船内装工程项目为实例,针对传统船舶内装设计手段和表达方式存在的不足,开发船舶虚拟样舱可视化体验平台,将船舶舱室的设计信息在3D虚拟环境中真实地表达出来,同时阐述了该平台开发过程中涉及的关键技术,探索“VR+船舶内装”创新模式。不仅如此,通过内装设计项目的不断积累,将宝贵的设计资料有效地集成在该平台中,为设计人员提供有效的设计依据。
该平台可扩展性强,研发团队在后续的研究中将进一步结合物联网技术,与智能舱室控制网关系统对接,实现舱室的互联互通,为智能舱室产品开发奠定技术基础。
[1] 常涛,王子煊.360°全景图像拼接技术分析[J].江苏科技信息,2017(4):67-68.
[2] 吴亚峰, 于复兴. Unity3D 游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2012.
[3] DENG F P,HONG G,ZHANG S. Research on motion sensing interaction technology based on HTC Vive [C]//International Conference on Machinery, 2017.
[4] 梁效宁,黄旭,朱星海. SQLite数据库文件恢复提取技术研究[J].计算机科学,2016,43(B12):16-19.
[5] 张利利,李仁义,李晓京,等.Unity3D与数据库通信方法的研究[J].计算机技术与发展,2014(3):229-232.