请教大家一个问题,cesium加载obj转成的3dtiles文件,写js控制旋转结果不对,有人碰到过这个问题吗? 好像只做了平移,没有旋转。这是旋转代码,想按x轴旋转
Tile的原始矩阵M,先构造两个平移矩阵T0 和 T1(T0把模型的中心从球心移到你定义的旋转中心,T1是T0取反),再构造一个旋转矩阵 R(你的M1)……
最终的矩阵 应该是 M = T1RT0*M
假设 OBJ模型种一个点P-xyz 对应的经纬度是P-blh,先把模型中所有坐标减去P-xyz;用Cesium.Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result) ---origin 是用P-blh转成Cartesian3;3DTile的矩阵设成这个result就行……
@admin #5楼 大神可以帮我看下哪里不对吗。 var a = Cesium.Matrix4.fromArray(tileset._root.transform); var s = Cesium.Matrix4.getTranslation(a, new Cesium.Cartesian3); var _s = Cesium.Transforms.eastNorthUpToFixedFrame(s); var angle = Cesium.Matrix3.fromRotationX(90); var modelMatrix =Cesium.Matrix4.multiplyByMatrix3(_s, angle,new Cesium.Matrix4() ); tileset.modelMatrix = modelMatrix;
var a = Cesium.Matrix4.fromArray(tileset._root.transform);
var s = Cesium.Matrix4.getTranslation(a, new Cesium.Cartesian3);
var _s = Cesium.Transforms.eastNorthUpToFixedFrame(s);
var angle = Cesium.Matrix3.fromRotationX(90);
var modelMatrix =Cesium.Matrix4.multiplyByMatrix3(_s, angle,new Cesium.Matrix4() ); tileset.modelMatrix = modelMatrix;