Страница 1 из 1

Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 16 янв 2020, 18:22
Kabanelloo
Доброго времени суток! Интересная вещь, как обнаружить в обычном не геометрическом Unity ShaderGraph границы UV? Теоретически мы можем получить координаты UV, если их применить в позиции вершин, то мы получим Unwrap и геометрия переместит свои вершины на позиции UV https://prnt.sc/qom7z5, а как получить границы этих самых островков из UV? )) В упор не могу понять. Возможно и не пойму, долго ресерчу интернет, ничего особо полезного не нашел. Я как бы находил как можно визуализировать каркас геометрии через производные и Барицентрические координаты.. Но это не то, нужно только края UV http://prntscr.com/qomvdp.

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 16 янв 2020, 19:06
waruiyume
Думаю никак. Отрендерите объект в текстуру, а потом, на этой текстуре найдите границы, перебрав соседей, рекомендую использовать https://docs.unity3d.com/Manual/class-C ... xture.html

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 16 янв 2020, 19:40
Kabanelloo
waruiyume писал(а):Думаю никак.

Ну понятно, если было бы что-то подобное то уже наверное реализовано было бы)

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 19 янв 2020, 01:46
Kabanelloo
В процессе исследования, я нашел костыльный способ отобразить грани UV без текстур и рендер таргетов. Смысл заключается в том, что uv0 имеет одинаковые размеры островков, положение не важно, делается копия uv1, каждый островок уменьшается на допустим 50% относительно своего центра. В шейдере uv0 и uv1 находим путем смешивания bleeding different центры каждого uv островков после применяем step и указываем ширину полосы для прямоугольных uv островков. Чтобы сделать круг граней, нужно применить poplar uv до step, а чтобы разделить какие будут круглыми, а какие прямоугольные, можно с использованием vertex color и lerp или логику.

Этот подход дает 2 вида граней : прямогонные, круглые.

Минусы: подготовка каждого ассета, лишний канал uv, лишняя маска vertex color, размер граней разный на разном масштабе объектов, прямоугольные формы могут иметь разные по толщине грани из за того, что пропорционально уменьшить uv1 прямоугольника сложно.

Чисто исследование, конечно я пытался сделать не ручное изменения uv1 прям в шейдере но, это не так просто как сказать) так как данных очень мало и опирается приходится на пару переменных. Была бы возможность создавать разницу в шейдере, можно было бы и контролировать размеры граней при разном масштабе полигонов, а также их не пропорциональности как прямоугольные или овальные.

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 19 янв 2020, 01:50
Kabanelloo
waruiyume писал(а):Думаю никак. Отрендерите объект в текстуру, а потом, на этой текстуре найдите границы, перебрав соседей, рекомендую использовать https://docs.unity3d.com/Manual/class-C ... xture.html


Как думаешь, стоит ковырять дальше или поддаться искушению Depth + Normal + Sobel применяя Blit поверх элементов?)

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 27 янв 2020, 08:04
jetyb
Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 27 янв 2020, 15:50
lafin
jetyb писал(а):Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?


Возможно, хочется получить швы uv-развёртки, но не уверен.

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 16 фев 2020, 23:04
Kabanelloo
lafin писал(а):
jetyb писал(а):Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?


Возможно, хочется получить швы uv-развёртки, но не уверен.


Именно) Просто кому-то нужно больше разъяснять)))

Re: Как обнаружить границы UV отдельных островков?

СообщениеДобавлено: 16 фев 2020, 23:07
Kabanelloo
lafin писал(а):
jetyb писал(а):Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?


Возможно, хочется получить швы uv-развёртки, но не уверен.


По названию темы очень ясно доносится то, что я пытаюсь воспроизвести в этой теме. UV островки и у них есть границы, тбишь швы. :ymapplause: