【问题标题】:Outline shader unity similar to the gizmo Editor轮廓着色器统一类似于 Gizmo 编辑器
【发布时间】:2019-05-07 13:12:44
【问题描述】:

我想知道我是否可以得到与编辑器中相同的大纲。 Like this

我尝试使用这个脚本https://github.com/michaelcurtiss/UnityOutlineFX

然后得到this as a result

【问题讨论】:

  • 为什么要减去?我尽量说清楚
  • 我认为资产商店里肯定有一个免费的叫做快速大纲
  • PS 请阅读How to Asktourminimal reproducible example 了解如何改进您的问题
  • @BugFinder 但效果更差,请参阅帖子中的图片
  • github 和我建议的不一样。

标签: unity3d shader outline


【解决方案1】:

我不确定您是如何在链接到的 Github 存储库中应用这些脚本的。看起来轮廓着色器仅应用于您发布的 3D 模型上的叶子材质,但我相信此轮廓效果旨在作为后期处理或替换着色器运行。我认为当您应该将脚本附加到相机时,您正在附加脚本或参考树叶。


更新:我下载了 repo 并更改了“UnityOutlineFX.cs”脚本以使用多种材料(问题是该脚本最初只概述了索引 0 中的材料)。修复在 RecreateCommandBuffer() 函数中,我添加了以下代码(注意通过不同材料的 for 循环):

// render selected objects into a mask buffer, with different colors for visible vs occluded ones 
float id = 0f;
foreach (var collection in _objectRenderers)
{
    id += 0.25f;
    _commandBuffer.SetGlobalFloat("_ObjectId", id);

    foreach (var render in collection)
    {
        for(var i=0; i<render.sharedMaterials.Length; i++) {
            _commandBuffer.DrawRenderer(render, _outlineMaterial, i, 1);
            _commandBuffer.DrawRenderer(render, _outlineMaterial, i, 0);
        }
    }
}

最初的问题(只勾勒出一种材质,这张图片中的蓝色和橙色物体是一个网格的一部分)

在具有三个子网格和两种不同材质的网格(橙色和蓝色网格)上工作的轮廓。

【讨论】:

  • 问题仅在于具有多种材料的模型。
  • 我在更改“UnityOutlineFX.cs”脚本以使用多种材料后更新了帖子。
  • 这是一个绝妙的答案,但很抱歉我不能投票
  • 别担心,很高兴我能帮上忙!
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多