移花接木(23)- 自动旋转与自动浏览全部场景

更新于 2020.11.19 krpano 1.20.9

导言

自动旋转与自动浏览全部场景,这是做全景时经常要用到的功能,涉及到一个重要的元素,即autorotateautorotate是一个全局性的元素,通常写在scene标签的外面即可。我们可以通过action来更改autorotate设置。例如,在scene的onstart里进行设置。

默认皮肤添加自动浏览

在tour.xml的skin_settings中,将autotour设置为true

这样场景可以实现自动旋转,选择一圈后跳转到下一个场景,当全部场景自动浏览完毕后,跳转到第一个场景重新开始旋转和自动浏览。

在skin文件夹的vtourskin.xml可以找到关于默认皮肤自动浏览自动旋转的核心代码:

可以对上面高亮部分的waittimeaccelspeedtofov以及oneroundrange进行设置,分别控制旋转前的等待时间从停止到旋转稳定的加速度旋转速度旋转到的视域以及进行自动浏览时转一圈的范围

 

注意自动旋转启用时会有一个短暂的waittime(即autorotate.waittime),也即是在autorotate.enabled设置为true后,还需要一个等待时间,如果不想要这个等待时间,可以考虑执行autorotate.start()

例如在某个按钮中设置(非默认皮肤做法)

 

krpano 1.19 pr4后的自动循环浏览

点击代码窗口最右侧按钮,在新窗口打开后复制代码

如果在nextscene的loadscene中使用keepmoving会导致场景初始角度的不一致。

如需要按钮控制,onclick的部分为

以下代码运行器只提供VIP赞助会员,VIP会员说明请查看置顶文章

 

另一段1.19版本可用的代码

貌似比较繁琐

点击代码窗口最右侧按钮,在新窗口打开后复制代码

1.19-1.20版本默认皮肤可使用的自动浏览代码

 

基本的自动旋转代码

将方框内代码替换原有的<autorotate> 标签,如果原先没有<autorotate> 标签,则选择放在<scene>标签的外面的空白处。

点击代码窗口最右侧按钮,在新窗口打开后复制代码

enabledtrue代表激活自动旋转。如果不加autorotate元素代码的话,这个enabled默认是false,也就是不自动旋转。

带各种设置的自动旋转代码

将方框内代码替换原有的<autorotate> 标签,如果原先没有<autorotate> 标签,则选择放在<scene>标签的外面的空白处。

点击代码窗口最右侧按钮,在新窗口打开后复制代码

waittime代表在最近一次用户交互行为之后要开始自动旋转之前的等待时间。以秒为单位。

speed为旋转速度。当该数值为正值时向右旋转,为负值时向左旋转。

horizon为场景在自动旋转时将达到的水平位置。

tofov为旋转中要达到的视场角。

 

场景开始时旋转,点击按钮切换旋转状态

1. 将下述方框的任一代码(A或B)替换原有的<autorotate> 标签,如果原先没有<autorotate> 标签,则选择放在<scene>标签的外面的空白处。

代码A

代码B

点击代码窗口最右侧按钮,在新窗口打开后复制代码

2. 在对应的按钮,通常为<layer>标签中找到onclick属性替换,如果没有onclick属性则直接添加。

无按钮控制的自动旋转

自动旋转场景,场景旋转一圈后自动进入下一个场景,最后一个场景浏览结束后,进入第一个场景。

1. 将下述方框的任一代码(A或B)替换原有的<autorotate> 标签,如果原先没有<autorotate> 标签,则选择放在<scene>标签的外面的空白处。

代码A

代码B

点击代码窗口最右侧按钮,在新窗口打开后复制代码

2. 在<krpano>标签的onstart属性中检查是否有startup,通常默认情况下都有startup。找到下面的代码
改为

点击代码窗口最右侧按钮,在新窗口打开后复制代码

3. 然后在xml文件中加入下面代码:

点击代码窗口最右侧按钮,在新窗口打开后复制代码

 

按钮控制的自动旋转

1. 将下述方框的任一代码(A或B)替换原有的<autorotate> 标签,如果原先没有<autorotate> 标签,则选择放在<scene>标签的外面的空白处。

代码A

代码B

点击代码窗口最右侧按钮,在新窗口打开后复制代码

2. 在对应的按钮,通常为<layer>标签中找到onclick属性替换,如果没有onclick属性则直接添加。

有按钮控制的自动浏览场景

自动旋转场景,场景旋转一圈后自动进入下一个场景,最后一个场景浏览结束后,进入第一个场景。

1. 将下述方框的任一代码(A或B)替换原有的<autorotate> 标签,如果原先没有<autorotate> 标签,则选择放在<scene>标签的外面的空白处。

代码A

代码B

点击代码窗口最右侧按钮,在新窗口打开后复制代码

2. 在<krpano>标签的onstart属性中检查是否有startup,通常默认情况下都有startup。找到下面的代码
改为
3. 然后在xml文件中加入下面代码:

点击代码窗口最右侧按钮,在新窗口打开后复制代码

4. 在对应的按钮,通常为<layer>标签中找到onclick属性替换,如果没有onclick属性则直接添加。
 

自动浏览全部场景时,控制单独场景的浏览视场以及速度

下面代码不包含autorotate自身的旋转代码,

点击代码窗口最右侧按钮,在新窗口打开后复制代码

按照固定时间自动浏览

1.实际上我们要修改的是bombtimer里的bt_2, 在其它代码不变的情况下,我们不需要计算bt_2,而是使用确定的数值进行取代。

2. 上面10就是我们设定的自动浏览时间,在无交互后10秒将自动进入下一个场景。其它没有列出的代码不变。

 

按钮控制跳转到下一个场景

 

 

 

自动旋转以及循环浏览全部场景(适用于1.18以上)

  1. 将下载的autorotate.xml放在根目录下,也就是与tour.xml同一目录。
  2. 同时加入上述高亮的代码,也就是include进相应的xml文件。
  3. 如果你的漫游有按钮是控制切换自动旋转的,请更改onclick属性为

以下隐藏内容只提供VIP赞助会员,VIP会员说明请查看置顶文章

 

自动循环浏览全部场景(按照规定时间)

效果说明

这是一个常见的自动浏览代码,可以实现场景自动循环浏览,每个场景按照规定的时间在没有用户交互的情况下自动旋转特定的时间,然后跳转到下一个场景,当浏览完最后一个场景时,则跳转到第一个场景,继续循环。

 

在线演示

 

代码说明

使用时首先把timer.xml放在根目录下

然后在tour.xml中输入下面的代码

注意,第一行高亮的krpano元素的onstart属性只需要写

5是每个场景在用户没有与漫游发生交互时停留的时间,也就是5秒之后,进入下一个场景。

autorotate元素的内容可以自己写。

 

下载案例

链接:http://pan.baidu.com/s/1pLi6sg7  密码:

密码只提供VIP赞助会员,VIP会员说明请查看置顶文章