Кадры Starling MovieClip не помещаются в 2048. Несколько TextureAtlas для одного MC?

Я делаю файтинг, поэтому у меня есть гигантские спрайты персонажей (300 x 350 пикселей) с большим количеством кадров анимации (~ 150 на персонажа), поэтому максимальный размер текстуры 2048 x 2048 не подходит для всех кадров анимации для игры. персонаж. Итак, мне понадобится несколько TextureAtlases, верно?

Нужно ли мне беспокоиться о дорогостоящей подкачке текстур GPU, если я переключаю TextureAtlases на MovieClip?

Для смены анимационных кадров, было бы разумно создать менеджер для выбора кадра и атласа?

Или я могу комбинировать TextureAtlases, чтобы один атлас хранил несколько листов спрайтов 2048 x 2048?

Как бы вы подошли к этому?


person Pup    schedule 08.05.2012    source источник


Ответы (4)


Рекомендация от Дэниела Сперла на форуме Starling:

Если у вас спрайты такие огромные, то боюсь у вас будут проблемы с памятью текстур. К сожалению, на данный момент нет простого обходного пути, кроме создания этой анимации с помощью «Spriter» (бета):

http://www.kickstarter.com/projects/539087245/spriter

person Pup    schedule 16.05.2012

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

Вы можете обратиться к DragonBones (http://dragonbones.github.com/getting_started_en.html) за помощью в достижении этого.

person Tim Keating    schedule 28.11.2012
comment
В принятом ответе также упоминается Spriter, который сейчас выпущен. Еще одним отличным инструментом для создания 2D-анимации является Spine esotericsoftware.com. - person Tim Keating; 27.02.2014

Где задокументировано это 2048 x 2048 ограничение? Я никогда не читал такого. Единственное, что я смог найти в документации Starling 1.1 относительно размера атласа текстур, это:

Длина сторон любой текстуры Stage3D должна быть равна степени двойки. Starling скрывает от вас это ограничение, но за счет дополнительной графической памяти. Используя атлас текстур, вы избегаете переключения текстур и ограничения степени двойки. Все текстуры находятся внутри одной большой «супертекстуры», и Старлинг заботится о том, чтобы отображалась правильная часть этой текстуры.

Предполагая, что я не полностью упустил эту важную деталь, и нет ограничений по размеру текстурных атласов, просто создайте один в 4096 x 4096 или 8192 x 8192.

person Chunky Chunk    schedule 09.05.2012
comment
2048 x 2048 — это максимальный размер текстуры для context3D — и даже для многих устройств. - person ansiart; 10.05.2012
comment
а, вот оно: flash.display3D.Context3D.createTexture() - ArgumentError — Texture Too Big: if either the width or the height parameter is greater than 2048. - person Chunky Chunk; 10.05.2012

хм, я предполагаю, что использование текстур размером более 2048x2048 влияет на производительность. И я бы также сказал, что переключение между текстурами такого размера также приведет к снижению производительности. Задумывались ли вы об уменьшении масштаба ваших текстурных ресурсов и увеличении их масштаба в игре?

person fideldonson    schedule 09.05.2012
comment
+1. Я бы согласился с этим. Вы всегда можете уменьшить их масштаб, а затем повторно масштабировать с помощью мип-мэппинга, чтобы получить трилинейную выборку ‹linear, miplinear›. - person ansiart; 10.05.2012
comment
Я буквально не понимаю, что вы пытаетесь сказать, масштабируя их с помощью mipmapping. Mipmapping не имеет ничего общего с масштабированием, за исключением того, что это в основном кеш для текстур в определенных точках масштаба. Это метод выбрасывания информации, которая вам не нужна, а не добавления информации волшебным образом из воздуха! - person Tim Keating; 29.11.2012
comment
Также? Это ужасное предложение. Если вы собираетесь отказаться от деталей в своем искусстве, просто сначала создайте его с низким уровнем детализации. Вы почти никогда не захотите повышать масштаб, если можете этого избежать, потому что это очень быстро начинает выглядеть ужасно. - person Tim Keating; 29.11.2012