cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法

本文主要是介绍cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模型一直向上运动的正常效果:

问题场景:

1.new mars3d.graphic.ModelPrimitive({使用addDynamicPosition(设置并添加动画轨迹位置,按“指定时间”运动到达“指定位置”时发现,如果是同一个点位不同高度值的y轴竖直向上方向的运动。

指定pitch:270偏转角度的时候,会出现模型的角度值异常的问题。

错误代码:

相关api文档:

ModelPrimitive - V3.7.0 - Mars3D API文档

相关示例演示链接:

功能示例(原生JS版) | Mars3D三维可视化平台 | 合肥火星科技有限公司

复现代码:

  function addDemoGraphics() {

        for (var i = 0; i < 1; i++) {

          var graphic = new mars3d.graphic.ModelPrimitive({

            // forwardExtrapolationType: Cesium.ExtrapolationType.HOLD,

            style: {

              url: "//data.mars3d.cn/gltf/mars/qiche.gltf",

              scale: 0.5,

              minimumPixelSize: 20,

              pitch: 270,

     

              // 高亮时的样式(默认为鼠标移入,也可以指定type:'click'单击高亮),构造后也可以openHighlight、closeHighlight方法来手动调用

              highlight: {

                type: mars3d.EventType.click,

                silhouette: true,

                silhouetteColor: "#ff0000",

                silhouetteSize: 4

              },

     

              label: {

                // 不需要文字时,去掉label配置即可

                text: "皖A000" + i,

                font_size: 16,

                color: "#ffffff",

                outline: true,

                outlineColor: "#000000",

                pixelOffsetY: -20,

                distanceDisplayCondition: true,

                distanceDisplayCondition_far: 50000,

                distanceDisplayCondition_near: 0

              }

            },

            attr: { index: i, name: "ModelPrimitive" }

          })

          graphicLayer.addGraphic(graphic)

        }

     

     

     

        // 设置动态位置

        changePosition(0)

     

        // 定时更新动态位置(setInterval为演示)

        var interval = 30

        changePosition(interval)

        setInterval(() => {

          changePosition(interval)

        }, interval * 1000)

      }

     

      // 改变位置

      function changePosition(time) {

        graphicLayer.eachGraphic((graphic) => {

          if (graphic.isPrivate) {

            return

          }

          graphic.addDynamicPosition(randomPoint(time), time) // 按time秒运动至指定位置

        })

      }

     

      // 取区域内的随机点

      function randomPoint(time) {

        return Cesium.Cartesian3.fromDegrees(117.207666, 31.817099, time)

      }

      function random(min, max) {

        return Math.floor(Math.random() * (max - min + 1) + min)

      }

关键代码说明:

1. return Cesium.Cartesian3.fromDegrees(117.207666, 31.817099, time)是实现小车模型随着时间沿着y轴竖直上升的效果

2.加入    pitch: 270,之后,发现在固定的点位不同高度值运动,cesium底层会出现相同坐标,不同高度的2个点的属性机制坐标会角度值异常的效果。

解决方案:

1.在mars3d中,场景中初始化的时候固定好模型的姿态信息hpr

               pitch: 270,

              heading:0,

              roll:0,

相关代码:

    var graphic = new mars3d.graphic.ModelPrimitive({

            // forwardExtrapolationType: Cesium.ExtrapolationType.HOLD,

            style: {

              url: "//data.mars3d.cn/gltf/mars/qiche.gltf",

              scale: 0.5,

              minimumPixelSize: 20,

              pitch: 90,

              heading:0,

              roll:0,

     

              // 高亮时的样式(默认为鼠标移入,也可以指定type:'click'单击高亮),构造后也可以openHighlight、closeHighlight方法来手动调用

              highlight: {

                type: mars3d.EventType.click,

                silhouette: true,

                silhouetteColor: "#ff0000",

                silhouetteSize: 4

              },

     

              label: {

                // 不需要文字时,去掉label配置即可

                text: "皖A000" + i,

                font_size: 16,

                color: "#ffffff",

                outline: true,

                outlineColor: "#000000",

                pixelOffsetY: -20,

                distanceDisplayCondition: true,

                distanceDisplayCondition_far: 50000,

                distanceDisplayCondition_near: 0

              }

            },

            attr: { index: i, name: "ModelPrimitive" }

          })

          graphicLayer.addGraphic(graphic)

这篇关于cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618501

相关文章

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图