先,我们先来了解一下Photo Sphere Viewer,它是一款基于Three.js的360X180度全景图预览js插件。该js插件可以360度旋转查看全景图,也可以上下180度查看图片。使用该插件的唯一要求是浏览器支持canvas或WebGL。

Photo Sphere Viewer是纯JS,并且基于Three.js,允许在支持HTML Canvas的其他系统上支持WebGL系统(最新浏览器)以及相当不错的表现。
它也可以与触摸屏一起工作!

360全景就是视角超过人的正常视角的图像,而这里我们所说的全景特指水平视角360度,垂直视角180度的图像。全景实际上只是一种对周围景象以某种几何关系进行映射生成的平面图片。

球面全景图(原理)

利用一张全景图围成一个球,自身位置位于球体内。由于图片是矩形,所以最上和最下的缝合处很明显就能够看得出来。
球面全景图是最接近人眼的构建模式,若利用多个立面构建,拼接方法繁琐,性能消耗高

1、使用该全景图插件时要引入three.min.js和photo-sphere-viewer.min.js文件。

下载Three              下载photo-sphere-viewer.js

2、创建一个空的div来放置全景图

3、初始化插件(很重要)

创建一个新的PhotoSphereViewer对象,然后在这个对象中插入一个参数对象,有两个参数是必须设置

(panorama和container)

下面是它的参数列表:

panorama:必填参数,全景图的路径。
container:必填参数,放置全景图的div元素。
autoload:可选,默认值为true,true为自动调用全景图,false为在后面加载全景图(通过.load()方法)。
usexmpdata:可选,默认值为true,如果Photo Sphere Viewer必须读入XMP数据则为true。
default_position:可选,默认值为{},定义默认的位置,及用户看见的第一个点,例如:{long: Math.PI, lat: Math.PI/2}。
min_fov:可选,默认值为30,观察的最小区域,单位degrees,在1-179之间。
max_fov:可选,默认值为90,观察的最大区域,单位degrees,在1-179之间。
allow_user_interactions:可选,默认值为true,设置为false则禁止用户和全景图交互(导航条不可用)。
tilt_up_max:可选,默认值为Math.PI/2,向上倾斜的最大角度,单位radians。
tilt_down_max:可选,默认值为Math.PI/2,向下倾斜的最大角度,单位radians。
zoom_level:可选,默认值为0,默认的缩放级别,值在0-100之间。
long_offset:可选,默认值为PI/360,mouse/touch移动时每像素经过的经度值。
lat_offset:可选,默认值为PI/180,mouse/touch移动时每像素经过的纬度值。
time_anim:可选,默认值为2000,全景图在time_anim毫秒后会自动进行动画。(设置为false禁用它)
theta_offset:过时的选项,可选,默认值为1440,自动动画时水平方向的速度。
anim_speed:可选,默认值为2rpm,动画的速度,每秒/分钟多少radians/degrees/revolutions。
navbar:可选值,默认为false。显示导航条。
navbar_style:可选值,默认为{}。导航条的自定义样式。下面是可用的样式列表:
backgroundColor:导航条的背景颜色,默认值为rgba(61, 61, 61, 0.5)。
buttonsColor:按钮的前景颜色,默认值为transparent。
activeButtonsBackgroundColor:按钮激活状态的背景颜色,默认值为rgba(255, 255, 255, 0.1)。
buttonsHeight:按钮的高度,单位像素,默认值为20。
autorotateThickness:autorotate图标的厚度,单位像素,默认值为1。
zoomRangeWidth:缩放的范围,单位显示,默认值50。
zoomRangeThickness:缩放的范围的厚度,单位像素,默认值1。
zoomRangeDisk:缩放范围的圆盘直径,单位像素,默认值为7。
fullscreenRatio:全屏图标的比例,默认值为3/4。
fullscreenThickness:全屏图标的厚度,单位像素,默认值为2。
loading_msg:可选,默认值为Loading…,图片加载时的提示文字。
loading_img:可选,默认值为null,在加载时显示的图片的路径。
size:可选,默认值null,全景图容器的最终尺寸。例如:{width: 500, height: 300}。
onready:可选值,默认值为null。当全景图准备就绪并且第一张图片显示时的回调函数。

方法介绍

