3D交叉(光能传递) - OpenGl

时间:2014-02-27 15:48:14

标签: opengl visibility patch

我正在尝试计算两个平面或补丁之间的可见性。

我有一个四边形线框。每个四边形都有一个带有X,Y和Z坐标的法向量。每个四边形有4个顶点。每个顶点都有X,Y和Z坐标。

给定两个四边形,如何知道这两个补丁(四边形)之间是否有遮挡物或其他物体。

enter image description here

因此,我需要创建一个方法,如果补丁没有遮挡,则返回1;如果补丁有遮挡,则返回0。

我拍照的方法是这样的:

GLint visibility(Patch i, Patch j) {

    GLboolean isVisible;
    vector<Patch> allPatches; // can be used to get all patches in the scene

    // Check if there is any occluder between patch i and patch j
    Some computations here

    if(isVisible) {
        return 1;
    } else {
        return 0;
    }
}

我听说过z-buffer算法以及完成这项工作的半立方体实现。我已经计算了形状因子。我只需要完成这一步就可以获得阴影。

确保你用图表或方法给出某种形式的答案,因为我不是那个天才

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。基本上我需要使用光线追踪技术。将光线从一个贴片投射到另一个贴片并检查光线是否通过重心方程计算截取平面。找到控制点后,您需要检查控制点是否位于四元组上。