基于Three.js的360度全景--photo-sphere-viewer--简介

这个是基于three.js的全景插件  photo-sphere-viewer.js 

————————————————————————————————————————

1、能添加热点;

2、能调用陀螺仪;

3、功能比较完善,能满足大多数人的需求了;

4、最主要的是操作简单,提供一长全景图片即可(大多数手机都可以拍摄)。

直接上代码:

var photosphere = document.getElementById('photosphere');
 var PSV = new PhotoSphereViewer({
  // 全景图片路径
//  panorama: 'Bryce-Canyon-National-Park-Mark-Doliner.jpg',
  panorama: 'sun.jpg',
  // 容器
  container: photosphere,
  //标题
  caption:"",
  // 关闭动画
  time_anim: false,
  //鱼眼镜头
  fisheye:true,
  // 显示导航栏
//  navbar: true,
//  自定义导航的顺序
  navbar:  [
   'autorotate',
   'zoom',
   'gyroscope',
   'markers',
   'caption',
   'fullscreen'
  ],
  //按钮提示
  lang: {
   autorotate: 'Automatic rotation',
   zoom: 'Zoom',
   zoomOut: 'Zoom out',
   zoomIn: 'Zoom in',
   download: 'Download',
   fullscreen: 'Fullscreen',
   markers: 'Markers',
   gyroscope: 'Gyroscope'
  },
  // 设置画布大小
  size: {
   width: '100%',
//   height: '323px'
   height: '603px'
  },
//  启用陀螺仪
  gyroscope:true,
//  准备就绪就执行
//  onready:Ready,
  // 标记列表
  markers: [{
   // 当单击时打开面板的图像标记
   id: 'image',
   longitude: 5.69810,
   latitude: -0.13770,
   image: 'http://photo-sphere-viewer.js.org/assets/pin-blue.png',
   width: 32,
   height: 32,
   anchor: 'bottom center',
   tooltip: 'A image marker. <b>Click me!</b>',
   content: document.getElementById('lorem-content').innerHTML
  },
   {
    // 具有自定义样式的html标记
    id: 'text',
    longitude: 0,
    latitude: 0,
    html: 'HTML <a href="javascript:;" onclick="top.hello();">markerd</a> ♥',
    anchor: 'bottom right',
    style: {
     maxWidth: '100px',
     color: 'white',
     fontSize: '20px',
     fontFamily: 'Helvetica, sans-serif',
     textAlign: 'center'
    },
    tooltip: {
     content: 'An HTML marker',
     position: 'right'
    }
   },
   {
    // 圆圈标记
    id: 'circle',
    circle: 20,
    x: 2500,
    y: 1000,
    tooltip: 'A circle marker'
   },
   {
    // 圆圈标记
    id: 'circle2',
    circle: 30,
    x: 2000,
    y: 1200,
    tooltip: 'A circle marker'
   }
  ]
 });

  

注:调用陀螺仪需要 引用 DeviceOrientationControls.js;

使用方法:

1、这个插件的用法很简单,引入如下2个js

<script src="js/three.min.js"></script>
<script src="js/photo-sphere-viewer.min.js"></script> 

2、初始化一下,(具体各种参数配置根据情况而定)

复制代码
var PSV = new PhotoSphereViewer({
        // 全景图的完整路径
        panorama: 'images/360img03.jpg',

        // 放全景图的元素
        container: div
})
复制代码

 

配置参数

下面是该全景图插件的所有可用配置参数:

复制代码
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。当全景图准备就绪并且第一张图片显示时的回调函数。
复制代码

 3、上面demo的代码

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>360全景图</title>
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
    <!-- 启用webAPP全屏模式-->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <!-- 隐藏状态栏或者设置状态栏的颜色-->
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <!-- 禁止缓存访问页面-->
    <meta http-equiv="Pragma" content="no-cache">
    <meta name="applicable-device" content="mobile">
    <!-- 页面关键词-->
    <link rel="stylesheet" href="css/demo01.css">
    <script src="js/three.min.js"></script>
    <script src="js/photo-sphere-viewer.min.js"></script>
    <!---->
    <script src="js/demo01.js"></script>
    <!--[if IE]>
        <script src="http://libs.useso.com/js/html5shiv/3.7/html5shiv.min.js"></script>
    <![endif]-->
