Размер текстур/спрайтов.

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

Размер текстур/спрайтов.

Сообщение Nubila 01 июл 2018, 18:38

Приветствую. Хотел бы узнать у вас какой размер необходимо устанавливать для своих спрайтов. Разрабатываю 2D игру под Android. Но проблема в том, что игра не совсем 2D, так как я использую Dragon Bones(для костной анимации всего) который создаёт полноценный Mesh Renderer, а так же есть шейдер который создаёт для этого всего тени. То есть это всё же 3D обьекты. Но так как локация относительно не маленькая(48 на 27 юнитов) то если размер исходного изображения был 1920х1080, при создании он будет мелкий по отношению к самой карте и размер необходимо корректировать. Вопросы:
1) Могу ли я уменьшать/увеличивать размер скейлом или лучше его не трогать(читал на хабре в статьях что лучше не играться со скейлом так как это влияет на батчинг).
2) Я не совсем понимаю зачем все спрайты необходимо подгонять под размер степени двойки, бывает так что обьекты получаются разной формы, и разрешение не всегда получается подогнать. Например у меня куст получился 1298х876. Как в таких случаях быть? Стоит применить к нему близкие по значению числа(1366х768 но он немного поменяет соотношения и форму), или использовать упаковку в атлас от Dragon Bones но исходный размер атласа будет 2048х2048 , и в него больше не возможно будет уместит что либо ещё? А может это никак не влияет, и я должен его сделать в максимальном качестве(Full HD например), а скейлом подогнать уже в редакторе?
Аватара пользователя
Nubila
UNITрон
 
Сообщения: 159
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье

Re: Размер текстур/спрайтов.

Сообщение getAlex 04 июл 2018, 13:58

1298х876 кратно двойке. Если разделить на 2, то получится 649x438

Попробуй нарисовать столбики из 5 пиксельных линий разного цвета, а затем попробуй это изображение сжать в 2 раза. И то же самое сделай с 4мя линиями. А затем растяни их в исходный размер. Как ты думаешь, где будет выше потеря информации? Возьми пипеткой каждую линию и подсчитай процентное отклонение от изначальных цветов.

Или такое. У тебя экран 1080 пикселей в ширину, а у твоей картинки 1079 . Посмотри как сильно изменится картинка, если ты растянешь её во весь экран. Визуально она будет размыта, будто-бы потеряла 30% своего качества, хотя она лишь создала 1 дополнительный пиксель в ширину к 1079, а затем умножила каждый цвет из 1079 пикселей на какую-то величину, допустим 0.999, чтоб распределить информацию по 1080 пикселям.
getAlex
Адепт
 
Сообщения: 1689
Зарегистрирован: 10 авг 2013, 18:30

Re: Размер текстур/спрайтов.

Сообщение waruiyume 04 июл 2018, 15:47

А сжатие точно так работает?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 4954
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Размер текстур/спрайтов.

Сообщение getAlex 04 июл 2018, 17:42

waruiyume писал(а):А сжатие точно так работает?

Как "так"? Я не описывал алгоритмы сжатия с потерями или без. Я лишь сказал что если всё не стандартизировано под одну модель(x2 или х3), то потеря информации будет существенна при конвертации этих моделей. Хотя бы просто потому что для x2 нужно взять квадрат в 4 пикселя, а для х3 в 9 пикселей. Математический перевод между ними будет уже содержать потери(помимо базовых потерь при сжатии с потерями), а также создавать дополнительные вычисления.

Или ты о том, что для сжатия в DXT нужны кратность двойке, а лучше четвёрке? Я совсем не об этом. Если интересно как это работает, можешь почитать https://habr.com/post/206386/
getAlex
Адепт
 
Сообщения: 1689
Зарегистрирован: 10 авг 2013, 18:30

Re: Размер текстур/спрайтов.

Сообщение Tolking 04 июл 2018, 20:31

не кратность 2, а степени 2... Все степени 2 кратны 2, но не все что кратно 2 - степени 2...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2104
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Размер текстур/спрайтов.

Сообщение Nubila 10 июл 2018, 05:43

getAlex писал(а):1298х876 кратно двойке. Если разделить на 2, то получится 649x438

Попробуй нарисовать столбики из 5 пиксельных линий разного цвета, а затем попробуй это изображение сжать в 2 раза. И то же самое сделай с 4мя линиями. А затем растяни их в исходный размер. Как ты думаешь, где будет выше потеря информации? Возьми пипеткой каждую линию и подсчитай процентное отклонение от изначальных цветов.

Или такое. У тебя экран 1080 пикселей в ширину, а у твоей картинки 1079 . Посмотри как сильно изменится картинка, если ты растянешь её во весь экран. Визуально она будет размыта, будто-бы потеряла 30% своего качества, хотя она лишь создала 1 дополнительный пиксель в ширину к 1079, а затем умножила каждый цвет из 1079 пикселей на какую-то величину, допустим 0.999, чтоб распределить информацию по 1080 пикселям.

Спасибо! Всё доходчиво. Прощу прощения, оговорился по поводу кратности. Имелась ввиду степень.
Но всё же есть нюанс: Ставлю Aspect Ratio в ФуллХд. Далее закидываю спрайт с разрешением 216х278(такой вот получился рисунок).
Так как разрешения дисплеев , которые будут запускать игрушку, находятся в пределах от 1280х720 до 2560х1440(по 16:9 формату), то логично что будет применяться то самое упомянутое вами растягивание, из за которого в следствии будет потеря качества.

Что мне следует делать?
На сколько я вас понял, я должен сделать из 216х278 близкое по значению разрешение, которое является степенью двойки, то есть 256х256.
Тут либо прям в фотошопе сделать размер изображение до такого разрешения, что деформирует картинку, сделав её шире и ниже, либо бахнуть прям в юнити параметр Non power of 2: ToNearest.
Сделав это при помощи юнити, картинка теряет качество. Становятся видны пиксели, похуже чем в родном разрешении. Или это и есть цена за то, что картинка будет растягиваться ?
Аватара пользователя
Nubila
UNITрон
 
Сообщения: 159
Зарегистрирован: 12 июл 2017, 15:59
Откуда: Запорожье


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

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

Сейчас этот форум просматривают: denprox и гости: 14