VR和视锥剔除


13

在渲染VR(立体视图)环境时,你们是否建议仅进行2个视锥检查,以确定在视锥剔除过程中要绘制的内容,或者是否有其他一些检查可以将视锥组合在一起?

Answers:


13

如Oculus的Cass Everitt创建的这张图所示,创建一个包含两个单独的眼睛视锥细胞的视锥面非常容易。您只需要将平截头体的顶点放在眼睛之间,然后放在眼睛后面一点。您还可以增加近平面距离,以匹配眼睛视锥的原始近平面。

在此处输入图片说明

这样的平截头体所包含的空间并不是原来的两个平截体的合体。两只眼睛之间水平方向上有一小部分。同样,该图未显示垂直尺寸,但是将视锥的顶点向后拉使其在原始视锥的上方和下方包含一定的空间。但是,出于实际淘汰的目的,这可能并不重要。无论如何,平截锥体的选择通常都是保守的,多余的空间只有几厘米的厚度。

也可以简单地剔除原始的视锥顶部和底部平面(在眼睛之间共享)以及外侧平面。从技术上讲,这些平面并不构成一个平截头体,但是如果使用一次一次针对一个平面进行测试的“常规”剔除算法,该算法将可以在您希望提供的任何一组平面上愉快地工作。

在眼睛之间共享平截头剔除,LOD选择等,而不是每帧重做两次,是一种优化立体渲染的CPU成本的好方法。如果要使用一次绘制双眼的渲染方法(例如实例立体渲染),这也是前提条件。


2
谢谢Nathan,这正是我所追求的,请问您是从哪里获得此图的,在oculus的任何公共文档中都有吗?
加里·瓦利斯

2
@GarryWallis Cass 在几个月前发布了推文
内森·里德

5

如果需要的话,我已经概括了Everitt的结果。

广义普通平截头体

另外,从眼睛透视矩阵中提取left0 / right0的方法是:

left0   = n0 * (Mle13 - 1) / Mle11;
right1  = n1 * (Mre13 + 1) / Mre11;

如果您有行专业。转为专栏专业。cf 这个答案


4

请注意,仅当眼睛的组合视场小于180度时,才使用单个视锥进行剔除。现在有VR头戴式耳机,具有200度左右的较大视野,即Pimax 5k +StarVR。对于180度以上的视场,构造传统的视锥或单投影矩阵是不可能的。

这些头戴式受话器使用倾斜屏幕,因此投影平面和视图空间中的前向矢量不平行。来自其他答案的方程式在此假定它们是平行的,并且当该假设错误时将产生不正确的结果。

单个组合视图视锥仍是有用的,但是您的代码应准备好处理无法构造的情况,以确保其将来可用。或者,考虑按每个眼睛的视图进行剔除,或切换到可以表示大于180度FOV的基于角度的剔除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.