Контур единства шейдеров похож на редактор гизмо - PullRequest
0 голосов
/ 07 мая 2019

Интересно, смогу ли я получить ту же схему, что и в редакторе. Как это

Я пытался использовать этот скрипт https://github.com/michaelcurtiss/UnityOutlineFX

И получим это в результате

1 Ответ

0 голосов
/ 07 мая 2019

Я не уверен, как вы применили сценарии в репозитории Github, на который вы ссылались.Похоже, что контурный шейдер применяется только к листовому материалу 3D-модели, которую вы разместили, однако я считаю, что этот контурный эффект предназначен для шейдера после обработки или замены.Я думаю, что вы прикрепляете скрипт или ссылку на листья дерева, когда вы должны прикрепить его к камере.


Обновление : я загрузил репозиторий и изменил сценарий «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);
        }
    }
}

The original problem (only one material was being outlined, with the blue and orange objects in this picture being part of one mesh)

Исходная проблема (только один материал был обрисован в общих чертах, с синими и оранжевыми объектами на этом рисунке, являющимися частью одной сетки)

enter image description here Контур, работающий над сеткой (оранжево-синяя сетка) с тремя подсетями и двумя разными материалами.

...