智能导览

本文主要介绍智能导览的功能详情、配置文件和对应的插件API使用方式。

功能简介

智能导览会根据用户配置的导览文件,进行相应的场景跳转,场景旋转,语音播放(如果配置了语音),达到导览完整场景的目的。示例效果如下:

导览配置

{
  paths: [{
    id: 'default', // 路线id
    group: [{ // 路线中具体的场景组
      spotId: 'p0', // 场景
      animation: {
        duration?: 3, // 动画时长,单位秒,若未配置,sdk内置默认值为3
        direction: 1 | 2 | 3, // 旋转方向:1:最短路径 2:顺时针,3:逆时针,
        from: { // 相机起始位置,算法默认生成的值是前一个场景的to的值
          ath: -50,// [-180, 180]
          atv: 30,  // [-90, 90]
        },
        to: { // 相机结束位置,算法默认生成的值是指向下一个场景的角度
          ath: 120, // 水平角度:[-180, 180]
          atv: 30, // 垂直角度:[-90, 90]
        }
      },
      transition?: {
        duration: 2 // 过渡时长,单位秒,若未配置,sdk内置默认值为2
      },
      audio?: { // 语音配置,若未配置,则不播放语音
        enable: true | false,
        name: 'xxx',
        url: 'xxxxxxxxxx', // 语音链接
        text: 'xxxxxxxxxx', // 语音文本
        duration: 8.5, // 语音时长
        voice: 1 | 2, // 语音类型:1: 男声 2:女声
      }
    }]
  }]
}

功能使用

智能导览是以插件的形式引用

<script type="text/javascript" src="https://g.alicdn.com/sail-fe/alibaba-lyj-js-player-umd/1.1.2/plugin.js"></script>
<script type="text/javascript">
    const { AiTourPlugin } = TideWanhuatongPlugins;
</script>

// 第一步:注册插件
app.use(new AiTourPlugin(), 'AiTourPlugin'); 

// 第二步:获取导览配置数据
const tourConfig = xxx // 数据根据实际应用场景获取,格式如上述导览配置所示

// 第二步:在场景加载完成后,启动导览
ProgressAPI.event.on("SceneLoadEnd", () => {
   const aiTour = app.getPlugin('AiTourPlugin'); // 获取插件实例
   aiTour.start(tourConfig); // start方法必须在场景加载完成后调用才能正常启动,如果自行用按钮控制启动也要注意这一点
})

交互API

const aiTour = app.getPlugin('AiTourPlugin'); // 获取插件实例

/**
 * 开启导览
 */
aiTour.start(tourConfig: any)

/**
 * 暂停导览
 */
aiTour.pause()

/**
 * 恢复导览
 */
aiTour.resume()

/**
 * 根据索引切换导览路线
 * @param index 路线索引
 */
aiTour.switchToPathByIndex(index: number)

/**
 * 根据id切换导览路线
 * @param id 路线id
 * @returns
 */
aiTour.switchToPathById(id: string)

/**
 * 根据索引切换当前导览路线上的点位
 * @param index 点位索引
 */
aiTour.switchToGroupByIndex(index: number)

事件

// 导览点位变化
aiTourPlugin.event.on('tourChange', (spotInfo)=>{
  
})

// 导览结束
aiTour.event.on('tourEnd', ()=>{
  
})