问题标签 [frustum]

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 投票
4 回答
2603 浏览

java - 对截锥体剔除感到困惑

我是 OpenGL 的新手。我将它与 JOGL 一起使用。

我正在阅读有关截锥体剔除的信息:

http://www.lighthouse3d.com/opengl/viewfrustum/

http://www.crownandcutlass.com/features/technicaldetails/frustum.html

我不确定它应该做什么。OpenGL 不会自动剔除屏幕外对象吗?(这种剔除是否比一开始不发送对象要慢得多?)

从我正在阅读的内容来看,这似乎不会处理避免绘制在另一个后面但在视锥内的对象。这是否意味着唯一的好处是避免将屏幕外对象发送到 OpenGL?

0 投票
2 回答
620 浏览

graphics - 投影 3d 点的 z 值

一个 3d 点被透视投影矩阵变换后,Z 坐标代表什么?与“眼睛”的距离?与近剪裁平面的距离?这些都没有?

编辑

我已经使用此处找到的 glFustrum 定义设置了一个矩阵。

然后,我用该矩阵变换一个 3D 点。

我留下了一个 3D 点,其中 X 和 Y 是近截锥面上的点的坐标,而 Z,据说是我很难利用的深度信息。

谢谢!

0 投票
1 回答
1962 浏览

opengl - 截锥体剔除矩形问题

我正在尝试在我的 OpenGL 2d 游戏中实现截锥剔除。在这一点上,我的游戏中唯一的几何对象是矩形,所以我认为这很容易,但我得到了意想不到的结果。我已经设置了一个对称的透视投影,其视场角为 45 度,近平面和远平面分别为 0.01 和 50。眼睛矢量始终平行于 z 轴,相机只能沿 x 和 y 轴移动。

我的想法是在我试图剔除的矩形的 z 坐标处获取相机当前可见的世界空间的矩形区域。因为相机正在看平截头体的中心,所以我计算到这个可见矩形区域边缘的距离如下:

然后我在相机的 x 和 y 坐标之间添加和减去这个距离,以获得最大和最小可见 x 和 y,然后测试给定的矩形以查看它是否在这些值之间。

我的问题是我在这里是否走在正确的轨道上,以及为什么当我在 z=5 有一个物体时,上面的公式返回一个小得离谱的值(某物 *10^-37),在 ( 0,0,0)?

0 投票
1 回答
832 浏览

iphone - 在 iphone 中设置截锥体

我设置了一个 fov=50, near=0.1,far=1000,aspect ratio=3/2 的截锥体,但效果并不好——我的对象似乎在远端被压缩。建议一些可能有帮助的东西。

0 投票
1 回答
2334 浏览

opengl-es - 无法在 OpenGL 中的 2D(正交)之上绘制 3D(平截头体)

我正在尝试在背景图像(正交投影)上使用 Frustum 投影渲染一些网格。无论我做什么,背景图像都会一直位于场景的顶部(隐藏网格)。

我尝试了一个小测试——当我用相同的投影矩阵渲染它们时,它们的顺序是正确的——背景图像在网格后面。

这些是投影矩阵和深度缓冲区初始化:

我正在清理缓冲区: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

最后一件事.. 当我禁用 GL_DEPTH_TEST 时,网格被绘制在背景图像的前面,因为首先调用背景..

我不知道是深度缓冲区还是投影矩阵导致了这个问题。screenWidth = 960 和 screenHeight = 640 的矩阵的值:

我究竟做错了什么?阿米尔。

编辑:这就是我用正交投影绘制图像的方式:

这就是我用平截头体投影绘制网格的方式:

0 投票
2 回答
3703 浏览

python - 使用视锥检查边界框相交/碰撞

我想根据某些对象的轴对齐边界框检查视锥,以大致检查这些对象是否在视野中。速度不是什么大问题。

0 投票
1 回答
882 浏览

math - 查看视锥体可视化

给定相机的 3D 位置、相机的 3D 目标位置(相机指向的点)、距相机的远平面距离、视野和纵横比,如何计算远平面中的四个 3D 点?这应该可以通过基本的三角函数实现,但我没有得到准确的结果。

0 投票
1 回答
2674 浏览

c++ - 边界框平截头体渲染 - 距离渲染 - OpenGL

我正在渲染一个旧的游戏格式,其中我有一个构成你所在的网格的列表。我终于得到了 PVS(从另一个区域可见的区域)工作,并且切割了很多我没有的网格需要渲染但不多。所以现在,我应该渲染的网格列表只包括我可以看到的其他网格。但它并不完美。仍然有大量的网格,包括经过剪辑的非常远的网格。

现在首先,我试图剔除不在我看来平截头体的网格。我听说边界框是执行此操作的最佳方法。有谁知道我该怎么做?我知道我需要最大点 (x, yz) 和最小点 (x, yz) 以便一个框包含所有顶点。

然后,我是否检查这些点中的任何一个是否在我的视锥中?就这么简单吗?

谢谢!

0 投票
1 回答
2067 浏览

c++ - 边界框截头体剔除的问题

我无法让正确的截锥体剔除工作。我从某人那里得到了一个关于 AABB 点测试的好建议,它效果很好,但我已经到了最大值和最小值点测试并不总是有效的地步,因为它们通常不会在截锥体中,而是来自其中一个的平面双方将。所以我需要进行完整的边界框检测。我已经有了根据截锥体平面检查边界框的代码,只需要设置边界框。

有没有人有代码示例或有关如何执行此操作的想法。我用来创建边界框的两点是最小 xy 和 z 以及最大 xy 和 z。

谢谢!:)

0 投票
3 回答
8291 浏览

opengl - 如何检查对象是否位于 OpenGL 的裁剪体积之外?

我真的对 OpenGL 的模型视图转换感到困惑。我了解所有的转换过程,但是当涉及到投影矩阵时,我迷路了:(

如果我有一个点 P (x, y, z),我如何检查该点是否将绘制在由平行裁剪体积或透视裁剪体积定义的裁剪体积上?这个过程背后的数学背景是什么?