Can I export a UE4 mesh and then load it at runtime

I’ve been looking at ways to load 3d objects at runtime. I’ve successfully used RunTimeMeshLoader plugin for a VR project that I’m working on, however, I’ve not found any examples for doing this on mobile.

I have a client that is going to have a lot of 3d and I would like to build a CMS to host 3d assets and then dynamically load 3d objects that I’m hosting on a server somewhere.

Would the best solution be to export my 3d messes as .uassets or some other format and then use the following example to somehow load these from the file system after downloading them from the server?

Ultimately I’d like to convert an Obj or FBX into whatever formate that will allow me to dynamically load it on all platforms that I am running the application on, including mobile.

I want to know this too…

Hey, I’m looking into this right now, too. Didn’t find any out-of-the-box answer however…

It seems that RuntimeMeshLoader uses the ThirdParty library assimp, which now also runs on Android and iOS. So maybe we could start from there, trying to modify the plugin to make it work on mobile devices. But having tried to use external libraries on Android before, with UE4, it’s a mess x)

I’m currently trying to get Assimp to work with iOS. I’ve not had any luck. This should be fun to figure out.

Wonder if you have done any exploration into this at all and if you ever got anything working

I managed to get it working on Android.
I just modified the already existing plugin RuntimeMeshLoader, by adding what was needed in RuntimeMeshLoader.Build.cs file. Basically, I downloaded assimp myself (same version the plugin was using, or I upgraded it i don’t remember), adding the android parts of it in the ThirdParty folder. Then I added the Android case in the Build.cs (there was already an MacOS and Windows case) and did what I’ve learnt to import the Android library.

Here is the modified part of Build.cs:

		else if(Target.Platform == UnrealTargetPlatform.Android)
		{
			System.Console.WriteLine("Loading Assimp for Android");
			
			//Add the runtime dependency
			string LibraryPath = Path.Combine(ThirdPartyPath, "assimp/lib/Android/armeabi-v7a");
			PublicAdditionalLibraries.Add(Path.Combine(LibraryPath, "libassimp.so"));
			//LibraryPath = Path.Combine(QRDetectorPath, "Libraries/Android/arm64-v8a");
			//PublicAdditionalLibraries.Add(Path.Combine(LibraryPath, "libQRDetector.so"));
			//RuntimeDependencies.Add(Path.Combine(LibraryPath, "libQRDetector.so"));

			//APL
			string RelAPLPath = Path.Combine(ModuleDirectory, @"..\..\ThirdParty\assimp\Assimp_APL.xml");
			AdditionalPropertiesForReceipt.Add("AndroidPlugin", RelAPLPath);

            isLibrarySupported = true;
        }