cesium加载obj转成的3dtiles文件,写js控制旋转结果不对,有人碰到过这个问题吗?

Cesium源码 · cesium_abc · 于 1年前 发布 · 2960 次阅读

请教大家一个问题,cesium加载obj转成的3dtiles文件,写js控制旋转结果不对,有人碰到过这个问题吗? 好像只做了平移,没有旋转。这是旋转代码,想按x轴旋转

共收到 15 条回复
admin#11年前 0 个赞

你旋转了多少度,可能你的旋转的原点不对 你这么旋转,中心在球心,能对吗

admin#21年前 0 个赞

旋转点设置成你放置模型的点

cesium_abc#31年前 0 个赞

这个模型是客户提供的,不知道能不能改?

admin#41年前 0 个赞

Tile的原始矩阵M,先构造两个平移矩阵T0 和 T1(T0把模型的中心从球心移到你定义的旋转中心,T1是T0取反),再构造一个旋转矩阵 R(你的M1)……

最终的矩阵 应该是 M = T1RT0*M

admin#51年前 0 个赞

用 Cesium.Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result) 这个算

cesium_abc#61年前 0 个赞

我之前想修改3DTile的tilesetjson里的transform,但不知道数据怎么设置

devhu#71年前 0 个赞

假设 OBJ模型种一个点P-xyz 对应的经纬度是P-blh,先把模型中所有坐标减去P-xyz;用Cesium.Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result) ---origin 是用P-blh转成Cartesian3;3DTile的矩阵设成这个result就行……

liukkai001#81年前 0 个赞

楼主,这个问题解决了吗?我也遇到了

liukkai001#91年前 0 个赞

@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;

admin#101年前 0 个赞
 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;
admin#111年前 0 个赞

你的问题是什么?无法旋转还是报错?

wangsan#1210个月前 0 个赞

@admin #10楼 大神,我用了你的代码,为什么旋转还是出错,都旋转出地球了,很着急解决旋转问题还请不吝赐教

hjj_6#137个月前 0 个赞

这个问题没有解决啊

jerry#143个月前 0 个赞

现在的工具 obj转3dtiles,好像都是转成单文件,没有建LOD结构的,那位牛人知道有没有能建LOD的 obj或者gltf转3dtiles的工具?

admin#153个月前 0 个赞

大量模型肯定是3dtiles啊 如果是个小体量的可以考虑gltf啊。各人感觉gltf数据集比3dtiles 好操控

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics