Войти
ПрограммированиеФорумГрафика

Черные полоски на стыках текстур

#0
(Правка: 22:35) 22:27, 20 апр 2022

Подскажите пожалуйста кто знает, откуда появляются полоски на скринах ниже.

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

Что сделать, что бы удалить ненужные части изображения и при этом не появлялись стыки?

RoadError | Черные полоски на стыках текстур
Road_Ok | Черные полоски на стыках текстур

Не знаю важно или нет. Спрайты накладываю на плейны в блендере. Масштаб = 1 Вращение = 0
Точки все выставлены  с одинаковым шагом.

#1
(Правка: 23:09) 23:08, 20 апр 2022

FourGen
> Что сделать, что бы удалить ненужные части изображения и при этом не появлялись
> стыки?
Сделать бордюры(с копипастой информации из соседней текстуры в идеале, ну или из
последней полосы пикселей этой стороны в норме) в картинке и рисовать с масштабом больше 1.
Ну это костыль конечно.

#2
(Правка: 23:36) 23:34, 20 апр 2022

Если текстура не тайловая(то есть у вас дорога собирается из квадратных "блоков"), то достаточно в материале переключить в настройках на ноде текстуры режим тайлинга с Repeat на Extend.
Если это делается под игровой движок, то уже в движке нужно будет тоже в настройках импорта текстур выставлять правильный режим.

#3
23:53, 20 апр 2022

>Super_inoy
Стыки у меня все одинаковые +-, то есть швы затер более или менее. Как накладывать текстру без разницы, если ее сдвинуть, сделать размер больше объекта или что-то типа такого полоса все равно присутсвует и не убирается.


>marggob
Да дорога из блоков будет, по этому и пытаюсь подогнать, попробую, спасибо. Да делается под Unity.

#4
7:52, 21 апр 2022

Координаты типа float тому виной

#5
8:14, 21 апр 2022

Опять всему виной плавающий петух.

#6
(Правка: 12:31) 12:28, 21 апр 2022

разумеется, плавающий питух к делу никак не относится, как минимум потому что интерполяция вершинных атрибутов (включая uv) вообще выполняется в fixed point.

проблема либо в address mode (текстура зацикливается и поэтому при семплинге с одного края вылезает интерполяция с текселями на другом краю), либо это мипы, потому что при построении мипов тоже тексели усредняются.

чтобы проверить, являются ли причиной проблемы мипы, то читай вручную из какого-нибудь 3го мипа: textureLod(tex, uv, 5.0f); чтобы проверить, является ли причиной address mode, включи clamp to edge режим или как он там в этом вашем юнити называется.

для того, чтобы решить проблему, сначала нужно знать, как ты хранишь текстуры : в атласе, либо каждый тайл отдельным изображением, потому что address mode для атласа по понятным причинам использовать не получится.

#7
13:53, 21 апр 2022

является ли причиной address mode, включи clamp to edge

С таким не знаком, почитаю.

построении мипов тоже тексели усредняются

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

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

Вероятно ключевой момент относительно центра.

>gambit_oz
Координаты типа float тому виной
Если отсутствие части картинки как-то влияет на эти координаты, хотя маловероятно там же 0  1 то может быть.

Вероятно, что-то с какими-то настройками просто, выглядит это так.

Road_03 | Черные полоски на стыках текстур

Спасибо.

#8
(Правка: 14:26) 14:01, 21 апр 2022

FourGen
> Тут что-то явно простое должно быть, если картинка полностью заполнена, то все
> ок, если картинка не симметрична относительно центра и хоть по какой-то стороне
> и не полностью заполнена то появляются полоски.
Эта проблема прям на этом форуме обсуждалась с начала времен.
Суть проста - сглаживание так работает, когда информации в начале текстуры нет(от 0 до 0.5 пикселя
lerp'у нужна информация с -1 пикселя для корректной работы) - берет из конца,
clamp to edge режим это отключает, но в древние времена его вроде бы не было, а в чуть менее древние
он тормозил относительно дефолтного поведения.
P.S. а из-за мип уровней при взгляде с растояния проблема может проявляться, даже будучи зафикшенной
в хорошем качестве.

#9
14:42, 21 апр 2022

u960
> а ue5 не рассматривали? там таких проблем и сложностей нету.
что, они свой general AI поставляют, который угадывает, как тебе текстурные координаты оборачивать?

#10
(Правка: 20:57) 18:15, 21 апр 2022

>Super_inoy
Понял, спасибо. Главное, что это не какой-то мой косяк.

>u960
Прога на UE с 30ю спрайтами 170 метров на мобилку. Постоянно падает клиент (как пишут).

Прога на Unity c 500 моделями 1000 материалами и кучей всего еще 150 метров. (из них звук 40 метров).
Падает раз в пятилетку.


Вроде победилась дорога, спасибо за помощь

Road_OK (2) | Черные полоски на стыках текстур
#11
16:50, 22 апр 2022

FourGen
> является ли причиной address mode, включи clamp to edge
>
> С таким не знаком, почитаю.
В свойствах текстур Wrap mode -> поменяй с Repeat на Clamp

ПрограммированиеФорумГрафика