</head>
<body>
    <div class="main">
        <h3 id="title">旋转查看效果</h3>
        <div id="container"></div>
    </div>
</body>
</html>
复制代码
复制代码
*{
    margin: 0;
    padding: 0;
    list-style: none;
    box-sizing: border-box;
    text-decoration: none;
    border: 0;
    outline: 0;
}
.main{
    max-width: 640px;
    width: 100%;
    margin: 0 auto;
}
.main h3{
    text-align: center;
    padding: 10px 0;
}
复制代码
复制代码
/**
 * Created by Administrator on 2016/11/29.
 */


//必须在服务器上才能看到效果!
window.onload=function(){
    getTitleHeight();
    loadingAllImg();
}
//让全景图刚好撑满屏幕
var canvasHeight;
function getTitleHeight(){
    var title=document.getElementById('title');
    var titleHeight=parseFloat(getComputedStyle(title).height);
    var maxHeight=window.innerHeight;
    canvasHeight=parseFloat(maxHeight-titleHeight)+'px';
}
//全景图参数配置函数
function loadingAllImg(){
    var div = document.getElementById('container');
    var PSV = new PhotoSphereViewer({
        // 全景图的完整路径
        panorama: 'images/360img03.jpg',

        // 放全景图的元素
        container: div,

        // 可选,默认值为2000,全景图在time_anim毫秒后会自动进行动画。(设置为false禁用它)
        time_anim: false,

        // 可选值,默认为false。显示导航条。
        navbar: true,

        // 可选,默认值null,全景图容器的最终尺寸。例如:{width: 500, height: 300}。
        size: {
            width: '100%',
            height: canvasHeight
        }
    });
}
复制代码

 

同时,在github上面,大家搜索(Photo Sphere Viewer),也能找到!目前这个插件感觉还不是很完善。

最后附上 photo-sphere-viewer.js API-------http://photo-sphere-viewer.js.org/

转载于:https://www.cnblogs.com/smiler/p/8628347.html

不止VR看房:用Three.js和Photo Sphere Viewer,在小程序里还能这样玩全景图 本文探讨了Three.js与Photo Sphere Viewer在小程序中实现全景图交互的创新应用。通过技术组合,开发者可以超越传统VR看房,打造电商商品展示、虚拟旅游导览等沉浸式体验,提升用户交互质量。文章详细介绍了工具选型、应用场景及性能优化技巧,为全景图技术在小程序中的创意实践提供实用指南。 阅读详情

相关推荐

Vue使用photo-sphere-viewer全景插件模拟VR

vue使用photo-sphere-viewer实现全景图 模拟VR

super1468650921的博客 1128

前端JS用PhotoSphereViewer插件实现全景3D功能demo

【代码】前端JS用PhotoSphereViewer插件实现全景3D功能demo。

weixin_50367873的博客 785

photo-sphere-viewer全景图(附自写demo)

photo-sphere-viewer,实现球形滚动查看图片,代码比较简单,没写注释,主要看demo跑一次应该就会了,网上资源太少,气死我了,都是复制粘贴,只能自己写一个demo

Three.js文字(非3D型)添加方式

Three.js文字(非3D型)添加方式 即便是真3D模型的动画,有时候也需要添加一些平面型说明性内容如文字描述等,并非所有场景都需要将文字设置为3D文本,这里介绍非3D型文字添加的一种容易实现的方式。并以Electron工程作为范例。 文本添加方式 Electron是适合实现Three.js三维动画设计的平台,其前后端功能结合特性,使得设计的过程中不必如常规方式需要设置一个服务器进行访问。 这里实现的方式是通过HTML里的Layer的概念,HTML里展示的内容,可以按照视觉的层进行布局,也就是Z轴。具体方

Pegasus的软件博客 2180

360度全景展示插件pano.js

是一款可以实现360度全景展示特效的jquery插件。该360度全景展示特效支持使用鼠标拖拽移动图片,也可以通过左右导航按钮来移动图片

h5:three.js+photo-sphere-viewer.js 全景场景切换,全景家居

h5:three.js+photo-sphere-viewer.js 全景场景切换,全景家居,使用简单,易懂

