gpt4 book ai didi

algorithm - 封闭的多边形网格是否翻转?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:56 25 4
gpt4 key购买 nike

我有一个 3D 建模应用程序。现在我正在双面绘制网格,但我想在对象关闭时切换到单面。

如果多边形网格是封闭的(没有边界边缘/完全周期性),似乎我应该始终能够确定对象当前是否翻转,并自动更正。

被翻转意味着我的法线指向对象而不是对象外。翻转是我的缠绕规则与当前正面设置不匹配的结果,但我直接从几何体计算法线,因此查看法线是检测它的简单方法。

我在想的一件事是获取边界框,找到最高点,看看它的法线点是向上还是向下 - 如果向下,则对象被翻转。

但似乎此解决方案可能容易出现退化几何或浮点错误的错误,因为我只会查看一个点。我想我可以获得所有 6 个轴对齐的范围,但这似乎是一个稍微好一点的问题,而不是一个合适的解决方案。

是否有可靠、简单的方法来做到这一点?健壮和努力也可以.. :)

最佳答案

这是一种稳健但缓慢的实现方式:

从质心偏移边界框的一角(强制它保证在封闭的多边形网格之外),然后创建从该角到网格上任何三角形的中心点的线段。

测量该线段与三角形法线之间的角度。

将该线段与网格的每个三角形面相交(包括您用来生成线段的三角形)。

如果有奇数个交点,法线与线段的夹角应<180。如果是偶数,应该>180。

如果有偶数个交叉点,则数字应该倒过来。

这应该适用于非常复杂的表面,但它们必须是封闭的,否则就会崩溃。

关于algorithm - 封闭的多边形网格是否翻转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com