前言

最近做了一个720全景工具,有很多开发人员觉得全景图很简单,github上也有很多全景图的源码,但当实际使用的时候会发现有很多坑,还达不到真正意义上的商用级别,下面我会把我们开发这个项目遇到的一些坑和解决方案都梳理处理,已经发布到线上https://720.h5ds.com/

工具简介:

H5-720全景(简称H5-720)是一款基于threejs + h5的全景图制作工具,用户可上传全景图片制作全景图,H5-720可以预设按钮,添加元素,添加热点,添加特效,添加多种交互方式,一键开启重力感应,VR眼镜支持,PC端制作后可以适配多端查看。

什么是全景图?

在这之前,简单的介绍下全景图,可以360度无死角查看的四周画面的图片,百度百科专业的解释是这样的: 全景图通过广角的表现手段以及绘画、相片、视频、三维模型等形式,尽可能多表现出周围的环境。360全景,即通过对专业相机捕捉整个场景的图像信息或者使用建模软件渲染过后的图片,使用软件进行图片拼合,并用专门的播放器进行播放,即将平面照片或者计算机建模图片变为360 度全观,用于虚拟现实浏览,把二维的平面图模拟成真实的三维空间,呈现给观赏者。

全景图小行星视角:

全景图VR视角:

我们要查看全景图的时候,需要使用特殊的软件才可以。

有的叫720全景有的叫360全景,其实都是一样的,因为有人把左右360和上下360度加起来了,意思是上下左右都可以查看。

全景图web端方案

web端要展示全景图,我们这里选用threejs来实现,目前常见的方案有3种。

一、将全景图贴图到球面上

类似地球仪一样,这个做法是最简单的,但是这种做法有很大的缺陷,如果贴图太大,移动端浏览器打开会直接崩溃,没法支持高清图片,PC端的性能也会非常差,图片太大的情况下GPU性能要求会非常高。

二、将图片切片成6个,贴图到一个正方体上

针对第一种情况的优化版本,也是官方提供的全景图方案就是6面体全景图,将全景图切片成6个,然后贴图到一个正方体上。我们可以使用工具将全景图切片成6个:https://jaxry.github.io/panor…

然后贴图到正方体的6个面上

这样也有一些缺陷:不支持超高清的图片,因为超高清的图片切片成6个也会很大,另外如果是正方体的贴图就没法做小行星视图了。所以第三种终极方案就出现了

三、将全景图切片成N张瓦片图,然后贴图到一个球面上

我们项目中把图片切割成了16份

然后使用threejs自定义shader将贴图贴到了球面上,每个瓦片图都会独立加载更新,这样就可以做按需加载处理。要做模糊到清晰的加载效果需要做2层球,红色的球包裹蓝色的球,蓝色的球体使用瓦片图,红色的图使用低清晰的全景图,这样就可以实现一开始模糊,加载每个瓦片图成功后就慢慢变的清晰了。当然如果要做更高清的效果,可以监听缩放比例,缩放变大之后就替换视角内更高清的瓦片图。

我们采用第三种方解决了全景图的性能问题和预加载的问题

threejs 720/360全景工具开发心得相关推荐

  1. 项目分享 | MindSpore Insight AI可视化工具开发心得

    01 概述 MindSpore Insight是昇思MindSpore的可视化调试调优工具.作为开发者,我参与了MindSpore Insight工具部分功能的开发.本文将对MindSpore Ins ...

  2. 720环物全景制作_什么是全景?关于360°全景和720°全景的区别你知道吗?

    随着全景步入我们的日常生活,全景旅游.全景看展.全景看房等全景观念也随之应运而生,全景技术在企业营销.信息展示.设计创作.摄影摄像等领域也都起着潜移默化的作用.有很多刚刚接触到全景领域的人们对于全景还 ...

  3. Android 360全景开发(PanoramaGL)

    <pre name="code" class="java">最近公司要求做室内的360全景开发,在网上搜了些资料,基本上都是给的官网链接,自己研究了 ...

  4. 【Android开发VR实战】二.播放360°全景视频

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...

  5. 游戏开发心得——书籍篇——《游戏引擎框架》-专业工具

    游戏开发心得--书籍篇--<游戏引擎框架>-专业工具 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 学习<游戏引擎框架&g ...

  6. 360全景开发(一)

    自己车上装了个360全景,但不知是安装调试的问题,还是APP开发的问题,拼出来的360全景部分地方有畸变,拼接缝隙明显,额外功能(例如ADAS)没有,果然便宜没好货...恰好最近在学图像处理,所以看不 ...

  7. 手机拍摄全景图并且使用Threejs实现VR全景,超简单WebVR

    网上各种VR全景看房.VR看车.VR展馆.VR景区...等等这些VR全景效果,看到这些应用效果就在想到底如何实现的呢,又是如何制作出出来的呢?等一下!什么是VR全景呢?就怕有人这么问,哈哈,先上图!  ...

  8. 安卓版App开发心得

    为什么80%的码农都做不了架构师?>>>    从2016年4月到6月主要做的工作是网站的开发,而6月到现在2016年8月初,主要做的工作是Android和IOS两种App的开发,又 ...

  9. 使用css3d-engine.js编写简单的 360全景h5页面

    什么是这里所说的360全景h5页面?查看下面的案例进行了解: 开发项目:http://game.flyh5.cn/resources/game/wechat/zjh/fangtuo/index.htm ...

  10. Threejs+lumion 360全景图

    Threejs+lumion 360全景图 Threejs+lumion 360全景图 主要是技术实现步骤 lumion部分: threejs部分: Threejs+lumion 360全景图 作者: ...

最新文章

  1. Oracle记录被另一个用户锁住
  2. 用于单片机的几种C语言算法
  3. curl有php内存缓存,PHP CURL内存泄露的解决方法
  4. 生成纯字母随机编号的示例(大小写混合).sql
  5. Linux 修改环境变量
  6. dz email地址无效_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)
  7. MySQL 字段类型解析
  8. ElasticSearch笔记整理(三):Java API使用与ES中文分词
  9. 简历是这样选出来的!
  10. QT 控件动态效果之QPropertyAnimation
  11. 【过关斩将】如何制作高水平简历-原则篇
  12. 本地词库翻译php,有道词典词库(您也可以轻松翻译离线的有道词典词库)
  13. otsu阈值分割算法原理_OTSU阈值分割
  14. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
  15. 本地计算机无法设置共享文件夹,共享服务,详细教您win10共享文件夹无法访问怎么办...
  16. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)
  17. mysql和python先学哪个_Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)
  18. 【Unity】创建一个自己的AR安卓程序
  19. 【Pytorch神经网络实战案例】33 使用BERT模型实现完形填空任务
  20. Rational Rose 2007的详细安装步骤

热门文章

  1. windows下编程可执行程序加载.dll动态库失败
  2. 许三多买了中石油--暴笑股民语录许三多
  3. 消防工程师 10.3 火灾自动报警系统-可燃气体、电气火灾、消控室 11.灭火器
  4. 什么是“理解”?如何在人工智能中定义“理解”?(what is understanding ?)
  5. 股票历史数据-股票历史数据在线查询系统
  6. DFS hdu1181(变形课)
  7. C笔记《C Primer Plus 6E》
  8. c语言stract函数是什么,您好,这个函数该怎么办,是关于C语言strcat函数?
  9. 翟菜花:国产游戏为什么还不适合出海“亮剑”
  10. 全面认识痛风:症状、风险因素、发病机理及管理