博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VR里面做分屏后处理(Split screen post process UE4)
阅读量:6847 次
发布时间:2019-06-26

本文共 1466 字,大约阅读时间需要 4 分钟。

对于VR渲染来说后期处理是一个很重要的过程,但是由于VR渲染分左右眼,所以很多基于图片的后处理过程是不能简单适用,例如在VR中做一个扭曲,鲜血,或者雾气等等的特效等等,那么如何在VR中做分屏幕的后处理并且保证效果正确呢。

其实VR里后处理特效主要就是解决两个问题:

1.图像的畸变

这本质上就是因为VR头显渲染的是左右眼两个rendertarget,而不同的VR头显根据投影矩阵不同投影出来的FOV自然也是不一样,对于后处理使用的贴图来说,如果原来是按照屏幕的FOV制作的,比如1920*1080等,那么现在现在就需要按照HMD的FOV去对纹理贴图做拉伸畸变,所以我们需要一个这样的功能,在UE4里这个可以用RemapUVrange这个material function 做如下的实现:
图片描述

这个材质函数能够在水平方向保持对称的对纹理进行拉伸。

那么接下来我们就是根据各个头显的projection matrix算出我们的纹理要拉伸的比例,也就是材质里面的Horizontal/Vertical fraction
以Vive为例子。他的投影矩阵是:

[0.756892   0         0   0][0          0.681268  0   0][-0.056316  0.003274  0   1][0          0         10  0]

所以我们要拉伸的数值是0.25/0.756892和 0.25/0.681268

2.左右眼

VR里的后处理都是要对左右眼同时做处理,那么如何区分左右眼呢:UE4可以利用ScreenTextureUV
做区分:
图片描述

把左右眼拉伸好的图像连接到if节点的两个输出即可。

附录:各个头盔的FOV计算

/*UE4 Reported Values from Projection Matrices
DK2

[0.92991    0         0   0][0          0.75097   0   0][???        ???       0   1][0          0         10  0]

CV1

[1.190342   0         0   0][0          0.999788  0   0][-0.148592  0.110690  0   1][0          0         10  0]

Vive

[0.756892   0         0   0][0          0.681268  0   0][-0.056316  0.003274  0   1][0          0         10  0]

投影矩阵公式

[s    0       0     0 ][0    s       0     0 ][0    0  -f/(f-n)   -1][0    0  -fn/(f-n)  0 ]

其中

s=1/(tan((fov/2)*pi/180))

fov计算

fov = arctan(1/s)*360/pi

结果:

hmd

hs  hfovvs  vfov

dk2

0.92991        94.1598800.75097        106.189099

vive

0.756892    105.7564250.681268    111.469296

cv1

1.190342    80.0668800.9997888    90.012102

转载地址:http://ydlul.baihongyu.com/

你可能感兴趣的文章
epoch和Iteration
查看>>
[禅悟人生]法鼓山并非一朝建成
查看>>
一个程序员的2016年总结
查看>>
第八回 新年晚会艺压群芳 文理分科三人聚首[林大帅作品选]
查看>>
[翻译]观察变换View Transform (Direct3D 9)
查看>>
Elasticsearch上手 - 遇到的问题
查看>>
阅读英文
查看>>
PFSI 开源啦,欢迎您来贡献您的代码
查看>>
Oracle 降低高水位线的方法
查看>>
通过shell脚本得到数据库的基本信息(一)
查看>>
成都往事之从IBM公司辞职
查看>>
Greenplum 清理垃圾、修改存储模式(行列变换) 平滑方法 - 交换数据、交互分区...
查看>>
Oracle 12c Data Guard搭建(一)
查看>>
15. 集成管理
查看>>
ArchLinux上安装SVN及检出项目
查看>>
后台(29)——动态代理
查看>>
【Cocos2d-x】开发基础-Cocos2d-x核心概念
查看>>
MyBatis(2):config.xml文件
查看>>
Sonar相关汇总
查看>>
重构——41引入断言(Introduce Assertion)
查看>>