LINUX.ORG.RU
ФорумTalks

Гексогональные пиксели и детальная документация

 , ,


1

2

На новость не тянет, т.к. тыкать особо нечего, но выпустил я конвертер изображений в специально разработанный по этому случаю формат H6P гексогональной графики и обратно.

https://github.com/unDEFER/hexpict

Формат ограничен палитрой в 256K цветов, но хранит субпиксельную информацию, так что при уменьшении изображения в 3 раза даже не теряются однопиксельные детали.

В будущем предполагается создать хотя бы примитивный редактор гексогональной графики. Цель — очень хочется посмотреть как выглядит гексогональный пиксель-арт.

Кроме того проект детально документирован. Это тоже моя придумка, суть в том что объяснения о работе кода выносятся в отдельные Markdown-файлы, с форматированием, с иллюстрациями, а в коде только ставится ссылка @DetailName, которую можно использовать множество раз, коль скоро деталь необходимо знать для понимания более одного фрагмента кода. Кстати документация эта пока не переведена на английский и остаётся только на русском языке.

Но суть метода детальной документации в том, что детали могут быть переведены на несколько языков, тогда как комментарии в коде остаются не тронутыми.

★★★★★

Последнее исправление: unDEFER (всего исправлений: 2)

Блин, нафига? Если тебя за много денег огрызок купит чтобы от нормальных отличаться - жди вуду ритуала

DumLemming ★★
()

хранит субпиксельную информацию

Тогда зачем ограничиваться гексогональными пикселями, если можно использовать любые субпиксельные структуры от регулярных до стохастических?

В будущем предполагается создать хотя бы примитивный редактор гексогональной графики.

«Нинужно»™. То, что гексагональная дискретизация требует на 13,4% меньше отсчетов по сравнению с прямоугольной © – слабый аргумент для сотворения гекса-редактора.

Цель — очень хочется посмотреть как выглядит гексогональный пиксель-арт.

Ежели созерцать хитро прищурившись, то почти как пуантилизм :)

quickquest ★★★★★
()
Последнее исправление: quickquest (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Да в том то и дело что пока особо нечего скриншотить. Можно любую картинку конвертить туда-обратно и убедиться что она почти такая же как на входе..

Но это скучный скриншот как по мне.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от quickquest

Тогда зачем ограничиваться гексогональными пикселями, если можно использовать любые субпиксельные структуры от регулярных до стохастических?

Тут я даже не знаю о чём вы, но объём субпиксельной информации если что ограничен 14 битами на пиксель.

Ежели созерцать хитро прищурившись, то почти как пуантилизм :)

А правда похоже :-)

«Нинужно»™. То, что гексагональная дискретизация требует на 13,4% меньше отсчетов по сравнению с прямоугольной © – слабый аргумент для сотворения гекса-редактора.

Так у меня другие аргументы. Благодаря субпиксельной информации я могу представить в h6p прямые линии аж в 12 направлениях (любое направление кратное 15 градусам). И мне показалось это интересным.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Тут я даже не знаю о чём вы, но объём субпиксельной информации если что ограничен 14 битами на пиксель.

Это из методов полиграфии 1, 2.

quickquest ★★★★★
()

Всё началось с того, что я заинтересовался гексогональными пикселями. В самом деле почему бы пикселям не быть не квадратными, а шестиугольными?

Порыскав в Интернете, я обнаружил некий интерес к теме, но полное отсутствие инструментов для создания гексогонального пиксель-арта.

А так хотелось увидеть гексогональный пиксель-арт, но кроме одной единственной игрушки ничего не было.

Я начал копать в этом направлении. Но захотелось улучшений. Во-первых в гексогональном пиксель-арте не возможны ровные вертикальные линии. И я решил усовершенствовать идею добавлением субпиксельной информации. Теперь у гексогонального пикселя фактически 2 цвета. Базовый и дополнительный, которым закрашивается некая форма (@H6PMask).

В результате в моём гексогональном пиксель-арте возможны прямые линии аж в 12 направлениях (каждые 15 градусов).

Этот проект пока не редактор, но конвертор. Продолжение следует.



Вот это вынеси в корневой README.md и дополни картинками. Потому что сейчас очень тяжело понять, о чем вообще твой проект, надо продираться через ворох страничек с «детальной документацией».

Manhunt ★★★★★
()
Ответ на: комментарий от vvn_black

Пример ресайза, например, с сохранением деталей.

Вот, сделал. Скриншот из Battle For Wesnoth. Оригинал картинки здесь:

https://www.wesnoth.org/images/sshots/wesnoth-1.16.0-3.jpg

