mars3d的V2版本的Video2D与V3版本的Video2D实现数据快速迁移

场景:

目前是v2和v3的两个相机视角的不同格式,在Mars3d的V2的旧数据想可以快速迁移到V3版本。

V2版本的数据:

复制代码
{
        "camera": {
                "fov": 1.0471975511965976,
                "dis": 20,
                "stRotation": 0,
                "showFrustum": true,
                "aspectRatio": 1.6022099447513811,
                "camera": {
                        "position": {
                                "x": -2177820.3029543245,
                                "y": 4388724.089003264,
                                "z": 4070105.7812721003
                        },
                        "direction": {
                                "x": 0.64574289308262001,
                                "y": 0.56956514491665855,
                                "z": -0.50853875145297822
                        },
                        "up": {
                                "x": -0.24582927592774592,
                                "y": 0.78563308172943203,
                                "z": 0.56775754331330175
                        },
                        "right": {
                                "x": 0.72289977391760774,
                                "y": -0.2416116855377268,
                                "z": 0.64733276626592173
                        }
                }
        }
}

迁移示例地址:V3的示例:
http://mars3d.cn/editor-vue.html?key=ex_7_10_4&id=graphic/video/video2D

迁移代码参考:

复制代码
function addDemoGraphic1() {
  const video2D = new mars3d.graphic.Video2D({
    position: [117.205459, 31.842988, 64.3],
    style: oldStyle2New({
      camera: {
       "position": {"x": -2177820.3029543245,  "y": 4388724.089003264, "z": 4070105.7812721003},
        direction: { x: -0.20300781957546601, y: 0.3881445982693198, z: -0.8989613985180693 },
        up: { x: -0.41112481743883666, y: 0.7994469141644973, z: 0.43801942413407347 },
        right: { x: 0.8886867894129509, y: 0.4585067090754624, z: -0.0027180978075245542 }
      },
      dis: 70,
      fov: 52,
      aspectRatio: 3,
      stRotationDegree: 0
    })
  })
  graphicLayer.addGraphic(video2D) 
}

// 历史参数转为当前最新版本的参数
function oldStyle2New(oldStyle) {
  const camera = new Cesium.Camera(map.scene)
  camera.position = oldStyle.camera.position
  camera.direction = oldStyle.camera.direction
  camera.up = oldStyle.camera.up
  camera.right = oldStyle.camera.right

  const angle = Cesium.Math.toDegrees(oldStyle.fov/ 2)

  return {
    distance: oldStyle.dis,

    angle: angle,
    angle2: angle / oldStyle.aspectRatio,

    heading: Cesium.Math.toDegrees(camera.heading) - 90,
    pitch: Cesium.Math.toRadians(camera.pitch),
    roll: Cesium.Math.toRadians(camera.roll)
  }
}
相关推荐
To_OC6 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
excel8 小时前
研究 Vue 3 源码的收获
前端·vue.js
可乐鸡翅yeah_9 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx10 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师10 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
前端snow10 小时前
ai agent --- 异步处理之 Rabbit MQ
前端
念何架构之路10 小时前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他11 小时前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou13211 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
默_笙11 小时前
🍕 一个主编、三个工种、两本手册:搭一支 AI 调研队
前端·javascript