unity-game-engine - 尽管 Material 是透明的,但仍停止通过对象显示?

标签 unity-game-engine camera shader renderer

这很难描述,但我觉得应该是可以做到的。

本质上,这就是我所处的位置:

enter image description here

由于地球的物质具有外部法线,因此其自身的物质不会显示在地球的另一侧。然而,由于 Material 的透明度,我看到了地球另一端存在的标记。

如何阻止内容通过 Material 显示?背景是天空盒,是我唯一想通过透明度显示的东西。

感谢任何帮助或建议。

最佳答案

这样做有点棘手:

唯一的方法是:

关闭每座绿色摩天大楼,当它位于“后面”时。

假设您的世界只是以 000 为中心。

那么,如果你仔细想想,那就这么简单......

如果z>0f ,那么您希望绿色摩天大楼不可见。如果是z<0f您希望它正常显示。

由于这是 Unity,因此您必须以类似于代理的方式工作。所以实际上就是这么简单。制作脚本(伪代码)

Class HideMeIfAwayFromCamera
{
Update()
 {
 if ( z > 0f ) renderer.enabled = true;
 else renderer.enabled = false;
 }
}

这可能是最简单也是最好的解决方案。无论如何,我都会先尝试一下。让我们听听它如何为您服务。

考虑到您可能希望将开/关点设置在中途平面之前或之后一点,请尝试一下。

请注意,另一种方法是。您需要使用剪切着色器;为摩天大楼使用完全不同的图层;并为任何基础超出地平线的摩天大楼使用另一个图层;通过这种方式,您可以让它显示任何位于地平线“后面”但隐藏底部的摩天大楼的“顶部”。但它看起来确实太复杂了。我认为最好的结果就是关闭后面的,如上所示。

(还要注意,这不是“物理的”。如果地球是透明的:你应该能够看到后面的摩天大楼。所以你必须尝试一些东西才能看到什么感觉良好。)

关于unity-game-engine - 尽管 Material 是透明的,但仍停止通过对象显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056137/

相关文章:

android - 如何链接 Ant 中的外部 jar?

ios - 集成自定义相机 View AVCaptureDevice

android - 如何在 android 中将图像的 EXIF 方向应用为 url

opengl - 附加了分割着色器时,glDrawArrays失败

android - ARCore应用程序在构建后无法运行

java - Unity Android 获取 Google Play 广告 ID

unity-game-engine - ARCore如何在Unity中设置点云

java - 使用平面 4 :2:0 YUV full scale pixel format 将图像从字节数组转换为位图

opengl - 如何使用鼠标改变OpenGL相机

wpf - 如何访问像素着色器中先前着色的纹理?