写点什么

3D/VR 选座技术探索

  • 2020-03-06
  • 本文字数:1277 字

    阅读完需:约 4 分钟

3D/VR 选座技术探索

一、行业现状

实景 VR 目前的行业应用案例逐渐增多,在使用 720°全景相机拍摄,部分厂商基于多实景照片进行多叉数建模,在链家等房产行业获得广泛应。在票务行业,场馆选座的国内外的同类产品中也有试点落地,国外的有 TicketMaster、Stubhub 等,国内尝试落地的有摩天轮,针对大型场馆,目前的实现思路偏向于使用 3D 建模+后渲染输出基于 ECB 的全景照片,下发后用于大前端多端展示。


二、大麦解法

大麦落地全景 VR 主要是为用户的选座决策提供辅助和沉浸式体验,目前综合考虑选座页面用户交互和落地成本,采用大场馆建模+全景渲染和小场馆实景 VR 拍摄节奏。



  1. 落地策略


大场馆-3D 建模+渲染


小场馆-实景 VR


  1. 建模全链路流程


场馆建模经过输出白模、材质纹理贴图等流程进行输出建设,基于经典 3dmax 进行近似建模。



  1. 全链路流程


整体流程按大节点分成:建模/拍摄→生产→选座基础平台→大前端主要环节,建模部分目前使用 3dmax 的常规方案,并调研基于 3D 激光雷达 + SLAM 的量产方案。


三、3D 场馆

  1. 模型纹理加载


针对建模输出的场馆模型,3dmax 导出后容量在 50M~200M 之间,采用 glTF 模型压缩,再配合 LOD 多层次细节纹理,可有效提升基于 three.js 的超大纹理场馆的打开速度。



LOD 效果图展示


四、VR

  1. VR Engine


VR 整体方案选择使用基于 ECB 球体坐标的投影方案,渲染合成 2:1 的全景图片,图片本身经过 moz-jpeg 压缩、智能降噪和超分重建,供 VR Engine 渲染,也为为全景图片展示秒开打下基础。大前端 VR Engine 层面,APP 侧 android/ios 较为成熟,选用 google/apple 自带方案,h5 侧 engine 性能和集成度差异较大,调研了目前市面上常见的几款 engine,最终选择使用 Pannellum 作为首选引擎。支持罗盘指示、全景漫游、全景标注、多清晰度等扩展功能。



  1. VR 视图及优化


透视视图、鱼眼视图、立体视图、建筑视图、潘尼尼观、小行星等。GVR 进行了优化封装,包括但不限于:


a. 镜头失真校正(Lens distortion correction)


b. 空间音频(Spatial audio)


c. 头部跟踪(Head tracking)


d. 3D 校准(3D calibration)


e. 并排渲染(Side-by-side rendering)


f. 立体几何配置(Stereo geometry configuration)


g. 用户输入事件处理(User input event handling)


五、全链路量产

全面落地,需要建模和拍摄的场馆较多,针对 VR 落地应用,需要进行量产操作,按照梳理,核心步骤大致分为以下几步:


  • 拍摄:专业 camera + 大麦 B 端 = 遥控拍照 + 携带座位信息

  • 生产:绑定、fov 倾角计算、压缩、超分重建

  • 选座基础平台: 底图保护-暗水印、流式加密

  • 大前端:三端 VR Engine、渐进式加载、流式加密


六、总结

针对上线的图片,进行了合成优化以及基于 Lanczos/hpx 的图像压缩,以及流式密码加密,以保障用户的秒开和数据安全。3D/VR 的持续建设是智慧场馆重要的一环,也为用户购买决策提供了可视化手段,量产阶段后继续探索基于大场景点云渲染建模和商业化营销能力,以期为用户带来更好的沉浸式体验。


作者简介


阿里文娱无线开发专家 王璟瑶


相关链接


10W 座位的大场馆究竟是怎么画出来的?


10 倍高清不花!大麦端选座SVG 渲染


首次揭秘!看大麦如何掌控超大规模高性能选座抢票


2020-03-06 11:001773

评论

发布
暂无评论
发现更多内容

读书笔记之:认知觉醒

甜甜的白桃

读书 书单 阅读 6月月更

【最佳实践】修改Anaconda中的Jupyter Notebook默认工作路径

迷彩

Python Anaconda Jupyter Notebook 6月月更

【sql语句基础】——查(select)(合并查询+连接查询)

写代码两年半

sql 查询 MySQL 数据库 数据库· 6月月更

如何在 Vue 项目中,通过点击 DOM 自动定位VSCode中的代码行?

vivo互联网技术

Vue 前端 vscode vite webpack

推荐的十个Flutter插件

坚果

6月月更

Push还是Pull,这是个问题么?

MatrixOrigin

push Pull MatrixOrigin MatrixOne 数据库·

leetcode 310. Minimum Height Trees 最小高度树(中等)

okokabcd

LeetCode 搜索 数据结构与算法

人人都在搞数据治理

奔向架构师

数据治理 数据管理 6月月更

Python代码自动提取Win10内置的锁屏壁纸

宇宙之一粟

Python 6月月更

spring4.1.8扩展实战之三:广播与监听

程序员欣宸

Java spring Spring Framework 6月月更

【涨姿势】你没用过的BadgeDrawable

yechaoa

android 6月月更 material design BadgeDrawable

Docker常用命令总结

乌龟哥哥

6月月更

Linux开发_介绍目录编程、标准文件编程、Linux系统文件接口编程、GDB调试

DS小龙哥

6月月更

数组(二)

Jason199

数组 js 数组操作 6月月更

ZooKeeper进阶(二):ZooKeeper的运行

No Silver Bullet

zookeeper 6月月更

攻防演练中六条安全体系建议

穿过生命散发芬芳

6月月更 攻防演练

改造微服务的三个时机

阿泽🧸

微服务 6月月更

G1收集器概述

Nick

Java GC G1垃圾回收器 6月月更 Garbage-First Collector

Android ShapeableImageView使用详解,告别shape、三方库

yechaoa

android 6月月更 material design ShapeableImageView

Archiva 运行时提示 JAXBException 错误

HoneyMoose

【Python技能树共建】scrapy 上手篇

梦想橡皮擦

Python 爬虫 Python爬虫 6月月更

C#入门系列(十四) -- 结构体应用

陈言必行

C# 6月月更

文档管理系统应该具备哪些功能?

小炮

物联网低代码平台如何查询授权信息?

AIRIOT

物联网 低代码开发

前端uni框架学习day_2

恒山其若陋兮

前端 6月月更

MobX 获取网络数据来渲染酷炫的曲线

岛上码农

flutter ios 前端 安卓 6月月更

Camtasia2022全新版功能详情讲解

茶色酒

Camtasia Studio2022

线程的创建方法

卢卡多多

线程池 线程安全 6月月更

【Java Web系列】Cookie的原理分析和使用细节

倔强的牛角

Java javaWeb Cookie 6月月更

NodeJS 5分钟 连接MySQL 增删改查 🥇

德育处主任

node.js MySQL 6月月更

InfoQ 极客传媒 15 周年庆征文 | Kettle实现ES到ES循环增量抽取

写程序的小王叔叔

架构 kettle ELK Stack InfoQ极客传媒15周年庆

3D/VR 选座技术探索_文化 & 方法_阿里巴巴文娱技术_InfoQ精选文章