Как мне загрузить статическую сетку из внешней папки?

Я изучаю разработку UE4 C ++, и у меня есть идея, но я не знаю, возможно ли это сделать. У меня есть папка на моем WAMP SERVER для exemplo (C: \ wamp \ www \ staticmesh \ My3DModel.3DS). Моя идея - создать кнопку на моем виджете UE4, и когда она будет нажата, она импортирует мою статическую сетку из моей папки в мою текущую сцену. Возможно ?

OBS: поскольку моя игра будет слишком тяжелой, я подумал, что импортирую статические меши и вставлю сцену в реальном времени, не строя рядом с игрой. Если вы знаете другое решение или какую-либо идею, это будет приветствоваться. **

Кто-нибудь захочет помочь мне шаг за шагом. Как я могу реализовать этот код ниже? Для меня это очень важно, потому что я изучаю UE4 C ++.

// Load Static Mesh From Path 
static FORCEINLINE UStaticMesh* LoadMeshFromPath(const FName& Path)
{
    if(Path == NAME_None) return NULL;
    //~

    return LoadObjFromPath<UStaticMesh>(Path);
}

введите описание изображения здесь

Большое спасибо за любой ответ.


person Desenvolvedor    schedule 26.01.2017    source источник


Ответы (2)


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

Я недавно ответил на то, что я мог бы назвать основной частью вашего вопроса - как перенести сетку с локального диска в ue4 -

https://stackoverflow.com/a/41753091/5196012

Здесь также есть ссылка на вики, откуда, похоже, взят ваш образец кода.

Вам не хватает шаблона, который есть у этого человека в вики.

//TEMPLATE Load Obj From Path
template <typename ObjClass>
static FORCEINLINE ObjClass* LoadObjFromPath(const FName& Path)
{
    if(Path == NAME_None) return NULL;
    //~

      return Cast<ObjClass>(StaticLoadObject( ObjClass::StaticClass(), NULL,*Path.ToString()));
}

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

Все, что вам нужно сделать, это вызвать вашу функцию в событии «при нажатии» кнопки виджета.

person t0b4cc0    schedule 26.01.2017

OBS: поскольку моя игра будет слишком тяжелой, я подумал, что импортирую статические меши и вставлю сцену в реальном времени, не строя рядом с игрой.

Это невозможно. В тот момент, когда вы импортируете статическую сетку, она будет сохранена как файл .uasset в вашей папке содержимого. Насколько велики ваши сетки и насколько мал ваш диск, что вы не можете их импортировать?

Если вы абсолютно не хотите импортировать какие-либо активы, вы можете сгенерировать свои сетки во время выполнения с помощью этого плагина: https://www.unrealengine.com/marketplace/runtime-mesh-component Однако учтите, что при таком подходе вы теряете много дополнительных преимуществ и оптимизаций.

person TheBrain    schedule 26.01.2017
comment
+1 ... UE не может делать такие вещи, как импорт сырых ресурсов меша во время выполнения, процесс преобразования сырых ресурсов в нереальный актив, установка ссылки на актив и, наконец, загрузка его в игру, чрезвычайно сложны. - person Marson Mao; 02.02.2017
comment
Если виджет OP, о котором идет речь, не используется в среде редактора, но я предполагаю, что время выполнения OP относится к времени выполнения игрового процесса. - person Marson Mao; 02.02.2017