Это копия, сохраненная 15 марта 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
>без использования готового движка или конструкторов
Чем мотивировано такое решение? Если ты любишь велосипедить, одумайся пока не поздно, без движка/фреймворка запаришься возиться с ОСями и различными АПИ. Алсо придётся изобретать некоторые архитектурные решения, которые есть в движках из коробки.
>способы программного определения частей тела на картинке и подгонки одежды под тело
А зачем что-то программно определять?
Делаешь N спрайтов персонажей и 1 картинку шмотки.
Затем создаёшь N текстовых файлов:
шмотка1-1.txt: pos(10, 20), scale (1, 1)
шмотка1-2.txt: pos(30, 34), scale (1.2, 1)
...
шмотка1-N.txt: pos(0, 40), scale (1, 0.9)
В программе читаешь эти файлы и меняешь картинку.
Конечно, придётся вручную создать и настроить все эти файлы, вручную написать парсер и функцию изменения спрайта. А ты что хотел? Библиотеку с нейронкой, которая автоматом спрайт натянет так, не знаю как, но чтоб красиво было? Ты уж определись, либо велосипеды делаешь, либо ищешь способ "нажать кнопку чтобы было красиво и без лишних телодвижений".
Серьёзно, ты выбрал самый сложный путь, а теперь ищешь способ не рисовать пару-тройку лишних спрайтов, потому что тебе лень...
>ну или вообще у кого какие идеи есть как эту проблему решить высказывайтесь
Либо рисовать отдельный спрайт шмотки на каждого персонажа, либо отказаться от фичи "спрайт шмотки на персонаже" и размещать эту шмотку в отдельном от персонажа квадратике интерфейса, как делают в 100500 разных РПГ. Никому не интересна эта фича, все играющие в РПГ дрочат на циферки, а не на спрайты.
Вообще, не реализуй фичи, без которых можно обойтись. Реализуй скелет игры, без которого невозможно в игру поиграть, а уже потом приделывай свистелки и переделки. Вот спрайт персонажа со спрайтом шмотки - это свистелка, без неё можно сделать игру. Тем более что тебе лень рисовать разные варианты одной шмотки... С таким настроем тебе и игру должно быть лень делать)
О, это же вьювер Castle Game Engine, делаешь на нём игру?
>сделать меш
Для 2Д РПГ с нуля на голом ЯП это оверкил. Ладно бы он на 3Д движке каком делал, там все эти меши из коробки, остаётся только в блендере модельки сделать. Так он ещё и нуб, который, судя по всему, не знает про конфигурационные файлы...
Представляю себе игру с унылыми 2Д спрайтами и глючным велосипедным движком с околонулевым геймплеем, но с нейронкой внутре!!1адын1!, которая нагружает видеокарту на 100%, выдавливая из себя уродливые покаки 64х64 пикселя. Нет, конечно, можно отрендерить заранее, но тогда не удастся написать "Асновано на тэхналогиях ЭЫ!!1", а без этого игра не выстрелит.
Когда-нибудь нейронки всё порешают. Но, увы, не сегодня.
Запчасти нарисуй для каждой кости/области спрайта и скейли под размер - самое простое и костыльное решение. При удачной стилизации даже не будет совсем как говно выглядеть.
>меш, который будет растягивать всю одежду под персонажа
понятное дело, что если наложить меш на одежду, то дёргая за вершины можно тянуть одежду, но как автоматически определить геометрия персонажа, чтобы под него этот меш подогнать? или ты про то чтобы мышкой этот меш накладывать на перса в спец.программе?
>стилизацию и утрирование
что ты имеешь ввиду?
>>194
>Чем мотивировано такое решение?
там будут некоторые киллер-фичи, которые проблематично сделать в конструкторах. не люблю когда библиотека прячёт всё самое нужное под капотом, и не понятно как что-то нестандартное реализовать. В любом случае, я делал в подростковом возрасте платформер простой, опять таки на чистом коде, так что построить карту и двигать человечка для меня не проблема
>шмотка1-1.txt: pos(10, 20), scale (1, 1)
а как указать деформацию ткани с учётом рельефа тела?
>вручную написать парсер
не знаю, чем тебя json не устроил, но такой парсер с регулярками за час пишется, за вечер максимум
>функцию изменения спрайта
ну накладывание слоёв, замену цвета, подстановку спрайтов по координатам обозначенным в виде цветных зон в отдельном скрытом слое я сделал, не вижу проблемы реализовать поворот и масштабирование слоя
>Библиотеку с нейронкой, которая автоматом спрайт натянет так, не знаю как, но чтоб красиво было?
Алгоритм который сам натянет спрайт, не обязательно нейронка, определение объектов на изображении в простейшем случае и без нейронок работает
>Реализуй скелет игры, без которого невозможно в игру поиграть, а уже потом приделывай свистелки и переделки
ок, но всё равно вопрос открыт
>Тем более что тебе лень рисовать разные варианты одной шмотки
не мне лень, а художнику, я кодер
>>196
>Для 2Д РПГ с нуля на голом ЯП это оверкил
не вижу никакой проблемы
>Так он ещё и нуб, который, судя по всему, не знает про конфигурационные файлы...
а ты судя по всему экстрасенс и знаешь всё про всех, нет, я не нуб, имею опыт коммерческой разработки ПО, знаю про конфиги, работал и с json и с собственными форматами, писал парсер LISP (не интерпретатор, парсер). Но вопрос то не про это
>меш, который будет растягивать всю одежду под персонажа
понятное дело, что если наложить меш на одежду, то дёргая за вершины можно тянуть одежду, но как автоматически определить геометрия персонажа, чтобы под него этот меш подогнать? или ты про то чтобы мышкой этот меш накладывать на перса в спец.программе?
>стилизацию и утрирование
что ты имеешь ввиду?
>>194
>Чем мотивировано такое решение?
там будут некоторые киллер-фичи, которые проблематично сделать в конструкторах. не люблю когда библиотека прячёт всё самое нужное под капотом, и не понятно как что-то нестандартное реализовать. В любом случае, я делал в подростковом возрасте платформер простой, опять таки на чистом коде, так что построить карту и двигать человечка для меня не проблема
>шмотка1-1.txt: pos(10, 20), scale (1, 1)
а как указать деформацию ткани с учётом рельефа тела?
>вручную написать парсер
не знаю, чем тебя json не устроил, но такой парсер с регулярками за час пишется, за вечер максимум
>функцию изменения спрайта
ну накладывание слоёв, замену цвета, подстановку спрайтов по координатам обозначенным в виде цветных зон в отдельном скрытом слое я сделал, не вижу проблемы реализовать поворот и масштабирование слоя
>Библиотеку с нейронкой, которая автоматом спрайт натянет так, не знаю как, но чтоб красиво было?
Алгоритм который сам натянет спрайт, не обязательно нейронка, определение объектов на изображении в простейшем случае и без нейронок работает
>Реализуй скелет игры, без которого невозможно в игру поиграть, а уже потом приделывай свистелки и переделки
ок, но всё равно вопрос открыт
>Тем более что тебе лень рисовать разные варианты одной шмотки
не мне лень, а художнику, я кодер
>>196
>Для 2Д РПГ с нуля на голом ЯП это оверкил
не вижу никакой проблемы
>Так он ещё и нуб, который, судя по всему, не знает про конфигурационные файлы...
а ты судя по всему экстрасенс и знаешь всё про всех, нет, я не нуб, имею опыт коммерческой разработки ПО, знаю про конфиги, работал и с json и с собственными форматами, писал парсер LISP (не интерпретатор, парсер). Но вопрос то не про это
А, если у тебя разные спрайты готовые, то да - пинай художника или нейронку.
>>стилизацию и утрирование
>что ты имеешь ввиду
Спрайты под меш - это обычно что-то мультяшно-анимешное. Чем сложнее у тебя изобразительный стиль, тем больше косяков будет бросаться в глаза. Косяки деформаций даже на сплошной заливке одним цветом могут быть заметны (по контуру), а если у тебя мелкие детали прорисованы - то всё, приехали.
>проблематично сделать в конструкторах.
А ты можешь их сделать? Я раньше тоже мечтал о киллер-фичах, а как попытался их реализовать - сдулся и теперь пытаюсь сделать что-то попроще на готовом движке.
>библиотека прячёт всё самое нужное под капотом
Попробуй Godot, в нём можно внутренности дёргать из скриптов, а при большом желании можно скачать исходники, воткнуть в них свою багофичу и сделать свой уникальный билд движка. Правда, если тебе нужно что-то вроде Terraria (миллионы разрушаемых тайлов), то лучше использовать низкоуровневые библиотеки, так производительности будет побольше.
>деформацию ткани с учётом рельефа тела?
А ты точно 2Д РПГ делаешь, а не 3Д экшон суть токова?
Можно, конечно, подготовить специальную карту типа нормал-мапы (два цветовых канала, каждый обозначает смещение по одной из осей, 0 = смещение влево, 255 = смещение вправо, 127 = по центру), в которой будет описан "рельеф" спрайта тела, а спрайт шмотки будет искажаться по этому рельефу (смещаешь каждый пиксель, дублируя или смешивая с соседними), но ты же понимаешь, что это гораздо больше работы, чем просто нарисовать пару-другую спрайтов? Придётся вручную подготовить для каждого спрайта персонажа эту карту. Разве что её можно сделать в обычном растровом редакторе, это проще, чем кодом набивать. А потом ужаснуться тому, как сильно искажается шмотка... Серьёзно, может, проще в Фотошопе шмотки под каждого персонажа/позу деформировать? Для этого даже художником быть не нужно.
>не мне лень, а художнику
Так найди другого художника. Или этот тебе бесплатно рисует?
>а ты судя по всему экстрасенс
Просто вопросы у тебя какие-то наивные. Ты пытаешься заменить работу художника кодом, но код делать будет намного сложнее, чем нарисовать картинки, и ты должен это знать как профессионал. Нейронки и весь остальной машоб придумали и используют как раз потому что те задачи, которые они решают, слишком сложно делать кодом. Но нейронкам для работы нужны примеры, а чтобы эти примеры сделать, нужно напрячь художника...
Вообще, я бы забил и оставил всё как есть - без натягивания одежды на персонажей. Такую фичу в 2Д играх делают если все персонажи в одной и той же позе и одного размера, либо если в компании много художников, либо если персонажи и шмотки очень мелкие (16/32/64 пикселя в высоту, например).
>>стилизацию и утрирование
>что ты имеешь ввиду
Спрайты под меш - это обычно что-то мультяшно-анимешное. Чем сложнее у тебя изобразительный стиль, тем больше косяков будет бросаться в глаза. Косяки деформаций даже на сплошной заливке одним цветом могут быть заметны (по контуру), а если у тебя мелкие детали прорисованы - то всё, приехали.
>проблематично сделать в конструкторах.
А ты можешь их сделать? Я раньше тоже мечтал о киллер-фичах, а как попытался их реализовать - сдулся и теперь пытаюсь сделать что-то попроще на готовом движке.
>библиотека прячёт всё самое нужное под капотом
Попробуй Godot, в нём можно внутренности дёргать из скриптов, а при большом желании можно скачать исходники, воткнуть в них свою багофичу и сделать свой уникальный билд движка. Правда, если тебе нужно что-то вроде Terraria (миллионы разрушаемых тайлов), то лучше использовать низкоуровневые библиотеки, так производительности будет побольше.
>деформацию ткани с учётом рельефа тела?
А ты точно 2Д РПГ делаешь, а не 3Д экшон суть токова?
Можно, конечно, подготовить специальную карту типа нормал-мапы (два цветовых канала, каждый обозначает смещение по одной из осей, 0 = смещение влево, 255 = смещение вправо, 127 = по центру), в которой будет описан "рельеф" спрайта тела, а спрайт шмотки будет искажаться по этому рельефу (смещаешь каждый пиксель, дублируя или смешивая с соседними), но ты же понимаешь, что это гораздо больше работы, чем просто нарисовать пару-другую спрайтов? Придётся вручную подготовить для каждого спрайта персонажа эту карту. Разве что её можно сделать в обычном растровом редакторе, это проще, чем кодом набивать. А потом ужаснуться тому, как сильно искажается шмотка... Серьёзно, может, проще в Фотошопе шмотки под каждого персонажа/позу деформировать? Для этого даже художником быть не нужно.
>не мне лень, а художнику
Так найди другого художника. Или этот тебе бесплатно рисует?
>а ты судя по всему экстрасенс
Просто вопросы у тебя какие-то наивные. Ты пытаешься заменить работу художника кодом, но код делать будет намного сложнее, чем нарисовать картинки, и ты должен это знать как профессионал. Нейронки и весь остальной машоб придумали и используют как раз потому что те задачи, которые они решают, слишком сложно делать кодом. Но нейронкам для работы нужны примеры, а чтобы эти примеры сделать, нужно напрячь художника...
Вообще, я бы забил и оставил всё как есть - без натягивания одежды на персонажей. Такую фичу в 2Д играх делают если все персонажи в одной и той же позе и одного размера, либо если в компании много художников, либо если персонажи и шмотки очень мелкие (16/32/64 пикселя в высоту, например).
Автоматизировать и дрочиться с мешами имеет смысл, если персонажей генерируешь сотнями и тысячами, либо их фигура имеет свойство динамически меняться.
Если у тебя каждый персонаж нарисован уникально, то и одежду нужно рисовать под каждую позу и тело.
>загрузить слой с персонажем, слой с одеждой, деформировать вручную одежду и сохранить её в виде отдельного пнг?
Попробуй Krita. Это растровый редактор, но инструмент трансформации там очень мощный и заточен как раз под 2D:
https://docs.krita.org/en/reference_manual/tools/transform.html
А если тебя интересуют конкретно меши, то есть такой вариант:
- берёшь Blender
- создаёшь два квадрата вплотную друг к другу
- на задний кидаешь спрайт персонажа
- на передний спрайт шмотки
- включаешь прозрачность в материалах (гугли как), иначе текстура будет непрозрачной и персонажа позади шмотки не увидишь
- также отключаешь в материалах тени и блики, иначе будут лишние артефакты, которые тебе, скорее всего, не нужны.
- передний квадрат подразделяешь несколько раз
- дальше два варианта:
1. редактируешь вершины вручную (если их мало)
2. редактируешь с помощью инструментов лепки
Лепка даст более органичные результаты.
Потом этот деформированный квадрат можно использовать для других шмоток, надеваемых на того же персонажа.
По-моему, вариант с Критой более простой и предсказуемый, там достаточно просто мышкой поработать. Но с Блендером вариант более гибкий и позволяет частично автоматизировать работу, т.к. ты один раз сделаешь рельеф и сможешь использовать его для разных шмоток.
Но это всё в теории, хрен знает, что у тебя там за графический стиль. Примеры ты, конечно, показывать здесь не будешь? Хотя бы с большой ватермаркой поперёк всей картинки, чтобы не спёрли. А то может там у тебя слишком сложный случай (сложная светотень и большое количество складок ткани всё сильно усложняют), тогда только с нуля перерисовывать, если хочешь красиво.
спасибо за развернутый ответ. я пообщался с художником, он говорит что юзал деформацию в moho, и что получается очень коряво. как думаете, реально фигня выходит или можно сделать красиво?
>как думаете, реально фигня выходит или можно сделать красиво?
Уже который раз повторяю: всё зависит от стиля, в котором выполнены спрайты. Если это условное аниме с плоской заливкой, то деформации можно сделать незаметными. Если это что-то уровня фотографий в jpg, то деформации простыми инструментами будут бросаться в глаза - нужно много работать в Фотошопе, практически перерисовывать. Если что-то в стиле пиксель-арт, то деформации будут бросаться в глаза, но в некоторых случаях можно просто накинуть "пикселизацию" и результат будет похож на обычный пиксель-арт (но опытный человек всё равно заметит разницу между ручным пиксель-артом и автоматической обработкой).
А Moho (бывшее Anime Studio) - это векторная программа для анимации, она хорошо работает с простыми стилями графики, которые часто применяются в векторном арте и анимации. Вообще не понял, зачем он делал это в Moho? В чём он рисует? В большинстве программ для рисования есть инструменты трансформации. Порекомендуй ему Krita, она полностью бесплатная, мало весит и не требовательна к ПК. Ссылку на инфу по инструменту трансформации в ней выше кидал. Это как фотошоп, но если бы у него был фотошоп, вряд ли он пытался лезть в Moho.
Нет, дело не в абстрактном "качестве" (что ты под этим понимаешь-то), просто Крита заточена под работу с растровой графикой (в основном иллюстрации) и инструменты там соответствующе оптимизированы. А Мохо заточена под векторную анимацию, там совсем другие инструменты для совсем других задач. Ну вот ты можешь разводным ключом забивать гвозди, будет ли молоток забивать гвозди "качественнее" разводного ключа? Тебе как минимум будет удобнее работать молотком, который предназначен специально для забивания гвоздей.
Если уж хочешь делать инди-игру, ты должен знать всего понемногу из всех видов деятельности, необходимых для разработки игры, даже если чем-то будет заниматься другой человек - имея знания из его области деятельности будет проще проверить/оценить его работу, что-то по мелочи поправить (как сейчас), и т.д. Гугли, изучай тему, сможешь сам разобраться без наивных вопросов. Инди-разрабу не обязательно быть специалистом, но он должен быть мастером на все руки, иначе игры не получится или придётся тратить много денег.
Это копия, сохраненная 15 марта 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.