尽管透明 material,但停止通过对象显示?

Stop display through object despite transparent material?

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

基本上,这就是我所在的位置:

由于地球的 material 有外法线,它自己的 material 不会显示在地球的另一边。但是,由于 material 的透明度,我看到了地球另一边存在的标记。

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

如有任何帮助或建议,我们将不胜感激。

这样做有点棘手:

唯一的办法是:

关闭每个绿色摩天大楼,当它在"back"。

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

既然如此,想想就是这么简单……

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

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

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

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

考虑到你可能想让 on/off 点在 half-way 平面的前面或后面一点,试试看。

请注意,另一种方法是。您有点需要使用剪切着色器;对摩天大楼使用完全不同的图层;并为基础超出 horizon 的任何摩天大楼使用另一层;通过这种方式,您可以让它显示 "tops" "just behind" 和 horizon 但隐藏基地的任何摩天大楼。虽然它看起来确实太复杂了。我认为最好的结果就是关闭后面的,如上所示。

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