【问题标题】:Catmull Clarke doesn't preserve planar normalsCatmull Clarke 不保留平面法线
【发布时间】:2018-12-14 21:42:31
【问题描述】:

在我展示的玩具示例中,表面法线之一显然错误地指向了内部。我可以创建一个新的立方体,其法线按预期朝外,但在使用 Catmull Clarke 处理后,不能保证所有法线都将保持面向外。

由于我必须使用四边形,我知道我可以通过转置顶点顺序来修复面部,即 [a b c d] -> [d c b a] 从而修复法线。但是如何确定给定面的法线指向错误的方向?

(没有足够的代表嵌入)https://gyazo.com/e20576e700196a43a2378eb055a71b38

【问题讨论】:

    标签: matlab geometry normals quadrilaterals


    【解决方案1】:

    您可以检查面法线向量与从立方体质心到面上任意点的向量之间的点积符号。

    假设人脸[a,b,c,d] 的法向量是n。接下来,通过平均 8 个顶点坐标来计算立方体的质心,我们称之为p

    然后,计算dir = dot(n,(a-p))。如果dir > 0,则法线n 从立方体向外指向。如果dir为负数,则要翻转法线。

    此方法适用于任何凸多面体的面。如果您正在处理非凸多面体,则必须使用提到的方法here

    【讨论】:

    • 非常感谢,这正是正确的答案。也很高兴知道这适用于任何凸多面体,因为那将是我的下一个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多