资讯专栏INFORMATION COLUMN

基于web的全景—— Pannellum小试

since1986 / 2700人阅读

摘要:前言基于端的业务需求,为了更好地服务于用户。需要在售卖端加上全景预览的功能,目前用的是开发的产品,需要基于的全景预览功能。关于初始化配置,对于多场景的全景来说最好使用和属性组成的配置项。

前言
基于C端的业务需求,为了更好地服务于用户。需要在售卖端加上全景预览的功能,目前用的是web开发的产品,需要基于web的全景预览功能。通过搜索查找比较,最终选择使用pannellum
Pannellum 小试
官网的首页对pannelum的描述是,"Pannellum is a lightweight, free, and open source panorama viewer for the web. Built using HTML5, CSS3, JavaScript, and WebGL, it is plug-in free."

简而言之,pannelum是轻量的(只有20kB)、免费的、开源的一个基于web的全景插件。
那么从一个小小的demo开始。
HTML部分:





    
    
    
    全景
    
    



    

css代码:

js部分:

window.addEventListener("load", bodyLoad);
var p;
function bodyLoad() {
    // 多场景配置
    p = pannellum.viewer("vrview", {   
        "default": {
            "firstScene": "circle",
            "author": "Juven",
            "sceneFadeDuration": 1000,
            "orientationOnByDefault": true,
            "showControls": false,
            "autoRotate": -2,
            "autoRotateInactivityDelay": 2000
        },

        "scenes": {
            "circle": {
                "title": "Sea Circle",
                "hfov": 110,
                "pitch": -3,
                "yaw": 117,
                "type": "equirectangular",
                "panorama": "../assets/images/pic2.jpg",
                "hotSpots": [
                    {
                        "pitch": -2.1,
                        "yaw": 132.9,
                        "type": "scene",
                        "text": "Spring House or Dairy",
                        "sceneId": "house"
                    }
                ]
            },

            "house": {
                "title": "Spring House or Dairy",
                "hfov": 110,
                "yaw": 5,
                "type": "equirectangular",
                "panorama": "../assets/images/pic1.jpg",
                "hotSpots": [
                    {
                        "pitch": -0.6,
                        "yaw": 37.1,
                        "type": "scene",
                        "text": "Mason Circle",
                        "sceneId": "circle",
                        "targetYaw": -23,
                        "targetPitch": 2
                    }
                ]
            }
        }
    });
}

打开这个html文件,在windowload事件开始时执行初始化全景代码,其中pannellum对象是挂载在window对象下的,调用viewer方法来初始化并返回一个viewer实例,第一个参数是元素的id(也可以是HTMLElement元素),第二个事配置对象,该对象下面可以是一些基本的配置参数,也可以是由defaultscenes属性组成的配置项。初始化时,会将被挂载的元素append一些全景用到的元素。

关于初始化配置,对于多场景的全景来说最好使用defaultscenes属性组成的配置项。详细内容可参考原文:A tour configuration file contains two top level properties, default and scenes. The default property contains options that are used for each scene, but options specified for individual scenes override these options. The default property is required to have a firstScene property that contains the scene ID for the first scene to be displayed. The scenes property contains a dictionary of scenes, specified by scene IDs. The values assigned to these IDs are specific to each scene.
用到的参数

查看pannellum的文档,可以发现有很多功能丰富的配置项;在这里主要介绍一些常用到的配置;

firstScene

全景的默认场景,每个多场景的全景都需要在default里面配置此选项;

author

作者名称,全景图生成时,会在左下角显示此配置的值;

sceneFadeDuration

全景图场景切换时的持续时间,单位为:毫秒,使用的动画效果默认为fade

orientationOnByDefault

是否开启重力感应查看全景图,默认false

showControls

是否显示控制按钮,默认true

autoRotate

是否自动旋转,在加载之后,全景图会水平旋转显示,负数为往右边旋转,整数为往左边旋转,值为数字类型;(目前还不知道数字代表是角速度还是什么

autoRotateInactivityDelay

autoRotate设定的情况下,用户停止操作多长时间后继续自动旋转,单位为毫秒;

scenes

场景,值为对象,其属性名代表着场景的id(sceneId),属性值为viewer的配置参数,其参数会覆盖默认(上述中的default对象)设置的参数;

hotSpots

热点,以全景为坐标系的固定点,可以设置链接跳转和点击事件,也可以跳转到不同的场景,该属性的值为对象,该对象有几个常用的配置项:

pitch 定位参数, 单位:角度

yaw 定位参数, 单位:角度

type 热点类型,scene 场景切换热点; info 信息展示;

URL 以热点为链接,跳转到其他页面的`url

sceneId 需要切换的场景id,当 typescene使用;

全景坐标示意图:

(图片来源于网络)

总结

经过一个小小的示例测试,目前在PC端的Chrome浏览器运行正常流畅,在iPhoneSafari浏览器和微信运行流畅,在低版本Android微信运行略为卡顿,但还是能够接受的范围内;有个不好的地方就是pannellum的官方文档是全英文的(可能我没找到中文的)且解析的不够全面,示例也不足够多,总体来说pannellum还是不错的选择,有需要的同学可以考虑一下。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96516.html

相关文章

  • 现在做 Web 全景合适吗?

    摘要:全景在以前带宽有限的条件下常常用来作为街景和全景图片的查看。后面,我们来了解一下,如何在端实现全景视频。现在对支持度也不是特别友好,但是,对于全景视频来说,在机器换代更新的前提下,全景在性能方面的瓶颈慢慢消失了。 Web 全景在以前带宽有限的条件下常常用来作为街景和 360° 全景图片的查看。它可以给用户一种 self-immersive 的体验,通过简单的操作,自由的查看周围的物体。...

    psychola 评论0 收藏0
  • CSS 3D Panorama(全景) - 淘宝造物节技术剖析

    摘要:淘宝造物节的活动页就是全景的一个很赞的页面,它将全景图分割成等份,相邻的元素构成的夹角,相邻两侧面相对于棱柱中心所构成的夹角。 本文转自凹凸实验室:https://aotu.io/notes/2016/08... showImg(https://segmentfault.com/img/remote/1460000011381045); 前言 3D 全景并不是什么新鲜事物了,但以前...

    LiuRhoRamen 评论0 收藏0
  • SegmentFault 技术周刊 Vol.35 - WebGL:打开网页看大片

    摘要:在文末,我会附上一个可加载的模型方便学习中文艺术字渲染用原生可以很容易地绘制文字,但是原生提供的文字效果美化功能十分有限。 showImg(https://segmentfault.com/img/bVWYnb?w=900&h=385); WebGL 可以说是 HTML5 技术生态链中最为令人振奋的标准之一,它把 Web 带入了 3D 的时代。 初识 WebGL 先通过几个使用 Web...

    objc94 评论0 收藏0

发表评论

0条评论

since1986

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<