Asset Management

Arcware Cloud user portal - Add-ons guide

Note: Asset Management is currently in limited, closed Beta. If you would like to use this feature please contact us.

What is Asset Management?

Asset Management is an Add-On to Arcware Cloud that gives you access to the file server located in the same LAN as the GPU servers running your projects. Typical, intended use-case for that feature would be to load assets that are not part of the UE application (3D models, textures, scenes etc.) dynamically, at runtime, with very high speed. But you are also free to use access to this server for other purposes - there are no artificial limitations from Arcware side.

Main benefits of using Asset Management on Arcware Cloud together with Pixelstreaming applications are:

  • Speed - File server and GPU server running UE projects are on the same LAN.

  • Full control over your files with access through both WebUI and API.

  • Compatibility with Unreal Engine - you can upload or download files from the server directly from UE application, without any middleware.

WebUI

The file server for the Asset Management is located at https://am.arcware.cloud.

If you already have access, you can use your login and password to login to the UI to upload or download files.

Alternatively you can test the UI with the demo account (with read-only access): Login: demo Password: demo

Example: CURL commands

  • Download:

    curl -u <login>:<password> -O https://am.arcware.cloud/<username>/<file.ext>
  • Upload:

    curl -u <login>:<password> -F "file=@<file.ext>" https://am.arcware.cloud/<username>/

Example: Loading glTF assets into Unreal Engine

Installing glTFRuntime plugin

In this example on how to load assets dynamically at runtime using Arcware's Asset Management Server we will use glTFRuntime plugin.

It can be installed quickly via Marketplace, but it requires a fee to do it this way. Alternatively, as it's open-source software, it can be compiled manually from GitHub repository and be used for free.

  1. Create a project with C++ support.

  2. Go to the Latest Releases of the glTFRuntime repository.

  3. Download latest release for your version of Unreal Engine.

  4. Extract the downloaded zip file into Plugin directory in your project. Plugin directory may not exist yet, so if that's the case, create it.

  5. Generate Visual Studio project files by right-clicking on your .uproject file and choosing corresponding action:

  6. Rebuild your project.

  7. In Unreal Editor go to plugins and enable glTFRuntime plugin:

  8. Restart UE and you are done with installation.

Loading 3D model

We start by adding a glTF load asset from url (with progress) action:

This action requires URL (string) and Headers (array) to be provided.

For URL we'll use one of the files on the demo account: https://am.arcware.cloud/demo/bigcity.glb

In Headers we have to provide basic authorization for file server with in a form like this:

  • Key: Authorization

  • Value: Basic [Base64 encoded login:password]

In this case we use demo account with "demo" as password. To use it as authorization header this login and password in form of "demo:demo" have to be encoded in Base64 into a string "ZGVtbzpkZW1v".

Complete authorization header in our case looks like this:

  • Key: Authorization

  • Value: Basic ZGVtbzpkZW1v

To encode your own login and password you can use online tools like https://www.base64encode.org

Example: If your login is "hansolo" and password is "milleniumfalcon", your authorization value from endoding "hansolo:milleniumfalcon" and adding Basic as prefix, would be: "Basic aGFuc29sbzptaWxsZW5pdW1mYWxjb24="

You can add support for Progress event, which will trigger each time a new update to download progress is made. Usually, for bigger files, it would show progress to the user. We’ll skip it here.

Also optionally you can provide Loader Config object if you want to specify general configuration for the loaded models. We’ll skip it here.

Once the download is complete it will trigger the Completed event. There we will use the downloaded asset to spawn new actor on the level.

In this example we use SpawnActor action to spawn asset loaded by the glTF Load Asset from URL action at the position defined by transform.

It’s important to select a proper class of the actor spawning class. There are two to choose from - regular and async one:

glTFRuntimeAssetActor will give you more options to choose from, like ability to filter lights or cameras from the scene you are loading but spawning action will freeze the application for the time it’s required to process all the meshes, textures and shaders. Animations are working out-of-the-box.

glTFRuntimeAssetActorAsync always loads complete scene/model, without any filters possible, but will not freeze the application while loading. Minor stuttering caused by CPU usage spike is still possible, but the app will remain responsive during the load. In this class you have an option to Show While Loading which makes part of the model appear as soon as they are ready. If disabled the whole model will appear at once when everything is loaded completely.

Animations are not playing automatically when loaded from async. Some extra trigger to start them may be required.

File Server technical documentation

As backend for the file server we are using HFS server: https://github.com/rejetto/hfs Documentation: https://rejetto.com/wiki/index.php/HFS_Documentation_%28English%29

Last updated