Как перенести модель из блендера в unreal engine

Обновлено: 18.05.2024


Если у вас имеются Blueprint/Material/и так далее. в одном проекте, и вы хотите использовать их в другом проекте, то вы можете воспользоваться функцией переноса "Migrate". Функция переноса скопирует все зависящие элементы для переносимых объектов. Данный способ кардинально отличается от функции экспорта.

Contents

  • 1 Как перенести (скопировать) содержимое из одного проекта в другой
    • 1.1 Шаг 1: Выбрать контент
    • 1.2 Шаг 2: ПКМ
    • 1.3 Шаг 3: Подтвердить Assets
    • 1.4 Шаг 4: Выберите проект в который хотите переместить контент
    • 2.1 Перенос из C++ Project в C++ Project
    • 2.2 Перенос из C++ Project в Blueprint Project

    Как перенести (скопировать) содержимое из одного проекта в другой

    Шаг 1: Выбрать контент

    Сперва вы должны найти желаемый контент в content browser, возможно для этого вам придется воспользоваться функцией поиска.

    Шаг 2: ПКМ

    RMB Migrate.jpg

    Найдя контент который вы хотите переместить, нажмите правую кнопку мыши для появления контекстного меню. Затем выберите "Migrate. ".

    Шаг 3: Подтвердить Assets

    Migrate Asset Report.jpg

    Нажав "Migrate. " откроется окно Asset Browser. Здесь отображаются все файлы связанные с переносимым объектом. Нажмите "OK".

    Шаг 4: Выберите проект в который хотите переместить контент

    Появиться список папок. Найдите папку где находится ваш проект на Unreal Engine, в нем найдите папку Content . Нажмите "OK".

    Migrate Browse Folders.jpg

    Местоположение по умолчанию Documents\Unreal Projects\(project name)\Content

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

    ВАЖНО

    Перенос из C++ Project в C++ Project

    Если вы переносите содержимое из одного C++ project в другой C++ project, то у вас не будет никаких объектов таких как функции и переменные, которые были скомпилированы на C++. Для этого вам понадобиться запустить Visual Studio и копировать/вставить соответствующий C++ проекта в другой и снова нажать 'Build'.

    Перенос из C++ Project в Blueprint Project

    Если вы переносите содержимое из C++ проекта в Blueprint проект, то у вас не будет никаких объектов таких как функции и переменные, которые были скомпилированы на C++. Вам понадобиться создать новые Blueprint функции которые будут повторять те же созданные в C++.

    В этом уроке, посвященном Unreal Engine 4 вы узнаете, как использовать Blueprints для создания игрового персонажа игрока и настройки его взаимодействий с различными объектами.

    Blueprints – это своего рода система визуальных событий в Unreal Engine 4, которая позволяет быстро создать прототип вашей игры. Вместо того, чтобы писать подробный код, вам достаточно сделать визуальную поведенческую модель: создать и разместить узлы, а также соединить их в зависимости от последовательности событий и установить каждому определенные свойства.

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

    В этом уроке вы научитесь использовать Blueprints для:

    • Установки вида камеры в пространстве;
    • Создания игрового персонажа с набором базовых движений;
    • Создания функций и свойств для игрового персонажа;
    • Создания объекта, который будет исчезать при взаимодействии с ним игровым персонажем.

    Начало работы

    В первую очередь вам необходимо скачать и разархивировать стартовый проект.

    Для того, чтобы открыть его, вам нужно перейти в корневую папку, где находится скаченный файл BananaCollector.uproject и открыть его.

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


    Для вашего удобства все файлы проекта разбиты на категории и помещены в соответствующие папки, как на этом изображении:


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

    Создание персонажа


    Справка: Класс Character также подойдет для этих целей, кроме того, он может активировать команду движения по умолчанию. Однако в этот раз вы будете создавать свою собственную систему передвижения, поэтому класса Pawn будет достаточно.

    Прикрепление камеры

    Камера является своего рода способом для игрока осматривать игровое пространство. Сейчас вам нужно будет создать камеру с видом сверху. Для этого откройте двойным нажатием левой кнопки мыши BP_Player в Content Browser. Теперь вы можете приступить к редактированию.


    Для того, чтобы создать обзор сверху, необходимо разместить камеру непосредственно над плеером. Для этого выбирайте компонент камеры и переходите на вкладку Viewport.

    Образ и расположение персонажа




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

    Создание персонажа

    Прежде чем игрок сможет контролировать своего персонажа, необходимо указать несколько важных вещей:

    1. Тип персонажа, которым игрок будет управлять;
    2. Место, где этот персонаж появится при старте игры.

    Создание игрового режима

    Игровой режим – это класс, который контролирует, как персонаж появляется в игре. Например, в многопользовательских играх необходимо применить специальный игровой режим который будет определять появление каждого игрока. Кроме того, игровой режим также определяет тип персонажа, которым будет пользоваться игрок.

    Вам нужно перейти в Content Browser и найти папку Blueprints. Теперь нажмите кнопку Add New ⇒ Blueprint Class. В появившемся окне выберите Game Mode Base и назовите его GM_Tutorial.


    Теперь вам нужно указать, какой класс персонаж Pawn будет использоваться по умолчанию. Для этого дважды щелкните GM_Tutorial, чтобы он открылся.


    Прежде чем вы сможете использовать новый игровой режим, необходимо указать его для конкретного игрового уровня. Это делается в настройках игрового мира. Сейчас вам нужно нажать Compile и закрыть редактор Blueprint.

    Каждый игровой уровень имеет свои настройки. Вы можете получить доступ к настройкам и изменять их по своему усмотрению, выбрав Window ⇒ World Settings. Другой вариант, как это можно сделать – перейти к панели инструментов и выбрать Settings ⇒ World Settings.


    Новая вкладка World Settings откроется рядом с вкладкой Details. Тут вам нужно будет перейти к раскрывающемуся списку для изменения настроек GameMode и выбрать там GM_Tutorial.


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


    Расположение метки Player Start

    В процессе создания персонажа, система игрового режима автоматически ищет метку его расположения в игровом пространстве.

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


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

    Настройка управления

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

    В Unreal вы можете настроить клавиши управления, которые будут выполнять определенное действие или вызывать событие при нажатии на них. События представляют собой это узлы, которые выполняются, когда происходят определенные действия (в этом случае, когда вы нажимаете связанную клавишу). Узлы, подключенные к событию выполняются после инициации события.



    Только представьте, насколько бы этот процесс был сложнее, если бы вы вводили для каждой команды специальный код.

    Что такое Axis и Action Mappings

    Для просмотра настроек ввода вам нужно перейти к Edit ⇒ Project Settings. Слева выберите Input в разделе Engine.



    В Unreal доступны два метода для создания привязок клавиш:

    • Action Mapping (Отображение действий): при этом методе, функция имеет только два возможных состояния – активна или не активна. Все действия будут срабатывать только после того, как вы нажмете или отпустите клавишу. Обычно этот метод используется для действий, которые не имеют промежуточного состояния, таких, например, как стрельба из пистолета.
    • Axis(Отображение оси): При выборе этого метода, программа будет показывать числовое значение, называемое значением оси (подробнее об этом позже). События Оси будут запускать каждый кадр, которые как правило используется для действий, требующих дополнительное устройство ввода (манипулятор или компьютерная мышь).

    В этом уроке мы рассмотрим, как пользоваться методом Axis.

    Создание Movement Mappings

    Для начала вам нужно создать две группы отображения осей (Axis). Они дадут возможность создать несколько привязок ключей к одному событию.


    MoveForward будет обрабатывать движение персонажа вперед и назад. MoveRight будет обрабатывать перемещение персонажа влево и вправо.


    В окне редактора сопоставьте клавиши W и S с MoveForward и клавиши A и D с MoveRight.


    Далее вам нужно установить поля Scale.

    Функции Axis Value и Input Scale

    Значение оси (Axis Value) – это числовое значение, которое определяется типом ввода и тем, как вы планируете его использовать. Посмотрите, как это выглядит на изображении ниже, чтобы лучше понимать, как распределяются числовые значения:


    Вы также можете использовать значение Axis, чтобы контролировать скорость персонажа. Например, если вы сдвинете джойстик к краю, значение оси будет равно 1. Если вы поместите его посередине, значение будет равно 0,5.


    Вы также можете использовать значение Axis, чтобы указать направление движения. Формула следующая – если вы умножите скорость персонажа на положительное значение Axis, то вы получите положительное смещение. Использование отрицательного значения оси приведет соответственно к отрицательному смещению. Конечное значение этого смещения по отношению к местоположению игрового персонажа определит, в каком направлении он будет двигаться.


    Клавиши клавиатуры могут выводить значение оси только равное 1 или 0, однако вы можете использовать масштаб для преобразования его в отрицательное значение. Это делается путем умножения значения Axis на масштаб. Если вы умножите положительное значение (значение Axis) на отрицательное значение (Scale), вы получите отрицательное значение.

    Установите значения клавиш S и A, нажав на поле Scale и введя -1.


    Движение игрового персонажа

    Обратите внимание: вы ищете красный узел в Axis Events, а не зеленый узел в Axis Values.

    Повторите процесс для MoveRight.

    Использование переменных


    Теперь вам нужно перейти перейдите на вкладку Details и изменить название новой переменной на MaxSpeed и ее тип на Float.



    Чтобы определить конечную скорость и направление движения необходимо умножить значение MaxSpeed и значение оси. Добавьте узел float * float и подключите к нему Axis Value и MaxSpeed.

    Определение направления движения персонажа

    Во-первых, вам нужно добавить узел под названием Get Actor Forward Vector:


    Во-вторых, необходимо добавить узел Add Movement и соединить узлы между собой следующим образом:


    Обратите внимание, белая линия выполняет функцию соединения цепочки исполнения команды. Другими словами, когда игрок перемещает входную ось, то автоматически генерируется событие, которое будет выполнять узел InputAxis MoveForward. Белая линия означает, что когда это произойдет, вы выполните узел Add Movement Input.

    Узел Add Movement Input отвечает за выполнение следующих входных данных:

    • Target: устанавливается на перка, который обозначается в таблице красным полем.
    • World Direction: Направление которое служит для указания перемещения цели.
    • Scale Value: в данном случае является максимальной скоростью персонажа.

    Вам нужно повторить процесс также для MoveRight, но при этом заменить Get Actor Forward Vector на Get Actor Right Vector.


    Добавление функции Offset

    Вам нужно перейти к узлу Event Tick, который находится на графике событий. Он должен быть слева и отмечен серым цветом, однако если этот узел отсутствует, вам будет нужно создать его для продолжения работы.


    Чтобы добавить функцию Offset, также создайте узлы Consume Movement Input Vector и AddActorLocalOffset и свяжите их следующим образом:


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

    Нажмите Compile, вернитесь в главный редактор и нажмите Play. Посмотрите, теперь вы можете управлять вашим персонажем!

    Примечание: На данном этапе, для вашего удобства некоторые привязки клавиш уже настроены для того, чтобы продемонстрировать вам эффекты в зависимости от частоты кадров. Попробуйте нажать “0”, чтобы ограничить частоту кадров до 60 и увидеть результат, затем нажмите 1, чтобы сбросить ограничение. Попробуйте перемещать персонажа при обоих значениях скорости, чтобы увидеть разницу.

    Настройка частоты кадров

    Выйдите из воспроизведения игры и откройте BP_Player. Далее перейдите к узлу Event Tick и посмотрите на панель Delta Seconds.


    Delta Seconds определяет время, прошедшее с момента последнего события. Если при этом вы умножите значение смещения на Delta Seconds, то движение персонажа станет независимым от частоты кадров.


    Приведем пример: персонаж имеет значение максимальной скорости=100. Если с момента последнего события прошла секунда, то получается, что перк переместится на 100 единиц. Соответственно, если прошло полсекунды, то его перемещение составит 50 единиц.

    Чтобы умножить смещение на Delta Seconds, вам нужно добавить vector * float и подключить узлы следующим образом:



    Столкновение с пространством

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

    Посмотрите, как это выглядит на изображении:


    Взаимодействие персонажа активируется, когда его сфера соприкасается с сферой другого персонажа или объекта.


    Активация столкновения

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

    Примечание: Игровой персонаж, который не имеет определенный корневой компонент, может блокировать, у которого нет коллизии в качестве корня, может блокировать перемещение других персонажей. Однако он одновременно с этим будет беспрепятственно перемещаться по локации, сквозь стены и предметы.

    Теперь переключитесь на график событий и перейдите к узлу AddActorLocalOffset. Тут вам нужно найти вход Sweep и установить для него значение true, щелкнув левой кнопкой мыши по флажку.


    Создание объектов


    Настройка реакции на столкновение



    Теперь вам нужно указать, как будет реагировать персонаж на столкновение с объектом. Если вы не забыли, то тип вашего персонажа – WorldDynamic, так что нужно выбрать реакцию на столкновение именно для этого типа. Теперь перейдите в раздел Collision Responses и измените реакцию на столкновение WorldDynamic на Overlap, щелкнув средний флажок справа от WorldDynamic.


    Настройка столкновения

    Смотрите, теперь у вас есть новый узел OnComponentBeginOverlap (StaticMesh):


    Далее создайте узел DestroyActor и свяжите его с узлом OnComponentBeginOverlap (StaticMesh):


    Размещение объекта

    Закройте редактор Blueprint и убедитесь, что вы находитесь в папке Blueprints. Теперь разместите несколько бананов (BP_Banana) по всему уровню при помощи мыши.

    Теперь нажмите Play и попробуйте собрать несколько бананов при помощи вашего персонажа.

    Что делать дальше?

    Из этого урока вы узнали много нового о возможностях программы Unreal. Вы также можете скачать готовый проект и все материалы, которые нужны для работы на этой странице.

    Чтобы продолжить ваше обучение основам Unreal Engine, вам нужно перейти к следующему уроку из которого вы узнаете много нового, в том числе о различных материалах в Unreal Engine.

    Если тебя посылают в гугл — это не значит, что хотят тебя обидеть\унизить\самоутвердиться за твой счет. Это всего лишь означает, что твой вопрос довольно элементарен и у тебя наверняка получится найти ответ самостоятельно. От этого выиграют все — ты повысишь свой скилл гугления, лучше разберешься, а остальные не потратят свое время на повторение в сотый раз того, что и так легко найти.

    Если ты уже прошерстил первые 2–3 страницы гугла и ничего не нашёл, удостоверься, что ты правильно гуглишь:

    • твои запросы должны быть на английском с припиской в конце unreal engine (например, set start level unreal engine)
    • постарайся как можно сильнее обобщить запрос, например, не “как перекрасить кубик когда у меня игрок нажмет кнопку”, а “change material parameter on button event unreal engine”.

    Посоветуйте с чего начать. Курсы, ссылки, вот это все.


    Освещение постоянно меняется, то светлеет, то темнеет.

    Так работает автоэкспозиция. Отключить её совсем или настроить можно через постпроцесс. Для отключения выставьте минимальное и максимальное значение одинаковым в разделе экспозиции в настройках постпроцесса. Убедитесь, что вы попадаете в объем постпроцесса, либо что он бесконечный (галочка Unbound). Что-то еще узнать по этой теме можно прогуглив “auto exposure unreal engine”.


    Объекты исчезают при отдалении камеры.

    • Проверяем лоды: нужно проверить как выглядит ассет в разных лодах, возможно в одном из них его не видно вовсе. Так же у лодов есть возможность скрывать объект в зависимости от настроек графики (пробить этот вариант можно выставив все пункты скалабилити на эпик).
    • Проверяем дистанцию прорисовки у объектов (кулинг): у одних ассетов на уровне (например, статик или скелетал меши) это настройка draw distance, у других (например, у фолиажа) это cull distance
    • Проверяем материал: ищем в материале все ноды, которые так или иначе могут быть связанны с дистанцией или глубиной пикселей, например функция CameraDepthFade или Distance_Blend или просто Camera Distance в сочетании с Absolute World Position может скрывать объект на определенной дистанции от камеры
    • Баунд боксы: проверяем достаточен ли размер баунд бокса объекта для отображения, можно попробовать сильно увеличить баунд бокс для проверки.


    Импортирую меш, а он раздельными кусками в движке. Как импортировать одним мешем?

    Самым лучшим решением будет объединить меш в любом 3D пакете, но, если такой возможности нет, то в окне импорта нужно поставить галочку Combine Meshes.


    Импортирую меш, а пивот не там, где в 3д пакете.

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


    Можно ли поменять пивот в движке?

    Конечно проще и лучше сделать это изначально в 3D редакторе, но если вам этот способ не подходит, то можно делать так или так.

    А что насчет целых сцен? Как импортировать разом сцену, сохраняя и пивоты объектов и позиции?

    Импорт целых сцен разом — кейс нетривиальный. С дефолтными настройками импорта у вас сохранятся позиции на сцене, но пивотом у всех объектов станет 0.0.0 сцены.


    Если при импорте убрать галочку Transform Vertex to Absolut, то у каждого объекта будут сохранены пивоты, но позиции на сцене не сохранятся.


    Чтобы сохранить и позиции и пивоты объектов, можно импортировать сцену через File — Import Into Level. Пивоты объектов сохранятся, а сами объекты будут расставлены на уровне как в 3D пакете. Так же там есть опция импортировать сразу как отдельную сцену в блюпринт акторе.

    Facebook

    Twitter

    Reddit

    Մեկնաբանություններ: 51

    Подскажите пожалуйста, как перенести все свои работы в блендер, на другой пк (блендер) для дальнейшего редактирования.ПС: я новичок))взяла себе новый ноут ,а как перенести на него свои работы со старого ноута я незнаю….((

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

    Причём тут вообще юнити? Ролик про Юнити? Воды дохера.

    Данные ПК укажите в описании как многие делают

    ептвоюмат пол часа

    Автор большой молодец, что старается делиться информацией, но проблема в том, что она не верная. Неумение работать в blender и с экспортом моделей.

    4 минуты ушло на экспорт

    Я ооочень вам благодарен!! Вы спасли меня. )

    Подходит ли этот же вариант для ue 5 ?

    Так,мне ещё никто не помогал.

    Спасибо за инфу!

    Лайк за забытую галочку анимации. Я так часто делаю. Захожу в меню и постоянно забываю что за галочку хотел там поставить;)

    Покажите как с блендера Мод в спинтаер мудранер экспортировать .

    Я не понимаю, у меня обьект по частям экспортируется.Помогите пожалуйста🥴

    Ну значит ты пытаешься экспортировать группу. Или как-то накосячил)

    А автор любит поболтать аххаа)

    Чисто лайк за слова: "Импортировать куб, который я сделал, который делается очень легко"))) Поняли те, кто хоть раз заходил в blender))) Ахахах

    @Lime ты видел, он куб сам создал

    ахха, точно, лайк за куб, который сам создаётся)))

    Ну вот, я сделал корабль с 2-мя палубами и отверстием для внутренности, после импорта в Анрил, у корабля нет нижней палубы, есть только верхняя, а нижняя просто прозрачная но по ней не хожу, зайти через отверстие не могу, короче просто невидимый куб. Как мне изменить это?? Боже, кто поможет. Выручите!! По гроб буду благодарен!!

    Может с нормалями проблема? Если по-простому: Полигоны имеют две стороны - на которой отображается текстура и есть коллизия (если она настроена), и абсолютно прозрачная обратная сторона. В блендере - выбрать полигон (можно и не один), Alt+N и выбрать Flip. Чтобы увидеть направление нормалей в Блендере есть несколько инструментов. Самый простой: во вкладке Overlays поставить галочку на Face Orientation!

    Нижнюю палубу может не соединили а вот чтобы пройти через отверствия надо зайти в staticMesh вкладка collision нажать на Remove Colision потом вкладка Detalis Collision Complexiti - Project default изминить на UseComplexAsSimple.

    Персонаж классный. А в какой программе вы создали персонажа и анимацию к нему?

    Всё было сделано в программе Blender

    Извеняюсь конечно, но таким способом пользовались оч давно, на данный момент есть плагин Blender Tools и с помощью него можно экспортировать нажатием 2 клавишь

    подскажите, где его скачать?

    Уже давно есть прямой экспорт в один клик

    @Serjeo Sam плагин Blender Tools

    почему может быть так, что пока детали персонажа по-отдельности , анимация работает, а когда объединяю для экспорта, двигаются только кости?

    @Geo Dav хз, я давно учил, не думаю,что долго

    @Boris Blitzkrye долго все это учить?

    @Анастасия Иванова Также есть проблема с костями, судя по описанию, они не присоединены к мешу или же присутствует несколько "главных" костей, каждая из которых хочет по-своему управлять мешем, анриал подобное не поддерживает.

    @Анастасия Иванова перед экспортом модели примени на неё Smooth shading, чтобы регулировать градус сглаживания в панели справа есть перевёрнутый зелёный треугольник,там есть пункт Normals, ставишь галочку после Auto Smooth и выставляешь нужный градус

    @Boris Blitzkrye может быть поможете ,в чем проблема, при экспорте в анрил , последний ругается выдает ошибку :No smoothing group information was found in this FBX scene. Please make sure to enable the 'Export Smoothing Groups' option in the FBX Exporter plug-in before exporting the file. Even for tools that don't support smoothing groups, the FBX Exporter will generate appropriate smoothing data at export-time so that correct vertex normals can be inferred while importing. Get Import Data has failed. Multiple roots are found in the bone hierarchy. We only support single root bone.

    Эти "якорные точки" называются "ирархия" Пригодится в дальнейшем)

    @Michael Campbell я больше скажу, притом я чайник в 3D , пивот можно в анриале переместить, куда угодно и зафиксировать. вот не соврать бы, ну там методом тыка- ctrl+ колёсико мышки на пивоте и можно смещать куда угодно, если нужно пивот зафиксировать, правой кнопкой мышки на объекте, далее ищем строчку Pivot и появится несколько функций, выбираем самую верхнюю, всё , пивот привязан туда, куда нужно)

    1) "ирархия" пишется "иерархия" 2) 5:57 - это pivot point. Из официальной документации: The pivot point (or origin point) indicates the location on a Static Mesh Actor or a Skeletal Mesh Actor that has been defined in the 3D modeling program in which it was created as the object's base for alignment purposes. The pivot point can be in the center of an object, at its base, or even outside it. 3) 9:34 - эта жёлтая точка называется Origin Так где ты увидел иерархию? Возможно мне тоже пригодится в дальнейшем 😄

    Читайте также: