繁体   English   中英

Unity 3D:如何为一台摄像机打开定向光,为另一台摄像机关闭定向光?

[英]Unity 3D: How can I have directional light on for one camera and off for another?

我需要并排显示两个摄像机显示。 在同时渲染同一场景的同时,一个将打开太阳(定向光),另一个将关闭太阳。 我尝试在OnPreRender()方法内部使用sun.SetActive(),对于一个摄像机,我将其设置为sun.SetActive(false)和sun.SetActive(true)。 它不起作用,两个相机的阳光都无法照射。 如何获得所需的输出?

对于高于Unity 4.6的版本,您还需要在初始尝试中添加OnPreCull

我保留了旧版本的OnPrerender,您在日志中得到了建议,但忽略了它。

将此脚本添加到相机:

function OnPreCull () {
     if (sun != null)
         sun.enabled = false;
 }

 function OnPreRender() {
     if (sun != null)
         sun.enabled = false;
 }
 function OnPostRender() {
     if (sun != null)
         sun.enabled = true;
 }

做到这一点的另一种方法是将所有游戏对象复制并设置到不同的层-例如:“日光照射”和“阴影”。 复制对象需要嵌套在原始对象中,这可能会很杂乱,您需要一个脚本在运行时复制场景的对象。

层次结构如下所示:

在此处输入图片说明

您的定向光的消隐蒙版(在光的检查器上)将设置为除“阴影”层上的对象以外的所有对象。

然后是2个摄影机,剔除除其中之一以外的所有内容: 在此处输入图片说明

我不确定这在性能方面比joreldraw的解决方案好还是坏。 但是我想这将取决于模型的数量和复杂性。 在joreldraw的解决方案中,我们每帧多次启用/禁用光源。 使用此解决方案,我们可以拥有两次游戏对象。 如果场景中没有很多对象,则此解决方案可能更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM