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

c# - 如何仅绘制可见数据 XNA 我的方法不起作用

我有一个 10*10 的立方体平面。我只想绘制可见的立方体,所以我使用了 Bounding frustum。问题是当网格中的第一个立方体(在位置 0,0)离开截锥体时,所有立方体都消失了。

这是我的代码Cube.cs

Draw()方法Main.cs

如果你能给我一个图集纹理教程/示例的链接,我也想知道,谢谢!

0 投票
1 回答
966 浏览

opengl - 使用 VBO 进行截锥剔除

我正计划编写一个将使用 VBO 进行渲染的 3D 游戏。例如,假设地形是一组瓦片,它们的顶点都在同一个 VBO 中。玩家应该能够滚动瓷砖,并且在任何时候都只能看到其中的一部分。

我想对这些瓷砖执行截锥剔除。我已经找到了一些关于截锥体剔除的数学部分的资料,但我不确定我将如何使用 VBO 来实现这一点——人们是在顶点着色器中以某种方式做到这一点,还是他们只是调用渲染函数来绘制VBO 的一个子集。

0 投票
0 回答
589 浏览

3d - Libgdx Camera.Frustum.boundsInFrustum 对于大型模型是否准确?

这张图片主要解释了我的问题:

问题

frustum.boundsInFrustum 方法将地板检测到它的内部,但是无论是盒子还是其他具有砖块纹理的盒子都没有被检测到,并且平截头体 3d 表示不接触也不包含它们中的任何一个。我已经在我的地图中尝试过其他位置和对象,而在远截头体平面后面的大型模型经常会干扰并触发这个问题。

FrustumCulling 测试工作正常,即使我将方法 sphereInFrustum 替换为 boundsInFrustum 并且如果我缩短了测试中的截锥体长度(以便在截锥体远平面后面获得一些对象)。我也会尝试通过修改对象的大小来复制那里的问题。 (已经试过了,测试完美无缺,然后在我的代码中......)

注意:FrustumCullingTest 默认使用项目符号来测试一个对象是否在另一个对象内部,因此它不适用于这种情况。

编辑:图像场景中的 boundsInFrustum 告诉我,地板的至少一个角确实位于任何平截头体平面的内表面,因此该方法始终返回 true。我认为这里发生的情况是,如果平截头体小于物体并且如果它指向它的中间,那么每个平面的内表面都有一个点。

0 投票
1 回答
1098 浏览

camera - 处理相机平截头体()和透视()旋转

在处理 2+ 时,如何制作一个可以移动并围绕自己的轴旋转的相机?

我有一个相机,我可以在世界空间中移动并进行某种旋转:

但是问题在于旋转在场景中居中,这意味着当远离场景的中心坐标移动时,我会得到非常奇怪的旋转。当我在旋转之前翻译时为什么会发生这种情况?

0 投票
1 回答
34 浏览

jogl - 坐在球体上查看对象

在我的 JOGL 程序中,我在 (0,0,0) 处有一个对象。我正在使用球坐标来修改角度 theta(倾角)和 phi(旋转)以在原点查看我的对象,但我无法正确查看它。有时物体在某些角度变得不可见,我无法从各个角度查看。

这是我的代码:

我究竟做错了什么?

0 投票
1 回答
790 浏览

java - 平面 OpenGL 附近的平截头体使对象看起来更近,而不仅仅是剪裁

在 openGles 中,减少平面附近的平截头体(如您在此处看到的)使对象看起来更近。我来自 3d,例如在 Vray 中,更改近剪裁平面不会修改距离,只会剪裁一些几何图形。

为什么改变平截头体的近平面会使物体看起来更近?

0 投票
2 回答
9915 浏览

three.js - THREE.js 检查对象是否在截锥体中

我一直在修改three.js,并且我有一个我想用作GUI 的画布。为此,我必须检查一个物体是否在相机截锥体中。

我当前的代码:

frustum.containsPoint()不断返回错误。我在这里做错了什么?

0 投票
1 回答
119 浏览

c++ - 设置 3D 环境参考

我正在设置一个 Frustum 相机来创建一个虚拟现实环境,当你看着屏幕时,它看起来就像一个窗口。我检查了 SoCamera、SoFrustumCamera、SoPerspectiveCamera 和 SoOrtographicCamera 的所有文档,但找不到设置场景以使其边界与屏幕边界匹配的方法。

我想做这样的事情......

https://www.youtube.com/watch?v=Jd3-eiid-Uw

我的代码的问题是整个场景移动,而不仅仅是场景的“后部”。它看起来是 3D 的,但看起来不像真正的窗户那样身临其境。

有没有人有提示或可以帮助我?我使用 OpenInventor 用 C++ 编写代码。谢谢!!

0 投票
1 回答
938 浏览

math - 使用对角 fov 估计网络摄像头的可见边界

我正在使用 Logitech C920 网络摄像头(此处的规格),在将其安装到用户位置之前,我需要估计它的可见范围。

我看到它的对角 FOV 为 78°。所以,按照这里描述的数学,我们有:

公式

其中H是垂直Fov,W是水平Fov,D是对角线Fov,纵横比是r。考虑到 16/9 的纵横比,这给了我大约。W = 67.9829 和 H = 38.2403

所以我使用 W 和 H 创建了一个截锥体。

问题是:这个截头体的一部分不是 16:9。是因为数字近似还是我做错了什么?

相机会裁剪更大的图像吗?

我怎样才能有效地计算出可见的平截头体?

非常感谢!

0 投票
1 回答
286 浏览

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

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

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

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

我的职能是:

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

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

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

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

矩阵由 glm::mat4 管理;

编辑:

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

如果相机指向下方:

在此处输入图像描述

如果相机指向一点:

在此处输入图像描述