panoviewer VR 全景图 -beta

panoviewer 动态库提供了在小程序中播放全景图的方法,底层基于百度 webVR SDK Hydreigon 实现。

使用方法

1. 在项目中引用动态库

使用动态库的方法参见使用动态库,在app.json中增添一项 dynamicLib,与pages同级。

  • JSON
  1. "dynamicLib": {
  2. "myDynamicLib": {
  3. "provider": "panoviewer"
  4. }
  5. },

2. 在使用到组件的页面配置动态库

在每个使用到图表组件的页面,配置*.json文件如:

  • JSON
  1. {
  2. "usingSwanComponents": {
  3. "panoviewer": "dynamicLib://myDynamicLib/panoviewer"
  4. }
  5. }

3. 编写*.swan文件

  • SWAN
  1. <panoviewer options="{{ options }}" style="width: 100%; height: 100%; display: block"></panoviewer>

这是一种最基本的配置方式。style也可以在*.css中声明,需要保证<panoviewer>是有宽度和高度的。options*.js中绑定到页面的 data 中:

  • JS
  1. const options = ...;
  2. Page({
  3. data: {
  4. options: options
  5. }
  6. });

其中,options 是配置项,定义了全景图的物料资源地址和渲染交互配置,一个典型的配置如下所示:

  • JS
  1. options = {
  2. "image": "https://xxx.com/.../xxx.jpg",
  3. "smallPlanet": 3000,
  4. "config": {
  5. "projectionType": "equirectangular"
  6. }
  7. };

动态库属性列表

<panoviewer>上支持的属性包括:

属性名称类型说明
optionsObject配置项

关键配置项说明

配置项名称类型说明
imageObject/String投影模式对应的资源配置
projectionTypeString投影模式名称
smallPlanetNumber小行星动画时长,如果未设置则表示无动画

投影模式

动态库支持多种投影模式,包括球形、立方体、EAC、手机全景、分级分块,投影模式对应的名称如下表:

投影模式名称
球形equirectangular
立方体cubemap
EACcubestrip
手机全景panorama
分级分块multires

除分级分块模式外,其他模式的 image 字段为资源 url ,分级分块模式的 image 参数是切片脚本生成的配置,说明如下:

配置项名称类型说明
basePathString分块图的根目录
pathString分块图的格式化方式
fallbackPathString缩略图路径
extensionString图像格式
tileResolutionString分块 size
maxLevelNumber最大级别
cubeResolutionNumber立方体单面 size

示例配置如下

  • JS
  1. {
  2. image: {
  3. basePath:
  4. "https://hydreigon-publish.cdn.bcebos.com/swan-hydreigon/pano/lujiazui-4k/",
  5. path: "/%l/%s%y_%x",
  6. fallbackPath: "/fallback/%s",
  7. extension: "jpg",
  8. tileResolution: 512,
  9. maxLevel: 3,
  10. cubeResolution: 1304
  11. },
  12. config: {
  13. projectionType: "multires"
  14. }
  15. }