我在 Godot 中有一个项目可以在敌人上方渲染广告牌四边形。四边形(网格实例)是敌人节点的子节点。我只想将四边形渲染到视口(viewport)以进行后处理,但四边形需要在屏幕上具有与敌人相同的位置(如目标十字线)。 如何将着色器效果仅应用于广告牌而不应用于场景的其余部分?
最佳答案
Camera
有一个 cull_mask
属性,可以让您过滤它将看到的图层。而 VisualInstance
(例如 MeshInstance
)有一个 layers
属性,可以让你指定它们属于哪个层(默认情况下它们都属于第一层)。
您可以在项目设置 -> 常规 -> 图层名称 -> 3d 渲染中配置图层名称。 不要将它们与 3d 物理混淆。
因此,您可以为您想要的那些四边形 MeshInstance
提供不同的层,然后使用新的 Camera
设置一个新的 Viewport
作为子层(确保它是 current
),带有一个 cull_mask
,它只会渲染该层。这样只有那些 MeshInstance
才会在那个 Viewport
上呈现。
您可能希望保持 Camera
的属性与主 Viewport
上的 Camera
同步(不仅是它的global_transform
,还有 fov
或您可能更改的任何其他属性)。您可以通过将其属性复制到附加到新 Viewport
内的 Camera
的脚本的 _process
上来存档。/p>
关于godot - Godot 中的 HUD 后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72416570/