cesium编程入门(七)3D Tiles,模型旋转
上一节介绍了3D Tiles模型的位置移动,和贴地的操作,这一节来聊一聊模型的旋转,
参考《WebGl编程指南》的第四章
假设在X轴和Y轴构成的平面上,要让物体旋转角度为β,那么公式如下:
由此思路就出来了:
-
- 根据要旋转的角度,构建一个三阶旋转矩阵
- 获取3D tiles 的旋转矩阵modelMatrix,然后与旋转矩阵运算,
- 最后将计算结果再赋值给modelMatrix,完成。
参考代码:
var m = tileset.modelMatrix;
//RotateX为旋转角度,转为弧度再参与运算
var m1 = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(RotateX));
//矩阵计算
Cesium.Matrix4.multiplyByMatrix3(m,m1,m);
//赋值
tileset.modelMatrix = m;
点击查看动画
1.52下旋转就飞了(库里面判断,旋转是根据地球中心旋转的,比如模型在坐标为100,40的位置,绕x旋转1度就到了经度 101,40 的位置),1.40里面是可用的。
1.64版本旋转问题请看这里 Cesium实战(十九)解决新版本3DTile旋转缩放问题
你好,我用你的代码示例,旋转为何不是上面动图的效果,一旋转,模型就飞不见了。还请不吝赐教
模型有没有问题咧,能不能把模型传到云盘,给个链接~~或者发我邮箱f35457@qq.com
可能是版本的原因,你先降一下版本咧~
1.64版本旋转问题请看这里 Cesium实战(十九)解决新版本3DTile旋转缩放问题 http://cesium.xin/wordpress/archives/cesium-3dtiles-rotate-new.html
你好,我想请问一下例如这个100,40的坐标定义的是模型哪个位置,是整个模型包围盒中心吗
嗯
你好,请问如果给模型指定一个坐标的话,那这个坐标是指模型的包围盒的正中心位置吗
是的
你好,我把1.56.1的版本降成和你一样的1.40也出现了一旋转模型就不见了
1.64版本旋转问题请看这里 Cesium实战(十九)解决新版本3DTile旋转缩放问题 http://cesium.xin/wordpress/archives/cesium-3dtiles-rotate-new.html
您好,我用1.40版本运行了这个示例,能够演示出上述的效果。然后用自己的数据替换进去以后,高度调节是可用的,调节角度时模型就会消失,您能指点一下吗
只能调试源码了呀~
您好,我可以把模型发给您的邮箱,您帮忙看一下我的模型是否有问题吗,导致旋转之后就消失了
http://cesium.xin/wordpress/archives/cesium-3dtiles-rotate-new.html
请问可不可以加载BIM模型,revit制作的?
可以
您好 请问加载的3d tiles模型可以放大缩小吗
可以 http://cesium.xin/wordpress/archives/cesium-3dtiles-rotate-new.html
大佬,我想请问一下3dtiles建筑模型,我用style.color的conditions分级渲染之后,用chrome浏览器打开就没有效果,建筑全是白色的,用火狐浏览器就可以正常加载,而且也没有报错,这是什么原因呢?已经困扰我一个月了
找到问题了,我想一开始让建筑默认隐藏,拉进再显示,在tileset.readyPromise.then里写了tileset.show=false和setstyle(tileset),然后建筑就会没颜色。。这是为什么呢
大佬我问一下,为啥我旋转的时候是根据地心为原点进行旋转的呢
库默认的是根据地心为原点进行旋转