问题标签 [culling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1451 浏览

python - openGL中不正确的遮挡,正面剔除

我正在使用我自己的算法来剔除不应该显示的被遮挡的正面。当我不剔除面时,我有一套完美的块。当我启用我的面部剔除时,我得到了意想不到的结果。我检查了我的剔除代码,我相信它正确剔除合适的面孔。

为简单起见,我将输出减少到 9 个盒子的平面。例如,平面中间的盒子只需要一个顶面和一个底面。所有其他面孔都可以被丢弃,因为它们根本不会在任何地方被看到。

我检查了代码中的每个框,以确定它们是否剔除了正确的面孔,我相信它们确实如此。这让我认为这是我的顶点、索引或法线的问题。

我正在使用 python 的 Pyglet,它自动创建和管理 VAO 和 VBO。

OpenGL 设置:

OpenGL 绘制:

顶点代码:

法线代码:

指数代码:

剔除代码:

剔除其中一个框的正面和左侧面后的示例输出:

剔除,无线框!没有剔除,没有线框 剔除,线框没有剔除,线框

0 投票
1 回答
672 浏览

c++ - 单个顶点的“剔除” - glDrawArrays(GL_POINTS)

我必须支持一些使用以下代码绘制点云的遗留代码:

无论法线与“视线”之间的角度如何,此代码都会渲染所有顶点。我需要的是只绘制法线指向我们的顶点。

对于面,这将被称为“剔除”,但我不知道如何仅为顶点启用此选项。请建议。

0 投票
1 回答
177 浏览

c - 什么可能导致 OpenGL 中的多边形无序渲染?

我正在尝试获得一些 OpenGL 的实践经验,所以我一直在编写一些基本程序。下面的简短程序是我第一次尝试渲染一个实体对象——一个旋转的立方体——但由于某种原因,一些后多边形似乎被绘制在前多边形上。我的问题是什么可能导致这种情况?它与深度缓冲区有关吗?我发现在这种情况下启用面部剔除会隐藏效果,但为什么需要这样做呢?不应该隐藏被更近的脸遮挡的脸吗?

0 投票
1 回答
7042 浏览

c++ - DX11 中的顶点缠绕顺序

我正在尝试使用 dx11 绘制一个简单的正方形,但每个三角形的索引顺序决定了它是否显示。我在光栅化状态下将剔除模式设置为无,但它似乎没有改变任何东西。

如果我将第一个三角形的顶点指定为 0, 1, 2 而不是 2, 1, 0 则三角形不会出现。所以我的问题是,无论剔除模式如何,我是否需要以特定方式对三角形的顶点进行排序?

PS我正在绘制一个三角形列表而不是一条带。

0 投票
1 回答
286 浏览

opengl - 截锥体剔除 - 计算截锥体平面中的点时出错

我正在尝试实现以下代码:

http://www.lighthouse3d.com/tutorials/view-frustum-culling/geometric-approach-implementation/

我需要在我的图形引擎中使用截锥剔除。

我的职能是:

但是,我得到了不需要的结果(这是我的调试消息):

没有一个对象通过测试(我使用 pointInFrustrum() 进行测试,使用该点作为每个对象的位置。

如果我在没有截锥体剔除的情况下渲染场景,一切看起来都很完美,但要使用它,没有任何东西通过测试。知道错误在哪里吗?(代码就是我上面提到的链接)。

所有物体都在视野中...

矩阵由 glm::mat4 管理;

编辑:

修正后,如果我将相机向下一点,物体就会被绘制出来,但是如果我把相机向上一点,所有的物体就会完全消失(这次没有画出来)。你知道会发生什么吗?提前致谢。

如果相机指向下方:

在此处输入图像描述

如果相机指向一点:

在此处输入图像描述

0 投票
1 回答
2871 浏览

c++ - 平截头体和球体相交

我正在阅读这篇简洁的文章:Frustum Culling

并且它读取到找到球体和平截头体侧面(平面)之间的距离是:

C = 球心

N = 平面法线

D = 平面沿法线到原点的距离

距离 = 点积(C, N) + D

但我不明白变量 D 指的是什么。特别是,我不明白截锥体的起源是什么。它是相机眼睛的位置吗?

0 投票
2 回答
1362 浏览

opengl - OpenGL:线框覆盖隐藏线去除

我在可视化科学 3d 模型时遇到了一个问题。任务是渲染一个填充了颜色和线框覆盖的模型。这适用于具有闭合曲面的实体模型。

问题 1:

我有几个多边形,在渲染之前对它们的可见性/方向一无所知。为了确保正确显示所有多边形,我首先顺时针绘制所有多边形,然后逆时针绘制所有多边形,线框叠加层也是如此。这似乎适用于某些型号,但不适用于所有型号。

我的一些模型最终看起来像这样

问题2:

我不知道这是否与问题 #1 有关,但 PolygonOffset 使某些边缘看起来很糟糕,可能是因为模型多边形的混合方向:线框边缘

**编码: **

由于给我的限制,我必须在 Fortran 77 中编写代码。尽管如此,OpenGL 调用保持不变。这是绘制模型的代码:

其他信息:启用剔除,深度函数为 GL_LESS。

0 投票
0 回答
47 浏览

math - 有没有更快的方法来进行这个角度比较?

我有两个酉向量PQ笛卡尔坐标。我需要一种非常快速的方法来知道两者之间的角度是否小于某个量A。我能想到的最好方法是:

或者,相反:

角度越大,其余弦越小。它用于剔除算法。如果角度小于 A(视野外),则不会绘制对象,因此,少量的假阴性是可以接受的(我偶尔可以向 GPU 发送视野外的东西),但是误报不是(我不能避免在视野内渲染某些东西)。

最快的方法是什么?我能比现在做得更好吗?

0 投票
1 回答
1263 浏览

three.js - Three.js 未剔除的 SkyBox

我试图让我的天空盒不受camera.far参数的影响。我想用这个来剔除所有其他场景对象,而不是天空盒。

当我设置skyBox.frustumCulled = false;它没有区别。skyBox当然是网格。

这是通过添加另一个渲染通道来完成的吗?如果是这样,我将需要 2 个不同的摄像机,其中一个具有非常高的远值,以允许查看天空盒,对吗?如何有效地做到这一点?

为清楚起见,这里是用于绘制天空盒的地形对象代码片段:

0 投票
1 回答
1943 浏览

unity3d - 在 Blender 中生成网格的背面

我正在统一使用我的搅拌机对象。Unity 正在剔除背面。

所以我想从搅拌机本身生成背面作为单独的多边形。我可以通过复制网格本身来做到这一点,但是有没有办法通过修改器来做到这一点?