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

graphics - 禁用对对象的剔除

这个问题实际上是针对 Unity3D 的,但它也可以是一个更笼统的问题,因此我将尽可能笼统地提出这个问题。

假设我有一个带有 a 的场景,camera (near = 0.3, far = 1000, fov = 60)我想绘制一个半径为 10000 单位的天穹。

物体没有被相机的平截头体剔除,因为我在圆顶内。但是顶点被一些着色器以某种方式剔除,最终结果如下所示:

我剪裁的天穹

现在我的问题是:

我可以更改任何引擎的哪些设置以确保绘制完整的对象并且不会被相机的远平面剪裁?

我不想要的是:

  • 将远平面更改为 10000,因为它会使平截头体不太准确
  • 改近平面,因为我的游戏其实规模很小
  • 改变穹顶的比例,因为这个设置看起来很逼真
0 投票
1 回答
483 浏览

android - Android opengl问题与左/右方向倾斜的截锥体

我正在编写一个简单的陀螺仪测试应用程序,我希望通过将手机倾斜到不同的方向来实现多边形的不同边。它类似于头部跟踪渲染技术,但我假设眼睛位置固定,只有手机相对于眼睛(相机)移动。

为此,我在 opengl es 中使用了斜截头锥体技巧。我可以毫无问题地抵消顶部/底部/近/远方向的截锥体。当我将偏移值除以 2 时,只有左/右方向才能工作时,真正奇怪的部分就出现了。有效地“缩小”了截锥体的实际值。

这是在左/右方向上带有除以 2 错误的工作示例代码:

有人遇到过这个吗?

0 投票
1 回答
449 浏览

opengl-es - OpenGL:大场景和小值的线抖动

我目前正在绘制 3D 太阳系,并且正在尝试绘制行星轨道的路径。计算出的数据在 3D 空间中是正确的,但是当我前往冥王星时,轨道线会到处晃动,直到相机完全停止。我不认为这对这个特定的星球来说是独一无二的,但考虑到相机必须行进的距离,我认为它在这个范围内更明显。

我怀疑它与截锥体有关,但我一直在将值插入每个组件中,但似乎找不到解决方案。要查看任何东西,我必须对行星和附近的轨道点使用非常小的数字(E-5 等),但对于其他区域,我必须使用非常小的数字(E-5 等)(也许我需要用不同的平截头体画两次?)

非常感谢任何帮助...

0 投票
3 回答
1072 浏览

opengl-es - OpenGL ES Frustum 之外的几何图形是否也被渲染了?

我正在使用 OpenGL ES 作为绘图 api 为 iPhone 开发游戏。我在一个绘图元素中绘制了整个大世界。根据平截头体,对象是可见的。

我想知道对象的另一部分发生了什么,它被绘制了吗?会影响FPS吗?

0 投票
2 回答
609 浏览

java - 使用 Frustum Culling 实现 VBO 需要一些帮助

我目前正在为一个学校项目开发我的第一个 3D 游戏,游戏世界完全受到我的世界的启发(完全由立方体组成的世界)。我目前正在寻求提高尝试实现顶点缓冲区对象的性能,但我被卡住了,我已经实现了这个方法:Frustum culling, only drawexposed faces and distance culling 但我有以下疑问:

  1. 我目前在我的世界中有大约 2^24 个立方体,分成 1024 个 16*16*64 立方体的块,现在我正在做即时模式渲染,它适用于平截头体剔除,如果我每个块实现一个 VBO,做每次移动相机时我都必须更新那个 VBO(更新截锥体)?这对性能有影响吗?

  2. 我可以动态更改每个 VBO 的大小吗?还是我必须使每个都尽可能大(块完全充满对象)?

  3. 我是否必须将每个访问的块保留在内存中,或者我是否可以有效地删除该 VBO 并在需要时重新创建它。

0 投票
3 回答
790 浏览

java - 建议一个简单的 Java 数学库,用于与 OpenGL 一起使用的矩阵运算 (lwjgl)

我正在用 Java 编写一个 OpenGL 应用程序。我需要为相机和截锥体剔除(对于 AABB)做一些数学运算。你能为此推荐一个简单快速的 Java 数学库吗?

0 投票
1 回答
477 浏览

collision-detection - 如何知道粒子系统的哪些粒子在截锥体中

我正在使用 Three.js 和 webGLrender 显示一个带有座位(80k 粒子)的曲棍球场,我希望能够在每个座位上进行挑选。我试图创建一个隐藏对象来使用光线拦截,但是 80k 对象都变得太慢了。因此,我认为最好的方法是仅在缩放足够近且仅显示一组座位时才创建对象。问题是我不太清楚如何检测粒子系统的哪些粒子(顶点)落入截锥体内。

有什么想法或样本吗?

提前致谢!

0 投票
2 回答
2189 浏览

3d - 当边界框真的很大时截锥体剔除

看

当边界框的所有 8 个顶点都在截锥体之外时,它不会被渲染。但是,如果某事发生如上所示。该对象应该在显示列表中。任何的想法?

0 投票
1 回答
7369 浏览

android - Android 上 OpenGL ES 2.0 中的 frustumM / setLookAtM

我正在使用 OpenGL ES 2.0 教程作为基础在 Android 平台上使用 OpenGL。有问题的代码是:

特别是 frustumM 的“far”参数。只要该参数为 10,图像(三角形)就不会出现。任何其他值都可以。为什么?

我已经做了相当多的阅读 - 一切都无济于事。甚至我的朋友(又名 Google)也无法帮助我。

提前致谢。

0 投票
1 回答
702 浏览

opengl - 如何使 glOrtho 平行六面体旋转?

我已经渲染了我的世界。根据一些特定要求,它包括(有时)地板上的一些灯。我正在使用三角形基元渲染这些灯光。现在我有以下代码来缩放和限制渲染区域:

正如您在这张图片中看到的那样,远平面将光线穿过一条线(平行于 B 和 D 之间的圆上的线)

在此处输入图像描述

当我旋转我的场景时出现问题...... glOrtho“盒子”保持固定。您可以通过始终查看灯上的切割线来注意到它。它不再平行于B和D之间的线......

在此处输入图像描述

我的一位朋友向我推荐了这份文件。基本上它解释了如何提取平截头体平面......

但这意味着我应该手动检查每个原语是否在里面。

有没有使用 glOrtho 调用的方法?

我想获得这样的东西:

在此处输入图像描述