THREEJS在场景图上动态标识一些文字方法二(文字精灵sprite)

点击查看原文链接 可以动态监控某个数据的变化,并实时显示到模型当中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Sprite 粒子(精灵)创建文字</title> <style> body { margin: 0; overflow: hi

weixin_44870969的博客 1万+

photo-sphere-viewer-demo-master.zip

photo-sphere-viewer-demo-master.zip

Three.js创建文字(Creating text)

BMFont的渲染支持自动换行、字母间距、字句调整、signed distance fields with standard derivatives、multi-channel signed distance fields、多纹理字体等特性。使用HTML通常是最简单、最快速的添加文本的方法,这是大多数的Three.js示例中用于添加描述性叠加文字的方法。然后使用CSS来将其绝对定位在其它具有z-index的元素之上,尤其是当你全屏运行three.js的时候。

w418856的博客 1171

threejs-StereoscopicEffects:立体显示使用ThreeJS创建的3D场景的效果

Three.js的StereoscopicEffects 该模块提供了效果,可通过多种方法以立体视觉(真实深度感知)显示用threeJS创建的3D场景。 地位 在职的 它有什么作用? 用threeJS显示3D场景非常好,但是显示它们以使用户可以真实地查看它们甚至更好。 作为人类,基于我们的眼睛所看到的视差的细微差异,我们具有很强的深度感知能力。 在threeJS中,StereoCamera可以独立地模仿每只眼睛的感知,但是其余的工作要由开发人员来完成。 此外,存在大量显示立体内容的方法。 每个人都有其优点和缺点,显示一个或另一个取决于用户使用或喜欢的设备。 因此,最好的办法是让用户选择他们的显示模式。 该模块允许以多种方法轻松显示。 支持哪些方法? 单视图[不立体] 左视图 单视图右 并排 平行检视 交叉视图 平行变形视图 交叉变形视图 顶部和底部 上下视图 底视图 上下变形视

手把手教你用STM32单片机控制双向可控硅调光(附完整代码+电路图)

本文提供了一套完整的STM32单片机控制双向可控硅实现灯光无级调光的实战方案。详细讲解了硬件电路设计,包括过零检测与隔离驱动,并剖析了基于定时器中断的软件核心逻辑,通过精准的相位角计算实现平滑的灯光强度控制。附有完整代码与电路图,适合嵌入式开发者实践。

weixin_29194255的博客 954

这是基于three.js+photo-sphere-viewer.js 全景图场景切换

这是基于three.js+photo-sphere-viewer.js 全景图场景切换 效果图 :http://122.51.121.122:8066/szovo 起因很简单,公司做宣传想要做全景图,正好我会些three.js,然后这个任务就交到我这里来了。经过我一段时间的调研发现现在市面上一些公司主营业务就是全景图展示。他们所用的技术基本是基于成熟的一款付费插件制作。所以我就选择了three.js+photo-sphere-viewer.js 实现全景图效果 我们先来了解一下Photo Sphere Vi

qq_40322724的博客 3800

本地化搭建DeepSeek+RAGFlow,构建个人知识库

本地化搭建DeepSeek+RAGFlow,构建个人知识库。至少32G以上内存、500G以上空余磁盘空间。

gogospecter的专栏 7427

基于 Vue +three.js +Photo Sphere Viewer + 高德地图实现 VR 效果

在实现这个项目的过程中,我们关注用户体验的提升。VR 技术让用户更直观地感受到房屋的空间布局,而高德地图的集成则提供了便捷的房屋定位方式。这种结合不仅提升了产品的附加值,也让用户在选择家居产品时感受到更强的参与感。随着技术的不断发展,我们相信 VR 看房和实时场景展示将成为家居行业的新趋势。

2202_75337835的博客 2653

基于STM32的HC-SR04超声波模块测距(新手级)

本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。

weixin_63758495的博客 2205

EVM算法的Python实现

EVM(Eulerian Video Magnification,欧拉视频放大或欧拉影像放大)是一种将视频中的微小变化进行放大的算法,正如论文标题所说《Eulerian Video Magnification for Revealing Subtle Changes in the World》,该算法可以将视频中的微小变化转变为肉眼可以

flyingzhao 1万+

Photo-Sphere-Viewer简单使用

官方网站:https://photo-sphere-viewer.js.org/guide/ 文件链接:https://download.csdn.net/download/weixin_37365539/13053909 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>3

weixin_37365539的博客 3011

历年安徽省省赛AHOI初中组考点分类汇总考点分类汇总

持续更新中.....

weixin_42358969的博客 818

three.js+photo-sphere-viewer.js全景图场景切换:开启全景体验新篇章

three.js+photo-sphere-viewer.js全景图场景切换:开启全景体验新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 全景图作为一种新兴的视觉体验方式,正逐渐成为各类网站和应用的新宠。three.js+photo-sphere-viewer.js全景图场景切换项目,为您提供了一套高效、易用的全景图浏览解决方案。通过本项目,用户可以在网页上轻松...

gitblog_06710的博客 881

【Unity Shader】Special Effects(十二)Glow 外发光(UI)

Properties_GlowColor ("外发光颜色", Color) = (0, 0, 0, 1)_GlowIntensity("外发光强度", Range(0, 1)) = 1参数详解:_GlowColor:外发光颜色,指定外发光的显示颜色。_GlowIntensity:外发光强度,指定外发光的显示强度,0为不可见,1为最强强度。

神码编程 931

RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录

在RK3588平台上调试2.5G网卡(Realtek RTL8125)时,我们会用到PCIE接口,这篇文章记录了从硬件连接、内核驱动到最终实现网络通信的整个调试过程,包括可能遇到的问题和解决方案。Realtek RTL8125是为高带宽需求设计的一款高性价比2.5G以太网控制器。它不仅提供了高达2.5Gbps的网络传输速率,还具备良好的节能特性、硬件卸载引擎和广泛的操作系统支持。无论是在家庭网络、企业NAS,还是游戏和云计算等场景中,RTL8125都能为用户提供更快速、更稳定的网络连接。

flypig has a dream! 3680

vue+photo-sphere-viewer 渲染全景图片,带给你沉浸式体验

vue+photo-sphere-viewer 渲染全景图片,带给你沉浸式体验 Photo Sphere Viewer是一款基于Three.js的360X180度全景图预览js插件。该js插件可以360度旋转查看全景图,也可以上下180度查看图片。使用该插件的唯一要求是浏览器支持canvas或WebGL。 搭建vue项目 vue create sviews 然后安装photo-sphere-viewer依赖 npm install photo-sphere-viewer 或 yarn add photo-

qq_32051663的博客 2926

【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤

Windows 11 安装 WSL2 和 Ubuntu 22.04 指南 本文详细介绍在 Windows 11 上安装 WSL2 和 Ubuntu 22.04 的完整步骤,包括: WSL2 与 VirtualBox 的性能对比优势 系统版本检查与升级方法 两种安装方式(一键安装和手动安装) Ubuntu 22.04 的安装与配置 存储位置管理及迁移技巧 常用 WSL2 命令速查表 文章还提供了性能优化建议和常见问题解决方案,适合开发者和 Linux 爱好者快速搭建高效的开发环境。

No8g攻城狮的博客 2万+

基于Three.js与Photo Sphere Viewer,在Vue项目中打造沉浸式VR看房全景体验

本文详细介绍了如何在Vue项目中,利用Three.js与Photo Sphere Viewer库快速构建沉浸式VR看房全景体验。通过封装好的API,开发者能以极低的学习成本实现全景图加载、热点标记、陀螺仪控制等核心功能,并针对H5及小程序等移动端场景提供了性能优化与数据通信的实战方案。

3a9bq4r8t2y的博客 352

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

three.jsphoto-sphere-viewer.js全景场景切换插件:打造沉浸式全景体验

three.jsphoto-sphere-viewer.js全景场景切换插件:打造沉浸式全景体验 【下载地址】three.jsphoto-sphere-viewer.js全景场景切换插件 基于three.js和photo-sphere-viewer.js的全景场景切换插件,专为网页全景展示设计。通过该插件,用户可以轻松实...

gitblog_06750的博客 432

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: MyBatis3-配置使用log4j输出日志
下一篇: HTML5 Blob与ArrayBuffer、TypeArray和字符串String之间转换
dddp75921
博客等级 码龄12年 9粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值