Unity3D:左右眼相机,分别渲染不同内容

在一些特定需求下,可能需要实现在VR中左右眼渲染不同的东西以实现相应的效果。比如,左右眼渲染左右眼全景图,模拟双眼立体效果,那么就需要左右眼去渲染不同的全景图。那么,要实现左右眼渲染不同内容,有两种不同的实现方法。

第一种,就是添加两个相机,这种方法只有在默认渲染管线的时候才能使用,并且效率是比较低的,因为多了两个相机,不仅增加了DrawCall,还可能导致帧率下降,机器发热等情况出现。所以不太建议用这种方法,不过,如果资源不是太大,太多,在不影响整体性能的情况下,这种方法,也是最简单,最容易实现的。具体实现方法是:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

  1. Main Camera 对象下创建两个子相机,并根据实际情况命名子相机(例如: LeftCameraRightCamera)。
  2. 点击左右眼相机。
    右侧 Inspector 面板中显示 Camera 设置框。
  3. 将左眼相机的 Target Eye 设置为 Left
  4. 点击右眼相机。
    右侧 Inspector 面板中显示 Camera 设置框。
  5. 将右眼相机的 Target Eye 设置为 Right
  6. 然后设置左右眼渲染层级,只渲染对应层级的内容。主相机不渲染这两个相机渲染的层级。

第二种,这种方法是基于URP渲染管线的,在URP渲染管线中的Shader有一个EyeIndex,属性,可以根据这个属性去渲染不同内容,在URP渲染管线中,我做了两个Shader,一个是Cubemap的shader,一个是Texture2D的shader。可以实现全景图的效果。(我用的是shadergraph连线实现的,不太会写shader,只会用这种方式实现)文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

1,VREyeStereoRenderCubemap文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

Unity3D:左右眼相机,分别渲染不同内容-图片1文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

2,VREyeStereoRenderTexture2D文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

Unity3D:左右眼相机,分别渲染不同内容-图片2文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

除了用到这两个shader外,还需要一些设置,因为默认不支持EyeIndex输出。需要打开ProjectSetting->XR Plug-in Management下面对应的XR平台设置,将StereoRenderingMode改成Multiview就可以了。也就是打开立体渲染。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825 文章源自大腿Plus-https://www.zhaoshijun.com/archives/1825

我的微信
微信扫一扫
weinxin
shijun_z
我的QQ
QQ扫一扫
weinxin
846207670
 最后更新:2023-10-29
大腿Plus
  • 本文由 大腿Plus 发表于 2023年6月8日 14:49:44
  • 转载请务必保留本文链接:https://www.zhaoshijun.com/archives/1825

发表评论