А вот что получилось после уменьшения изображения в 3 раза и обратным конвертированием с гиперпикселем шириной 4:

http://unde.su/hexpict/wesnoth.png [5 Мб]

То же с гиперпикселем шириной 20:

http://unde.su/hexpict/wesnothx20.png [12 Мб]

Под непотерей однопиксельных деталей я подразумеваю, что все надписи на полученных изображениях читаемы, даже если ширина линий в них – 1 пиксель.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от quickquest

Спасибо, весьма познавательно.

unDEFER ★★★★★
() автор топика

На самом деле очень хочется, чтобы кто-то дал оценку идее детальной документации, насколько удобно разбираться в таком коде?

Сам-то я смогу заценить, где-то только через годик, когда забуду все детали проекта. Но писать такую документацию мне понравилось. То что можно ссылаться на одну деталь несколько раз, весьма удобно. Ну и так иллюстрации подготавливать – приятно это всё.

unDEFER ★★★★★
() автор топика

Вот душа говорит, что это прикольно и круто, а скепсис — что дисплеи всё равно будут прямоугольными, ибо дешевле. Ну и смысел, если в конце всё равно гексагоны в квадратики пересчитывать?

massimus ★★★
()
Ответ на: комментарий от massimus

Я вижу смысл в том что это может стать чем-то средним между растровой и векторной графикой. С одной стороны вроде растр, но с другой стороны благодаря возможности рисовать линии в 12 направлениях появляются особые возможности масштабирования.

Кроме того, я вот далеко не художник и чисто технически 3D-моделирование мне гораздо проще рисования. Вот гексогональная графика может стать таким инструментом технического рисования в 2D. По меньшей мере окружности (от руки) рисовать в гексогональной графике гораздо проще.

unDEFER ★★★★★
() автор топика
Последнее исправление: unDEFER (всего исправлений: 1)
Ответ на: комментарий от unDEFER

Не надо рисовать окружности от руки, если есть сверло)))

massimus ★★★
()

Languages D 99.9%

Ты зачем человекочасы в мусорку отправляешь? Наверное специально стараешься, чтобы проект не взлетел.

ox55ff ★★★★★
()

Нипанятна, но прикольно. Тебя игра гексагональная на это сподвигла? Почему-то напомнило построение полигональной сетки на основе Marching Cubes. Там есть палитра из фигур внутри куба на основе которой строится любая сетка. Я так понял и у тебя есть палитра из «линий» внутри гексагона на основе которой строится изображение. Это я по картинке понял, дальше ничего не читал =)

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от unDEFER

чем-то средним между растровой и векторной графикой

Вместо кривых ломаные? )))
Ты лучше скажи, при пересчёте в изображение на мониторе будет ухудшение или нет? Скриншоты веснота показывают, что прям сильно хуже становится.

massimus ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Тебя игра гексагональная на это сподвигла?

Да что-то пересматривал свои проекты, среди которых «настольная» игра действие которой происходит на узлах гексогональной сетки. Игра была не доделана, потому что по текущим правилам играть оказалось недостаточно азартно. Надо как-то модифицировать правила.

Ну вот смотря на эту игру я и подумал о гексогональных пикселях.

Marching cubes действительно похоже на то что я делаю.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от massimus

Вместо кривых ломаные? )))

Да, ломаные по 15 градусов на изломах практически не видно на глаз.

Ты лучше скажи, при пересчёте в изображение на мониторе будет ухудшение или нет?

Ну понятно что растр конвертировать в гексогональной графику смысла нет. Хотя если 1:1 конвертировать, то мой формат даже квадратики пикселов воспроизводит. Интересно как раз получить оригинальный гексогональный пиксель-арт. Тогда и будет видно как оно: лучше или хуже.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от vvn_black

Там была ошибка, вызывающая эффект размытия на конвертированных изображениях. Перезалил с новой версией формата H6P.

оригинал (тот же):

https://www.wesnoth.org/images/sshots/wesnoth-1.16.0-3.jpg

уменьшенное в 3 раза:

http://unde.su/hexpict/wesnoth2.png [6 Мб]

То же с гиперпикселем шириной 20:

http://unde.su/hexpict/wesnoth2x20.png [20 Мб]

unDEFER ★★★★★
() автор топика

О, братец по разуму!

Я недавно пытался создать конвертор… ШРИФТОВ… Для… 16-сегментных индикаторов… Но ниасилил.

Суть в чом: есть 16-сегментные индикаторы https://en.wikipedia.org/wiki/Sixteen-segment_display - таким образом мое пространство разделено на 16 «пикселей», имеющих нерегулярную структуру. Это будет куда забористее, чем ваши гексогональные пиксели!