addAction():添加事件(插件没有提供执行事件的方法,似乎是提供给插件内部使用的)。
fitToContainer():调整全景图容器大小为指定大小。
getPosition():获取坐标经纬度。
getPositionInDegrees():获取经纬度度数。
getZoomLevel():获取缩放级别。
load():加载全景图()。
moveTo(longitude, latitude):根据经纬度移动到某一点。
rotate(dlong, dlat):根据经纬度度数移动到某一点。
toggleAutorotate():是否开启全景图自动旋转。
toggleDeviceOrientation():是否开启重力感应方向控制。
toggleFullscreen():是否开启全景图全屏。
toggleStereo():是否开启立体效果(可用于WebVR哦)。
zoom(level):设置缩放级别。
zoomIn():放大。
zoomOut():缩小。

基于Threejs的360全景图预览相关推荐

  1. Threejs+lumion 360全景图

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

  2. Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)(排坑记录)

    Java基于springmvc实现文档预览(openoffice+swftools+flexpaper)(排坑记录) 本文代码来源已在末尾标注,写本文的目的在于记录自己在实践过程中遇到的问题及解决方案 ...

  3. 基于Vue实现头像选择预览

    基于Vue实现头像选择预览 需求是点击头像这一栏可以弹出选择文件的弹出框. 1.首先添加一个input输入框,将其隐藏,设置一个accept属性,说明只选择图片,并且绑定ref属性方便原生dom操作 ...

  4. 使用HTML5和jQuery插件Reel实现一个超酷的星际争霸2兵种动画360度预览效果

    这是一个用HTML5和jQuery插件结合使用生成的图形特效,是基于星际争霸2的图片资源的. 在线演示 演示demo下载 HTML代码 <header><h1>Starcraf ...

  5. IE浏览器和360无法预览pdf的问题

    关于IE无法预览PDF的问题 360浏览器使用的是本地IE的内核 所以360和IE都会出现无法预览PDF的问题 解决方案: 安装AdbeRdr930_zh_CN.exe 当然也可以下载其他版本 配置I ...

  6. 基于微信的图片放大预览

    微信开发,单击图片可以进行图片的单独预览,写个随笔,以防我的金鱼记忆 步骤; 1.引入微信的api的cdn(网上很多) 2.调用微信提供的api,如下 3.给需要预览效果的图片<img > ...

  7. 基于vue实现word 在线预览

    1.安装mammoth插件 npm install mammoth 2.HTML代码 <template><div id="wordView" v-html=&q ...

  8. 基于SpringBoot的文件在线预览神器,支持99%的文件在线预览

    kkFileView简介 kkFileView可以用来搭建文件在线预览服务,在Github上已有5.7k+Star.该项目使用流行的SpringBoot搭建,易上手和部署,基本支持主流办公文档的在线预 ...

  9. JS 实现全景图预览

    WebGL(全称 Web Graphics Library)是一种 3D 绘图协议,这种绘图技术标准允许把 JavaScript 和 OpenGL ES 2.0 结合在一起,通过增加 OpenGL E ...

最新文章

  1. AI解译遥感影像,商汤的“黑科技”了解一下
  2. uniapp自定义顶部导航组件
  3. 动态控制SAP C4C UI元素的显示和隐藏
  4. android opencv 水印,关于opencv对图片添加水印
  5. 函数计算助力语雀构建稳定且安全的业务架构
  6. odoo12 日历模块_日历-ODOO ERP界面布局与操作说明|ODOO 13教程
  7. 电脑怎么结束进程_小协漫谈 | 聊聊电脑卡顿那些事
  8. 在linux centos7上安装git
  9. matplotlib坐标设置(笔记二)
  10. 《RHEL6.3 FTP服务器虚拟用户的配置(含图)》——如此简单
  11. html----js控制下拉框(详解
  12. GRE蓝宝的核心词汇
  13. RAID Introduction
  14. excel sumif 多条件
  15. 2019年CSDN排名前10名大神
  16. 使用路由器实现(非常)基本的家庭网络家庭安全
  17. 掌握这5款 Edge插件,让你的浏览器使用更高效!
  18. Windows返回桌面快捷键
  19. mysql中两根竖线什么意思_五线谱中两根竖线是什么意思?
  20. S7-1200数据类型

热门文章

  1. SKIL/安装/Amazon ECS
  2. 玩游戏 CPU温度就猛升到90度以上,为什么
  3. pytorch报错:RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x2500 and 3020x1600)
  4. 实时显示GPU的两种方法(灵机一动)
  5. React-项目实战-硅谷直聘
  6. 电脑崩溃蓝屏问题如何重装系统
  7. cf火力全开服务器未响应,《穿越火线火力全开》新手必须知道的三件事
  8. choregraphe控制nao跳舞教程
  9. android 窗体透明的,黑暗度等的设置技巧
  10. requestPermissions读写手机存储权限_单片机实例分享,RFID卡读写器的设计