前端,基于Cesium的WebGis开发:

框架:Vue2

问题描述:

Cesium版本:目前最新

        笔者在加载倾斜模型之后发现是浮在上空且倾斜的,因此想通过旋转来调整达到模型贴地的目的。通过平移的方法可以使模型,然而,在研究如何旋转过程中,查阅借鉴了很多资料,尝试之后却出现了看不见模型或者相机视角飞到了预想之外的地方。

具体描述旋转的一些过程:

        首先是借鉴了cesium中文网的例子来实现旋转:

cesium编程入门(七)3D Tiles,模型旋转 | cesium中文网然而他的版本是1.40,不知道为啥导入cesium的令牌失败了,只要换一个高版本的就可以用Cesium.Ion.defaultAccessToken。然后地球也一直加载不出来,因此放弃他的代码实现。接着看到他后面的文章有讲到1.64之后的版本关于模型旋转的解决方式,然而要收钱90蚊,对于我这经济为独立的大学森来嗦太贵了,我选择自己解决他。next -->

        又借鉴了另一篇文章:Cesium 中的图形变换:局部平移、缩放、旋转思路及代码实现 - 四季留歌 - 博客园

博客园的一位大佬讲的关于Cesium的旋转计算算法原理。对于他讲的内容, 我总结了以下的个人理解(以旋转为例):

        因为局部坐标和世界坐标不统一的原因,要通过一系列稍微复杂的计算。

       简单来说,就是要先把模型中心点移动到地心处,通过一个平移矩阵可以实现。接着就要计算一个旋转矩阵,这个很简单,直接略过。再就是要把模型移动回原处,这个也可以通过一个平移矩阵来实现。最后就是要按以上的描述顺序将三个矩阵依次左乘得到一个最终的矩阵,将这个矩阵通过tileset.modelmatrix赋值给模型的变换矩阵成员变量。

诶~心累,都理解到这一步了,最后的结果还是一样:显示不出那个模型,虽然位置是确定了。所以到头来还是没有解决这个旋转的问题。以此记录一下过程,顺便看看有没有哪位大佬可以知道如何解决这个问题,指导一下我这个小白,我也会继续去找到一个最佳的方案。


文末附上实验过程的核心代码:

 

Logo

前往低代码交流专区

更多推荐