![]() |
Алгоритм разбивки спрайтщита на отдельные изображения
Здравствуйте.
Появилась необходимость найти/придумать алгоритм, который разделял бы спрайтщит на отдельные изображения (BitmapData) исходя из альфа-канала. Что-то наподобии того, что делает программа Shoebox. То есть нужно определить, где в спрайтщите заканчивается один фрейм и начинается другой. Фактически, обвести все отдельные непрозрачные области изображения в прямоугольные рамки. Вот пример того, как это делает Shoebox: http://www.fotolink.su/pic_s/9b123f5...3c5efb4103.jpg 1036x1038(327.72 kB) хостинг изображений Если кому-то интересно, зачем это мне вдруг понадобилось - вот ссылка на тему-предысторию: http://www.flasher.ru/forum/showthread.php?t=206728 |
Ерундой какой-то занимаетесь. Во-первых, уже на этой картинке некоторые изображения не разделены прозрачностью (сливаются), во-вторых в кадре может быть несколько разделенных прозрачностью объектов, например жонглер и его шарики. В третьих, все это похоже на воровство чужой интеллектуальной собственности. В четвертых, картинки надо загружать на хостинг форума, а не на левые файлопомойки — вирусоопасные и удаляющие изображения через месяц.
к слову, я бы вообще никакой xml не делал, а печатал ключ прямо на спрайтшите в виде пикселей. Распарсить ключ имхо быстрее чем загрузить и распарсить xml. Не говоря уже о том, что в PNG можно встроить свой собственный chunk с инфой о кадрах. Ну, это все конечно справедливо, если Вы сами делаете спрайтшиты а не крадете. |
Цитата:
Цитата:
|
caseyryan, я сильно сомневаюсь, что если бы Вы сами делали спрайтшиты, то создавали бы систему для определения границ кадров по прозрачностям. Уж наверное придумали бы, как сохранить и передать эту инфу. Я уже не говорю о том, что прозрачные области в PNG почти ничего не весят, и непонятен сам подход упихать все как сельдь в банке и потом мучиться с разделением, вместо того чтобы определиться с постоянной ячейкой под каждый кадр и пусть будет пустота, фиг с ней.
|
по всем пунктам согласен с Волшем, но чисто из 'любви к искусству' вариант решения через floodFill: находим непрозрачную точку, флудфилом красим все что с ней соприкасается непрозрачного, через getColorBoundsRect забираем кусок
Код AS3:
|
Цитата:
А вот подозрения уважаемого Wolsh на воровство контента я разделяю. Если у тебя есть картинка и к ней нет xml/json, это с большой вероятностью означает, что ты качнул ее с блога какого-то разработчика, который делится процессом работы или что-то вроде того. |
Если делится, то это уже не воровство.
|
Babylon не понимает разницы между "делится процессом работы" и "раздает исходники".
|
Спасибо silin за интересную идею.
Не понимаю, зачем понадобилось разводить холивар по поводу воровства и обвинять меня в нём без особых оснований. Никто даже не догадался подумать, что на просторах интернета есть немало бесплатных спрайтщитов, которыми авторы делятся для таких как я, не умеющих рисовать. Есть и тайлсеты, и анимации персонажей. Это одна из причин, по которой я заинтересовался этим вопросом. Вторая причина - это просто интерес к теме. Как я сказал в теме-предыстории, я только недавно обратил более пристальное внимание к теме спрайтщитов и их использования. И мне стало интересно (даже не по какой-то объективной причине, а просто из-за спортивного интереса) как можно (и можно ли вообще) автоматизировать процесс работы с абстрактным спрайтщитом, не имея дополнительных данных о нем. Надеюсь, теперь тут будет больше постов по теме, а не обсуждений правильности того, что я делаю. p.s И неужели кто-то из вас думает, что если я соберусь делать какой-то коммерческий продукт, я буду использовать чужую графику? Это в первую очередь плохо для меня и для успеха того, что я буду делать. Если уж я соберусь делать что-то в серьёз, я не пожалею денег заплатить профессиональному художнику аниматору, чтобы он нарисовал для моего приложения УНИКАЛЬНУЮ графику, не скопированную ни от куда. Иначе это не серьёзно. Пока же я просто экспериментирую. |
Parez, не путай обвинения с обоснованными подозрениями.
Покажи мне ссылку на авторитетные сайты с бесплатными атласами с нерегулярной сеткой и без сопутствующего дескриптора. |
Цитата:
В целом это не наезд даже. Я могу понять, что Вам захотелось поиграться, и что для коммерческого проекта Вы не сможете использовать чужой контент даже если захотите. Я вобщем-то говорил о другом: что Вам это все совершенно не нужно. Что если Вы сами будете делать себе спрайтшиты (не Вы так художник), то у Вас будет нужная инфа по границам кадров, и никакой "алгоритм" резки по прозрачностям Вам не понадобится. Он никогда не будет надежен на 100%. Если просто хочется поиграться с нетривиальными методами битмапдаты, есть много всяких тем. Например, буквицы. То есть написать класс (метод?), умеющий создавать картинку заданной буквы заданного шрифта, размера и т.п., на прозрачном фоне, но залитую либо цветом, либо градиентом, либо заданной растровой текстурой. И, естественно, обрезанной четко по размеру буквы. И чтобы Ё не становилось Е, а Й — И ;) |
Цитата:
Заданный вопрос звучит вполне конкретно и я не затем его задавал, чтобы "слушать" нравоучения. Спасибо. Добавлено через 14 минут Цитата:
Создавая тему, я надеялся, что получится обсудить варианты создания подобного алгоритма с опытными флэшерами, имеющими дело с подобными вещами, но никак не обсуждать моральные аспекты использования чужого артворка в личных целях. |
Мне тоже жаль, что Вы так и не поняли.
— Скажите мне, опытные люди, как выпить молоко молотком? — О____________о Чаво??? — Вот только не надо! Ежу же понятно, молоток и молоко! Как? — Да никак. Ну, то есть, можно конечно разбить бутылку и потом слизывать, но это будет очень долго и опасно. Лучше вот, трубочку возьмите. — Эх вы! Я то надеялся поговорить со знающими людьми о правильном алгоритме питья молока молотком, а вы! Вы поставили бессмысленную задачу. "Опытные флэшеры" сказали Вам, что она бессмысленная. Спрайтшиты придумали не для того, чтобы устраивать себе геморрой в рантайме. Вы ответили, что это такая игра, научиться делать что-нибудь бессмысленное. Силин Вам подыграл даже. Удачи. |
Цитата:
|
Ресурс, предоставляющий лишь графику, надерганную из разных игр. Я спрашивал не о подобных помойках.
|
А чем подобные помойки плохи для тренировок? Мне кажется для пробы пера вполне себе полигон для испытаний.
|
Wolsh выше описал всю "ценность" этих тренировок.
|
Вложений: 1
а вот та же задачка, но для картинок с пересекающимися ректанглами
как бы еще более бессмысленное дело в контексте спрайтшитов, но пусть тоже будет раз уж Код AS3:
|
Мощно! ;)
|
Завидую столь крутым алгоритмическим навыкам Силина. Не знаю зачем, но сохраню себе.
|
Силин, круто!
|
Цитата:
Спасибо, Silin. |
Еще раз перечитав тему, задался вопросом, — а можно ли загонять описания (хмл или джэйсон) в мета-данные изображения? Получится ведь один валидный файл изображения с вшитой инфой о текстурках.
|
| Часовой пояс GMT +4, время: 23:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.