【问题标题】:how to determine OpenGL winding based on normals?如何根据法线确定 OpenGL 绕组?
【发布时间】:2020-05-27 17:02:03
【问题描述】:

我正在尝试了解如何手动生成对象。

我有一个网格,我删除其中的一部分并在其位置创建一个新几何体。我有关于已删除顶点法线的信息。在此基础上,我必须朝同一个方向构建新面孔(大小和数量不同)。

但我不明白如何选择正确的绕组。当课程谈论屏幕空间中的逆时针缠绕时,这听起来很容易。但是,如果我在模型空间中有一堆几乎混乱的点怎么办?那么如何确定这个 CCW,使用哪个轴呢?我建议最近的旧法线可能会有所帮助。但是确定正确顺序最便宜的方法是什么?

【问题讨论】:

    标签: math opengl 3d geometry computational-geometry


    【解决方案1】:

    结果比我想象的要容易。需要从三角形的顶点求前两个向量的叉积,然后求结果向量与法向量的点,如果结果为负,则在生成时需要改变顺序顶点。

    【讨论】:

    • 这将在 99% 的时间内起作用,但如果您的新网格部分太凹,那么它会破裂。通常所做的是在网格内部设置点,而不是原始法线的点积,而是由face_vertex - inside_point 创建的矢量点积。见Determing the direction of face normals consistently?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2010-09-09
    • 2020-02-10
    • 2014-04-27
    • 2012-05-25
    相关资源
    最近更新 更多