Белые артефакты(линии) между тайлами.

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

Белые артефакты(линии) между тайлами.

Сообщение echeg 04 фев 2013, 15:06

Есть tiled base уровень, скетч примерно такой http://dl.dropbox.com/u/1210840/Pic/Game/Loc02.jpg

Чтобы для каждого уровня не делать отдельный фон, решил его собрать из кусочков.

https://dl.dropbox.com/u/1210840/Pic/Game/tiles.png вот собственно куски. Под всеми углами ни каких артефактов нет.

Написал скрипт который расставляет в сцене эти куски. Получаю вот такие белые линии артефакты https://dl.dropbox.com/u/1210840/Pic/Ga ... _lines.png

При этом они под разными углами появляются\пропадают. Если тайлы покрасить не в шоколадный, а в белый цвет всё будет ок, артефактов будет не видно. Собственно артефакты белого цвета.

Может я вообще пишу велосипед, есть какой плагин, который мне поможет? И надо это делать как то по другому?
echeg
UNец
 
Сообщения: 17
Зарегистрирован: 17 окт 2012, 23:05

Re: Белые артефакты(линии) между тайлами.

Сообщение Paul Siberdt 04 фев 2013, 15:23

Линии - это вылезающие на прозрачный пиксель полпикселя соседнего тайла. А появляются и пропадают они от того, что под разными углами рисуется то один, то другой мип. Исправить ситуацию можно наиболее простыми способами:
1. отключить мипы для текстуры
2. в данном случае - использовать альфатест
3. сжимать ювишки внутрь тайла, оставляя границу "ничейной"

А покажите, кстати, еще сам атлас и его альфу.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Белые артефакты(линии) между тайлами.

Сообщение echeg 04 фев 2013, 17:59

https://dl.dropbox.com/u/1210840/Pic/Ga ... e01_2K.png

А в самой юнити настройки https://dl.dropbox.com/u/1210840/Pic/Ga ... _unity.png ну и вот https://dl.dropbox.com/u/1210840/Pic/Ga ... unity2.png

Т.е. мне 3Dшник делает такие тайлы уже с тенью, а я из них сцену собираю.
echeg
UNец
 
Сообщения: 17
Зарегистрирован: 17 окт 2012, 23:05

Re: Белые артефакты(линии) между тайлами.

Сообщение echeg 04 фев 2013, 18:09

1 Отключил мипы, баг пропал

Но картинка становится какой то "рваной" по краям. https://dl.dropbox.com/u/1210840/Pic/Game/solution1.png Пробовал покрутить Aniso чего то не помогает. И тени почти пропадают.

2 "в данном случае - использовать альфатест" А что это значит?

3 "сжимать ювишки внутрь тайла, оставляя границу "ничейной"" Это я так понимаю нужно сказать 3Dшнику?
echeg
UNец
 
Сообщения: 17
Зарегистрирован: 17 окт 2012, 23:05

Re: Белые артефакты(линии) между тайлами.

Сообщение Левш@ 04 фев 2013, 19:56

Я не сильно в теме, но думаю можно попробовать применить к текстурам clamp. :-?
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Белые артефакты(линии) между тайлами.

Сообщение Paul Siberdt 04 фев 2013, 19:58

Кламп не поможет с атласом.. я так понимаю, что спрайты лежат в одной текстуре?

Если же каждая картинка живет отдельно, то совет выше - наилучший. Однако, сам такой подход будет неоптимальным в вопросах производительности и удобства работы.

Если все же пользуете атлас, я полагаю, вы вручную создаете меши-плашки (или используете готовый плейн из 3д-редактора) и вручную же двигаете их ювишки.. так?

1 Отключил мипы, баг пропал

Но картинка становится какой то "рваной" по краям.


Это я не совсем понял. Я знаком лишь с единственной проблемой отключения мипа - если в экранный пиксель влезает много текстурных ( то есть, скажем, на куске экрана 128X128 рисуется текстура в 1024X1024), картинка начинает "искрить", то бишь, на каждом кадре пиксель экрана не берет среднее значение занимающих его пикселей текстуры, а хватает какой-то рассчетный ближайший, что, при контрастном мелком рисунке и дает мерцание. Кстати, отличная методика создания звездного неба - отключить мипы и сильно растайлить текстуру по модели :)

2 "в данном случае - использовать альфатест" А что это значит?

Вы показали картинку... слева - жесткая маска, справа - размытая. Если у альфаканала такая же жесткая маска, как в левом случае, поставьте материалу прозрачный шейдер с CutOut параметром. CutOut определяет значение альфаканала, который гарантированно дает прозрачку. Такой шейдер не допустит проникновения полупикселя соседнего тайла.

3 "сжимать ювишки внутрь тайла, оставляя границу "ничейной"" Это я так понимаю нужно сказать 3Dшнику?

Если под тайл готовится плашка в редакторе, да, тридэшник может просто вжать ювишки, сделав отступ от краев. Чем больше отступ - тем больше безопасность появления артефактов при меньшем мипе, но... сокращается полезная площадь текстуры, ибо саму картинку тайла надо так же масштабировать, создавая неиспользуемые внешние границы :)
Если плашки строятся программно - это придется кодить.

