forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Эффекты/Шейдеры (http://forum.boolean.name/forumdisplay.php?f=170)
-   -   Багофича с выдавливанием по нормалям (http://forum.boolean.name/showthread.php?t=19147)

PassCall 07.05.2014 20:51

Багофича с выдавливанием по нормалям
 
Вложений: 1
Привет, булчан!

Суть проблемы такова - если выдавливать некие вершины, которые не попадают под сглаживание (например, сглаживание 30 градусов, а у нас куб), то вершины выдавливаются независимо друг от друга. Вот такВложение 20510

Mr_F_ 07.05.2014 21:08

Ответ: Багофича с выдавливанием по нормалям
 
ну типа да. там где разные нормали, вертексы в одной точке разные, хоть и с одинаковой позицией.
а в чём вопрос?

PassCall 07.05.2014 21:58

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от Mr_F_ (Сообщение 280178)
а в чём вопрос?

Можно ли это обойти? Или придется хорошенько поизвращаться?

Mr_F_ 07.05.2014 22:02

Ответ: Багофича с выдавливанием по нормалям
 
смотря чего ты хочешь добиться.

PassCall 07.05.2014 22:08

Ответ: Багофича с выдавливанием по нормалям
 
Что бы вершины всегда вели себя так, будто они подвержены сглаживанию. А то не получается шейдер как на картинке использовать на прямоугольниках и т.д.

Mr_F_ 07.05.2014 23:07

Ответ: Багофича с выдавливанием по нормалям
 
Что ты хочешь получить выдавливанием по нормали?
Конкретно на твоём примере и скейл сойдёт.

Можно хранить в вертексах дополнительные сглаженные нормали для выдавливания (в юнити тебе проще будет альтернативную модель сглаженную импортнуть).

PassCall 08.05.2014 01:57

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от Mr_F_ (Сообщение 280187)
Конкретно на твоём примере и скейл сойдёт.

В том то и проблема, что модели будут сложной формы.

Цитата:

Сообщение от Mr_F_ (Сообщение 280187)
Можно хранить в вертексах дополнительные сглаженные нормали для выдавливания (в юнити тебе проще будет альтернативную модель сглаженную импортнуть).

Я думал в самой модели тупо сделать копию меша, вывернуть и выдавить (с помощью макса, например). Эдакая двухслойная модель. Но это уже извращение.

moka 08.05.2014 02:22

Ответ: Багофича с выдавливанием по нормалям
 
Как сказал Mr_F_ либо храни доп. информацию в каждой вершине с направлением для сглаживания (можно легко автогенирировать при загрузке модели, пробегаясь по всем вершинам и смешивая нормали для тех, что имеют общую позицию, и добовлять в вершинные буфера).

Либо если тебе нужна обводка, это лучше достигается пост обработкой, следственно посмотри в этом направлении тоже.

PassCall 08.05.2014 02:31

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от moka (Сообщение 280210)
Как сказал Mr_F_ либо храни доп. информацию в каждой вершине с направлением для сглаживания (можно легко автогенирировать при загрузке модели, пробегаясь по всем вершинам и смешивая нормали для тех, что имеют общую позицию, и добовлять в вершинные буфера).

Либо если тебе нужна обводка, это лучше достигается пост обработкой, следственно посмотри в этом направлении тоже.

Постобработка ненавязчиво требует 1000$

pax 08.05.2014 07:18

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от moka (Сообщение 280210)
(можно легко автогенирировать при загрузке модели, пробегаясь по всем вершинам и смешивая нормали для тех, что имеют общую позицию, и добовлять в вершинные буфера).

К сожалению только отдельный меш, либо закодировать в массив colors например. Больше негде дополнительную инфу в меше хранить.

Mr_F_ 08.05.2014 12:16

Ответ: Багофича с выдавливанием по нормалям
 
tangents, если бамп не используется
colors вроде как 8 бит на канал - маловато

pax 08.05.2014 13:25

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от Mr_F_ (Сообщение 280225)
tangents, если бамп не используется
colors вроде как 8 бит на канал - маловато

Угу, если не используется.

moka 09.05.2014 00:27

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от pax (Сообщение 280219)
К сожалению только отдельный меш, либо закодировать в массив colors например. Больше негде дополнительную инфу в меше хранить.

Это ограничения Unity? То есть модификация индексного буфера не возможна?

Цитата:

Сообщение от Mr_F_ (Сообщение 280225)
tangents, если бамп не используется
colors вроде как 8 бит на канал - маловато

Это опять в Unity такое ограничение на данные цвета?

pax 09.05.2014 01:46

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

Сообщение от moka (Сообщение 280246)
Это ограничения Unity? То есть модификация индексного буфера не возможна?

Да, вероятно это сделано для совместимости со всеми поддерживаемыми платформами. Их уже вероятно больше десяти.

Цитата:

Сообщение от moka (Сообщение 280246)
Это опять в Unity такое ограничение на данные цвета?

Вообще массив цветов это 4*float, как оно в шейдер передается я не знаю (вероятнее всего флоатами).

Mr_F_ 09.05.2014 01:49

Ответ: Багофича с выдавливанием по нормалям
 
Цитата:

То есть модификация индексного буфера не возможна?
возможно. скопировать программно меш и сделать ему новый IB со склееными вертексами можно. "Больше негде дополнительную инфу в меше хранить." - значит что нельзя расширять существующую структуру вертекса, в юнити она захардкодена намертво.

Цитата:

Это опять в Unity такое ограничение на данные цвета?
на самом деле это лишь моё предположение, т.к. вертексколор чаще всего хранят в формате D3DDECLTYPE_D3DCOLOR (в DX, по крайней мере):
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Учитывая, что в юнити довольно пожатая вертексная структура, и colors предназначен именно для цвета, то ставлю 3 рубля на то, что используются именно 1 байт на канал.


Часовой пояс GMT +4, время: 13:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot