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

这篇具有很好参考价值的文章主要介绍了cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法,app,Mars3d,vue,前端,javascript,3d,vue.js

问题场景:

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

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

错误代码:

cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法,app,Mars3d,vue,前端,javascript,3d,vue.js

相关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的处理办法,app,Mars3d,vue,前端,javascript,3d,vue.js

cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法,app,Mars3d,vue,前端,javascript,3d,vue.js

cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法,app,Mars3d,vue,前端,javascript,3d,vue.js文章来源地址https://www.toymoban.com/news/detail-801309.html

到了这里,关于cesium内部相同坐标在不同高度的2个点的属性机制坐标会gltf模型角度值异常问题mars3d的处理办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv关于使用cvRotatedRect函数计算并画出矩形四个点的返回位置

    画矩形操作 Point center = Point((left.center.x + right.center.x) / 2, (left.center.y + right.center.y) / 2);                         RotatedRect rect = RotatedRect(center, Size(dis, meanheight), (left.angle +                                    right.angle) / 2);//计算装甲板的四个角点               

    2024年02月13日
    浏览(41)
  • 已知深度图,获得某个像素点的三维坐标

    要根据深度图获取某个像素点的三维坐标,需要知道该像素点在相机坐标系中的坐标以及相机的内部参数和外部参数。 首先说明以下视觉中四大坐标系的转换关系: 1.假设深度图的大小为HxW,要获取像素点(i,j)的三维坐标 2.首先,需要将该像素点的坐标从图像坐标系转换到相

    2024年02月12日
    浏览(47)
  • 【数理知识】求刚体旋转矩阵和平移矩阵,已知 N>=3 个点在前后时刻的坐标,且这 N>=3 点间距离始终不变代表一个刚体

    序号 内容 1 【数理知识】自由度 degree of freedom 及自由度的计算方法 2 【数理知识】刚体 rigid body 及刚体的运动 3 【数理知识】刚体基本运动,平动,转动 4 【数理知识】向量数乘,内积,外积,matlab代码实现 5 【数理知识】最小二乘法,从线性回归出发,数值举例并用最小

    2024年02月13日
    浏览(41)
  • cesium中获取高度的误区

    注意上面: viewer.camera.positionCartographic.height 返回的高度值是相机当前位置的海拔高度,以米为单位。 viewer.scene.globe.getHeight(cartographic) 返回的高度值是指定地图位置的地形高度,以米为单位。 有时获取的是指定位置的地形高度,不是当前相机的高度

    2024年02月12日
    浏览(40)
  • Open3D 查看点的坐标

      函数 pick_points(pcd) 创造了一个 VisualizerWithEditing 实例去模仿 draw_geometries ,创造可视化窗口,添加几何图形,可视化几何图形和结束。 VisualizerWithEditing 提供一种新的交互函数 get_picked_points() ,该函数可以返回用户选取的顶点的索引。   在窗口中点击 shift + 左键 可以选

    2024年02月11日
    浏览(32)
  • 【Python&GIS】无人机影像的像素坐标计算图片某点的地理/投影坐标

            又是掉头发的一天,今天的任务是通过图片中心点的地理坐标以及图片中某点的像素坐标(即这个点位于图片中的x,y坐标)计算该点的地理/投影坐标。经过一整天的搜索,发现网上并没有这方面的教程。然后就是想啊想,头发一抓一大把,终于在网上零零散散的

    2024年02月16日
    浏览(40)
  • elementui-树形控件实现 两棵树的联动,两棵树有相同的id节点时节点的状态保持一致

    1、遇到一个情景:需要勾选用户的权限和回显用户的权限,权限分为两棵树形结构,这两颗树有一些节点的id是一样的,需要在第一个树勾选的时候,另外一棵树也勾选,不勾选的时候状态保持一致,回显也是一样的操作 2、代码 树形的代码: 树形节点点击的事件 data数据

    2024年02月02日
    浏览(39)
  • Cesium:3DTiles三维模型高度调整

            地形遮挡属性          如下两张图所示,输入高度值,根据需要调整模型高度。例如:针对近地面的管线数据,可能有一部分是埋在地下的,那么,如果开启了地形遮挡属性(即:设置为true,默认是false),那么,在进行场景渲染加载模型切片时,就会进行深度测

    2024年02月11日
    浏览(88)
  • OpenCV Python – 如何在图像上显示点击点的坐标?

    OpenCV为我们提供不同类型的鼠标事件,包括左键或右键单击、鼠标移动、左键双击等。鼠标事件返回鼠标事件的坐标(x,y)。为了在事件发生时执行一个操作,我们定义一个鼠标回调函数。我们使用左键单击(cv2.EVENT_LBUTTONDOWN)和右键单击(cv2.EVENT_RBUTTONDOWN)来显示在图像上单击的点

    2024年02月06日
    浏览(37)
  • 2D坐标系下的点的转换矩阵(平移、缩放、旋转、错切)

    1. 平移 (Translation) 在2D空间中,我们经常需要将一个点平移到另一个位置。假设空间中的一点 P ( x , y ) P(x,y) P ( x , y ) ;将其向 x , y x, y x , y 方向分别平移 t x t_x t x ​ , t y t_y t y ​ , 假设平移后点的坐标为 ( x ′ , y ′ ) (x\\\',y\\\') ( x ′ , y ′ ) ,则上述点的平移操作可以归纳为

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包