Я сам пользовал именно готовые плашки с небольшим отступом, атлас с тайлами и программное смещение ювишек плашки по этому атласу.

-------

Оффтоп: поскольку, судя по скринам, персонажи вашего проекта вполне трехмерны, возникает мысля:
А почему бы сами тайлы не организовать модельками, вместо альфы заюзав все предести объемности? ;;)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Белые артефакты(линии) между тайлами.

Сообщение echeg 04 фев 2013, 23:16

Кламп не поможет с атласом.. я так понимаю, что спрайты лежат в одной текстуре?

Если же каждая картинка живет отдельно, то совет выше - наилучший. Однако, сам такой подход будет неоптимальным в вопросах производительности и удобства работы.

Если все же пользуете атлас, я полагаю, вы вручную создаете меши-плашки (или используете готовый плейн из 3д-редактора) и вручную же двигаете их ювишки.. так?


Да у нас есть 3 атласа. В каждом из Атласов находятся 8 островков, и 8 их теней.

Это я не совсем понял. Я знаком лишь с единственной проблемой отключения мипа - если в экранный пиксель влезает много текстурных ( то есть, скажем, на куске экрана 128X128 рисуется текстура в 1024X1024), картинка начинает "искрить", то бишь, на каждом кадре пиксель экрана не берет среднее значение занимающих его пикселей текстуры, а хватает какой-то рассчетный ближайший, что, при контрастном мелком рисунке и дает мерцание. Кстати, отличная методика создания звездного неба - отключить мипы и сильно растайлить текстуру по модели


Ну вот если посмотреть на 2 картинки https://dl.dropbox.com/u/1210840/Pic/Ga ... nother.png или https://dl.dropbox.com/u/1210840/Pic/Ga ... mipMap.png на края эти тайлов то выглядят они как то ужасно. Такие коричневые точечки, просто бесит.

Вы показали картинку... слева - жесткая маска, справа - размытая. Если у альфаканала такая же жесткая маска, как в левом случае, поставьте материалу прозрачный шейдер с CutOut параметром. CutOut определяет значение альфаканала, который гарантированно дает прозрачку. Такой шейдер не допустит проникновения полупикселя соседнего тайла.


Обратно включил мип мапы, а в материалах островков поставил transparent/Cutout/Diffuse
Получилось вот так https://dl.dropbox.com/u/1210840/Pic/Ga ... cutout.png т.е. и белые линии есть и по краям какой то ад. Ну и тень которая полупрозрачная убило насмерть )

Если под тайл готовится плашка в редакторе, да, тридэшник может просто вжать ювишки, сделав отступ от краев. Чем больше отступ - тем больше безопасность появления артефактов при меньшем мипе, но... сокращается полезная площадь текстуры, ибо саму картинку тайла надо так же масштабировать, создавая неиспользуемые внешние границы
Если плашки строятся программно - это придется кодить.

Я сам пользовал именно готовые плашки с небольшим отступом, атлас с тайлами и программное смещение ювишек плашки по этому атласу.


У нас в самом начале были проблемы просто с артефактами белых линий даже если просто островок поставить, после этого стали отступы делать вот 3Дшник пишет "я оступы на последних островках делал, и на текстуре и на UV координатах плашек"

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

Ну тут дело такое в самом начале вместо этих тайлов в альфе были обычные ящики. Собственно хочется сделать картинку не уступающей http://appsized.files.wordpress.com/201 ... 108-am.jpg Они ведь тоже на Юнити делались.
Т.е. можно сделать ландшафт конечно 3D, но тогда каждый тайл это 1.5к треугольников, потом поверх этих тайлов хотелось бы положить всяких растений\деревьев\каменюк вообщем окружение.
Ну и сейчас у нас в команде дебаты на тему оставлять ли персонажей в 3д или всё таки сделать их 2д.
echeg
UNец
 
Сообщения: 17
Зарегистрирован: 17 окт 2012, 23:05

Re: Белые артефакты(линии) между тайлами.

Сообщение alt3d 05 фев 2013, 10:59

Белые полосы - артефакты мип-маппинга.
Нужно на текстуре делать "padding" - чтоб не было контрастных областей на границе UV.
Вот тут описывается причина и методы решения: http://wiki.polycount.com/EdgePadding?highlight=%28\bCategoryTextureTechnique\b%29
Последний раз редактировалось alt3d 05 фев 2013, 11:13, всего редактировалось 1 раз.
alt3d
Старожил
 
Сообщения: 687
Зарегистрирован: 04 сен 2011, 21:19
  • Сайт
  • ICQ

Re: Белые артефакты(линии) между тайлами.

Сообщение Paul Siberdt 05 фев 2013, 11:04

1.5к на тайл - это звучит диковато. Вам было бы достаточно и пары десятков полигонов :)

Попробуйте побольше сжимать ювишки и перемасштабируйте тайлы. Вон, постом выше вам даже определение дали этому дейтсвию - padding ;)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Белые артефакты(линии) между тайлами.

Сообщение echeg 08 фев 2013, 15:00

Забыл написать ) Большое спасибо да дело было в малом паддинге, сделали 16 всё ок.
echeg
UNец
 
Сообщения: 17
Зарегистрирован: 17 окт 2012, 23:05


Вернуться в Почемучка

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

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