unity vr 粒子系统_【unity的VR开发】GoogleVR SDK如何添加Image Effects特效

本文介绍了在Unity的GoogleVR SDK 2.0中,为VR项目添加Bloom特效遇到的问题及解决方案。在默认设置下,直接在主摄像机添加特效无效。尝试修改StereoController的directRender属性以及手动添加脚本均未成功。最终通过运行时更新Stereo Cameras生成左右眼摄像机,并添加特效脚本,但要注意脚本顺序以避免画面扭曲。作者强调在使用源码时阅读备注的重要性。
摘要由CSDN通过智能技术生成

环境:Unity 5.3.4f1 (64-bit) GoogleVR SDK(version 2.0) 小米5 Android6.0

前景提要

今天想要在Unity的cardboard VR项目中添加Bloom特效。直接将这个特效像其他项目一样挂在了摄像机下,在未开启VR模式的情况下在PC上调试,并对Bloom属性数值进行了调整。发布到移动平台后发现效果消失了,仔细检查后才想起,cardboard VR 实现是在场景里创建两个摄像机分别对应左眼右眼,挂在主摄像机下的Bloom没有起作用。

通过谷歌Google和百度Baidu尝试搜索解决方案,得知可以通过将StereoController下的directRender设为false解决问题,但是这个脚本只会在运行时自动挂载到摄像机下,再次前往脚本StereoController.cs直接更改。

public bool directRender = false;

但是这个方法并没有解决问题。

于是开始自己思考解决方案。

第一个想法是通过脚本Find新添加的两个摄像机,为他们添加脚本。

然后又想到直接在GoogleVR的SDK中修改GvrViewer.cs,直接挂载脚本。

void AddPrePostRenderStages() {

var preRender = UnityEngine.Object.FindObjectOfType();

if (preRender == null) {

var go = new GameObject("PreRender", typeof(GvrPreRender));

go.SendMessage("Reset");

go.transform.parent = transform;

}

var postRender = UnityEngine.Object.FindObjectOfType();

if (postRender == null) {

var go = new GameObject("PostRender", typeof(GvrPostRender));

go.SendMessage("Reset");

go.transform.parent = transform;

//go.AddComponent();

/*//modify camerago.GetComponent().hdr = true;//add script Bloomgo.AddComponent();Bloom bloom = go.GetComponent();bloom.tweakMode = Bloom.TweakMode.Complex;bloom.bloomIntensity = 1f;bloom.bloomThreshold = 0.16f;bloom.bloomThresholdColor = new Color(244f/255f, 203f/255f, 143f/255f);bloom.bloomBlurIterations = 3;bloom.sepBlurSpread = 5f;//add Tonemappinggo.AddComponent();Tonemapping tonemapping = go.GetComponent();tonemapping.type = Tonemapping.TonemapperType.AdaptiveReinhardAutoWhite;tonemapping.middleGrey = 0.1f;tonemapping.adaptionSpeed = 100f;tonemapping.adaptiveTextureSize = Tonemapping.AdaptiveTexSize.Square512;//add ScreenSpaceAmbientOcclusiongo.AddComponent();ScreenSpaceAmbientObscurance screenSpaceAmbientObscurance = go.GetComponent();screenSpaceAmbientObscurance.intensity = 0.5f;screenSpaceAmbientObscurance.radius = 0.2f;screenSpaceAmbientObscurance.blurIterations = 1;screenSpaceAmbientObscurance.blurFilterDistance = 1.25f;screenSpaceAmbientObscurance.downsample = 0;//add Antialiasinggo.AddComponent();Antialiasing antialiasing = go.GetComponent();DepthOfFieldDeprecated//go.AddComponent();//DepthOfFieldDeprecated depthOfFieldDeprecated = go.GetComponent();*/

}

}

用这个方法依然遇到了问题。出现的问题我就不赘述了。

多次遇阻决定仔细查看备注。

终于找到了简洁的解决方案。

解决方案StereoController.cs

/// The Inspector panel for this script includes a button _Update Stereo Cameras_.

/// This performs the same action as described above for startup, but in the Editor.

/// Use this to generate the rig if you intend to customize it. This action is also

/// available via _Component -> GVR -> Update Stereo Cameras_ in the Editor’s

/// main menu, and in the context menu for the `Camera` component.

只要为摄像机添加UpdateStereoCameras后,分别代表左右眼的两个子摄像机就会出现在场景中。现在就可以轻松方便地为他们添加特效或者脚本了。

需要注意的一个问题是:如果新添加的脚本顺序在StereoRenderEffect脚本的顺序下的话,摄像头画面会扭曲。

作为一个Unity入门学习者,从中学到了很多教训。

在使用源码时,仔细阅读备注是很重要的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值