Страница 1 из 1

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

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

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

СообщениеДобавлено: 04 июл 2018, 13:58
getAlex
1298х876 кратно двойке. Если разделить на 2, то получится 649x438

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

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

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

СообщениеДобавлено: 04 июл 2018, 15:47
waruiyume
А сжатие точно так работает?

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

СообщениеДобавлено: 04 июл 2018, 17:42
getAlex
waruiyume писал(а):А сжатие точно так работает?

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

Или ты о том, что для сжатия в DXT нужны кратность двойке, а лучше четвёрке? Я совсем не об этом. Если интересно как это работает, можешь почитать https://habr.com/post/206386/

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

СообщениеДобавлено: 04 июл 2018, 20:31
Tolking
не кратность 2, а степени 2... Все степени 2 кратны 2, но не все что кратно 2 - степени 2...

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

СообщениеДобавлено: 10 июл 2018, 05:43
Nubila
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.
Сделав это при помощи юнити, картинка теряет качество. Становятся видны пиксели, похуже чем в родном разрешении. Или это и есть цена за то, что картинка будет растягиваться ?