Amazon Sumerian is a purely cloud-based tool. Its scenes are intended to be run directly from the cloud. As such, one of the most common questions is: how can I download the scene I created in Amazon Sumerian? You might want to do this to have a backup, to send it to a colleague or to move the scene to another region.
The easiest way to backup your scene is to create a snapshot. This is directly integrated into the main Sumerian editor UI. Select the root node of the scene in the Entities panel. Next, navigate to the “Snapshots” section in the inspector panel.
In this panel, you can create snapshots that are easy to return to later. I’d recommend creating a snapshot before major changes in your app, after finishing vital parts of code, and obviously for every publicly released version.
However, the snapshots are internal to the scene. How to get content from one scene to another?
Re-Using Assets in Multiple Projects
Asset Packs allow sharing content between different scenes. In the “Assets” panel of the editor, you can structure your scene contents into different packs. By default, an imported host is its own pack, for example. But you’re free to create custom packs, which can include assets of any type you like: 3D models, scripts, sounds & more.
Once you have placed all the individual assets you’d like to bring to a second scene into a pack, click on the pack to select it. This brings up four small menu items:
The share button brings up another dialog. In case the button does not show up in the menu, you can alternatively click the “Add to Asset Library” at the bottom of the inspector panel.
Your content might include a multitude of things, but to organize it, it’s often still helpful to choose the main content type. For example, your asset could be a model with a small added script for interactivity. Nevertheless, you might still want to classify it with the “Meshes” category to make it easier to find it again.
Once it has been added, exit from the scene editor back to the Sumerian dashboard.
Amazon Sumerian Projects
In the previous parts of the article series, we have not touched projects so far. These are accessible through the Sumerian dashboard. They allow to combine multiple scenes, assets and templates. By default, everything you create is in a “Draft” project. But it’s easy to create a new project and move content between projects.
Depending on where your scene is located, you can find your exported asset pack in the respective project. Simply navigate to the project, and then select the “Assets” tab.
No matter if you select a scene or an asset pack from your project, you can always delete, move or copy it. This is possible through the inspector panel on the right. Through these features, you can now easily re-use the asset pack in another scene or project. It’s visible through the “Import Assets” button in the top bar of the editor:
Exporting Sumerian Scenes
Yet, all the different options presented so far only work within your own Amazon account. What if you want to create a local backup or share the scene with a colleague?
Even though Amazon is working on it, Sumerian doesn’t support multi-user access to projects yet. But, there is another option. You can download the entire scene as a zip file and share it with others.
I have not found the option in the menu so far. However, the Sumerian Slack channel contained the important hint: press Ctrl + E to bring up the “Export As” dialog in Sumerian. It gives you three options:
Export Sumerian Scene as Bundle
This is probably the most important option for this article. If you choose the “Bundle” button, your whole scene gets exported as a .zip file. It contains several components:
- root.bundle: a JSON file that contains your entire scene configuration. This includes the hierarchy, entity transforms, used components for each entity as well as their settings.
- *.bin: these are the actual assets / 3D models. I didn’t yet find out their exact format, and if there is a way to load the files into a 3D modelling tool. That would be helpful in situations where you’d need to do some minor changes to a model and then re-import it to Sumerian.
- *.png / *.jpg: the textures used by objects, preview thumbnails etc.
You can easily take a look inside the root.bundle file. After formatting it to make it easier to read, you can directly see the entities and their properties:
Re-Importing an Exported Sumerian Bundle
How to load such an exported bundle zip file back into Amazon Sumerian? There doesn’t seem to be a dedicated “Import Scene” button in the dashboard yet. Use the following approach to prepare the scene:
- Create a new Amazon Sumerian scene.
- Delete all the entities that were created by default. You can’t delete the main camera.
- In the assets panel, use the wipe button of the “Default Pack” to remove all assets from your scene that are no longer in use.
Now, your new scene is ready to import the zip bundle file. Use the “Import Assets” button at the top and upload the .zip file through the “Import from Disk” option on the right.
After a few seconds, the scene contents should appear as a new pack in the “Assets” panel. Additionally, the contents of the exported scenes are merged into the “Entities” panel.
This means that you now have two cameras. Set the camera of the imported scene as the “main camera” in the settings of the corresponding “Camera” component in the inspector. Then it’s safe to delete the “old” camera which we were not allowed to delete before.
Unfortunately, this option doesn’t work at the time of writing. I get the error message: Download error – Error: Bundles cannot be generated using this API.
Judging from the name and the error message, I’d assume that this option only downloads the root.bundle file instead of the large zip containing all assets like the “Bundle” option. That’d be handy if you only change a little bit in the config, but don’t want to download 100 mb of scene data again because of that.
This is a very powerful option, especially for more complex scenes. If you export your scene as webpage, you get an offline copy of the scene configuration (the bundle) as well as the 3D models of the assets.
As such, only the latest version of the Amazon Sumerian scripts are loaded from the cloud. The large data files can be hosted offline on your own server. This has a large advantage of speeding up the loading process. Of course , the disadvantage is that you loose the quick update capability where you just need to republish the scene.
Note that viewing the scene on your local computer doesn’t work by just dragging the index.html file into your web browser. As the 3D engine of Sumerian relies heavily on Ajax requests, the web page needs a proper web serer to handle these.
If you don’t want to install a full-blown server on your PC like Apache, Microsoft IIS or nginx, you can go with the Web Server for Chrome. It’s a simple server that works fine with Amazon Sumerian websites. Choose the directory where you extracted the zip file from Sumerian and navigate to the localhost URL.
Private & Embedded Scenes
By default, your scene is public once you publish it. This means that everyone who knows the link to your published scene can view it in the browser. On the one hand side, it’s great: that makes it easy to distribute your scene.
However, this approach is also limited. If you for example want to limit contents to paid users only, you wouldn’t want them to simply directly navigate to your scene URL. After all, URLs are easy to retrieve from web sites, decompiled Android apps or simply by listening to the HTTP commands.
Another risk is the price: you pay for Amazon Sumerian by transferred megabytes. As such, you’ll want to have full control over who can see your scene.
AWS Amplify for Secure Embedding
To support these scenarios, Amazon has recently introduced Amazon Sumerian support into AWS Amplify. Amplify is essentially a framework and toolset to integrate AWS cloud services into websites and mobile apps. Compared to Node.js, Amplify is a client-first framework. This means that you directly build iOS, Android, Web or React Native apps. In case you go for web apps, Amplify deeply integrates with React, Ionic, Angular and Vue.js.
Note that you can’t privately host a scene if you already published it publicly. However, in the “Publish” dialog in the top right corner, you can un-publish your scene with one click. This re-enables private hosting:
After this step, you can configure the scene and add scene authentication. Amplify contains a good step-by-step guide for how to set up your client.