首先 陀螺仪的使用地址必须是
本地测试时可以通过更改vue.config.js (如果没有vue.config.js然后新建一个)
// vue.config.js module.exports = {
devServer: {
proxy: {
'/api': {
target: 'url', changeOrigin: true, pathRewrite: {
'^/api': '' } } }, // 此处开启 https **https: true** } }
在xml还应注意文件 主要有以下核心代码
<plugin name="gyro" url="%SWFPATH%/plugins/gyro2.js" enabled="false" sensor_mode="0" sensor="0" friction="0.9" softstart="1" />
各属性值如下
<plugin name="gyro" devices="html5" keep="true" url="gyro2.js" //引入插件 enabled="false" 陀螺仪是否启用? camroll="true" ///根据设备旋转调整观看位置 friction="0.0" 0.0-0.99或者auto 摩擦力,auto和zoom/fov/frame-rate有关 touch_mode="full" off(关闭)/horizontaloffset(横向)/full(全部)/disablegyro(),触摸方式 sensor_mode="1"
传感器类型 softstart="0.5" 启用陀螺时,方向改变的时间,为0将立即使用gyro-tracked值 autocalibration="false" 自动校准陀螺仪 onavailable="" onunavailable="" onenable="" ondisable="" />
第二就是在xml文件中,如果有scene标签,则plugin必须被scene标签包裹否则不生效
第三就是默认enable为true有可能会影响开场动画效果建议js中写方法用按钮触发
this.krpano.call("switch(plugin[gyro].enabled);");
//switch(plugin[陀螺仪标签名].enabled);用来切换陀螺仪enable
第四就是我在触发陀螺仪之后发现很严重的一个问题就是抖动
我先后调整了很多参数,发现比较重要的几个参数有
friction="" //数值在0.0-0.99之间,数值越大摩擦力越大,摩擦力大就可以用来降低陀螺仪的灵敏度 sensor_mode="0" //sensor_mode:传感器类型 //0 =直接使用最新的可用的传感器数据。 没有内插或外推法。 根据sensor-time-intervals的浏览器 运动可以是不平稳的或平滑。 //1 =最新之间顺利插入 可用的传感器数据。 这将给一个非常光滑但延迟运动。 //2 =预测设备传感器数据之间的旋转,然后插入。 //3 =推断最新可用的传感器数据 当前帧的时间。 这将给一个快速响应和平滑运动,但可以有抽搐 当外推/预测数据和实际运动不匹配。 //4 =预测当前帧的旋转装置。 这将给一个快速响应和平滑运动,但可以有抽搐 当外推/预测数据和实际运动不匹配。 //5 =预测设备旋转和推断 传感器数据从最新的事件当前帧时间。 //这个参数也相对重要,除了0跟1之外,其余的都会有很强烈的抖动问题,0最平滑 sensor=""//最重要的一个参数 //默认是1,但是需要设置成0才能防止陀螺仪的灵敏度过高以及抖动的问题 //定义用于设备移动跟踪的浏览器事件: **//0 - deviceorientation 事件** //这里传感器融合将由浏览器本身完成。 //不幸的是,来自此事件的数据在许多 Android 设备和 Android 浏览器中存在错误或错误(缓慢、不准确、错误)。 **//1 - devicemotion事件(默认)** //此处传感器融合将由 krpano 完成。 //浏览器提供来自加速度和
陀螺仪传感器的原始数据,krpano 将它们组合起来以获得最终的设备旋转: //陀螺仪数据非常快速和准确,但陀螺仪传感器仅测量相对旋转,因此随着时间的推移它会偏离真实的物理方向。 //为了补偿这种漂移,使用了加速度传感器。该传感器测量地球的重力加速度,可用作绝对参考。 //但是加速度数据非常嘈杂,它只能用于检测“倾斜”旋转(向左、向右、向上或向下倾斜)——加速度无法检测到围绕设备本身的旋转,为此需要陀螺仪数据。 //因此来自两个传感器的数据将被组合/融合。加速度数据将被低通滤波并用作慢速“稳定”和陀螺仪数据,以便在各个方向快速准确地移动。 //使用 devicemotion 事件(设置传感器 = 1)是默认的,通常应该没有必要或好处使用 deviceorientation 事件,除非可能是一些极端的浏览器错误...... //注 - 在 iOS 13.4/Safari 13.1 中,devicemotion 事件已损坏。因此,在这些系统上,传感器的默认值 设置为 0 以使用 deviceorientation 事件(正在工作)。
最后有一个问题就是需要注意krpano的版本与陀螺仪文件gyro2.js文件的版本是否合适
以上