问题标签 [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 投票
3 回答
2119 浏览

c++ - 优化截锥体剔除

我正在用 C++ 编写游戏,并且有一个由许多单独的网格组成的关卡,每个网格都有自己的顶点缓冲区。我正在使用 vmmlib(出色的免费 gl compat.vector/matrix 库)来创建我的截锥剔除器,并针对关卡中每个网格的边界球对其进行测试。可悲的是,我的关卡最多可以包含 800 个网格,并且每帧迭代所有这些网格很慢。优化代码的最佳方法是什么,这样我就不必在每次迭代时查看所有网格?截锥体内的边界体积?

0 投票
2 回答
1772 浏览

java - 没有 glGet* 调用的opengl截锥剔除

视锥体计算的各种示例使用 glGetFloatv() 来获取当前投影和模型视图矩阵(GL_PROJECTION_MATRIX,GL_MODELVIEW_MATRIX),并基于此进行一些视锥体剔除。

我已经读过 glGet* 是您不希望在主渲染循环中使用的东西;

“使用“Get”或“Is”函数会降低渲染性能。这些命令会强制图形系统在回答“Get”或“Is”查询之前执行所有排队的 OpenGL 调用。”

所以我的问题是。如何在我的代码中创建一个可靠的 Frustum 剔除算法,我应该把它放在哪里以确保这种停滞永远不会发生?

0 投票
3 回答
1162 浏览

java - 从球体平截头体确定可见区域

我正在使用地图应用程序(worldwind)并尝试确定当前显示的最小和最大纬度和经度。我可以访问截锥体,但我不确定如何解释地球可以改变其航向和/或音高的事实。对此问题的任何帮助将不胜感激。

谢谢,

杰夫

0 投票
2 回答
676 浏览

iphone - 你如何在 iPhone 上的 OpenGL ES1 中使用 glFrustrum

所以我正在使用 Xcode 3.2.1 并试图制作一个 iPhone OpenGL ES1 项目。opengl 项目的默认模板还可以,但我一直在尝试拆分代码,因此在 drawView() 调用中并非每帧都完成所有操作。

我有一个单独的 setupRC 方法来设置照明,打开深度测试,打开剔除并设置清晰的颜色。这是在 EAGLView 的 init 上调用的,它工作得很好。

我已经调用了 glViewport() 和 glFrustrum() 并将它们放在 ES1Renderer.m 文件中 resizeFromLayer() 方法的末尾。当应用程序启动和应用程序调整大小时,这会受到影响。

现在的问题是截锥体的距离似乎搞砸了,因为我所有的物体都被剪掉/剪掉了。我尝试调整相机位置和角度,但所有对象仍然被剪切/剪裁。我将距离从 1000.0f 增加到 30000.0f 并且仍然得到相同的结果。疯狂的是,如果我在 drawView() 中同时调用 glViewport() 和 glFrustrum() 调用,每帧一切看起来都正确。没有任何东西被剪裁,看起来我想要它。从我一直在阅读的所有内容中,只需要在创建窗口 / 并调整大小时调用视锥体和视口调用,但是如果我不在项目中的每一帧都调用它,它就不起作用。有任何想法吗?

提前致谢

0 投票
2 回答
1612 浏览

delphi - 在 GLScene 中确定与截锥体的交集

在 delphi 中使用 GLScene 我需要找到对象(一条线或平面就足够了)和可见空间之间的交集,以确定该对象当前显示的部分。
我尝试获取视锥,但找不到方法。我正在考虑使用相机的位置、方向和视野,但我怀疑在使用 MoveAroundTarget 等方法或设置目标对象时它们没有更新。
谢谢,
马可

0 投票
1 回答
107 浏览

iphone - 在我的 3D 空间中使用什么值

这并不是我真正遇到的功能性问题,而是一个战略性问题。我是 3D 编程的新手,在查看教程和示例时,我发现坐标通常在 -1 和 1 之间。

我认为使用整数作为坐标感觉更自然。是否有任何特殊原因为什么使用小浮点值,可能是性能或其他原因?

我还没有走那么远,所以也许这个问题问得太早了,但是在创建我将导入的对象/纹理时,它们是在坐标通常具有整数大小的应用程序中创建的,我猜(例如用于纹理的 Photoshop)。这对我如何定义我的 x/y/z 尺寸不重要吗?

提前致谢!

0 投票
8 回答
3791 浏览

algorithm - 为平截头体寻找最小边界球

我有一个截锥体(截断的金字塔),我需要为这个截锥体计算一个尽可能小的边界球。我可以选择中心正好在截锥体的中心,半径是到“远”角之一的距离,但这通常会在截锥体的窄端留下很多松弛

这似乎是简单的几何图形,但我似乎无法弄清楚。有任何想法吗?

0 投票
1 回答
2749 浏览

math - 距近平面给定距离处的平截头体的宽度

我正在使用CML来管理我正在为工作而制作的基于 OpenGL 的界面项目中的 3D 数学。我需要知道距视点给定距离处的视锥体的宽度,该视锥体保留为代表相机的 4x4 矩阵的一部分。我的目标是沿着视口的明显边缘定位 gui 对象,但距离近剪裁平面有一定距离进入屏幕。

CML 具有提取截锥体平面的功能,将它们以 Ax + By + Cz + D = 0 形式返回。这个平截头体垂直于相机,它不一定与透视投影的 z 轴对齐。

我想提取 x 和 z 坐标,以便将图形元素固定在距相机不同距离的屏幕两侧。最好的方法是什么?

谢谢!

0 投票
2 回答
972 浏览

iphone - OpenGL-ES 在视锥体中改变视角

让我们看看我是否可以解释自己。

当您设置 glFrustum 视图时,它将给出透视效果。近事近大...远事远小。一切看起来都沿着 Z 轴收缩以产生这种效果。

有没有办法让它不缩小那么多?将透视图接近正交视图....但完全失去透视图并没有那么多?

谢谢

0 投票
1 回答
484 浏览

iphone - 如何在 OpenGL ES 中为 iPhone AR 应用程序设置查看音量?

我想将 OpenGL ES 视图作为覆盖添加到我的相机视图中。从这个问题及其答案中,我了解到了 iPhone 4 后置摄像头的两个视场角。

如何在 OpenGL ES 视图中正确设置体积视图及其透视图?我应该使用glFrustumorglOrthof吗?

(我已经看到 gluPerspective 只接受一个角度作为参数,它是否应该有一个方形平截头体而不是一个矩形?)