Cesium开发&白膜发布工具开发中遇到的三角剖分问题

今天回过头来改一下工具开发中一些debug,由于当时没有时间去解决,所以放在了另一边。首先呢,在切矢量shapefile的房屋面数据时,使用的是mapbox的earcut.hpp来划分三角面的。虽然earcut.hpp已经按照了相关的理论来实现了,具体可以参考文档

https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf,从文档中,可以看出对于复杂的图形,这算法都实现了,那么我们现在的房屋面数据应该是不存在问题的。但是求得顶点后,连接三角面还是有问题。我们来看一下有问题的效果。

来看一下细节部分,是不是很怪。

但是,对照了做出来的效果,发现底部是没有问题的,可以说,我们的顶部在三角化时,对顶点的排列出现debug。好了,我们来看一下三角形的排布。

很显然,顶部和底部有着对应的关系。只要修改一下顶部的代码即可。而底部三角化代码为。

        for (int idx = 0; idx < indices.size(); idx += 3) {
            mesh.index.push_back({ 2 * indices[idx], 2 * indices[idx + 1], 2 * indices[idx + 2] });
        }

现在将顶部修改为如下即可。

        for (int idx = 0; idx < indices.size(); idx += 3) {

			//
			mesh.index.push_back({ 2 * indices[idx]+1, 2 * indices[idx + 1]+1, 2 * indices[idx + 2]+1 });
        }

最后,再次加载我们修改后的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yGIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值