fanvanzh / 3dtiles

The fastest tools for 3dtiles convert in the world!
Apache License 2.0
1.97k stars 594 forks source link

显示有问题 #38

Closed 912807862 closed 6 years ago

912807862 commented 6 years ago

有时候很多破洞,有些地方还会闪烁,比较严重的问题就是我切换相机角度 不显示模型了

912807862 commented 6 years ago

image image image

fanvanzh commented 6 years ago

感谢你的反馈

fanvanzh commented 6 years ago

fixed now.

zxr12748 commented 6 years ago

我抓的最新版本,转换的数据仍然出现了类似问题

fanvanzh commented 6 years ago

是否可提供测试数据?

zxr12748 commented 6 years ago

测试数据

这是其中一个测试数据,我用您的这个3dtiles和cesiumlab都转过,显示都有问题

fanvanzh commented 6 years ago

image 转换的没有问题。

和 osgviewer 看到的一样,空洞应该是数据本身的。

912807862 commented 6 years ago

感谢您的回答 我重新用原来的OSGB 到另外一个软件中转换 是没有问题的 还有 请教一个一个问题 我也是刚研究b3dm 你是不是解析OSGB 然后转换成GLTF GLTF+头文件组合成B3DM 格式 然后用json来组织B3DM的吗?

fanvanzh commented 6 years ago

是的,详见 osgb23dtile.cpp。

912807862 commented 6 years ago

感谢

912807862 commented 6 years ago

还有一个问题 就是shp 格式 转换貌似有问题 不能加载

fanvanzh commented 6 years ago

网友测试能加载,你看看以前的 issue。 目前只处理了 面数据,(84 坐标系)

zxr12748 commented 6 years ago

@fanvanzh 您方便的话能把转后的数据上传么?我这看到的结果和您发的截图不一样

912807862 commented 6 years ago

@fanvanzh 我当时测试的数据有100多MB 估计是量太大了 小数据问题不大

fanvanzh commented 6 years ago

@912807862 100M 不算大数据。我们测试都是100G左右

fanvanzh commented 6 years ago

@zxr12748 不方便传出。

simonasdmd commented 6 years ago

这个我看里面有gdal的东西 应该是支持转换投影坐标系的吧,但是入参并没有类似的选项,如果想把osbg转换成对应WGS84或者别的坐标系的tiles文件,应该怎么做呢?

fanvanzh commented 6 years ago

默认读取 metadata.xml 里坐标,如果不是 WGS84 会自动转 WGS84;

simonasdmd commented 6 years ago

那如果想转成别的坐标系呢?比如北京54坐标系或者别的通用的,这个可以怎么搞?求教下

fanvanzh commented 6 years ago

cesium 不支持其他坐标系,放到球上的坐标一定是 wgs84

simonasdmd commented 6 years ago

我看了下cesium,它支持很多坐标系啊,你说的支持吃wgs84是针对3dtiles吗?,如果我想转换成别的坐标系,可以再这个工程的那个部分加呢?比如这个是先把osgb转换成gltf,这个过程中可以吗?

simonasdmd commented 6 years ago

比如转成3857 还是就算传入的是3857 cesium也会自己转换成wgs84的加载

fanvanzh commented 6 years ago

不会,cesium 不会做投影转换的问题,只能用4326 的坐标系。

simonasdmd commented 6 years ago

image 想问下这个extern "C" bool epsg_convert(int insrs, double val, char path)就是转换成wgs84的函数么?如果是的话,我找不到它的调用点,这个是怎么工作的呢?

fanvanzh commented 6 years ago

这个是在 rust 里调用的。 详见 main.rs

simonasdmd commented 6 years ago

好的,之前没有接触过rust,能不能额外问下这个大部分都是用c++写的,为什么不全部用c++,用部分rust的原因是什么啊?

912807862 commented 6 years ago

@simonasdmd 3DTiles 转换完后自己加入自己的坐标系就行了 跟目录下的 矩阵 就是调整模型的 位置以及方位 transform 这个字段就行了

simonasdmd commented 6 years ago

@912807862 你好,问下你说的这个transform 应该怎么改呢?我在生成3dtiles之后,和data同级目录tileset.json这个文件里 看到了transform字段, "transform": [ -0.9200762383166308, -0.39173934661343207, 0.0, 0.0, 0.14998421515811922, -0.3522671737790223, 0.923803319695888, 0.0, -0.3615319161445652, 0.8491281979033392, 0.3850661983792745, 0.0, -2307045.3800931596, 5418545.91143869, 2440775.2135206545, 1.0 ]这个应该怎么调整呢,还有就是我生成的3dtiles数据加载出来以后大小有些问题 image

fanvanzh commented 6 years ago

@simonasdmd 业余爱好,多学一门语言而已。 还有个 branch 是 C#、 C++ 混写的。

simonasdmd commented 6 years ago

@fanvanzh 我转换成3dtiles之后,加载出来发现位置有偏移,这个可以再哪里调呢?前面有人回复说transform字段可以,但是网上没有找到关于这个的说明,能说一下怎么调整位置吗?ps:经纬度和高度都有偏移

fanvanzh commented 6 years ago

@simonasdmd 参照我项目里的 matrix.xls ,是个根据经纬度计算 matrix 的 excel 公示

simonasdmd commented 6 years ago

@fanvanzh 这个需要怎么使用呢?网上搜了下例子(https://www.cnblogs.com/huqi-code/p/8288239.html),但是并没有能解决问题,求问下这个应该怎么使用,或者这个工程里面可以调吗

912807862 commented 6 years ago

@simonasdmd tileset.json transform字段 在cesium里面有transform这个类 可以根据经纬度角度生成M4矩阵 然后在json里面替换掉就行了 这个是最简单的方法

912807862 commented 6 years ago

@simonasdmd image 这个就是n你当前的笛卡尔坐标 也就是 cesium里面的c3 你按照你的坐标 和角度 通过transform这个类去换算 或者按照fanvanzh 说的 他的matrix的算法 都是可以的

912807862 commented 6 years ago

@fanvanzh 问下你 我现在也可以自己生产B3DM数据了 我吧shp转换成火柴盒3DTILES 思路是 矢量数据->obj->gltf->glb->b3dm 这个已经实现了 但是觉得很麻烦 一开始就是想 矢量->gltf->glb->b3dm 我想问下你是什么思路做的? 我是用java实现的 C++ 没太看明白

912807862 commented 6 years ago

@fanvanzh 同理OSGB 应该也能到obj 后续需要实现osgb的转换

simonasdmd commented 6 years ago

@912807862 意思我大概明白了,那个martrix的算法,我填了我想要的数据,然后下面对应生成了四列, image,想问是不是四个x,四个y,四个z,四个r分别一组,还有就是入参哪里,后面三个参数有点不懂具体的含义。 image

912807862 commented 6 years ago

image 这三个 貌似不对 应该是笛卡尔坐标

912807862 commented 6 years ago

@simonasdmd 你直接用cesium的类去计算 这样不会有问题 我已经验证过了

simonasdmd commented 6 years ago

@912807862 我手动用matrix改了数据,然后按照四个一组,贴地和位置都已经搞好了,看你前面说你自己写过obj->gltf的工具,这个能不能发我一份作为参考,我想用c写一份,但是网上都是cesium的现成工具,看不懂js的代码。

simonasdmd commented 6 years ago

@fanvanzh 能不能问下这个转换的过程是什么 我现在想写一个obj转换成gltf 和obj转换成3dtiles的工具,这个可以从这个工程里面借鉴吗?网上都是js的,看不懂,,,