Unity3D 将游戏对象渲染为线框

Unity3D render GameObject as Wireframe

我是Unity3D新手,对游戏对象的渲染有疑问。 我需要来自 .obj 文件的模型,所以我只导入它并能够将它作为预制件放置在游戏视图中。我还添加了一个用于移动和转动该对象的脚本。

我想做的是将对象显示为线框,以便用户识别对象结构但可以看穿它。 我发现这个示例脚本可以装在相机上

using UnityEngine;

public class Example : MonoBehaviour
{
    // Attach this script to a camera, this will make it render in wireframe
    void OnPreRender()
    {
        GL.wireframe = true;
    }

    void OnPostRender()
    {
        GL.wireframe = false;
    }
}

我从这里得到了这个例子:https://docs.unity3d.com/ScriptReference/GL-wireframe.html

我的问题可以在图片中看到。 它以某种方式将对象渲染两次。第一个线框看起来和我想要的完全一样,但是第二个很奇怪,我不知道为什么它在那里以及如何摆脱它。如果这有助于调试,不需要的对象也会与线框平行移动。

将对象显示为线框的最佳方式是什么? 提前致谢!

使用创建线框着色器的 OnPostRender is not the way to go, as you change things after the camera already rendered them. If the object should always be shown as wireframe you should apply a wireframe shader to the objects Material. AFAIK untiy does not have a build in wireframe shader, but there are multiple sites that have tutorials or repos,如果 google 它,您可以轻松找到它们。

编辑:这是来自 Shaders Laboratory

的示例

编辑 2:我假设您使用两个相机渲染场景,并且 none 线框对象(与线框对象是同一对象)是使用第二个相机渲染的对象使用线框。如果你真的想这样使用它,那么你应该给对象添加一个Layer并告诉另一个相机(在Culling Mask下)不要用这个Layer渲染对象。