数字孪生-DTS-孪创城市-湖区分布

524 阅读2分钟

前言

各位小伙伴们,大家好,今天蘑菇头带来的是世界湖区功能的一个分享,主要利用的是图片贴花的技术,将我们的图片与三维场景进行一个贴合的效果,可以较为宏观的对我们的场景进行一个分析,快来一起看看吧。

image-20250414091815365.png

思路

首先可以看到,同样需要将我们的样式进行调整,所以直接复用我们上一段代码。

 await fdapi.camera.set(525323.14875, 3435349.377813, 273227.06, -85.987404, -95.227394, 2)
 await fdapi.weather.setDarkMode(true)
 await fdapi.infoTree.hide(digitalTwinStore.digitalTwin['苏州地形影像_Water'])

通过api文档可以发现,图片贴花比较简单,只需要调用Decal类的add方法,通过调节位置,缩放,旋转参数就能达到我们想要的效果。

image-20250414105811409.png

但是,可以通过代码调节起来会很麻烦,所以我们直接写了一个组件来帮助大家调节。贴花组件_免费高速下载|百度网盘-分享无限制

需要将lib下的两个配置文件(ac.min/ac.conf)进行替换为cloud里面sdk下的配置文件,打开是这个样子。

image-20250414110420715.png

首先,我们先点击获取位置,然后在合适的位置点击鼠标左键即可看见坐标上去了,然后填写贴花路径,这个路径是我们cloud资源路径对应下的贴花路径,直接点击复制粘贴过去即可,然后就可以看见贴花上去了。

image-20250414110707398.png

但是可能会被拉升导致变形,没关系,我们可以通过调节位置,缩放等操作就可以调整到我们想要的位置,然后点击获取贴花参数,复制到我们的代码中即可快速完成调节。

image-20250414111146758.png

所以我们完整的代码是这样。

import { useDigitalTwinStore } from '@/stores/digitalTwin'
const digitalTwinStore = useDigitalTwinStore()

export const initLake = async () => {
  await fdapi.camera.set(525323.14875, 3435349.377813, 273227.06, -85.987404, -95.227394, 2)
  await fdapi.weather.setDarkMode(true)
  await fdapi.infoTree.hide(digitalTwinStore.digitalTwin['苏州地形影像_Water'])

  const decal = {
    id: 'lake',
    groupId: '',
    userData: '',
    texturePath: '@path:世界湖区.png',
    order: 1,
    decalBlendMode: 0,
    location: [524000, 3462000, 127],
    rotation: [-90, 0, 0],
    scale: [270000, 270000, 270000]
  }
  await fdapi.decal.add(decal)
}
export const exitLake = async () => {
  await fdapi.weather.setDarkMode(false)
  await fdapi.infoTree.show(digitalTwinStore.digitalTwin['苏州地形影像_Water'])
  await fdapi.decal.delete('lake')
}

涉及的飞渡api

  • 添加贴花-fdapi.decal.add('lake')

  • 删除贴花-fdapi.decal.delete('lake')