Skip to content

按给定路径漫游

Tour 类的方法 - startTweensTour

方法介绍

UniCore 内置 Tour 类,提供 startTweensTour 方法用于开启按给定路径漫游功能。

你可以配合 路径漫游控制组件 来使用该功能。

该方法需传入参数,参数格式示例如下:

js
const viewPoints = [
  {
    // id值(非必须)
    id: 0,
    // name名称(非必须)
    name: "小别墅边",
    // 目标经度
    lon: 113.12070458505828, 
    // 目标纬度
    lat: 28.255870346084727, 
    // 目标高程
    het: 59.16259222422615, 
    // 目标heading
    heading: 0.6386749807117074, 
    // 目标pitch
    pitch: -0.1617832069985936, 
    // 移动动画时间
    duration: 0
  }
]

变量的JSDoc形式如下:

js
/**
 * 开启动画插值漫游
 * @param {*} viewPoints 
 */

不妨通过代码示例在 Vue 中尝试一下(相关模型文件在本章 阅前提醒 中的内网Git链接中可获取):

在线演示

点击 在线链接 以查看在线演示。

代码示例

vue
<template>
  <div id="unicoreContainer"></div>
</template>

<script>
import { UniCore } from 'unicore-sdk'
import { config } from 'unicore-sdk/unicore.config'
import 'unicore-sdk/Widgets/widgets.css'

export default {
  // 生命周期 - 挂载完成(可以访问DOM元素)
  mounted () {
    this.init();
  },

  // 方法集合
  methods: {

    /**
    * 通用图形引擎初始化
    */
    init () {

      // 初始化UniCore

      // 目前采用Cesium的地形&底图数据,这里配置Cesium的token
      let accessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxNjEwMzI4My01MjBmLTQzYzktOGZiMS0wMDRhZjE0N2IyMGIiLCJpZCI6MTc1NzkyLCJpYXQiOjE3MTM3NzQ3OTh9.zU-R4MNvHr8rvn1v28PQfDImyutnpPF2lmEgGeSPckQ";
      // 初始化unicore
      let uniCore = new UniCore(config, accessToken);
      uniCore.init("unicoreContainer");

      // 视角初始化
      uniCore.position.buildingPosition(uniCore.viewer, [113.12198820449636, 28.254150218457687, 300], -20, -45, 1);


      // 模型示例1
      let options = {
        id: '小别墅'
      }
      //加载3dtiles
      uniCore.model.createTileset('../../assets/3Dtiles/sample3_方法2_小别墅属性(1)/tileset.json', options).then(cityLeft => {
        uniCore.model.changeModelPos(cityLeft, [113.12098820449636, 28.256150218457687, 50])
      })



      const viewPoints = [
        {
          id: 0, name: "小别墅边", lon: 113.12070458505828, lat: 28.255870346084727, het: 59.16259222422615, heading: 0.6386749807117074, pitch: -0.1617832069985936, duration: 0
        },
        {
          id: 1, name: "小别墅外", lon: 113.1210608168098, lat: 28.25542377233109, het: 72.79499359025445, heading: 6.145402847334479, pitch: -0.18127134988192473, duration: 5
        },
        {
          id: 2, name: "小别墅楼梯间", lon: 113.120961813896, lat: 28.256206854277405, het: 51.07297361584761, heading: 0.38183529708669717, pitch: 0.049221426052290296, duration: 5
        },
        {
          id: 3, name: "小别墅边", lon: 113.12070458505828, lat: 28.255870346084727, het: 59.16259222422615, heading: 0.6386749807117074, pitch: -0.1617832069985936, duration: 3
        }
      ]

      setTimeout(() => {
        uniCore.tour.startTweensTour(viewPoints)
      }, 4000)

    }

  }

}
</script>
<style scoped>
#unicoreContainer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: black;
}
</style>

关键代码

你可以通过修改 viewPoints 中的值查看修改这些变量带来的效果。

js
const viewPoints = [
  {
    id: 0, name: "小别墅边", lon: 113.12070458505828, lat: 28.255870346084727, het: 59.16259222422615, heading: 0.6386749807117074, pitch: -0.1617832069985936, duration: 0
  },
  {
    id: 1, name: "小别墅外", lon: 113.1210608168098, lat: 28.25542377233109, het: 72.79499359025445, heading: 6.145402847334479, pitch: -0.18127134988192473, duration: 5
  },
  {
    id: 2, name: "小别墅楼梯间", lon: 113.120961813896, lat: 28.256206854277405, het: 51.07297361584761, heading: 0.38183529708669717, pitch: 0.049221426052290296, duration: 5
  },
  {
    id: 3, name: "小别墅边", lon: 113.12070458505828, lat: 28.255870346084727, het: 59.16259222422615, heading: 0.6386749807117074, pitch: -0.1617832069985936, duration: 3
  }
]

setTimeout(() => {
  uniCore.tour.startTweensTour(viewPoints)
}, 4000)

拓展

使用 stopTweensTour 方法可以停止路径漫游。

js
uniCore.tour.stopTweensTour();

使用 getCurrentCameraSet 方法可以获取当前场景摄像机的各项参数,你可以使用获取到的数值填充 viewPoints。

js
uniCore.position.getCurrentCameraSet();