在 Unity3D 中仅显示和渲染线框中的特定对象
Display and render only a specific object in wireframe in Unity3D
我想知道如何在线框中查看和渲染特定游戏对象(网格),而不是整个场景。我可以使用 GL.wireframe
将场景更改为线框,但问题是我只想在线框中查看和渲染某个对象(而不是整个场景)。有什么建议吗?
使用图层。将游戏对象的图层(Inspector window 右上角的下拉菜单)从 Default 更改为另一图层(您可以选择 创建一个新图层添加图层... 在下拉菜单中)。
然后,创建一个新相机(或者select主相机,取决于你想要实现什么),并将它的Culling Mask更改为你想要实现的图层正在游戏对象中使用。
为了绘制线框,您 post 相机中应该绘制该游戏对象的脚本:
// from http://docs.unity3d.com/ScriptReference/GL-wireframe.html
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void OnPreRender() {
GL.wireframe = true;
}
void OnPostRender() {
GL.wireframe = false;
}
}
您可能需要使用 2 个摄像头,具体取决于您想要实现的目标(一个摄像头用于线框对象,另一个摄像头用于绘制场景的其余部分),在这种情况下,您可以设置 将其中一台摄像机的标志 清除为不清除。确保两个相机的 Depth 值相同。
摄像机的 清除标志 指示该摄像机没有任何可绘制的像素(空 space)将会发生什么,并且当有多个相机绘制到同一个像素时会发生什么。
如果清除标志是不清除,它不会对空的space做任何事情, 留给其他相机填充物体或背景。对于它应该画东西的像素,它会让物体的深度决定要画什么,也就是说,靠近相机的物体将被绘制在其他物体的顶部。
Unity 资产商店 上有一个 asset,其中包含多个着色器 material,它们完全可以满足您的需求。您可以下载它,自己分析和编写着色器,或者简单地使用提供的资源。
然后您可以将 shader 附加到 material 并将其附加到 mesh 渲染器达到想要的效果。
我想知道如何在线框中查看和渲染特定游戏对象(网格),而不是整个场景。我可以使用 GL.wireframe
将场景更改为线框,但问题是我只想在线框中查看和渲染某个对象(而不是整个场景)。有什么建议吗?
使用图层。将游戏对象的图层(Inspector window 右上角的下拉菜单)从 Default 更改为另一图层(您可以选择 创建一个新图层添加图层... 在下拉菜单中)。
然后,创建一个新相机(或者select主相机,取决于你想要实现什么),并将它的Culling Mask更改为你想要实现的图层正在游戏对象中使用。
为了绘制线框,您 post 相机中应该绘制该游戏对象的脚本:
// from http://docs.unity3d.com/ScriptReference/GL-wireframe.html
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void OnPreRender() {
GL.wireframe = true;
}
void OnPostRender() {
GL.wireframe = false;
}
}
您可能需要使用 2 个摄像头,具体取决于您想要实现的目标(一个摄像头用于线框对象,另一个摄像头用于绘制场景的其余部分),在这种情况下,您可以设置 将其中一台摄像机的标志 清除为不清除。确保两个相机的 Depth 值相同。
摄像机的 清除标志 指示该摄像机没有任何可绘制的像素(空 space)将会发生什么,并且当有多个相机绘制到同一个像素时会发生什么。
如果清除标志是不清除,它不会对空的space做任何事情, 留给其他相机填充物体或背景。对于它应该画东西的像素,它会让物体的深度决定要画什么,也就是说,靠近相机的物体将被绘制在其他物体的顶部。
Unity 资产商店 上有一个 asset,其中包含多个着色器 material,它们完全可以满足您的需求。您可以下载它,自己分析和编写着色器,或者简单地使用提供的资源。
然后您可以将 shader 附加到 material 并将其附加到 mesh 渲染器达到想要的效果。