crypt of decay - Post a comment [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Сложный Научный Вопрос May. 21st, 2017|12:06 am

ketmar
а никто знает, где лежат вкусные полезные алгоритмы для детектирования в мегатекстуре тайлов?

опишу: есть у нас уровень для 2д платформера. из себя он представляет ОГРОМНЫЙ битмап, на котором нарисовано. что руками, а что накидано пастой кусочков. как накидано было — неизвестно, остался только битмап. надо найти в битмапе эти повторяющиеся кусочки, и сделать из них тайлы. конечно, никакой регулярной сетки нет (то есть, тайлы могут быть накиданы с любой пиксельной позиции, и иметь любые размеры) — но тайлы не кручены и не масштабированы. цвета могут различаться на несколько битов, правда: так что тайлы надо искать с некоторой «перцептивной погрешностью». задача — эти тайлы понаходить как можно лучше, и сделать из них атлас тайлов. битмап труколорный.

я чую, что такую задачу уже давно кто-то решил (или хотя бы решал), и изобретать велосипед будет не очень умно. я нашёл только рассказы о том, как находить повёрнутые и покорёженые регулярности — что, конечно, очень круто, но явный overkill.

очевидно, что перебирать все возможные варианты — ни разу не решение. в виду отсутствия явной сетки прочитерить на ней тоже не выйдет. то есть, некая примерная сетка есть, потому что тайлы-то как-то кидали, — но её ж надо определить как-то.

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

p.s.: на всякий случай уточню: это не про построение «карты проходимости», или чего-то подобного. это чисто для визуальной части: чтобы порезать мегатекстуру на меньшие куски, сделать из них атлас, и потом блитить эти куски. то есть, всякие «структуры уровня» не при чём, чисто вопрос компрессии картинки путём детекта повторяющихся частей.

p.p.s.: оказалось неочевидно, что никакого «заранее заданого набора тайлов» нет, конечно. есть битмап. и всё. программа должна сама выбрать то, что может являться тайлом, и сама нарезать атлас. иначе она нахуй ненужна.

тайл, конечно, может быть не один. найти их надо все, попробовать все, выбрать вариант, при котором получается наименьший выходной размер.
Link Read Comments

Reply:
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message: