[1.15.2] Добавляем новую модель для моба

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

Рекомендую пройти предыдущие уроки для большего понимания.

Список уроков

И обязательно этот:

Погнали!

Модель

Проще всего модель для моба создать в программе Blockbench. Она бесплатная, так что качаем, устанавливаем и запускаем.

Окно Blockbench

Не смотрим на историю, нас интересует меню New. А конкретно пункт:

С возможностью экспорта в java класс

Нажимаем и видим окошко настройки проекта:

Новый проект

Версию понятное дело не меняем, размеры текстуры будут зависеть от размеров модели, её детализации и т.д. Я остановился на этом:

Будущая новая корова

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

Тип ноги

Левая сторона для добавления текстур, правая — дерево элементов и их параметры. Над полем редактора есть несколько доступных инструментов. Перемещение, изменение размера, поворот и положение точки опоры.

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

Получилось что-то такое:

Красота!

Основные отличия тут в голове, но вы можете хоть крылья добавлять, это дело желания 😀

На что нужно обратить внимание при создании модели

Есть важные моменты, о которых нельзя забывать. Первое – точки опоры.

Точка опоры для головы находиться на месте шеи

К примеру, точка опоры головы должна быть тут для обеспечения нормального поворота головы.

Изменим угол поворота:

Вроде неплохо

Если же точка опоры будет где-то не там, к примеру в позиции (0,0,0), то сразу будут видны проблемы.

Тут точка уже внизу, её видно. А голова с тем же углом поворота куда-то совсем не туда улетает.

Ещё более наглядно это с ногами:

Одна ещё ничего, но вторая…

Снова точка опоры осталась где-то в стороне и нога не может правильно совершить наклон.

Так явно лучше 😀

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

Это работает со всеми поворотами:

Морда тоже имеет небольшой наклон

Тут разобрались, думаю.

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

Это не прихоть, это важно!

Есть корневая папка (Body) для всей модели, а также все блоки внутри разделены на голову, ноги, тело и т.д.  Это нужно для правильно обработки и является обязательным. Так же стоит помнить, что блоки сами по себе не могут иметь никакого угла поворота, но вот папка, с целой группой блоков – может.

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

Добавляем модель

Итак. Если считаете, что модель полностью готова и можно переходить далее, то нужно экспортировать модель в Java класс.

Для этого открываем меню File, находим Export и выбираем Expoty Java Entity.

И выбираем куда именно сохранить файл

И в итоге получаем что-то такое:

Это уже практически готовый код модели. Нужно добавить его в проект, для моделей я создал отдельную папку, вот полный путь: mod / astler / tutorial_mod_gs / client / renderer / entity / model. Кроме того нужно добавить импорты (ide скорее всего сделает это сам) и изменить имена функций, которые могут быть не распознаны. К примеру у меня не нашло addBox, т.к. оно у меня называется func_228303_a_. Если подобное возникнет, то ищите подходящие по параметрам функции.

И после пары правок вот итоговый код модели:

В конструкторе мы буквально по частям собираем модель, а в функции func_225598_a_ (render) происходит рендер Body (та самая корневая папка).

Прописываем новую модель вместо модели стандартной коровы в файле GSCowRenderer.

И делаем пробный запуск.

Yay!

Да! Новая модель! Правда, она теперь деревянная. Вот видите ванильную корову? Она голову подняла, а наша так не делает не потому, что не хочет, а потому, что не может. Ведь никаких анимаций у модели пока нет. При этом ходить, получать урон и т.д. она уже может, и реагировать на всё будет, но без движений.

Именно для этого всего есть функция setRotationAngles (которая у меня имеет имя func_225597_a_).

Пропишем туда такой код:

Как видите, тут указаны углы для поворота головы, а также движения ног. Запускаем снова!

Yaaaay!

Ура! Теперь новая модель еще и умеет совершать базовые движение, т.е. ходить и смотреть. Уже неплохо. На этом пока всё, в следующий раз будет много работы конкретно с классом сущности, но при этом изменения будут и в коде модели и не только. Так что не переключайте 😀

Исходники тут.

4 thoughts on “[1.15.2] Добавляем новую модель для моба

Добавить комментарий