加载3D模型

创建日期:2025-01-25
更新日期:2025-01-25

实例代码

<template>
  <div class="container" id="cesiumContainer"></div>
</template>
<script setup lang="ts">
import '../utils/NoNeed'
import { onMounted } from 'vue'
import * as Cesium from 'cesium'

window.Cesium = Cesium

let viewer: Cesium.Viewer

onMounted(async () => {
  viewer = new Cesium.Viewer('cesiumContainer', {
    infoBox: false,
    selectionIndicator: false,
    shadows: true,
    shouldAnimate: true
  })

  viewer.entities.removeAll()

  const position = Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, 5000)

  const heading = Cesium.Math.toRadians(135)
  const pitch = 0
  const roll = 0
  const hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll)

  const orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr)

  const url = '/model/Cesium_Air.glb'

  const entity = viewer.entities.add({
    name: url,
    position,
    orientation,
    model: {
      uri: url,
      minimumPixelSize: 128,
      maximumScale: 20000
    }
  })
  viewer.trackedEntity = entity

  window.viewer = viewer
})
</script>
<style lang="less" scoped>
.container {
  position: absolute;
  width: 100%;
  height: 100%;
}
</style>