Далее я хотел взять Freetype (и взял), нарисовать поверх этого букву «А», после чего ее как-то вписать в имеющиеся пиксели, используя продвинутые техники дизеринга (распространения ошибки). Но сразу скажу, получилась фигня полнейшая. Ниасилил.

Твоя же шизофрения с субпиксельными частями чем-то похожа на шрифт Коммодора с его половинками, уголками и скруглениями. Кстате, тоже было бы клево написать «аски-арт» конвертер, только в случае Коммодора он называется petscii-art.

ruzisufaka
()

Надо сделать jpeg-кодек, работающий в гексагональном пространстве! (не читайте книг о кодеках, они вас сожрут)

ruzisufaka
()
Ответ на: комментарий от ruzisufaka

Пожалуй произвольный шрифт на эти 16 пикселей не натянешь. Даже не знаю на что вы рассчитывали. Поэтому скорее не ниасилили, а получили опыт на тупиковом пути.

Насчёт petscii, не уверен почему Коммодор напомнило.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от ruzisufaka

Вообще пишут что там на некоторых алгоритмах обработки изображений есть выигрыш на естественных изображениях и проигрыш на «острых» переходах.

Мне бы хотелось в перспективе видеоформат какой-то запилить на этом всём.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Пожалуй произвольный шрифт на эти 16 пикселей не натянешь. Даже не знаю на что вы рассчитывали. Поэтому скорее не ниасилили, а получили опыт на тупиковом пути.

Путь конечно тупиковый, опыт я конечно получил… Но всегда можно отталкиваться от частных случаев и медленно, аки черепаха, двигаться к общему. Букву «А» можно натянуть на этот индикатор? Можно. Значит в частном случае задача решаема. Понятно, что японские и тем более китайские глифы натянуть не выйдет, но меня устроит и без них

Насчёт petscii, не уверен почему Коммодор напомнило.

Так это его родной шрифт

ruzisufaka
()
Ответ на: комментарий от unDEFER

Мне бы хотелось в перспективе видеоформат какой-то запилить на этом всём.

Ляяяяяяяяяяяяяя… Мне тут в соседнем треде дали книжку по h264, пока ее читал, мне хотелось написать свой видеокодек… Для спектрума! Знаешь, как это сложно? А меня до сих пор не отпустило!

ruzisufaka
()
Ответ на: комментарий от ruzisufaka

Букву «А» можно натянуть на этот индикатор?

Это да, только она там рисуется фактически в единственном варианте, по другому просто не нарисуешь. И далеко не у каждого шрифта А похоже на этот вариант.

Так это его родной шрифт

Это понятно. Здесь я использовал petscii и commadore как синонимы.

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от ruzisufaka

Знаешь, как это сложно? А меня до сих пор не отпустило!

Могу представить. Так тем оно и разжигает. Дерзайте пока не отпустило!

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от unDEFER

Это да, только она там рисуется фактически в единственном варианте, по другому просто не нарисуешь. И далеко не у каждого шрифта А похоже на этот вариант.

Неправда. Есть как минимум 3 варианта отрисовки «в лоб», не считая художественных ручных дорисовок.

Моя проблема была в том, что А в шрифте Ариал, который я использовал, представляет собой 2 треугольника, а для индикатора, эти треугольники желательнее было бы сначала выровнять по высоте, а потом наклонить в ту или иную сторону. Или же превратить в П-образную букву (третий вариант отрисовки), а вот до этого я не додумался.

ruzisufaka
()
Ответ на: комментарий от ruzisufaka

Ну вам конечно виднее, с какими проблемами вы там столкнулись. Я просто делюсь тем как мне это видится «из далека».

unDEFER ★★★★★
() автор топика

В очередной раз смотрел ковер^Wшейдеры и случайно наткнулся на еще одного брата по разуму, в этот раз он больше похож на ОПа: https://www.shadertoy.com/view/WtfGDX - тут конечно не хексагоны, но было бы клево увидеть такую же демку, только с перламутров^wхексагонами

ruzisufaka
()
Ответ на: комментарий от ruzisufaka

Вообще треугольники легко преобразуются в шестиугольники при желании.

Раз уж вы ещё здесь. Мне пришла в голову идея по поводу ваших 16 пикселей. 65536 вариантов их зажжения немного, тем не менее пересмотреть их все довольно долго. Интересно было бы натравить на них нейросетку и сгруппировать все варианты которые распознаются как А, все варианты Б и т.д…

unDEFER ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Всё как задумано. Это гексагональные пиксели с субпиксельной информацией.

unDEFER ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)