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

Шейдеры и все-все-все.

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

Сообщение Kabanelloo 16 янв 2020, 18:22

Доброго времени суток! Интересная вещь, как обнаружить в обычном не геометрическом Unity ShaderGraph границы UV? Теоретически мы можем получить координаты UV, если их применить в позиции вершин, то мы получим Unwrap и геометрия переместит свои вершины на позиции UV https://prnt.sc/qom7z5, а как получить границы этих самых островков из UV? )) В упор не могу понять. Возможно и не пойму, долго ресерчу интернет, ничего особо полезного не нашел. Я как бы находил как можно визуализировать каркас геометрии через производные и Барицентрические координаты.. Но это не то, нужно только края UV http://prntscr.com/qomvdp.
Kabanelloo
UNITрон
 
Сообщения: 162
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

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

Сообщение waruiyume 16 янв 2020, 19:06

Думаю никак. Отрендерите объект в текстуру, а потом, на этой текстуре найдите границы, перебрав соседей, рекомендую использовать https://docs.unity3d.com/Manual/class-C ... xture.html
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 5646
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение Kabanelloo 16 янв 2020, 19:40

waruiyume писал(а):Думаю никак.

Ну понятно, если было бы что-то подобное то уже наверное реализовано было бы)
Kabanelloo
UNITрон
 
Сообщения: 162
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

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

Сообщение Kabanelloo 19 янв 2020, 01:46

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

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

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

Чисто исследование, конечно я пытался сделать не ручное изменения uv1 прям в шейдере но, это не так просто как сказать) так как данных очень мало и опирается приходится на пару переменных. Была бы возможность создавать разницу в шейдере, можно было бы и контролировать размеры граней при разном масштабе полигонов, а также их не пропорциональности как прямоугольные или овальные.
Последний раз редактировалось Kabanelloo 19 янв 2020, 03:04, всего редактировалось 1 раз.
Kabanelloo
UNITрон
 
Сообщения: 162
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

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

Сообщение Kabanelloo 19 янв 2020, 01:50

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


Как думаешь, стоит ковырять дальше или поддаться искушению Depth + Normal + Sobel применяя Blit поверх элементов?)
Kabanelloo
UNITрон
 
Сообщения: 162
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

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

Сообщение jetyb 27 янв 2020, 08:04

Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?
jetyb
Адепт
 
Сообщения: 1431
Зарегистрирован: 31 окт 2011, 17:21

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

Сообщение lafin 27 янв 2020, 15:50

jetyb писал(а):Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?


Возможно, хочется получить швы uv-развёртки, но не уверен.
lafin
UNец
 
Сообщения: 9
Зарегистрирован: 30 июл 2018, 15:38

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

Сообщение Kabanelloo 16 фев 2020, 23:04

lafin писал(а):
jetyb писал(а):Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?


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


Именно) Просто кому-то нужно больше разъяснять)))
Kabanelloo
UNITрон
 
Сообщения: 162
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea

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

Сообщение Kabanelloo 16 фев 2020, 23:07

lafin писал(а):
jetyb писал(а):Что такое "границы UV"?
- границы областей на текстуре?
- места где текстурные координаты u,v около 0 или 1?


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


По названию темы очень ясно доносится то, что я пытаюсь воспроизвести в этой теме. UV островки и у них есть границы, тбишь швы. :ymapplause:
Kabanelloo
UNITрон
 
Сообщения: 162
Зарегистрирован: 03 фев 2012, 21:55
Откуда: Kaliningrad/Crimea


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3