├── .github └── PULL_REQUEST_TEMPLATE.md ├── CONTRIBUTING.md ├── LICENSE ├── LICENSE-SAMPLECODE ├── LICENSE-SUMMARY ├── README.md ├── doc-source ├── amazon-sumerian.md ├── assets-artools.md ├── assets-hosts.md ├── assets-media.md ├── assets-models.md ├── assets-packs.md ├── assets-skybox.md ├── assets-templates.md ├── assets-vrtools.md ├── dashboard-assets.md ├── dashboard-locks.md ├── dashboard-projects.md ├── dashboard-scenes.md ├── dashboard-templates.md ├── dashboard-trash.md ├── editor-assetlib.md ├── editor-assets.md ├── editor-canvas.md ├── editor-entities.md ├── editor-inspector.md ├── editor-publish.md ├── editor-shortcuts.md ├── editor-tools.md ├── entities-2dgraphics.md ├── entities-animation.md ├── entities-camera.md ├── entities-collider.md ├── entities-dialogue.md ├── entities-geometry.md ├── entities-hmdcamera.md ├── entities-host.md ├── entities-html.md ├── entities-light.md ├── entities-material.md ├── entities-particlesystem.md ├── entities-rigidbody.md ├── entities-script.md ├── entities-sound.md ├── entities-speech.md ├── entities-statemachine.md ├── entities-timeline.md ├── entities-transform.md ├── entities-vrcamerarig.md ├── entities-vrcontroller.md ├── gettingstarted-robin.md ├── gettingstarted-showcase.md ├── gettingstarted-tutorial.md ├── index.md ├── scene-aws.md ├── scene-document.md ├── scene-environment.md ├── scene-posteffects.md ├── scene-scenesize.md ├── scene-scenestats.md ├── scene-snapshots.md ├── scripting-builtins.md ├── scripting-context.md ├── scripting-debugging.md ├── scripting-dependencies.md ├── scripting-parameters.md ├── statemachines-animation.md ├── statemachines-attributes.md ├── statemachines-audio.md ├── statemachines-aws.md ├── statemachines-controls.md ├── statemachines-effects.md ├── statemachines-materials.md ├── statemachines-physics.md ├── statemachines-scripting.md ├── sumerian-assets.md ├── sumerian-concepts.md ├── sumerian-dashboard.md ├── sumerian-editor.md ├── sumerian-entities.md ├── sumerian-gettingstarted.md ├── sumerian-permissions.md ├── sumerian-scene.md ├── sumerian-scripting.md ├── sumerian-statemachines.md ├── sumerian-troubleshooting.md ├── sumerian-usecases.md └── troubleshooting-profiling.md ├── models └── american-robin.fbx └── scripts ├── README.md ├── add-quad.js ├── add-skybox.js ├── add-sphere.js ├── bot-selector.js ├── create-speech-action.js ├── download-lists.js ├── hide-entity-action.js └── random-speech.js /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | *Issue #, if available:* 2 | 3 | *Description of changes:* 4 | 5 | 6 | By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. 7 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Guidelines for contributing 2 | 3 | Thank you for your interest in contributing to AWS documentation! We greatly value feedback and contributions from our community. 4 | 5 | Please read through this document before you submit any pull requests or issues. It will help us work together more effectively. 6 | 7 | ## What to expect when you contribute 8 | 9 | When you submit a pull request, our team is notified and will respond as quickly as we can. We'll do our best to work with you to ensure that your pull request adheres to our style and standards. If we merge your pull request, we might make additional edits later for style or clarity. 10 | 11 | The AWS documentation source files on GitHub aren't published directly to the official documentation website. If we merge your pull request, we'll publish your changes to the documentation website as soon as we can, but they won't appear immediately or automatically. 12 | 13 | We look forward to receiving your pull requests for: 14 | 15 | * New content you'd like to contribute (such as new code samples or tutorials) 16 | * Inaccuracies in the content 17 | * Information gaps in the content that need more detail to be complete 18 | * Typos or grammatical errors 19 | * Suggested rewrites that improve clarity and reduce confusion 20 | 21 | **Note:** We all write differently, and you might not like how we've written or organized something currently. We want that feedback. But please be sure that your request for a rewrite is supported by the previous criteria. If it isn't, we might decline to merge it. 22 | 23 | ## How to contribute 24 | 25 | To contribute, send us a pull request. For small changes, such as fixing a typo or adding a link, you can use the [GitHub Edit Button](https://blog.github.com/2011-04-26-forking-with-the-edit-button/). For larger changes: 26 | 27 | 1. [Fork the repository](https://help.github.com/articles/fork-a-repo/). 28 | 2. In your fork, make your change in a branch that's based on this repo's **master** branch. 29 | 3. Commit the change to your fork, using a clear and descriptive commit message. 30 | 4. [Create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/), answering any questions in the pull request form. 31 | 32 | Before you send us a pull request, please be sure that: 33 | 34 | 1. You're working from the latest source on the **master** branch. 35 | 2. You check [existing open](https://github.com/awsdocs/amazon-sumerian-user-guide/pulls), and [recently closed](https://github.com/awsdocs/amazon-sumerian-user-guide/pulls?q=is%3Apr+is%3Aclosed), pull requests to be sure that someone else hasn't already addressed the problem. 36 | 3. You [create an issue](https://github.com/awsdocs/amazon-sumerian-user-guide/issues/new) before working on a contribution that will take a significant amount of your time. 37 | 38 | For contributions that will take a significant amount of time, [open a new issue](https://github.com/awsdocs/amazon-sumerian-user-guide/issues/new) to pitch your idea before you get started. Explain the problem and describe the content you want to see added to the documentation. Let us know if you'll write it yourself or if you'd like us to help. We'll discuss your proposal with you and let you know whether we're likely to accept it. We don't want you to spend a lot of time on a contribution that might be outside the scope of the documentation or that's already in the works. 39 | 40 | ## Finding contributions to work on 41 | 42 | If you'd like to contribute, but don't have a project in mind, look at the [open issues](https://github.com/awsdocs/amazon-sumerian-user-guide/issues) in this repository for some ideas. Any issues with the [help wanted](https://github.com/awsdocs/amazon-sumerian-user-guide/labels/help%20wanted) or [enhancement](https://github.com/awsdocs/amazon-sumerian-user-guide/labels/enhancement) labels are a great place to start. 43 | 44 | In addition to written content, we really appreciate new examples and code samples for our documentation, such as examples for different platforms or environments, and code samples in additional languages. 45 | 46 | ## Code of conduct 47 | 48 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). For more information, see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. 49 | 50 | ## Security issue notifications 51 | 52 | If you discover a potential security issue, please notify AWS Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public issue on GitHub. 53 | 54 | ## Licensing 55 | 56 | See the [LICENSE](https://github.com/awsdocs/amazon-sumerian-user-guide/blob/master/LICENSE) file for this project's licensing. We will ask you to confirm the licensing of your contribution. We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes. 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Attribution-ShareAlike 4.0 International Public License 2 | 3 | By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. 4 | 5 | Section 1 – Definitions. 6 | 7 | a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. 8 | 9 | b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. 10 | 11 | c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. 12 | 13 | d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. 14 | 15 | e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. 16 | 17 | f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. 18 | 19 | g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. 20 | 21 | h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. 22 | 23 | i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. 24 | 25 | j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. 26 | 27 | k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. 28 | 29 | l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. 30 | 31 | m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. 32 | 33 | Section 2 – Scope. 34 | 35 | a. License grant. 36 | 37 | 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: 38 | 39 | A. reproduce and Share the Licensed Material, in whole or in part; and 40 | 41 | B. produce, reproduce, and Share Adapted Material. 42 | 43 | 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. 44 | 45 | 3. Term. The term of this Public License is specified in Section 6(a). 46 | 47 | 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. 48 | 49 | 5. Downstream recipients. 50 | 51 | A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. 52 | 53 | B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. 54 | 55 | C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. 56 | 57 | 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). 58 | 59 | b. Other rights. 60 | 61 | 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. 62 | 63 | 2. Patent and trademark rights are not licensed under this Public License. 64 | 65 | 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. 66 | 67 | Section 3 – License Conditions. 68 | 69 | Your exercise of the Licensed Rights is expressly made subject to the following conditions. 70 | 71 | a. Attribution. 72 | 73 | 1. If You Share the Licensed Material (including in modified form), You must: 74 | 75 | A. retain the following if it is supplied by the Licensor with the Licensed Material: 76 | 77 | i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); 78 | 79 | ii. a copyright notice; 80 | 81 | iii. a notice that refers to this Public License; 82 | 83 | iv. a notice that refers to the disclaimer of warranties; 84 | 85 | v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; 86 | 87 | B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and 88 | 89 | C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. 90 | 91 | 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. 92 | 93 | 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. 94 | 95 | b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. 96 | 97 | 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. 98 | 99 | 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. 100 | 101 | 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. 102 | 103 | Section 4 – Sui Generis Database Rights. 104 | 105 | Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: 106 | 107 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; 108 | 109 | b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and 110 | 111 | c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. 112 | For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. 113 | 114 | Section 5 – Disclaimer of Warranties and Limitation of Liability. 115 | 116 | a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. 117 | 118 | b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. 119 | 120 | c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. 121 | 122 | Section 6 – Term and Termination. 123 | 124 | a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. 125 | 126 | b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 127 | 128 | 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or 129 | 130 | 2. upon express reinstatement by the Licensor. 131 | 132 | c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. 133 | 134 | d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. 135 | 136 | e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. 137 | 138 | Section 7 – Other Terms and Conditions. 139 | 140 | a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. 141 | 142 | b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. 143 | 144 | Section 8 – Interpretation. 145 | 146 | a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. 147 | 148 | b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. 149 | 150 | c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. 151 | 152 | d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. 153 | -------------------------------------------------------------------------------- /LICENSE-SAMPLECODE: -------------------------------------------------------------------------------- 1 | Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this 4 | software and associated documentation files (the "Software"), to deal in the Software 5 | without restriction, including without limitation the rights to use, copy, modify, 6 | merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 7 | permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 10 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 11 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 12 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 13 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 14 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | -------------------------------------------------------------------------------- /LICENSE-SUMMARY: -------------------------------------------------------------------------------- 1 | Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | The documentation is made available under the Creative Commons Attribution-ShareAlike 4.0 International License. See the LICENSE file. 4 | 5 | The sample code within this documentation is made available under a modified MIT license. See the LICENSE-SAMPLECODE file. 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Amazon Sumerian User Guide 2 | 3 | The open source version of the Amazon Sumerian User Guide 4 | 5 | ## License Summary 6 | 7 | The documentation is made available under the Creative Commons Attribution-ShareAlike 4.0 International License. See the LICENSE file. 8 | 9 | The sample code within this documentation is made available under a modified MIT license. See the LICENSE-SAMPLECODE file. 10 | -------------------------------------------------------------------------------- /doc-source/amazon-sumerian.md: -------------------------------------------------------------------------------- 1 | # What Is Amazon Sumerian? 2 | 3 | Amazon Sumerian is a set of tools for creating high\-quality virtual reality \(VR\) experiences on the web\. With Sumerian, you can construct an interactive 3D scene without any programming experience, test it in the browser, and publish it as a website that is immediately available to users\. 4 | 5 | Use the Sumerian library of assets or bring your own\. When you import 3D models, Sumerian converts and optimizes them automatically\. Sumerian also has a library of primitive shapes, 3D models, hosts, textures, and scripts\. 6 | 7 | **Note** 8 | New to 3D, VR, animation, and scripting? The [Sumerian website](https://docs.sumerian.amazonaws.com/) has a ton of helpful tutorials for every level of experience\. 9 | 10 | The Sumerian 3D engine provides a library for advanced scripting with JavaScript, but you don't have to be a programmer to create interactive VR\! Use the built\-in state machine to animate objects and respond to user actions like clicks and movement\. 11 | 12 | When you're ready to share your work with the world, you can publish it directly to Amazon CloudFront as a static website that can be viewed with a [WebVR](https://webvr.info/)\-compatible browser and headset\. -------------------------------------------------------------------------------- /doc-source/assets-artools.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Augmented Reality Tools 2 | 3 | Sumerian provides a template, assets, and sample projects that you can use to develop augmented reality \(AR\) applications for iOS and Android devices\. 4 | 5 | The **Augmented Reality** scene template is available in the [dashboard](sumerian-dashboard.md)\. Use it as a starting point for your augmented reality scene\. 6 | 7 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/templates-ar.png) 8 | 9 | The scene includes the following resources: 10 | + **AR Camera** – The main camera, with a script that maps it to the device's camera\. 11 | + **AR Camera Control** – A script that uses the Sumerian engine [AR System](https://content.sumerian.amazonaws.com/engine/latest/docs/ArSystem.html) to access the device's augmented reality API\. You can view this script in the text editor\. 12 | + **ARAnchor** – An empty entity that the AR app uses to anchor objects in the scene to the real world\. 13 | 14 | You can construct an AR scene from this template by adding models and making them children of the **ARAnchor** entity\. Publish the scene, and then use the sample AR Kit project to build an app that uses it\. 15 | 16 | **Topics** 17 | + [Android Sample Project](#assets-artools-android) 18 | + [iOS Sample Project](#assets-artools-ios) 19 | 20 | ## Android Sample Project 21 | 22 | The sample project, [amazon\-sumerian\-arcore\-starter\-app](https://github.com/aws-samples/amazon-sumerian-arcore-starter-app), is an Android Studio project with an ARCore app that loads a scene created with the AR template\. Replace the [scene URL in the view controller](https://github.com/aws-samples/amazon-sumerian-arcore-starter-app/blob/master/SumerianARCoreStarter/app/src/main/java/com/amazon/sumerianarcorestarter/MainActivity.java#L41) with the URL of your published scene, build the app, and then run it on a compatible Android device to see it in action\. 23 | 24 | See the [Augmented Reality Using Sumerian and ARCore](https://docs.sumerian.amazonaws.com/tutorials/create/intermediate/augmented-reality-using-sumerian-arcore/) tutorial to explore how to use these assets\. 25 | 26 | ## iOS Sample Project 27 | 28 | The sample project, [amazon\-sumerian\-arkit\-starter\-app](https://github.com/aws-samples/amazon-sumerian-arkit-starter-app), is an XCode project with a Swift app that loads a scene created with the AR template\. Replace the [scene URL in the view controller](https://github.com/aws-samples/amazon-sumerian-arkit-starter-app/blob/master/SumerianARKitStarter/ViewController.swift#L20) with the URL of your published scene, build the app, and then run it on a compatible iOS device to see it in action\. 29 | 30 | See the [Augmented Reality Using Sumerian and ARKit](https://docs.sumerian.amazonaws.com/tutorials/create/intermediate/augmented-reality-using-sumerian-arkit/) tutorial to explore how to use these assets\. -------------------------------------------------------------------------------- /doc-source/assets-hosts.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Hosts 2 | 3 | A host is an asset provided by Sumerian that has built in animation, speech, and behavior for interacting with users\. Use hosts to engage users in conversation and convey information\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/hosts.png) 6 | 7 | **To add a host to your scene** 8 | 9 | 1. Open a scene in the Sumerian editor\. 10 | 11 | 1. Choose **Import assets**\. 12 | 13 | 1. Choose one of the following hosts: 14 | + **Cristine** 15 | + **Preston** 16 | + **Luke** 17 | 18 | 1. Choose **Add**\. 19 | 20 | 1. Drag the host entity from the assets panel onto the canvas\. 21 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-host.png) 22 | 23 | All of a host's meshes, materials, animations, and scripts are bundled into a single entity with three configurable components: 24 | + **[Transform](entities-transform.md)** – The host's location relative to the scene or its parent entity\. 25 | + **[Host](entities-host.md)** – Animation and behavior settings\. 26 | + **[Speech](entities-speech.md)** – Text\-to\-speech capability with Amazon Polly\. 27 | 28 | Models and animations for hosts are locked\. You cannot modify or extend them\. -------------------------------------------------------------------------------- /doc-source/assets-media.md: -------------------------------------------------------------------------------- 1 | # Media 2 | 3 | You can import media files into Sumerian to use as textures, audio, or text objects\. Sumerian supports the following file formats\. 4 | 5 | **Textures up to 10 MB** 6 | + CRN 7 | + DDS 8 | + JPG, JPEG 9 | + PNG 10 | + SVG 11 | + TGA 12 | + MP4 13 | + OGV 14 | + WEBM 15 | 16 | **Audio up to 10 MB** 17 | + OGG 18 | + MP3 19 | + WAVE, WAV 20 | 21 | **Text up to 1 MB** 22 | + JS 23 | + JSON 24 | 25 | You can combine multiple asset files into a ZIP archive up to 200 MB in size, as long as each file meets the size requirement for its type when decompressed\. -------------------------------------------------------------------------------- /doc-source/assets-models.md: -------------------------------------------------------------------------------- 1 | # Models 2 | 3 | Drop a model file on the assets panel to import it\. When you import a model, Sumerian converts it into an asset pack that contains the model's meshes, skeletons, materials, and textures\. Meshes are triangulated automatically during import\. The process can take some time, depending on the model size and format\. 4 | 5 | You can import models up to 50 MB in size in the following formats\. 6 | 7 | **File Formats** 8 | + **FilmBox** – `.fbx` 9 | 10 | [ www\.autodesk\.com/products/fbx/overview ](http://www.autodesk.com/products/fbx/overview) 11 | + **Wavefront OBJ** – `.obj` 12 | 13 | [ en\.wikipedia\.org/wiki/Wavefront\_\.obj\_file ](http://en.wikipedia.org/wiki/Wavefront_.obj_file) 14 | 15 | After the model is imported, drop the model entity from the asset pack onto the canvas\. This adds one or more entities to the scene in a hierarchy based on the imported file\. At a minimum, the entity has transform, geometry, and material components\. If you import a model that has a skeleton and animations, you also get an animation component\. The skeleton and polygon mesh are attached to the geometry component, and textures are attached to the material component\. 16 | 17 | To optimize the model importing process, remove unneeded data by deleting the object history and freezing transformations in your modeling tool\. If you can, avoid using geometric transformations\. If your model has skeleton animations, bake them during export and avoid using constraints\. 18 | 19 | The Sumerian engine supports the following model features\. 20 | 21 | **Model Features** 22 | + **Vertex colors** – Per\-vertex colors or per\-face\-vertex colors are supported\. 23 | 24 | When the mesh data contains vertex colors, a slider is available on the mesh's material panel under the diffuse channel\. You can use the slider to blend between the set diffuse map or color and the vertex color\. 25 | + **UV maps** – If two are available, you can use the second one, for example, for light maps or ambient occlusion maps\. 26 | 27 | In the editor, you are able to apply these textures on the ambient channel in the material panel\. 28 | + **Tangents** – If no tangent data is provided, it is generated during the conversion\. 29 | + **Normals** – If no normal data is provided, interpolated normals are generated during the conversion\. 30 | + **Rig** – An animation rig or armature in an FBX file is imported as a skeleton asset\. Each vertex can have up to 4 weights\. If more are present, the lower valued weights are removed\. Minimize the number of joints to improve performance\. 31 | + **Animations** – Animation takes in an FBX file are imported as clips attached to an animation asset\. See [Amazon Sumerian Animation Component](entities-animation.md) for more information\. 32 | + **Textures** – When exporting to the FBX binary format, you can embed textures into the resulting file\. -------------------------------------------------------------------------------- /doc-source/assets-packs.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Asset Packs 2 | 3 | You can organize your assets and share them between scenes by creating a *pack*\. Create a pack in the assets panel and move or copy assets into it\. 4 | 5 | Packs support the following actions: 6 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-add.png) – Create a new asset in the pack\. 7 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-assetlib.png) – Export the pack to the asset library\. 8 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-cleanup.png) – Delete any assets in the pack that are not used in the scene\. 9 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-trash.png) – Delete the asset pack\. 10 | 11 | Exporting a pack adds it to the project that you choose\. If you don't have a project yet, [create one in the dashboard](dashboard-projects.md)\. You can then use the dashboard to [copy or move the pack](dashboard-assets.md) to a different scene or project\. Exported packs are not tied to the in\-scene pack or its assets\. 12 | 13 | **To add an asset to a pack and export it** 14 | 15 | 1. Open a scene in the Sumerian editor\. 16 | 17 | 1. Under **Assets**, choose **Create pack**\. 18 | 19 | 1. Choose the pack and modify the name, description, tags, and custom attributes in the inspector panel\. 20 | 21 | 1. Drag an asset from the default pack into the custom pack\. 22 | 23 | **or** 24 | 25 | Duplicate the item by selecting it and then clicking the duplicate icon\. Drag the duplicate into the custom pack\. 26 | 27 | 1. Select the custom pack, and then click the asset library icon ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-assetlib.png), or choose **Add to asset library** in the inspector panel\. 28 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-pack-export.png) 29 | 30 | 1. Choose an [asset type](sumerian-assets.md) for the asset pack\. 31 | 32 | 1. Choose **Add to asset library**\. 33 | 34 | 1. Choose a project, and then choose **Select**\. -------------------------------------------------------------------------------- /doc-source/assets-skybox.md: -------------------------------------------------------------------------------- 1 | # Skybox 2 | 3 | A skybox is a texture that you apply to the background of a scene to show the sky, space, or an enclosing structure\. A skybox can be a single texture that wraps onto a sphere, or six textures that wrap onto a cube\. Add a skybox to your scene in the scene's [environment settings](scene-environment.md)\. 4 | 5 | **To create a skybox** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Click the plus icon next to the default pack\. To see the icon, select the pack name\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-bin-add.png) 11 | 12 | 1. Choose **Skybox**\. 13 | 14 | 1. Choose the shape of the skybox\. 15 | 16 | **Skybox Shapes** 17 | + **Box** – Six square images that map onto a cube \(cube map\)\. 18 | + **Sphere** – A single rectangular image that maps onto a sphere \(equirectangular projection\)\. 19 | 20 | 1. Drop a texture asset or image file on each section of the skybox\. 21 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-skybox-textures.png) 22 | 23 | 1. Choose the root node in the **Entities** panel\. 24 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 25 | 26 | 1. Choose **Environment**\. 27 | 28 | 1. Drop the skybox asset from the assets panel onto the **Skybox** field\. 29 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/) -------------------------------------------------------------------------------- /doc-source/assets-templates.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Scene Templates 2 | 3 | Sumerian provides scene templates that you can use as a starting point for your scene\. 4 | 5 | **Sumerian Scene Templates** 6 | + **Augmented reality** – Template for creating augmented reality \(AR\) scenes with a companion sample app\. See [Amazon Sumerian Augmented Reality Tools](assets-artools.md) for more information\. 7 | + **Default lighting** – An empty scene with a skysphere and three directional lights\. This template is used in the [interface tutorial](https://docs.sumerian.amazonaws.com/tutorials/create/getting-started/sumerian-interface/)\. 8 | + **Speech & gestures** – Scene with a [Sumerian host](assets-hosts.md) configured to use speech with a state machine\. 9 | 10 | Choose any of these templates in the [dashboard](sumerian-dashboard.md) to create a draft scene\. -------------------------------------------------------------------------------- /doc-source/assets-vrtools.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Virtual Reality Tools 2 | 3 | Sumerian provides a pack of virtual reality \(VR\)\-related assets to make it easy to enable VR in your scene\. The asset pack includes a VR camera that lets the user enter VR mode, and VR controllers for interacting with the environment\. 4 | 5 | **Supported VR Headsets** 6 | + Oculus Rift 7 | + Oculus Go 8 | + HTC Vive 9 | + HTC Vive Pro 10 | + Lenovo Mirage Solo 11 | + Samsung Gear VR 12 | + Google Daydream 13 | 14 | **To enable VR in your scene** 15 | 16 | 1. Open a scene in the Sumerian editor\. 17 | 18 | 1. Choose **Import assets**\. 19 | 20 | 1. Choose **CoreVR**, and then choose **Add**\. 21 | 22 | 1. When the asset pack finishes loading, drag the **VRCameraRig** entity onto the canvas to add it to your scene\. 23 | 24 | 1. Choose the **VRCameraRig** entity\. 25 | 26 | 1. Choose the **VRCameraRig** component\. 27 | 28 | 1. Choose the **Current VR camera rig** option to enable the rig\. 29 | 30 | When a user enters VR mode with a headset and controllers attached, the [HMD camera](entities-hmdcamera.md) tracks the headset, and the [VR controllers](entities-vrcontroller.md) track the controllers in 3D space\. The [VR camera rig](entities-vrcamerarig.md) manages the other entities and enables the VR mode button in the scene\. 31 | 32 | Only the controllers of the type attached are rendered in the scene, so you can leave all of the included entities attached to support both types\. You can also replace the included controller models with your own\. 33 | 34 | See [Getting Started with VR](https://docs.sumerian.amazonaws.com/tutorials/create/beginner/getting-started-vr/) for a tutorial that uses these assets\. -------------------------------------------------------------------------------- /doc-source/dashboard-assets.md: -------------------------------------------------------------------------------- 1 | # Asset Packs 2 | 3 | The **Assets** page for a project shows asset packs that have been exported from a scene\. 4 | 5 | In the dashboard, you can change the name and description of a pack, and copy or move it to another project\. 6 | 7 | **To manage an asset pack** 8 | 9 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 10 | 11 | 1. Choose a project\. 12 | 13 | 1. Choose **Assets**\. 14 | 15 | 1. Choose an asset pack\. 16 | 17 | 1. Under **Asset details**, use one of the following options\. 18 | + **Thumbnail** – Choose **Browse** to upload a thumbnail image\. 19 | + **Name** – Change the asset pack name\. 20 | + **Description** – Change the asset pack description\. 21 | + **Tags** – Add tags to the asset pack for use with filters\. 22 | + **Actions** 23 | + **Move** – Move the asset pack to a different project\. 24 | + **Copy** – Copy the asset pack to a different project\. 25 | + **Delete** – Send the asset pack to the **Trash** 26 | 27 | Additional options for asset packs are available in the [Sumerian editor](assets-packs.md)\. -------------------------------------------------------------------------------- /doc-source/dashboard-locks.md: -------------------------------------------------------------------------------- 1 | # Locks 2 | 3 | The Amazon Sumerian editor uses locks to control modifications to a scene\. When you open a scene, the editor creates a lock on the scene and refreshes it periodically\. If you try to open the scene in a different browser while the lock is active, you will see an error\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/dashboard-lock.png) 6 | 7 | You can force Sumerian to discard the lock if you are sure that no one else is working on the scene, or create a copy of the scene and work on that\. -------------------------------------------------------------------------------- /doc-source/dashboard-projects.md: -------------------------------------------------------------------------------- 1 | # Projects 2 | 3 | Projects collect the scenes that you are working on\. You can create up to 1,000 projects per region\. 4 | 5 | **To create a project** 6 | 7 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 8 | 9 | 1. Choose **Projects**\. 10 | 11 | 1. Choose **New project**\. 12 | 13 | 1. Enter a project name and choose **Create**\. 14 | 15 | Once you have a project, you can use the dashboard to make a copy or delete it\. 16 | 17 | **To manage a project** 18 | 19 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 20 | 21 | 1. Choose a project\. 22 | 23 | 1. Under **Project details**, use one of the following options\. 24 | + **Thumbnail** – Choose **Browse** to upload a thumbnail image\. 25 | + **Name** – Change the project name\. 26 | + **Description** – Change the project description\. 27 | + **Actions** – **Move** or **Copy** the project\. **Delete** the project to send it to the **Trash**\. 28 | + **Published URLs** – Choose **View URL List** to get links to all of the project's scenes that have been published in Amazon CloudFront\. -------------------------------------------------------------------------------- /doc-source/dashboard-scenes.md: -------------------------------------------------------------------------------- 1 | # Scenes 2 | 3 | A scene is a 3D space that you manage in the dashboard and work on in the Sumerian editor\. Sumerian provides several templates that you can use as a starting point\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/) 6 | 7 | Scenes can be drafts, or part of a project\. You can create up to 10,000 scenes per region\. 8 | 9 | **To create a scene** 10 | 11 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 12 | 13 | 1. Choose the location to create the scene\. 14 | + **Home** – Create a draft scene\. 15 | + **Drafts** – Create a draft scene\. 16 | + **Project** – Create a scene in one of your projects\. 17 | 18 | 1. Choose **Create scene**\. 19 | 20 | 1. \(optional\) Choose a [template](dashboard-templates.md)\. 21 | 22 | 1. Enter a scene name and choose **Create**\. 23 | 24 | When you create a scene, it opens in the [Sumerian editor](sumerian-editor.md) for immediate use\. Once you have a scene, you can use the dashboard to make a copy or delete it\. Choose the Sumerian icon in the upper left corner to leave the scene and return to the dashboard\. 25 | 26 | **To manage a scene** 27 | 28 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 29 | 30 | 1. Locate your scene under **Recent scenes**, **Drafts**, or a project\. 31 | 32 | 1. Choose the scene by clicking its thumbnail\. 33 | **Note** 34 | If you click on the name of the scene or double\-click the thumbnail, the scene opens in the Sumerian editor\. 35 | 36 | 1. Under **Scene details**, use one of the following options\. 37 | + **Thumbnail** – Choose **Browse** to upload a thumbnail image\. 38 | + **Name** – Change the scene name\. 39 | + **Description** – Change the scene description\. 40 | + **Tags** – Add tags to the scene for use with filters\. 41 | + **Actions** 42 | + **Open** – Open the scene in the Sumerian editor\. 43 | + **View published** – \(public scenes\) Open the published version of the scene hosted in Amazon CloudFront\. 44 | + **Download Amplify JSON** – \([private scenes](editor-publish.md)\) Download the Amplify configuration file\. 45 | + **Move** – Move the scene to a different project\. 46 | + **Copy** – Copy the scene to a different project\. 47 | + **Duplicate** – Create a copy of the scene in the same project\. 48 | + **Delete** – Send the scene to the **Trash** 49 | 50 | Additional options for scenes are available in the Sumerian editor [scene settings](sumerian-scene.md)\. -------------------------------------------------------------------------------- /doc-source/dashboard-templates.md: -------------------------------------------------------------------------------- 1 | # Templates 2 | 3 | Templates are scenes that have been exported from a project for use as a starting point for other scenes\. In addition to the templates provided by Sumerian, the dashboard lets you manage templates that you have exported from a scene\. 4 | 5 | You can use the dashboard to create a scene from a template, or move or copy templates between scenes\. Sumerian also provides a library of templates\. 6 | 7 | **To create a scene from a template** 8 | 9 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 10 | 11 | 1. Choose **Create new scene**\. 12 | 13 | 1. Choose one of the **Sumerian Templates**, or choose **My templates** to use a template from one of your projects\. 14 | 15 | 1. Enter a name for your scene and choose **Create**\. 16 | 17 | Create templates from your scenes from the [scene settings section](sumerian-scene.md) in the Sumerian editor\. You can then copy your templates to other projects from the **Templates** section of the scene's project page in the dashboard\. 18 | 19 | **To manage a template** 20 | 21 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 22 | 23 | 1. Choose a project\. 24 | 25 | 1. Choose **Templates**\. 26 | 27 | 1. Choose a template\. 28 | 29 | 1. Under **Template details**, use one of the following options\. 30 | + **Thumbnail** – Choose **Browse** to upload a thumbnail image\. 31 | + **Name** – Change the template name\. 32 | + **Description** – Change the template description\. 33 | + **Tags** – Add tags to the template for use with filters\. 34 | + **Actions** 35 | + **Move** – Move the template to a different project\. 36 | + **Copy** – Copy the template to a different project\. 37 | + **Delete** – Send the template to the **Trash** -------------------------------------------------------------------------------- /doc-source/dashboard-trash.md: -------------------------------------------------------------------------------- 1 | # Trash 2 | 3 | When you delete a scene, project, template, or asset pack, Amazon Sumerian moves it to the trash\. Items in the trash are retained indefinitely and you can restore them at any time\. 4 | 5 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/dashboard-trash.png) 6 | 7 | You use the trash menu to restore deleted items or delete them permanently\. 8 | 9 | **To restore a deleted item** 10 | 11 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 12 | 13 | 1. Choose **Trash**\. 14 | 15 | 1. Choose an item, and then choose **Restore**\. 16 | 17 | Restored items are returned to their original project\. 18 | 19 | To avoid paying storage costs for deleted items, delete them permanently\. 20 | 21 | **To delete items permanently** 22 | 23 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 24 | 25 | 1. Choose **Trash**\. 26 | 27 | 1. Choose an item, and then choose **Delete**\. 28 | 29 | *or* 30 | 31 | Choose **Empty trash**\. 32 | 33 | 1. Choose **Delete**\. -------------------------------------------------------------------------------- /doc-source/editor-assetlib.md: -------------------------------------------------------------------------------- 1 | # Importing Assets From the Asset Library in the Amazon Sumerian Editor 2 | 3 | You can use the Sumerian editor's asset library to import assets from the Sumerian library, your local machine, or from [asset packs](assets-packs.md) that you export from a scene\. 4 | 5 | **To import assets** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose **Import assets**\. 10 | 11 | 1. Choose an [asset type](sumerian-assets.md) to filter the available assets by type\. 12 | 13 | 1. Choose an asset pack, and then choose **Add** to add it to your scene's assets\. 14 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assetlib.png) 15 | 16 | 1. After the editor finishes importing the asset pack, drag an entity that it contains from the [assets panel](editor-assets.md) onto the canvas to add it to your scene\. 17 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assetlib-dropentity.png) -------------------------------------------------------------------------------- /doc-source/editor-assets.md: -------------------------------------------------------------------------------- 1 | # Using the Assets Panel in the Amazon Sumerian Editor 2 | 3 | The assets panel shows all assets that belong to the scene\. Assets are portable versions of entities or entity components\. You can create them from external files or from entities that you create within the editor\. 4 | 5 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-panel.png) 6 | 7 | To create an asset, drop a file from your machine, or an entity from the entities panel, onto the assets panel\. Depending on the type of file, you may be able to split the file into multiple assets\. 8 | 9 | For more information, see [Amazon Sumerian Assets](sumerian-assets.md)\. -------------------------------------------------------------------------------- /doc-source/editor-canvas.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Editor Canvas 2 | 3 | The WebGL\-rendered viewport is located in the center of the Sumerian editor\. Here you can navigate, inspect, and preview the contents of your scene\. 4 | 5 | The menu bar at the top of the canvas has options for camera, playback, and rendering\. Many of the buttons also have equivalent [keyboard commands](editor-shortcuts.md)\. 6 | 7 | **Canvas Menu** 8 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-canvas-bar.png) 9 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-paneltog.png) – Hide or show side panels\. 10 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-translate.png) – Change the transform handles to translate mode\. 11 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-rotate.png) – Change the transform handles to rotation mode\. 12 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-scale.png) – Change the transform handles to scale mode\. 13 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-globalspace.png) – Switch between relative and absolute positioning\. 14 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-playback.png) – Preview the rendered scene in the canvas\. 15 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-rendering.png) – Choose the render mode for the canvas\. 16 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-skybox.png) – Show or hide the [skybox](assets-skybox.md) texture\. 17 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-grid.png) – Show or hide the grid\. 18 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-posteffects.png) – Show or hide post effects\. 19 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-camera.png) – View the scene with a preset camera\. 20 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-frameentity.png) – Fill the canvas with the selected entity\. 21 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-frameall.png) – Fill the canvas with all entities in the scene\. 22 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-fullscreen.png) – Fill the screen with the canvas\. -------------------------------------------------------------------------------- /doc-source/editor-entities.md: -------------------------------------------------------------------------------- 1 | # Using the Entities Panel in the Amazon Sumerian Editor 2 | 3 | The entities panel shows you a scene's entities in a hierarchy, starting with the scene itself\. An entity can be a child of the scene or of another entity\. When you choose the scene in the entities panel, the [inspector panel](editor-inspector.md) shows the scene's settings\. When you choose an entity, the inspector panel shows the entity's components\. 4 | 5 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 6 | 7 | Organize your entities by their physical or logical relationship to other entities\. An entity's position, rotation, and scale are relative to its parent\. When you move the parent, the child moves as well\. To change an entity's parent, drag it onto the new parent in the entities panel\. 8 | 9 | **Entities panel controls** 10 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-collapse.png) – Collapse the entity to hide its children in the entities panel\. 11 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-hide.png) – Hide or show an entity in the canvas\. 12 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-duplicate.png) – Duplicate an entity\. 13 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-trash.png) – Delete an entity\. 14 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-undo.png) – Undo or redo changes\. 15 | 16 | Double click an entity's name to rename it\. Double click the entity's icon to frame it in the canvas\. -------------------------------------------------------------------------------- /doc-source/editor-inspector.md: -------------------------------------------------------------------------------- 1 | # Using the Inspector Panel in the Amazon Sumerian Editor 2 | 3 | Use the inspector panel to manage scene settings, entities, and assets\. When you select any of these elements in the Sumerian editor, you get the following properties in a section named after the element\. 4 | 5 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 6 | 7 | **Generic properties** 8 | + **Thumbnail** – The thumbnail image for the element\. Drop an image onto the thumbnail field or pause your mouse over it\. Then choose **Take screenshot** to save an image of the current view of the canvas\. 9 | + **Name** – The name of the element\. 10 | + **ID** \(read\-only\) – A unique identifier for the element\. 11 | + **Type** \(read\-only\) – The type of element: scene, entity, or an [asset type](sumerian-assets.md)\. 12 | + **Description** – Description of the element\. 13 | + **Tags** – Key\-only metadata that you can use in scripting\. You can read tags or search for entities with specific tags by using the [context object](scripting-context.md)\. 14 | + **Custom attributes** – Key\-value metadata that you can use in scripting\. You can read attributes by using the [context object](scripting-context.md)\. 15 | 16 | When you choose the scene in the [entities panel](sumerian-entities.md), or click the scene's background in the canvas, the inspector panel shows several additional sections for settings that apply to the entire scene\. These include environmental settings, post\-processing effects, and AWS SDK credentials\. See [Amazon Sumerian Scene Settings](sumerian-scene.md) for more information\. 17 | 18 | When you choose an entity in the entities panel, or click it in the canvas, the inspector panel shows a section for each component on the entity\. At a minimum, every entity has a transform component that determines its location, rotation, and size\. Entities you create by dropping assets onto the scene have additional components based on their type\. You can add components to any entity in the inspector panel by choosing **Add component** at the bottom of the panel\. See [Amazon Sumerian Entities](sumerian-entities.md) for more information\. 19 | 20 | When you choose an asset in the [assets panel](editor-assets.md), the inspector panel shows sections for only components that apply to every instance of the asset in the scene\. For example, a script asset only has code, but a script component on an entity can have parameters that customize that instance of the script\. A material asset, however, has all of the [material component](entities-material.md) properties\. Modifying any of these properties changes every instance of the material in the scene\. -------------------------------------------------------------------------------- /doc-source/editor-publish.md: -------------------------------------------------------------------------------- 1 | # Publishing Scenes in the Amazon Sumerian Editor 2 | 3 | Publish your Amazon Sumerian scene to share it with users on the internet\. When you publish a scene, Sumerian creates a static website with your scene and hosts it on Amazon CloudFront\. You can link users directly to the scene, or embed it in a frame in your website\. 4 | 5 | You can also deploy a scene for use with AWS Amplify\. When you choose a private deployment, Sumerian generates a configuration file that you can load into your web app to embed a scene that can only be accessed with credentials from Amazon Cognito\. 6 | 7 | **To publish a scene** 8 | 9 | 1. Open your scene in the Sumerian editor\. 10 | 11 | 1. Choose **Publish**\. 12 | 13 | 1. Choose **Create public link** or **Host privately**\. 14 | 15 | 1. Choose **Publish**\. 16 | 17 | For a public scene, open the URL to view it\. This URL is publicly hosted with Amazon CloudFront and can be viewed by anyone\. 18 | 19 | For a private scene, load the configuration file into your Amplify app with the XR module\. For more information, see [AWS Amplify](https://aws-amplify.github.io/amplify-js/media/xr_guide)\. 20 | 21 | With Amplify, access to your scene is granted to users who log in with Amazon Cognito\. For details about adding permissions to your app's identity pool, see [Restricting Access to a Published Scene](sumerian-permissions.md#permissions-amplify)\. -------------------------------------------------------------------------------- /doc-source/editor-shortcuts.md: -------------------------------------------------------------------------------- 1 | # Keyboard and Mouse Controls for the Amazon Sumerian Editor 2 | 3 | The default camera that Sumerian adds to every scene supports mouse controls for pan, zoom, and orbiting around the camera's anchor point\. To move the camera, press and hold a mouse button while you move the mouse\. If you only have one mouse button, you can use a keyboard key plus mouse button combination to perform the same movements\. 4 | 5 | **Camera Movement** 6 | + **Zoom in or out** – Mouse wheel scroll up or down 7 | + **Pan** – Mouse wheel button, or ShiftLeft mouse button 8 | + **Orbit** – Right mouse button, or AltLeft mouse button 9 | 10 | The Sumerian editor provides keyboard equivalents of most of the [canvas menu buttons](editor-canvas.md)\. Use the bottom row of keys to switch between preset camera views, and the F key to fill the canvas with a single entity\. The space bar hides the side panels to let the canvas fill the screen\. 11 | 12 | **Camera** 13 | + **Frame entity** – F 14 | + **Frame all** – ShiftF 15 | + **Bottom and top views** – V 16 | + **Back and front views** – C 17 | + **Left and right views** – X 18 | + **Editor camera view** – Z 19 | + **Show and hide side bars** – Space 20 | 21 | Select entities by clicking them in either the editor or the **Entities** panel\. With an entity selected, use the following commands to speed up editing\. 22 | 23 | **Editing** 24 | + **Delete entity** – Backspace or Delete 25 | + **Duplicate entity** – Ctrl D 26 | + **Translate handles** – W 27 | + **Rotation handles** – E 28 | + **Scale handles** – R 29 | + **Switch between global and relative transform** – G 30 | + **Undo** – Ctrl Z 31 | + **Redo** – Ctrl Shift Z 32 | 33 | Use the following commands to open the text editor, timeline editor, and publishing menu\. 34 | 35 | **Tools** 36 | + **Text editor** – J 37 | + **Timeline** – T 38 | + **Publish** – Ctrl Shift P 39 | 40 | With the timeline open, use the following commands to adjust keyframes and playheads\. 41 | 42 | **Timeline** 43 | + **Move keyframe left** – Left \(fast\), Ctrl Left \(slow\) 44 | + **Move keyframe right** – Right \(fast\), Ctrl Right \(slow\) 45 | + **Move playhead left** – Shift Left \(fast\), Ctrl Shift Left \(slow\) 46 | + **Move playhead right** – Shift Right \(fast\), Ctrl Shift Right \(slow\) 47 | + **Align keyframe left** – Ctrl Alt 1 48 | + **Align keyframe center** – Ctrl Alt 2 49 | + **Align keyframe right** – Ctrl Alt 3 50 | + **Move keyframe to start** – Home 51 | + **Move keyframe to end** – End -------------------------------------------------------------------------------- /doc-source/editor-tools.md: -------------------------------------------------------------------------------- 1 | # Using the Tools in the Amazon Sumerian Editor 2 | 3 | The Sumerian editor has three tool panels for working with complex assets and components: 4 | + The **text** editor provides an interface for authoring scripts, JSON documents, and speech files\. 5 | + The **timeline** editor animates entities between keyframes\. 6 | + The **state machine** editor lets you visually construct and connect state machine behaviors and actions\. 7 | 8 | ## Text Editor 9 | 10 | The text editor lets you view and modify all text assets in the scene, including scripts, JSON documents, and speech files\. 11 | 12 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/tools-texteditor.png) 13 | 14 | To use the text editor, choose **Tools**, **Text editor**\. Or press the J key\. 15 | 16 | The **Documents** panel lists the text assets in your scene\. Click one to open it in a tab\. To rename an asset, highlight it and click the pencil icon\. 17 | 18 | When you open a script, the **External Resources** panel appears\. You can use this panel to import librariesfrom the internet that your script depends on\. See [External Dependencies](scripting-dependencies.md) for more information\. 19 | 20 | ## State Machine Editor 21 | 22 | The state machine editor provides a visual representation of the actions and behaviors attached to a [state machine component](entities-statemachine.md)\. 23 | 24 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/tools-statemachine.png) 25 | 26 | To use the state machine editor, click the pencil icon next to a behavior in the assets panel or on a state machine component\. 27 | 28 | The state machine editor shows a box for each behavior\. Each box has a stack of actions, listed in the order that they execute\. When an action transitions to another behavior, an arrow connects the action to the target behavior\. Click an action and drag the cursor to a behavior to create a transition between the two\. 29 | 30 | For more information, see [Amazon Sumerian State Machines](sumerian-statemachines.md)\. 31 | 32 | ## Timeline 33 | 34 | Use timelines to move, rotate, or change the scale of entities over time\. You can set the start and end values of these properties, and add keyframes to control the speed or direction of the animation along the way\. The timeline can also emit custom events, which can be consumed from a state machine or script\. 35 | 36 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/tools-timeline.png) 37 | 38 | For more information, see [Amazon Sumerian Timeline Component](entities-timeline.md)\. -------------------------------------------------------------------------------- /doc-source/entities-2dgraphics.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian 2D Graphics Component 2 | 3 | A two\-dimensional image or video\. 4 | 5 | **Properties** 6 | + **Tint** – The tint color\. 7 | + **Emissiveness** – The emissiveness of the image\. 8 | + **Opacity** – The opacity of the image\. 9 | + **Reflection** – The reflectivity of the image\. -------------------------------------------------------------------------------- /doc-source/entities-animation.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Animation Component 2 | 3 | You can use the animation component to manage the animations attached to an entity\. The animation component organizes animations into layers of animation states\. Each state refers to a clip in the **Assets** panel and contains additional configuration options\. 4 | 5 | When you import a 3D model that has animations, Amazon Sumerian splits it into separate assets for the model, skeleton, and the animation clips that it includes\. The entity that represents the model in the scene uses an animation component to organize and configure the clips\. For an example, see [Working with a Sample Model](gettingstarted-robin.md)\. 6 | 7 | The animation **State** contains information about an animation, such as how many times it should loop, how fast it should run, and if it has any transition\. If there's no transition for an animation state, the default transitions at the bottom of the list are used\. If you want to switch between animation states, but want the transition between them to be smooth, add a **Transition**\. 8 | 9 | **Transitions** 10 | + **Fade** – A transition that blends over a given time from one animation state to another, beginning with the target clip from local time 0 at the start of the transition\. This is best used with two clips that have similar motions\. 11 | + **SyncFade** – A transition that blends over a given time from one animation state to another, synchronizing the target state to the initial state's start time\. This is best used with two clips that have similar motions\. 12 | + **Frozen** – A two\-state transition that freezes the starting state at its current position and blends that over time with a target state\. The target state moves forward in time during the blend as normal\. 13 | 14 | As long as the skeleton matches, you can import additional or updated animations to an entity without replacing the model\. Drop your model file onto the **Drop animation state file here** field in an animation layer to add the clips from the file to the layer\. To replace a single animation, select the clip in the **Assets** panel and drag the model file onto the **Drop file to replace clip** field\. -------------------------------------------------------------------------------- /doc-source/entities-camera.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Camera Component 2 | 3 | The camera component turns any entity into a camera\. 4 | 5 | **Properties** 6 | + **Main camera** – Use this camera at the beginning of the scene\. If you have multiple cameras, you can switch between them during both edit and playback modes\. 7 | + **Follow editor camera** – Set the camera position with the editor camera\. This is useful when switching between edit and play modes\. 8 | + **Projection** – Control how the camera projects the 3D world on the 2D canvas\. 9 | + **Field of view \(FOV\)** – Set the number of degrees from left to right that the camera spans\. 10 | + **Clipping planes** – Set the distance from the camera at which objects are drawn\. 11 | 12 | New scenes include a default camera that follows the position of the editor camera\. When you play the scene, the view matches what you last saw in the editor\. To fix the starting position of the camera during playback, clear the **Follow editor camera** check box\. Zoom out to see the default camera and its viewing frustrum, which you can adjust with the field of view and clipping settings\. 13 | 14 | To add a camera to your scene, choose one of the standard camera types from the [Create entity](sumerian-entities.md) menu, or add a camera component to any entity\. 15 | 16 | **Standard Cameras** 17 | + **2D cam** – A parallel projection camera with pan and zoom controls\. 18 | + Middle mouse – Pan\. 19 | + Mouse wheel – Zoom\. 20 | + **Fixed cam** – A perspective camera with no built\-in controls\. 21 | + **Fly cam** – A perspective camera with mouse and keyboard controls\. 22 | + Left mouse – Look around\. 23 | + W, A, S, D – Move forward, left, backward, and right\. Hold Shift to move slowly\. 24 | + **Orbit cam** – A perspective camera with orbit, pan, and zoom controls\. 25 | + Middle mouse – Pan\. 26 | + Right mouse – Orbit\. 27 | + Mouse wheel – Zoom\. 28 | 29 | Add or customize camera controls with the [built\-in camera scripts](scripting-builtins.md)\. Parameters on the scripts, which are also used by the standard camera types, let you customize the camera's controls and behavior\. 30 | 31 | To manage cameras during playback, use a state machine or script\. 32 | 33 | **Topics** 34 | + [State Machine](#entities-camera-statemachine) 35 | + [Script](#entities-dialogue-script) 36 | 37 | ## State Machine 38 | 39 | To manage cameras, add a [state machine](entities-statemachine.md) to any entity in your scene\. Use actions to change the active camera in response to user input\. 40 | 41 | **Example States for camera control** 42 | + **Ready** – 4 **Key pressed** actions listen for number keys and transition to the next state\. 43 | + **Cam 1** through **Cam 4** – **Switch camera** changes the active camera\. **Transition** returns to the ready state\. 44 | 45 | ![\[State machine behavior for camera controls.\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-camera-statemachine.png) 46 | 47 | For more information, see [Audio and Camera State Machine Actions in Amazon Sumerian](statemachines-audio.md)\. 48 | 49 | ## Script 50 | 51 | You can use a script to change the active camera during playback by sending the `sumerian.setCurrentCamera` message on the system bus\. 52 | 53 | The following example adds controls to switch between four fixed cameras\. Each camera entity has a script that stores its ID in the context object during setup\. 54 | 55 | **Example Scene** 56 | Use the buttons to switch between cameras\. 57 | 58 | **Example Camera Script** 59 | 60 | ``` 61 | 'use strict'; 62 | function setup(args, ctx) { 63 | ctx.worldData.camera1id = ctx.entity.id; 64 | } 65 | ``` 66 | 67 | Buttons defined in an HTML component on another entity define the controls\. 68 | 69 | **Example Button HTML** 70 | 71 | ``` 72 | 88 |
94 | ``` 95 | 96 | The script on the buttons' entity adds a listener to each button with a function to change the camera\. 97 | 98 | **Example Button Script** 99 | 100 | ``` 101 | 'use strict'; 102 | 103 | function setup(args, ctx) { 104 | ctx.entityData.changeCamera = function(event){ 105 | var camera = event.target.getAttribute("camera"); 106 | var cameraEntity = null; 107 | switch(camera) { 108 | case "1": 109 | cameraEntity = ctx.world.entityManager.getEntityById(ctx.worldData.camera1id); 110 | break; 111 | case "2": 112 | cameraEntity = ctx.world.entityManager.getEntityById(ctx.worldData.camera2id); 113 | break; 114 | case "3": 115 | cameraEntity = ctx.world.entityManager.getEntityById(ctx.worldData.camera3id); 116 | break; 117 | case "4": 118 | cameraEntity = ctx.world.entityManager.getEntityById(ctx.worldData.camera4id); 119 | break; 120 | default: 121 | cameraEntity = ctx.world.entityManager.getEntityById(ctx.worldData.camera3id); 122 | } 123 | if (cameraEntity && cameraEntity.cameraComponent) { 124 | sumerian.SystemBus.emit('sumerian.setCurrentCamera', { 125 | camera: cameraEntity.cameraComponent.camera, 126 | entity: cameraEntity, 127 | }); 128 | } 129 | }; 130 | document.getElementById("button1").addEventListener('click', ctx.entityData.changeCamera); 131 | document.getElementById("button2").addEventListener('click', ctx.entityData.changeCamera); 132 | document.getElementById("button3").addEventListener('click', ctx.entityData.changeCamera); 133 | document.getElementById("button4").addEventListener('click', ctx.entityData.changeCamera); 134 | document.getElementById("button1").addEventListener('touchstart', ctx.entityData.changeCamera); 135 | document.getElementById("button2").addEventListener('touchstart', ctx.entityData.changeCamera); 136 | document.getElementById("button3").addEventListener('touchstart', ctx.entityData.changeCamera); 137 | document.getElementById("button4").addEventListener('touchstart', ctx.entityData.changeCamera); 138 | } 139 | ``` -------------------------------------------------------------------------------- /doc-source/entities-collider.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Collider Component 2 | 3 | The collider component adds collision geometry to the entity\. If used together with a rigid body component, you can create a dynamic, colliding entity\. If the collider doesn't have any rigid body component, it becomes a static collision geometry in the physics world\. We call this a *static collider*\. 4 | 5 | If the entity with a collider or any of its parents has a dynamic rigid body component, it will turn into a *dynamic collider*\. If the entity with a collider or any of its parents has a kinematic rigid body component, it will turn into a *kinematic collider*\. 6 | 7 | The collider shapes are rendered with a green wireframe\. 8 | 9 | **Properties** 10 | + **Shape** – The shape of the collider\. 11 | + Box 12 | + Sphere 13 | + Plane 14 | + Infinite plane 15 | + **Trigger** – 16 | 17 | If the collider is not a trigger, it emits these events during collisions: 18 | + sumerian\.physics\.beginContact 19 | + sumerian\.physics\.duringContact 20 | + sumerian\.physics\.endContact 21 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-collider-triggers.png) 22 | 23 | If the collider is a trigger, it will *not* collide with other physics objects\. However, it will emit events when a physics object enters it\. Available events are: 24 | + sumerian\.physics\.triggerEnter 25 | + sumerian\.physics\.triggerStay 26 | + sumerian\.physics\.triggerLeave 27 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-collider-triggerevents.png) 28 | + **Friction** – `0` Means no friction\. The final friction \(and restitution\) value used in a collision is computed using multiplication\. For example, a sphere with friction=0\.5 that collides with a plane with friction=0\.5 will get a friction value of 0\.25\. 29 | + **Restitution** – How much the collider should bounce\. `0` is no bounce and `1` is maximum bounce\. If you set restitution to a number larger than one, it gains more and more energy for each bounce\. 30 | + **Half extents** – The collider's half extents on the X, Y, and Z axises\. -------------------------------------------------------------------------------- /doc-source/entities-dialogue.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Dialogue Component 2 | 3 | The dialogue component assigns an Amazon Lex chatbot to an entity\. You can use this component to enable a [host](entities-host.md) or other entity to converse with a user and collect information\. 4 | 5 | To use Amazon Lex during playback, the scene needs AWS credentials from Amazon Cognito Identity\. [Create an identity pool](sumerian-permissions.md) for your scene, and configure it under [AWS configuration](scene-aws.md) in the scene settings\. 6 | 7 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-dialogue.png) 8 | 9 | **Properties** 10 | + **Name** – The name of the Amazon Lex bot\. 11 | + **Alias** – The alias that you choose when you publish the bot\. 12 | 13 | To trigger dialogue during playback, use a state machine or script component on the same entity\. 14 | 15 | ## State Machine 16 | 17 | To use an Amazon Lex bot, add a [state machine](entities-statemachine.md) to an entity with dialogue and [speech](entities-speech.md) components\. Use actions to capture audio or text, send it to Amazon Lex for processing, play the response, and wait for additional input\. 18 | 19 | **Example States for text input** 20 | + **Initialize** – **AWS SDK ready** waits for the AWS SDK for JavaScript to retrieve credentials from your Amazon Cognito identity pool\. 21 | + **Collect text** – A **Get HTML text** action that retrieves the contents of the `input` element in an HTML component\. 22 | + **Entity** – An HTML element with an `input` element\. 23 | + **HTML element selector** – The ID of the `input` element\. For example, **\#myTagId**\. 24 | + **Send to bot** – **Send text input to dialogue bot** sends the text from the previous state to your Amazon Lex bot and relays the response to the next state\. 25 | 26 | Transition **On response ready** to `Play response`, and **On processing error** to `Collect text`\. 27 | + **Play response** – **Start speech** plays the response from Amazon Lex\. Transition to `Collect text`\. 28 | + **Use Lex response** – Enabled\. 29 | 30 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-dialogue-state-text.png) 31 | 32 | **Example States for audio input** 33 | + **Initialize** – **AWS SDK ready** waits for the AWS SDK for JavaScript to retrieve credentials from your Amazon Cognito identity pool\. 34 | + **Record \(1\)** – **Key down** waits for the user to press a key\. 35 | + **Record \(2\)** – **Start microphone recording** records audio and **Key up** waits for the user to release the key\. 36 | + **Record \(3\)** – **Stop microphone recording** completes the audio recording and passes it to the next state\. 37 | + **Send to bot** – **Send audio input to dialogue bot** sends the audio from the previous state to an Amazon Lex bot\. 38 | + **Play response** – **Start speech** plays the audio response from the previous state\. Transition to **Wait**\. 39 | 40 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-dialogue-state-audio.png) 41 | 42 | For more information, see [AWS Feature State Machine Actions in Amazon Sumerian](statemachines-aws.md)\. 43 | 44 | ## Script 45 | 46 | You can use a script to update the configuration of an entity's dialogue component in response to user input\. The following example adds a listener to two buttons to change the active bot when a button is clicked\. 47 | 48 | **Example Script – Add Event Listener to Buttons** 49 | + **Entity** – Host or other entity with a dialogue component\. 50 | 51 | ``` 52 | 'use strict'; 53 | 54 | function setup(args, ctx) { 55 | ctx.entityData.changeBot = function(event){ 56 | var name = event.target.getAttribute("botname"); 57 | var alias = event.target.getAttribute("botalias"); 58 | ctx.entity.dialogueComponent.updateConfig({name: name, alias: alias}) 59 | }; 60 | document.getElementById("bot1button").addEventListener('click', ctx.entityData.changeBot); 61 | document.getElementById("bot2button").addEventListener('click', ctx.entityData.changeBot); 62 | } 63 | ``` 64 | 65 | **Example HTML 3D component – Buttons** 66 | 67 | ``` 68 | 83 | 84 | 85 | 86 | ``` -------------------------------------------------------------------------------- /doc-source/entities-geometry.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Geometry Component 2 | 3 | The geometry component contains a renderable mesh or primitive on the entity\. When you import a 3D model, or create a primitive from the **Create entity** menu, it always gets a geometry component\. 4 | 5 | Together with a material component, you can render the entity\. If you don't have a material component, the geometry is invisible\. 6 | 7 | The panel looks different for different kinds of meshes and primitives, but in general, they have these settings: 8 | 9 | **Properties** 10 | + Cast shadows 11 | + Receive shadows 12 | + Dimensions and/or number of samples \(primitives only\) -------------------------------------------------------------------------------- /doc-source/entities-hmdcamera.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian HMD Camera Component 2 | 3 | The HMD camera component represents a head mounted display \(HMD\) in a VR camera rig\. When you attach an entity with an HMD camera component to a VR camera rig, users can use a VR headset to view the scene in VR mode\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-hmd.png) 6 | 7 | **Properties** 8 | + **Position tracking** – Set to **Disabled** to lock the camera's position, and only track the display's rotation\. 9 | 10 | See [Amazon Sumerian VR Camera Rig Component](entities-vrcamerarig.md) for more information\. -------------------------------------------------------------------------------- /doc-source/entities-host.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Host Component 2 | 3 | A host is an asset provided by Sumerian that has built in animation, speech, and behavior for interacting with users\. Add a host to your scene from the [asset library](editor-assetlib.md)\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/hosts.png) 6 | 7 | When you add a host to your scene, it includes a **Host** component for configuring the host's behavior, and a [**speech** component](entities-speech.md) that you can use to configure the host's voice and script\. 8 | 9 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-host.png) 10 | 11 | **Properties** 12 | + **Point of interest** – Set to **Look at entity** to keep the host's eyes trained on a camera, object, or other entity during playback\. 13 | + **Target entity** – Drop an entity here to set it as the host's point of interest\. 14 | + **Lip sync** – Play lip sync animations during speech\. 15 | + **Gestures** – Play gesture animations during speech\. 16 | + **Gesture hold time** – Set the number of seconds to play a gesture animation\. 17 | + **Minimum gesture period** – Set the number of seconds to wait after a gesture is complete before another gesture can occur\. -------------------------------------------------------------------------------- /doc-source/entities-html.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian HTML Components 2 | 3 | You can use the Amazon Sumerian HTML components to quickly add text and images to your scene\. The **HTML** component overlays a 2D window that maintains the same orientation \(camera facing\) at all times\. The **HTML 3D** component is a 3D object within the scene and can be viewed from different angles as the camera moves around it\. 4 | 5 | **Note** 6 | HTML 3D works well in 2D scenes and in VR with some limitations\. HTML 2D doesn't work in VR, and appears as a black box in VR mode\. Scene contents between an entity with an HTML 3D component and the camera are rendered normally\. However, nothing behind an HTML 3D component is visible, so HTML components should not use transparency\. 7 | 8 | You can use style attributes on your HTML elements, or include a separate `style` tag that defines styles\. 9 | 10 | ## HTML 2D Component 11 | 12 | The HTML component adds a 2D HTML document \(a `div`\) to the scene, and you can edit its content in the text editor\. You can position the document using the entity transform, or use CSS to position it relative to the viewport\. 13 | 14 | **Properties** 15 | + **Move with transform** – Position the HTML document within the scene using the transform component on the same entity\. The document is always the same size and faces the camera, but can move relative to the camera\. To position the HTML content relative to the viewport, deselect this option and set positioning with a style attribute\. 16 | + **Pixel perfect** – When positioning with the entity transform, snap the HTML window to the closest pixel position\. 17 | + **Attributes** – Add HTML attributes to the bounding `div` tag\. For example, you can add a style attribute to position the HTML content onscreen\. 18 | 19 | ![\[HTML component configuration\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-html.png) 20 | 21 | Choose the **Open in editor** button to open the HTML document in the text editor\. 22 | 23 | **Example Video Window** 24 | 25 | **HTML properties** 26 | + **Attributes** – **style**: **position:absolute;right:50px;bottom:50px** 27 | 28 | ``` 29 | 30 | ``` 31 | 32 | ![\[Example HTML 3D video window\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-html-videowindow.png) 33 | 34 | ## HTML 3D Component 35 | 36 | The HTML 3D component adds a screen\-like element to an entity that you can position in the scene\. You set the size of the screen by using the X and Y scale on the transform component\. The width and height properties determine how much content \(in pixels\) fits in that space\. 37 | 38 | **Properties** 39 | + **Width** – The width of the HTML content, in pixels\. The height of the content is determined by the entity's Y scale\. 40 | 41 | **Example Movie Screen** 42 | 43 | **Transform** 44 | + **Translation** – X: 1, Y: 5, Z: \-20 45 | + **Scale** – X: 16, Y: 9, Z: 1 46 | 47 | **HTML 3D properties** 48 | + **Width** – 1920\. Height is automatically set to 1080 \( 1920 \* 9 / 16 \)\. 49 | 50 | ``` 51 | 52 | ``` 53 | 54 | ![\[Example HTML 3D movie screen\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-html3d-moviescreen.png) 55 | 56 | In the rendered scene, your HTML content is placed within a div with a white background that is transformed with CSS 3D\. You can't modify style or other attributes on the div directly\. To ensure that your content fills the component, place it within a div with height and width set to 100%\. 57 | 58 | In VR mode, HTML 3D components are rendered at a very low frame rate\. It isn't suited for video, or any content that is updated frequently or in response to user input\. For more information, see [Understanding Amazon Sumerian's HTML 3D Component](https://docs.sumerian.amazonaws.com/articles/html3d/) on the Sumerian website\. 59 | 60 | ## Using HTML Components with Scripts 61 | 62 | You can interact with content in HTML components by using standard JavaScript and HTML DOM events\. 63 | 64 | The following example HTML and script add buttons that the user can click to change the active Amazon Lex chatbot on a host with a [dialogue component](entities-dialogue.md)\. 65 | 66 | **Example HTML 3D component – Buttons** 67 | 68 | ``` 69 | 84 | 85 | 86 | 87 | ``` 88 | 89 | **Example Script – Add Event Listener to Buttons** 90 | + **Entity** – Host or other entity with a dialogue component\. 91 | 92 | ``` 93 | 'use strict'; 94 | 95 | function setup(args, ctx) { 96 | ctx.entityData.changeBot = function(event){ 97 | var name = event.target.getAttribute("botname"); 98 | var alias = event.target.getAttribute("botalias"); 99 | ctx.entity.dialogueComponent.updateConfig({name: name, alias: alias}) 100 | }; 101 | document.getElementById("bot1button").addEventListener('click', ctx.entityData.changeBot); 102 | document.getElementById("bot2button").addEventListener('click', ctx.entityData.changeBot); 103 | } 104 | ``` -------------------------------------------------------------------------------- /doc-source/entities-light.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Light Component 2 | 3 | The light component adds a light source to the entity\. 4 | 5 | **Properties** 6 | + **Type** 7 | + **Point** – Emit light in all directions from a point in space, like a flame\. 8 | + **Directional** – Emit light uniformly over the entire scene, like the sun\. 9 | + **Spot** – Emit light in a cone, like a spotlight\. 10 | + **Color** – The color of the light\. 11 | + **Intensity** – The intensity of the light \(typically between 0 and 1\)\. 12 | + **Specular** – The intensity of the specular light \(typically between 0 and 1\)\. 13 | + **Range** \(point and spot\) – 14 | + **Cone angle** \(spot\) – The angle of the cone at the light source, in degrees\. 15 | + **Penumbra** \(spot\) – The intensity of the light near the edges of the cone\. 16 | + **Projection** \(directional and spot\) – Upload a texture to apply to the light\. 17 | + **Shadows** \(directional and spot\) – Cast shadows from objects that the light hits\. -------------------------------------------------------------------------------- /doc-source/entities-material.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Material Component 2 | 3 | When you add a 3D model to your environment, it has at least two components\. The [geometry component](entities-geometry.md) defines the shape of the model\. The material component defines its textures and rendering properties\. 4 | 5 | **Properties** 6 | + **Diffuse color** – The base color of the surface\. 7 | + **Color** – The base diffuse color\. 8 | + **Texture** – The diffuse color from a texture\. 9 | + **Normal** – A type of bump map\. Normal maps are a special kind of texture that you use to add surface detail such as bumps, grooves, and scratches to a model\. These details catch the light as if they are represented by real geometry\. 10 | 11 | You set the normal map via the **Texture** input, and you can alter its magnitude by setting the **Strength** value\. 12 | + **Specular** – Specular effects, which are essentially the direct reflections of light sources in your scene\. These typically show up as bright highlights or shininess on the surface of objects \(although specular highlights can be subtle or diffuse, too\)\. 13 | 14 | You can set the base specularity **Color**, use a **Texture**, and set the **shininess** value\. 15 | + **Emissive** – The self\-illumination color of an object\. You can set the emissive color by using the **Color** input and/or by using a **Texture**\. 16 | + **Ambient** – The color of an object where it is in shadow\. This color is what the object reflects when illuminated by ambient light instead of direct light\. 17 | + **Color** The base ambient color\. 18 | + **Texture** Ambient map that identifies areas on a mesh that are exposed or hidden from ambient lighting\. 19 | + **Opacity** – Used with transparency blending\. You can use **Strength** to input a value between 0 and 1, where 0\.0 represents completely transparent and 1\.0 represents fully opaque\. 20 | + **Threshold** – Used to indicate when a surface is completely transparent, and can be discarded from rendering\. 21 | + **Dual transparency** – Render both front and back surfaces of the material\. 22 | + **Reflectivity** – Reflectivity settings for the material\. 23 | + **Texture** – Reflectivity texture\. 24 | + **Environment** – Environment map that you see in the reflection\. If not selected, the current skybox is used\. 25 | + **Amount** – Amount of reflectivity to use\. 26 | + **Fresnel** – A nonzero fresnel value results in less reflection, depending on the normal direction\. 27 | + **Refractivity** – Refraction input\. Takes in a texture or value that simulates the surface's index of refraction\. This is useful for things like glass and water, which refract light that passes through them\. The environment texture is used for the refraction\. 28 | + **Amount** – How much refraction to blend with the current color\. 29 | + **Refraction** – Ratio of the refractive indices involved in the refraction\. 30 | + **Blending** – Blending mode to use for the material\. 31 | + **NoBlending** 32 | + **TransparencyBlending** 33 | + **CustomBlending** 34 | + **AdditiveBlending** 35 | + **SubtractiveBlending** 36 | + **MultiplyBlending** 37 | + **Culling** – Whether to cull on the triangle level, and which face \(back, front, both\) to cull\. 38 | + **Depth** – Whether to enable depth testing or depth writing, and which **RenderQueue** value to use\. 39 | + **Shading** 40 | + **Flat** – Turn on flat shading for the mesh\. 41 | + **Wireframe** – Render the mesh in wireframe mode\. 42 | + **Wrap factor** – The light wrap factor\. 43 | + **Wrap amount** – The light wrap amount\. 44 | 45 | **Note** 46 | You can share material assets between entities\. If a material asset is shared, changing the look of one entity also changes the ones that are sharing the material\. -------------------------------------------------------------------------------- /doc-source/entities-particlesystem.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Particle System Component 2 | 3 | The particle system component simulates fluid entities such as liquids, clouds, and flames by generating and animating large numbers of small 2D images in the scene\. 4 | 5 | **Properties** 6 | + **General** – The basic behavior of the particle emitter\. 7 | + **Auto play** – Start the emission animation when the scene starts\. 8 | + **Loop** – Loop the animation\. 9 | + **Duration** – Duration of the animation in seconds\. 10 | + **Prewarm** – Load the effect prior to playback\. 11 | + **Max particles** – Limit the number of visible particles\. 12 | + **Gravity** – Vector of the gravity force that applies to particles\. 13 | + **Seed** – Randomization seed\. Experiment with values to find a look that you like, or set to `-1` to get a different effect each time\. 14 | + **Local space simulation** – Set to true to simulate the particle system within the boundaries of the parent entity, instead of in the entire scene\. 15 | + **Emitter shape** – The shape and size of the emitter\. Additional settings are specific to each shape\. 16 | 17 | **Box** 18 | + **Random direction** – Emit each particle in a random direction\. 19 | + **Box extents** – The height, width, and length of the emitter\. 20 | 21 | **Sphere** 22 | + **Radius** – The size of the emitter\. 23 | + **Emit from shell** – Emit particles from the outside edge of the emitter\. 24 | + **Random direction** – Emit each particle in a random direction\. 25 | 26 | **Cone** 27 | + **Random direction** – Emit each particle in a random direction\. 28 | + **Emit from** – Emit particles from the narrow end of the cone \(**Base**\), the center of the cone \(**Volume**\), or the edges of the cone \(**Volumeedge**\)\. 29 | + **Cone radius** – The radius of the cone at the narrow end\. 30 | + **Cone angle** – The angle at which the sides of the cone flare out\. 31 | + **Cone length** – The length of the sides of the cone\. 32 | + **Over duration properties** – Fine tune values that apply to each loop of animation\. Each value can be constant, or progress linearly or randomly over the duration\. 33 | + **Emission rate** – The number of particles emitted per second\. 34 | + **Start speed** – The speed of the particles\. 35 | + **Start size** – The size of the particles\. 36 | + **Start color** – The color of the particles\. 37 | + **Start life time** – The number of seconds before each particle disappears\. 38 | + **Start angle** – The angle of particles\. 39 | + **Over lifetime properties** – Fine tune values that apply to the entire lifetime of the particle emitter\. Each value can be constant, or progress linearly or randomly over the lifetime\. 40 | + **Color** – The color of the particles\. Compounds with the duration color\. 41 | + **Size** – The size of the particles\. Compounds with the duration size\. 42 | + **Rotation speed** – Rotation of particles in degrees per second\. 43 | + **Local velocity** – Local space velocity in units per second\. 44 | + **World velocity** – World space velocity in units per second\. 45 | + **Texture** – The texture of each particle\. Use one of the provided textures or choose **custom** to upload a texture\. 46 | + **Texture animation** 47 | + **Texture tiles** – The number of tiles in the sprite sheet, in X and Y directions\. 48 | + **Cycles** – The number of texture animation cycles to finish over the lifetime\. 49 | + **Frame over lifetime** – A curve specifying when to show which frame in the animation\. `0` is the first frame and `1` is the last\. A linear curve starting at 0 and ending at 1 traverses all frames in the animation\. 50 | + **Rendering** – Customize the rendering behavior\. 51 | + **Billboard** – Particles always face the camera\. 52 | + **Render queue** – Render queue of the particle mesh\. 53 | + **Render queue offset** – Offset added to the render queue\. 54 | + **Blending** – The type of blending \(**None**, **Additive**, **Subtractive**, **Multiply**, or **Transparency**\)\. 55 | + **Depth write** – Write to the depth buffer\. 56 | + **Depth test** – Test against the depth buffer\. 57 | + **Sorting mode** – The draw order for particles \(**None** or **Camera distance**\)\. For transparency blending, camera distance sorting is recommended\. 58 | + **Opacity threshold** – The lower alpha threshold at which fragments are discarded\. -------------------------------------------------------------------------------- /doc-source/entities-rigidbody.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Rigid Body Component 2 | 3 | The rigid body component adds physics properties, such as mass and velocity, to the entity\. The component will simulate physics for the component and set the position and orientation of the entity accordingly\. 4 | 5 | **Properties** 6 | + **Mass** – The mass of the body\. 7 | + **Kinematic** – Make the rigid body kinematic instead of dynamic\. A dynamic body is affected by external forces such as gravity\. Kinematic bodies do not fall or react when hit\. 8 | + **Velocity** – The initial linear velocity of the body\. 9 | + **Angular velocity** – The initial angular velocity of the body 10 | + **Linear drag** – Resistance of the body to linear movement, between 0 and 1\. 11 | + **Angular drag** – Resistance of the body to angular movement, between 0 and 1\. 12 | 13 | If you add a collider component to the entity, the collider is used for rigid body collision, with the center of mass being at the same location as the rigid body\. 14 | 15 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-rigidbody-collider.png) 16 | 17 | Adding a single collider component and a rigid body component on the same entity is a bit limited\. The collider will always be centered in the entity and you cannot move it\. The solution is to put it on an entity below the rigid body component in the hierarchy\. This lets you move the collider or use multiple colliders\. 18 | 19 | So if you'd like to make a chair consisting out of six colliders \(four legs \+ back rest \+ seat\), you first create a root entity with a rigid body component\. Then you create six entities with box collider components and put them as children of the root entity\. Scale and position them correctly, and you're done\. 20 | 21 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-rigidbody-colliders.png) -------------------------------------------------------------------------------- /doc-source/entities-script.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Script Component 2 | 3 | You can add scripts to any entity\. A script component can contain multiple scripts\. Scripts run in order from top to bottom and you can adjust the order in the script component properties\. 4 | 5 | To support reuse, you add an instance of a script to the script component, not the script itself\. The instance contains the state and parameters of the script, letting you add multiple instances of the same script with different behavior on each, based on the arguments provided\. 6 | 7 | **Properties** 8 | + **Enabled** – Clear the check box to disable a script\. 9 | + **Instance of** – Each script instance in the list has a reference to the script it is using\. Choose a script to go to the script's own panel\. 10 | + **Parameters** – Any parameters defined in the script's [`parameters` array](scripting-parameters.md) appear here\. Adjust the values to customize the behavior of this script instance\. 11 | 12 | To structure your parameters, you can store them in a JSON file\. Start by defining the parameters in the script itself\. Then add the JSON file and reference it from the script settings\. 13 | 14 | **Example Script with JSON parameter** 15 | 16 | ``` 17 | varsetup=function(args,ctx){ 18 | console.log(args.myJsonParameter);// Prints the parsed JSON data 19 | }; 20 | 21 | var parameters=[{ 22 | key:'myJsonParameter', 23 | type:'json' 24 | }]; 25 | ``` 26 | 27 | **To create a script with JSON parameters** 28 | 29 | 1. [Create a blank entity](sumerian-entities.md)\. 30 | 31 | 1. Choose **Add component**, and then choose **Script**\. 32 | 33 | 1. Choose **Add script**, and then choose **Custom**\. 34 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-script-addscript.png) 35 | 36 | 1. Choose **Edit script**\. 37 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-script-editscript.png) 38 | 39 | 1. Replace the default `parameters` declaration with the following\. 40 | 41 | ``` 42 | var parameters=[{ 43 | key:'myJsonParameter', 44 | type:'json' 45 | }]; 46 | ``` 47 | 48 | 1. Return to the script settings\. The settings automatically update to include the JSON parameter\. 49 | 50 | 1. Drop a JSON file in the parameter field\. 51 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-script-addjson.png) -------------------------------------------------------------------------------- /doc-source/entities-sound.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Sound Component 2 | 3 | The sound component adds a number of sound assets to the entity\. The sound will not play automatically, but you can play it using a script or the state machine\. 4 | 5 | **Properties** 6 | + **Master volume** – The volume of all sounds in the component\. -------------------------------------------------------------------------------- /doc-source/entities-speech.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Speech Component 2 | 3 | The speech component assigns text to an entity for playback with Amazon Polly\. You assign text to an entity, and play the audio output from Amazon Polly with a state machine or script\. The scene calls Amazon Polly at runtime to generate the audio\. 4 | 5 | To use Amazon Polly during playback, the scene needs AWS credentials from Amazon Cognito Identity\. [Create an identity pool](sumerian-permissions.md) for your scene, and configure it under [AWS configuration](scene-aws.md) in the scene settings\. 6 | 7 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-speech.png) 8 | 9 | **Properties** 10 | + **3D audio** – Adjust the volume of the speech audio based on the distance of the entity from the camera\. 11 | + **Voice** – An [Amazon Polly voice](https://docs.aws.amazon.com/polly/latest/dg/voicelist.html)\. 12 | + **Volume** – Volume of the speech audio\. 13 | + **Speech files** – Drop text files here to add them to the component\. Click ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-speech-addgestures.png) to mark up a speech file with gestures\. 14 | + **Gesture map** – A document that maps gestures to words\. When you mark up a speech file, the editor uses this mapping to determine where to add gestures\. You can modify the gesture map using [text editor](editor-tools.md#editor-tools-texteditor)\. 15 | 16 | To trigger a speech during playback, use a state machine or script component on the same entity\. 17 | 18 | ## State Machine 19 | 20 | To play a speech, add a [state machine](entities-statemachine.md) to the entity with the speech component\. Add a state with **AWS SDK ready** and **Start speech** actions\. 21 | 22 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-speech-state.png) 23 | 24 | For more information, see [AWS Feature State Machine Actions in Amazon Sumerian](statemachines-aws.md)\. 25 | 26 | ## Script 27 | 28 | To play a speech, get a reference to the [speech component](https://content.sumerian.amazonaws.com/engine/latest/docs/SpeechComponent.html) from the context object\. The component has a `speeches` array that contains the [speeches](https://content.sumerian.amazonaws.com/engine/latest/docs/Speech.html) attached to the component\. Call `play` on a speech\. 29 | 30 | Sumerian calls Amazon Polly when you play a speech, so you must use the `aws.sdkReady` listener to ensure that your scene's AWS credentials are loaded before the call\. 31 | 32 | **Example script – play a random speech** 33 | 34 | ``` 35 | 'use strict'; 36 | var setup = function(args, ctx) { 37 | sumerian.SystemBus.addListener('aws.sdkReady', 38 | () => { 39 | var speechComponent = ctx.entity.getComponent("speechComponent"); 40 | var speeches = speechComponent.speeches; 41 | var speech = speeches[Math.floor(Math.random() * speeches.length)]; 42 | speech.play(); 43 | }, 44 | true 45 | ); 46 | }; 47 | ``` -------------------------------------------------------------------------------- /doc-source/entities-statemachine.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian State Machine Component 2 | 3 | The state machine component adds a Sumerian state machine to the entity\. You can use state machines to create dynamic and interactive scenes that feature animation, physics, special effects\. State machines are specific to an entity, so you can have multiple state machines in your scene that trigger on different events\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-statemachine.png) 6 | 7 | A state machine has one or more *behaviors* that organize scene logic into *states*, *actions*, and *transitions*\. See [Amazon Sumerian State Machines](sumerian-statemachines.md) for more information\. -------------------------------------------------------------------------------- /doc-source/entities-timeline.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Timeline Component 2 | 3 | Use timelines to move, rotate, or change the scale of entities over time\. You can set the start and end values of these properties, and add keyframes to control the speed or direction of the animation along the way\. The timeline can also emit custom events, which can be consumed from a state machine or script\. 4 | 5 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/tools-timeline.png) 6 | 7 | To create a timeline, choose **Create entity**, **Timeline**\. You can also add the timeline component to an existing entity, but don't add it to the entity that you want to animate\. The timeline can only control entities other than the one to which it is attached\. 8 | 9 | **Properties** 10 | + **Duration** – Length of the timeline, in seconds\. 11 | + **Loop** – Enable to repeat the timeline animation in a loop\. 12 | + **Auto start** – To trigger the timeline with a state machine or script, disable this option to prevent the timeline from starting automatically in playback mode\. 13 | 14 | To open the timeline editor, choose **Toggle timeline** in the timeline component, or choose **Timeline** from the **Tools** menu\. 15 | 16 | To add entities to the timeline, drag them from the entities panel onto the timeline editor\. Each *channel* in the editor controls one property of the transform, such as the X translation or the Z scale\. Click the clock icon next to a property to enable the channel and add the first keyframe\. 17 | 18 | Add more keyframes to a channel by choosing a time and changing the property's value\. During playback, the entity animates between the transform values at each keyframe\. By default, changing a property's value automatically creates a keyframe\. You can disable this by clicking the key icon next to the **Drop entity here** box\. 19 | 20 | Add **Event channels** to the timeline to emit custom events onto the system bus\. The name of the channel is the name of the event that Sumerian emits at each keyframe on the event channel\. Consume this event from a script with [SystemBus\.addListener](https://content.sumerian.amazonaws.com/engine/latest/docs/Bus.html), or from a [state machine](entities-statemachine.md) with the **Listen action**\. -------------------------------------------------------------------------------- /doc-source/entities-transform.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Transform Component 2 | 3 | The transform component contains the local transform of the component –translation, rotation, and scale\. The transform is relative to its parent\. 4 | 5 | **Properties** 6 | + **Translation** – Position of the object relative to its parent\. 7 | + **Rotation** – Rotation of the object in degrees\. 8 | + **Scale** – Size of the object\. 9 | + **Uniform scale** – Proportions to maintain when scale is modified on any axis\. 10 | + **Static** – Flag entities in your scene that do not move\. During playback, Sumerian combines static entities with others that use the same [material](entities-material.md) to improve performance\. Use [scene stats](scene-scenestats.md) to see how this affects the number of draw calls required to render your scene\. -------------------------------------------------------------------------------- /doc-source/entities-vrcamerarig.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian VR Camera Rig Component 2 | 3 | The VR camera rig component configures a virtual reality \(VR\) headset and controllers for use in VR mode during playback\. When a user has a supported headset, they can click the VR button to switch between the [main camera](entities-camera.md) and the [head mounted display \(HMD\) camera](entities-hmdcamera.md) that represents a VR headset\. 4 | 5 | **Supported VR Headsets** 6 | + Oculus Rift 7 | + Oculus Go 8 | + HTC Vive 9 | + HTC Vive Pro 10 | + Lenovo Mirage Solo 11 | + Samsung Gear VR 12 | + Google Daydream 13 | 14 | Attach the VR camera rig component to an entity with child entities for the HMD camera and each VR controller\. The [CoreVR asset pack](assets-vrtools.md) in the Sumerian library contains a rig entity with an HMD camera and controllers for each supported headset\. 15 | 16 | **Properties** 17 | + **Load gamepads** – Deselect to disable controllers\. 18 | + **Start at current camera** – Deselect to use the camera from its transform location, instead of swapping out the main camera for the VR rig when the user enters VR mode\. 19 | + **Current VR camera rig** – Select to use this rig in VR mode\. -------------------------------------------------------------------------------- /doc-source/entities-vrcontroller.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian VR Controller Component 2 | 3 | The VR controller component represents a single virtual reality \(VR\) controller in a VR camera rig\. When a user enters VR mode with a controller attached, the VR controller component tracks its location in 3D space\. 4 | 5 | See [Amazon Sumerian VR Camera Rig Component](entities-vrcamerarig.md) for more information\. 6 | 7 | **Properties** 8 | + **ID** – Controller type that this entity represents\. -------------------------------------------------------------------------------- /doc-source/gettingstarted-robin.md: -------------------------------------------------------------------------------- 1 | # Working with a Sample Model 2 | 3 | A sample model in FBX format is available in the [amazon\-sumerian\-user\-guide](https://github.com/awsdocs/amazon-sumerian-user-guide/tree/master/models) GitHub repository\. The model includes animations that you can use to explore animation\-related features in Sumerian\. 4 | 5 | Download the model by using this link: [american\-robin\.fbx](https://github.com/awsdocs/amazon-sumerian-user-guide/raw/master/models/american-robin.fbx) 6 | 7 | **Example Scene** 8 | Click or tap the model to play a random animation\. 9 | 10 | The model file contains multiple types of data: 11 | + **Mesh data** – The 3D wireframe that defines the shape of the model\. 12 | + **Texture data** – The 2D image that wraps around the mesh to color the model\. 13 | + **Animation data** – The skeleton that deforms the mesh, and animations that move the skeleton\. 14 | + **Other entities** – The file can also include auxiliary entities such as lights and cameras\. 15 | 16 | When you import a model file, Sumerian processes it and stores the resulting assets in the scene\. 17 | 18 | **To import the model** 19 | 20 | 1. Open [the Sumerian dashboard](https://console.aws.amazon.com/sumerian/home)\. 21 | 22 | 1. Choose or [create a project](dashboard-projects.md)\. 23 | 24 | 1. [Create a new scene](dashboard-scenes.md)\. 25 | 26 | 1. To import the model, drag it from your computer's file explorer onto the canvas\. 27 | 28 | 1. Sumerian processes the model and adds an asset pack to the **Assets** panel with the following assets: 29 | + **american\-robin\.fbx** – The parent entity that represents the model\. 30 | + **american\-robin** – The model's texture image\. 31 | + **Material** – The material that contains the texture and shader configuration for the model\. 32 | + **mesh\_Material\_Mesh** – The model's wireframe mesh\. 33 | + **Skeleton** – The animation skeleton from the model's armature\. 34 | + **Armature\|BEAK**, **Armature\|HOP**, **Armature\|JUMP**, **Armature\|PECK**, **Armature\|FLAP** – A clip for each animation take in the model file\. 35 | + **Animations** – A container for the animation clips that can be applied to an [animation component](entities-animation.md)\. 36 | 37 | For more information about each type of asset, see [Amazon Sumerian Assets](sumerian-assets.md)\. 38 | 39 | Adding the model to your scene is a separate step that takes the assets from the model and creates entities that represent them in the scene\. 40 | 41 | **To add the imported model to your scene** 42 | 43 | 1. Drag the **american\-robin\.fbx** entity from the **Assets** panel onto the canvas\. 44 | 45 | 1. Sumerian adds multiple entities to your scene in a hierarchy, as shown in the **Entities** panel: 46 | + **american\-robin\.fbx** – An empty entity with an animation component that contains the model's animations\. 47 | + **thrush\_Material** – The visible part of the model, contained in an entity that has geometry and material components\. The geometry component contains the model's mesh and skeleton\. The material component contains the texture file and shader settings\. This model uses a diffuse shader with smooth shading\. 48 | + **light\-1**, **light\-2**, **light\-3** – Three point lights that light the model\. You can drag these to a different location in the hierarchy or delete them and create new lights\. 49 | + **Armature** – An empty entity that represents the armature that was used to rig the model for animation\. 50 | 51 | Adding the model to your scene creates a copy of the entities that it comprises\. The other types of asset in the model, however, are referenced from the scene's assets\. So when you add the same model to your scene multiple times, they have independent entity settings, such as location, rotation, and scale\. But they also share references to the texture, material, and animation assets\. 52 | 53 | If, for example, you change the opacity on the material component of the **thrush\_Material** entity, it changes the settings on that material in the **Assets** panel, and on any other copies of the model created in the past or in the future\. Alternatively, if you change the **Y** rotation of the entity in the scene, it affects only that instance of the model\. And if you change the rotation of the entity in the **Assets** panel, it affects only new copies of the model that you add to the scene after setting the rotation\. 54 | 55 | Within the **Assets** panel, the model's assets are organized into an asset pack\. To create a copy of the asset pack that you can import into other scenes, export it to your project\. 56 | 57 | **To export the model in an asset pack** 58 | 59 | 1. Choose the asset library icon ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-assetlib.png) to export the asset pack\. 60 | 61 | 1. Choose a category for the pack\. For models with multiple types of asset, you can choose **Entities** or **Other**\. 62 | 63 | 1. Choose **Add to asset library**\. 64 | 65 | You can now import the model into other scenes by choosing **Import assets** at the top of the scene\. Each time you import or export an asset pack it creates a copy with no references or links to other scenes\. 66 | 67 | Learn how to make the model interactive and customize the scene camera in the [next topic](gettingstarted-showcase.md)\. -------------------------------------------------------------------------------- /doc-source/gettingstarted-showcase.md: -------------------------------------------------------------------------------- 1 | # Building a Model Showcase 2 | 3 | To showcase the [sample model](gettingstarted-robin.md), the example scene uses a state machine and one of the built\-in camera types\. The state machine waits for user input \(click or touch\), and triggers one of the animations included in the model at random\. The orbit camera type supports both mouse and touch input for orbiting, zooming, and panning\. 4 | 5 | **Example Model Showcase** 6 | 7 | Use the following procedures to recreate the sample scene\. 8 | 9 | **To add the state machine behavior** 10 | 11 | 1. Choose the parent entity, and then choose **Add component**, **State machine**\. 12 | 13 | 1. To create a behavior, choose the plus symbol in the state machine panel\. Add the following states and actions\. 14 | **Example States for triggering animation** 15 | + **initialize** – **Pause animation** pauses all animations on the entity\. This prevents the default animation from playing when the scene starts\. **Click/tap on entity** transitions to the next state when the user interacts with the model\. 16 | + **randomizer** – **Random transition** chooses between two states\. Chain multiple randomizer states together to link to all available animations\. 17 | + **animate** – **Set animation** sets the active animation\. After the animation plays for the specified number of loops, it transitions to the next state\. **Resume animation** plays the animation\. 18 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/sample-robin-statemachine.png) 19 | 20 | The scene camera has an *orbit and pan* script that supports the following controls\. 21 | 22 | **Controls** 23 | + **Orbit** – Right\-click and drag, or touch and drag\. 24 | + **Pan** – Middle\-click and drag, or two\-finger touch and drag\. 25 | + **Zoom** – Mouse wheel or pinch\. 26 | 27 | Add the camera to the scene and configure it to orbit around the origin point, where the model is\. 28 | 29 | **To add the camera** 30 | 31 | 1. To add a camera to the scene, choose **Create entity**, **Orbit camera**\. 32 | 33 | 1. In the transform component, apply the following settings: 34 | + **X translation** – **5\.5** 35 | + **Y translation** – **3\.5** 36 | + **Z translation** – **4** 37 | + **X rotation** – **\-20** 38 | + **Y rotation** – **50** 39 | 40 | 1. In the camera component, apply the following settings: 41 | + **Main camera** – **enabled** 42 | + **FOV** – **30** 43 | 44 | 1. In the script component, apply the following setting: 45 | + **Look at distance** – **7\.65** 46 | 47 | The *look at distance* is the distance from the camera to the model, so the model stays in the center of the screen as you click\-drag or touch\-drag to move the camera around\. If you move the camera to a different starting point, you can recalculate the look at distance by taking the square root of the sum of the squares of the camera's X, Z, and Y translations\. 48 | 49 | Set the background color in the scene's [environment settings](scene-environment.md)\. 50 | 51 | **To set the background color** 52 | 53 | 1. Choose the root node in the **Entities** panel\. 54 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 55 | 56 | 1. Expand the **Environment** section in the inspector panel\. 57 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-environment.png) 58 | 59 | 1. Choose the background color square\. 60 | 61 | 1. To choose a color, use the color picker or enter a hex or RGB color code\. The example scene uses color hex `adcac8`\. 62 | 63 | Play the scene in the editor, or [publish it](editor-publish.md)\. -------------------------------------------------------------------------------- /doc-source/index.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian User Guide 2 | 3 | ----- 4 | *****Copyright © 2019 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.***** 5 | 6 | ----- 7 | Amazon's trademarks and trade dress may not be used in 8 | connection with any product or service that is not Amazon's, 9 | in any manner that is likely to cause confusion among customers, 10 | or in any manner that disparages or discredits Amazon. All other 11 | trademarks not owned by Amazon are the property of their respective 12 | owners, who may or may not be affiliated with, connected to, or 13 | sponsored by Amazon. 14 | 15 | ----- 16 | ## Contents 17 | + [What Is Amazon Sumerian?](amazon-sumerian.md) 18 | + [Amazon Sumerian Use Cases and Requirements](sumerian-usecases.md) 19 | + [Amazon Sumerian Permissions](sumerian-permissions.md) 20 | + [Amazon Sumerian Tutorials and Samples](sumerian-gettingstarted.md) 21 | + [Getting Started with Amazon Sumerian](gettingstarted-tutorial.md) 22 | + [Working with a Sample Model](gettingstarted-robin.md) 23 | + [Building a Model Showcase](gettingstarted-showcase.md) 24 | + [Amazon Sumerian Concepts](sumerian-concepts.md) 25 | + [The Amazon Sumerian Dashboard](sumerian-dashboard.md) 26 | + [Projects](dashboard-projects.md) 27 | + [Scenes](dashboard-scenes.md) 28 | + [Asset Packs](dashboard-assets.md) 29 | + [Templates](dashboard-templates.md) 30 | + [Trash](dashboard-trash.md) 31 | + [Locks](dashboard-locks.md) 32 | + [Amazon Sumerian Editor](sumerian-editor.md) 33 | + [Amazon Sumerian Editor Canvas](editor-canvas.md) 34 | + [Importing Assets From the Asset Library in the Amazon Sumerian Editor](editor-assetlib.md) 35 | + [Using the Assets Panel in the Amazon Sumerian Editor](editor-assets.md) 36 | + [Using the Entities Panel in the Amazon Sumerian Editor](editor-entities.md) 37 | + [Using the Inspector Panel in the Amazon Sumerian Editor](editor-inspector.md) 38 | + [Using the Tools in the Amazon Sumerian Editor](editor-tools.md) 39 | + [Keyboard and Mouse Controls for the Amazon Sumerian Editor](editor-shortcuts.md) 40 | + [Publishing Scenes in the Amazon Sumerian Editor](editor-publish.md) 41 | + [Amazon Sumerian Scene Settings](sumerian-scene.md) 42 | + [Configuring AWS Credentials for Your Amazon Sumerian Scene](scene-aws.md) 43 | + [Creating Snapshots of Your Amazon Sumerian Scene](scene-snapshots.md) 44 | + [Configuring the Canvas for Your Amazon Sumerian Scene](scene-document.md) 45 | + [Configuring Environment Settings for Your Amazon Sumerian Scene](scene-environment.md) 46 | + [Configuring Post-Processing Effects for Your Amazon Sumerian Scene](scene-posteffects.md) 47 | + [Calculating the Size of Your Amazon Sumerian Scene](scene-scenesize.md) 48 | + [Viewing Performance Information for Your Amazon Sumerian Scene](scene-scenestats.md) 49 | + [Amazon Sumerian Entities](sumerian-entities.md) 50 | + [Amazon Sumerian Transform Component](entities-transform.md) 51 | + [Amazon Sumerian Geometry Component](entities-geometry.md) 52 | + [Amazon Sumerian Material Component](entities-material.md) 53 | + [Amazon Sumerian Camera Component](entities-camera.md) 54 | + [Amazon Sumerian VR Camera Rig Component](entities-vrcamerarig.md) 55 | + [Amazon Sumerian HMD Camera Component](entities-hmdcamera.md) 56 | + [Amazon Sumerian VR Controller Component](entities-vrcontroller.md) 57 | + [Amazon Sumerian Host Component](entities-host.md) 58 | + [Amazon Sumerian Speech Component](entities-speech.md) 59 | + [Amazon Sumerian Dialogue Component](entities-dialogue.md) 60 | + [Amazon Sumerian 2D Graphics Component](entities-2dgraphics.md) 61 | + [Amazon Sumerian HTML Components](entities-html.md) 62 | + [Amazon Sumerian Sound Component](entities-sound.md) 63 | + [Amazon Sumerian Light Component](entities-light.md) 64 | + [Amazon Sumerian Particle System Component](entities-particlesystem.md) 65 | + [Amazon Sumerian Animation Component](entities-animation.md) 66 | + [Amazon Sumerian Collider Component](entities-collider.md) 67 | + [Amazon Sumerian Rigid Body Component](entities-rigidbody.md) 68 | + [Amazon Sumerian State Machine Component](entities-statemachine.md) 69 | + [Amazon Sumerian Script Component](entities-script.md) 70 | + [Amazon Sumerian Timeline Component](entities-timeline.md) 71 | + [Amazon Sumerian Assets](sumerian-assets.md) 72 | + [Amazon Sumerian Asset Packs](assets-packs.md) 73 | + [Amazon Sumerian Scene Templates](assets-templates.md) 74 | + [Amazon Sumerian Virtual Reality Tools](assets-vrtools.md) 75 | + [Amazon Sumerian Augmented Reality Tools](assets-artools.md) 76 | + [Amazon Sumerian Hosts](assets-hosts.md) 77 | + [Models](assets-models.md) 78 | + [Skybox](assets-skybox.md) 79 | + [Media](assets-media.md) 80 | + [Amazon Sumerian State Machines](sumerian-statemachines.md) 81 | + [Animation State Machine Actions in Amazon Sumerian](statemachines-animation.md) 82 | + [Audio and Camera State Machine Actions in Amazon Sumerian](statemachines-audio.md) 83 | + [AWS Feature State Machine Actions in Amazon Sumerian](statemachines-aws.md) 84 | + [Keyboard and Mouse State Machine Actions in Amazon Sumerian](statemachines-controls.md) 85 | + [Effects and Lighting State Machine Actions in Amazon Sumerian](statemachines-effects.md) 86 | + [Materials and Rendering State Machine Actions in Amazon Sumerian](statemachines-materials.md) 87 | + [Physics and Collision State Machine Actions in Amazon Sumerian](statemachines-physics.md) 88 | + [Logic and Transition State Machine Actions in Amazon Sumerian](statemachines-scripting.md) 89 | + [Attribute and Tag State Machine Actions in Amazon Sumerian](statemachines-attributes.md) 90 | + [Scripting](sumerian-scripting.md) 91 | + [Built-in Scripts](scripting-builtins.md) 92 | + [The Context Object](scripting-context.md) 93 | + [Parameters and Arguments](scripting-parameters.md) 94 | + [External Dependencies](scripting-dependencies.md) 95 | + [Debugging](scripting-debugging.md) 96 | + [Troubleshooting Issues with Amazon Sumerian Scenes](sumerian-troubleshooting.md) 97 | + [Profiling Amazon Sumerian Scenes](troubleshooting-profiling.md) -------------------------------------------------------------------------------- /doc-source/scene-aws.md: -------------------------------------------------------------------------------- 1 | # Configuring AWS Credentials for Your Amazon Sumerian Scene 2 | 3 | The **AWS configuration** section lets you configure credentials to use with the AWS SDK for JavaScript\. You can set an Amazon Cognito identity pool ID, which Sumerian uses to retrieve credentials when the scene is loaded\. The identity pool must have an unauthenticated role with permission to use the AWS APIs that your scripts access\. 4 | 5 | **Note** 6 | If you don't have an identity pool, follow the instructions under [Amazon Sumerian Permissions](sumerian-permissions.md) to create one\. 7 | 8 | **To configure AWS SDK for JavaScript credentials** 9 | 10 | 1. Open a scene in the Sumerian editor\. 11 | 12 | 1. Choose the root node in the **Entities** panel\. 13 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 14 | 15 | 1. Expand the **AWS configuration** section in the inspector panel\. 16 | 17 | 1. Enter an Amazon Cognito identity pool ID\. 18 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-aws.png) 19 | 20 | To use the credentials, create a script that listens for `aws.sdkReady` before initializing an SDK for JavaScript client\. The following example lists the contents of an Amazon S3 bucket named `mybucket` in the browser console\. To test its functionality, [create a script](sumerian-scripting.md), attach it to an entity, and play the scene\. 21 | 22 | **Example S3listobjects script** 23 | 24 | ``` 25 | 'use strict'; 26 | 27 | var setup = function(args, ctx) { 28 | sumerian.SystemBus.addListener('aws.sdkReady', 29 | () => { 30 | let s3 = new AWS.S3(); 31 | s3.listObjects({Bucket: "mybucket"}, function(err, data) { 32 | if (err) { 33 | console.log('ERROR', err, data); 34 | } else { 35 | console.log('DATA', data); 36 | } 37 | } 38 | ); 39 | }, 40 | true 41 | ); 42 | }; 43 | ``` -------------------------------------------------------------------------------- /doc-source/scene-document.md: -------------------------------------------------------------------------------- 1 | # Configuring the Canvas for Your Amazon Sumerian Scene 2 | 3 | You can use the document section to configure the size of the WebGL canvas and grid color\. These settings apply only while you are working on a scene in the editor, and to the published scene\. 4 | 5 | **To configure the canvas using document settings** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Expand the **Document** section in the inspector panel\. 13 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-document.png) 14 | 15 | 1. Choose from the following options: 16 | + **Grid** – Change the color of the grid\. 17 | + **Stretch** – Stretch the canvas to its container\. 18 | + **Aspect ratio** – Stretch the canvas to its container, but keep the aspect ratio\. 19 | + **Resolution** – Set a fixed size of the canvas\. -------------------------------------------------------------------------------- /doc-source/scene-environment.md: -------------------------------------------------------------------------------- 1 | # Configuring Environment Settings for Your Amazon Sumerian Scene 2 | 3 | Use environment settings to configure your scene's background image, ambient lighting, and weather\. 4 | 5 | **To configure environment settings** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Expand the **Environment** section in the inspector panel\. 13 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-environment.png) 14 | 15 | 1. Configure the following settings: 16 | + **Background** – Set the background color of the scene, and its opacity\. 17 | 18 | To make the background transparent, set **Opacity** to `0`\. If you add a skybox, background settings have no effect\. 19 | + **Skybox** – Use an image as the background of the scene\. You can drop an existing skybox from the assets panel, or choose the plus icon to [create a new skybox](assets-skybox.md)\. 20 | + **Ambient** – Add ambient light to light all objects in the scene\. Ambient light doesn't affect the skybox\. 21 | + **Fog** – Add fog to the scene\. Fog starts occluding objects in the scene at **Fog near** units from the camera, and strengthens until **Fog far** units, where the fog becomes completely opaque\. 22 | + **Particles** – Add animated snow\-like particles to the background of the scene\. 23 | 24 | **Properties** 25 | + **Velocity** – The speed of the falling particles\. 26 | + **Rate** – The number of particles that appear per second\. 27 | + **Height** – The height at which the particles will appear, relative to the camera height\. -------------------------------------------------------------------------------- /doc-source/scene-posteffects.md: -------------------------------------------------------------------------------- 1 | # Configuring Post\-Processing Effects for Your Amazon Sumerian Scene 2 | 3 | In the post effects section of the inspector panel, you can add rendering effects like antialiasing and motion blur\. Post effects are not compatible with VR mode\. 4 | 5 | **To add post effects** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Expand the **Post effects** section in the inspector panel\. 13 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-posteffects.png) 14 | 15 | 1. Choose **Add effects**\. 16 | 17 | 1. Choose one or more effects, and then choose **Add**\. 18 | 19 | 1. Adjust the settings for each effect in the inspector panel\. 20 | 21 | 1. See how post effects affect rendering by clicking the post effects icon ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/canvas-icons-posteffects.png) in the canvas toolbar to toggle them on and off\. 22 | 23 | **Post effects properties** 24 | + **Antialias** – Add FXAA\-based antialiasing to smooth out jagged edges\. 25 | + **Span** – The area of the smoothing effect\. 26 | + **Bloom** – Make bright background colors bleed over the edges of foreground objects\. 27 | + **Opacity** – The amount of bloom applied\. 28 | + **Size** – The size of the glow area\. 29 | + **Gain** – The amount of brightness added\. 30 | + **Intensity** – The amount of contrast\. 31 | + **Bleach** – Alter input color by its luminance\. 32 | + **Opacity** – The blending multiplier for the effect\. 33 | + **Blur** – Blur the entire scene to make it appear out of focus\. 34 | + **Amount** – The amount of blending that causes the blur\. 35 | + **Size** – The size of the blur area\. 36 | + **Contrast** – Adjust the brightness, contrast, and saturation\. 37 | + **Brightness** – Remove or add brightness\. 38 | + **Contrast** – Adjust the contrast\. 39 | + **Saturation** – Adjust the color saturation\. 40 | + **Dot** – Add a black\-and\-white lattice effect\. 41 | + **Angle** – The angle of the lattice\. 42 | + **Scale** – The thickness of the lattice\. 43 | + **SizeX** – Skew the lattice on the X axis\. 44 | + **SizeY** – Skew the lattice on the Y axis\. 45 | + **Edge detect** – Add a *difference of Gaussians*\-based edge detection\. 46 | + **Gauss Sigma** – The base of the two Gaussian kernels\. 47 | + **Threshold** – The edge detection tolerance value\. 48 | + **Background %** – The amount of blending between the background and edge colors\. 49 | + **Edge Color** – The edge color\. 50 | + **Background Color** – The background color\. 51 | + **Film grain** – Add noise and resolution lines\. 52 | + **Noise** – The amount of noise\. 53 | + **Line Intensity** – The sharpness of the lines\. 54 | + **Line Count** – The number of lines\. 55 | + **Hatch** – Render the scene in black and white, with a lattice effect over black areas\. 56 | + **Width** – The width of the lattice lines\. 57 | + **Spread** – The distance between the lattice lines\. 58 | + **HSB** \(hue, saturation, and brightness\) – Adjust colors of the scene\. 59 | + **Hue** – Adjust the hue\. 60 | + **Saturation** – Adjust the color saturation\. 61 | + **Brightness** – Adjust the image brightness\. 62 | + **Levels** – Apply gamma correction to the image\. 63 | + **Gamma** – Adjust the gamma level\. 64 | + **Min input** and **Max input** – The gamma input range\. 65 | + **Min output** and **Max output** – The gamma output range\. 66 | + **Motion Blur** – Apply a blur effect to objects that moved since the previous rendered frame\. If the camera moves, the entire image blurs\. 67 | + **Amount** – The amount of blending\. 68 | + **Scale** – Overlay the previous frame on top of the current frame at a different scale to create a zooming or flying effect\. 69 | + **Noise** – Add signal noise to the image\. 70 | + **Noise** – The amount of signal noise\. 71 | + **Overlay** – Overlay a texture on the image\. 72 | + **Texture** – The texture asset\. 73 | + **Blend mode** – The method of blending the overlay and background\. 74 | + **Amount** – The amount of blending\. 75 | + **Radial** – Add a radial blur to the image\. 76 | + **Offset** – The blur offset\. 77 | + **Multiplier** – The blur multiplier\. 78 | + **RGB shift** – Split the image into red, green, and blue layers with an offset between layers\. 79 | + **Amount** – The distance between the layers\. 80 | + **Angle** – The angle in radians between the layers\. 81 | + **Sepia** – Add a sepia color filter\. 82 | + **Amount** – The intensity of the effect\. 83 | + **Tint** – Apply a color filter to the image\. 84 | + **Color** – The tint color\. 85 | + **Amount** – The intensity of the effect\. 86 | + **Vignette** – Add a dark gradient around the edges of the image\. 87 | + **Offset** – The size of the gradient\. 88 | + **Darkness** – The strength of the gradient\. -------------------------------------------------------------------------------- /doc-source/scene-scenesize.md: -------------------------------------------------------------------------------- 1 | # Calculating the Size of Your Amazon Sumerian Scene 2 | 3 | The **Scene size** section calculates how much data your scene is using\. You can see the number of kilobytes from JSON, mesh data, and binaries\. 4 | 5 | **To view your scene's size** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Expand the **Scene size** section in the inspector panel\. 13 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-scenesize.png) 14 | 15 | The numbers shown reflect the uncompressed size of the scene\. When a scene is served from Amazon CloudFront, the contents are compressed\. To see the compressed size, open your scene and use the network tab of the browser developer tools to find the amount of data transferred\. -------------------------------------------------------------------------------- /doc-source/scene-scenestats.md: -------------------------------------------------------------------------------- 1 | # Viewing Performance Information for Your Amazon Sumerian Scene 2 | 3 | The **Scene stats** section gives you some performance statistics about the current scene\. 4 | 5 | **To view your scene's stats** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Expand the **Scene stats** section in the inspector panel\. 13 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-scenestats.png) 14 | 15 | **Stats** 16 | + **FPS** – The number of frames rendered per second\. 17 | + **Draw calls** – The number of draw calls made per frame\. 18 | + **Entities** – The number of visible entities\. 19 | + **Lights** – The number of lights being rendered\. 20 | + **Shadow casters** – The number of shadow casters being rendered\. 21 | + **Shaders** – The number of shaders being rendered\. 22 | + **Texture size** – The current texture size in the GPU\. 23 | + **Triangles** – The number of triangles being rendered\. 24 | 25 | Sumerian performs additional rendering optimiziation during playback\. Play the scene to see how the number of draw calls varies between editor mode and playback mode\. You can improve performance during playback by re\-using materials, [flagging entities as static](entities-transform.md), and limiting use of shadows and post effects\. -------------------------------------------------------------------------------- /doc-source/scene-snapshots.md: -------------------------------------------------------------------------------- 1 | # Creating Snapshots of Your Amazon Sumerian Scene 2 | 3 | You can use the Snapshots panel to create a copy of your scene that you can use to restore your scene later\. Create snapshots to set a restore point prior to trying new features or making sweeping changes to your scene\. 4 | 5 | **To create a snapshot** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Expand the **Snapshots** section in the inspector panel\. 13 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-snapshots.png) 14 | 15 | 1. Enter a description\. 16 | 17 | 1. Choose **Create**\. 18 | 19 | **To restore or delete a snapshot** 20 | 21 | 1. Open a scene in the Sumerian editor\. 22 | 23 | 1. Choose the root node in the **Entities** panel\. 24 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 25 | 26 | 1. Expand the **Snapshots** section in the inspector panel\. 27 | 28 | 1. Choose a snapshot\. 29 | 30 | 1. Choose **Restore** or **Delete**\. 31 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections-snapshots-restore.png) -------------------------------------------------------------------------------- /doc-source/scripting-builtins.md: -------------------------------------------------------------------------------- 1 | # Built\-in Scripts 2 | 3 | The editor also has several built\-in scripts that provide standard functionality like camera, keyboard, and mouse controls\. 4 | 5 | **Camera scripts** 6 | + **Orbit camera control** – Lets the user orbit the scene by holding a mouse button and moving the mouse\. 7 | + **Orbit and pan control** – Lets the user orbit the scene with one mouse button and pan the camera with another\. 8 | + **Fly control** – Lets the user zoom and pan with the keyboard\. 9 | + **Axis\-aligned camera control** – Move the camera to a fixed distance away on the X or Z axis\. 10 | + **Pan camera control** – Lets the user pan the camera by holding a mouse button and moving the mouse\. 11 | + **Mouse look control** – Lets the user look around by holding a mouse button and moving the mouse\. 12 | + **WASD control** – Lets the user walk around on the XZ plane with the keyboard\. 13 | + **Augmented reality camera script** – In an augmented reality \(AR\) scene, follow the device camera\. 14 | 15 | **Object scripts** 16 | + **Button** – Lets the user click on an object to open a URL\. 17 | + **Pick and rotate** – Lets the user grab an object and manipulate its orientation\. 18 | + **Lens flare** – Generates a lens flare when the user looks at an object\. -------------------------------------------------------------------------------- /doc-source/scripting-context.md: -------------------------------------------------------------------------------- 1 | # The Context Object 2 | 3 | You can use the context object, `ctx` to store your script data during the script life time\. The context is created upon setup\(\) and cleared on cleanup\(\) and is passed into all of the script functions\. It has a the following properties: 4 | 5 | **Properties** 6 | + `entity` \([https://content.sumerian.amazonaws.com/engine/latest/docs/Entity.html](https://content.sumerian.amazonaws.com/engine/latest/docs/Entity.html)\) – The entity to which the script is attached\. 7 | + `entityData` \(`Object`\) – A data object shared between all scripts on the entity\. 8 | + `activeCameraEntity` \([https://content.sumerian.amazonaws.com/engine/latest/docs/Entity.html](https://content.sumerian.amazonaws.com/engine/latest/docs/Entity.html)\) – The currently active camera entity\. 9 | + `domElement` \(`HTMLCanvasElement`\) – The WebGL canvas element\. 10 | + `playTime` \(`number`\) – The elapsed time since scene start\. 11 | + `transitions` \(`Object`\) – Transition functions used to signal the success or failure of an **Execute script** action on a [state machine](sumerian-statemachines.md)\. 12 | + `viewportHeight` \(`number`\) – The height of the canvas\. 13 | + `viewportWidth` \(`number`\) – The width of the canvas\. 14 | + `world` \([https://content.sumerian.amazonaws.com/engine/latest/docs/World.html](https://content.sumerian.amazonaws.com/engine/latest/docs/World.html)\) – The world object\. 15 | + `worldData` \(`Object`\) – A data object shared between all scripts in the world\. 16 | 17 | Some of the properties on `ctx` are shared between scripts\. *entityData* is shared by all scripts on the entity and *worldData* is shared by all scripts\. They are all initially empty, and can be used to store any kind of data 18 | 19 | For example, if we'd like to define a property called *acceleration*, we could make it available on three levels: 20 | 21 | ``` 22 | // Only accessible to the script that defined the property 23 | ctx.acceleration=9.82; 24 | 25 | // Accessible to all scripts on the entity 26 | ctx.entityData.acceleration=9.82; 27 | 28 | // Accessible to all scripts 29 | ctx.worldData.acceleration=9.82; 30 | ``` 31 | 32 | The built\-in context properties also contain some convenience functions\. For example, the `world` object lets you search for entities based on their tags\. You can get all entities with a specific tag with `ctx.world.by.tag`: 33 | 34 | ``` 35 | var entities = ctx.world.by.tag('myTag'); 36 | ``` -------------------------------------------------------------------------------- /doc-source/scripting-debugging.md: -------------------------------------------------------------------------------- 1 | # Debugging 2 | 3 | To debug a script in the Sumerian editor, use the built in tools in your browser\. In Google Chrome, open Developer Tools by pressing ALT\-CMD\-J on Mac or F12 on Windows\. 4 | 5 | Open the *Sources* panel at the top of Devtools\. To the left you can see all scripts loaded in the browser\. If you have a script in your scene, it will be listed in below *sumerian\-custom\-scripts*\. Choose your script to view it\. 6 | 7 | The simplest way to start debugging a script is by adding a `debugger;` statement in your Custom Script in the editor\. If you have Devtools open, and this statement is executed, Devtools will automatically go to the file and line where your statement is\. 8 | 9 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/) -------------------------------------------------------------------------------- /doc-source/scripting-dependencies.md: -------------------------------------------------------------------------------- 1 | # External Dependencies 2 | 3 | If your script uses external JavaScript libraries from the web into your script, declare them in the **External resources** section of the text editor\. 4 | 5 | **To declare external dependencies** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Press J to open the text editor\. 10 | 11 | 1. Choose a script asset in the **Documents** list\. 12 | 13 | 1. Under **External resources**, enter a URL starting with `//` \(excluding the protocol\)\. 14 | 15 | 1. Click the plus icon to add the library to the list\. 16 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-script-externalresource.png) 17 | 18 | The editor loads libraries as soon as you add them to this list\. To reload a library, choose **Refresh resources**\. In your published scene, all dependencies are loaded and executed during the loading phase\. -------------------------------------------------------------------------------- /doc-source/scripting-parameters.md: -------------------------------------------------------------------------------- 1 | # Parameters and Arguments 2 | 3 | Parameters let you create scripts that are customizable by adding fields to the script properties in the editor\. For example, the following script defines a parameter named `Velocity` that takes 3 numbers \(a [`vec3` parameter](#scripting-parameters-types)\)\. The setup function gets the value of the parameter from the `args` object\. 4 | 5 | ``` 6 | var setup = function(args, ctx){ 7 | console.log(args.velocity); 8 | }; 9 | 10 | var parameters = [ 11 | { 12 | name : "Velocity", 13 | key : "velocity", 14 | type : "vec3", 15 | default : [1,0,0] 16 | } 17 | ]; 18 | ``` 19 | 20 | During the setup phase, the script reads the parameter values from the `args` object and prints them to the console\. 21 | 22 | When you add an instance of the above script to an entity, the editor shows a **Velocity** field that accepts three values and reflects the default value\. 23 | 24 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-script-vec3.png) 25 | 26 | ## Parameter Format 27 | 28 | Parameters are objects with the following required and optional fields\. 29 | 30 | **Required fields** 31 | + **key** \[string\] – a unique key used to store and retrieve the parameter values in the `args` object\. 32 | + **type** \[string\] – the [parameter type](#scripting-parameters-types)\. 33 | + **default** – the default value or values for the parameter\. 34 | 35 | **Optional fields** 36 | + `name` \[string\] – the label for the parameter field shown on instances of the script\. If you don't specify a name, the `key` is used to generate the label\. 37 | + `control` \[string enum\] – the control type\. 38 | + `slider` – a slider control\. 39 | + `color` – a color wheel\. 40 | + `select` – a drop down listing the values in the `options` field\. 41 | + `jointSelector` – a drop down listing the joints on the animation component on the script's parent entity\. 42 | + `description` \[string\] – the description shown when you hover over the parameter\. 43 | + `options` \[array\] – an array of possible values for a `select` control\. 44 | + `min` and `max` \[number\] – the minimum and maximum values for an `int` or `float` parameter\. 45 | + `decimal` \[number\] – the number of significant digits for a `float` parameter\. 46 | + `step` \[number\] – the incremental value that `float` values snap to\. 47 | + `precision` \[number\] – the number of significant digits for `float` values\. 48 | + `exponential` \[boolean\] – set to `true` to distribute the values on a `slider` control logarithmically\. 49 | 50 | ## Parameter Types 51 | 52 | The type property must be set to one of a few predefined strings, each corresponding to a type of parameter\. 53 | + `int` – Integer number variable \(e\.g\. `1`\)\. 54 | + `float` – Number variable \(e\.g\. ` 3.14`\)\. 55 | + `string` – String \(e\.g\. `“HelloGoo”`\)\. 56 | + `boolean` – boolean \(`true` or `false`\)\. 57 | + `vec2`, `vec3`, `vec4` – an array of 2, 3, or 4 numbers\. 58 | + `texture`, `sound`, `entity`, `camera`, `animstate`, `json` – an asset of the specified [type](sumerian-assets.md)\. 59 | 60 | The following example parameter declaration shows all of the available types\. 61 | 62 | ``` 63 | var parameters = [ 64 | {type: 'int', key: 'int', 'default': 1, description: 'Integer input'}, 65 | {type: 'float', key: 'float', 'default': 0.1, description: 'Float input'}, 66 | {type: 'string', key: 'string', 'default': 'Hello!', description: 'String input'}, 67 | {type: 'boolean', key: 'boolean', 'default': true, description: 'Checkbox'}, 68 | {type: 'vec2', key: 'vec2', 'default': [0, 0], description: 'Vector2 input'}, 69 | {type: 'vec3', key: 'vec3', 'default': [0, 0, 0], description: 'Vector3 input'}, 70 | {type: 'vec4', key: 'vec4', 'default': [0, 0, 0, 0], description: 'Vector4 input'}, 71 | {type: 'texture', key: 'texture', description: 'Texture asset drop area'}, 72 | {type: 'sound', key: 'sound', description: 'Sound asset drop area'}, 73 | {type: 'entity', key: 'entity', description: 'Entity drop area'}, 74 | {type: 'camera', key: 'camera', description: 'Camera drop down'}, 75 | {type: 'animstate', key: 'animation', description: 'Animation state from the animation component on a parent entity'}, 76 | {type: 'json', key: 'json', description: 'JSON asset drop area'}, 77 | {type: 'float', control: 'slider', key: 'floatSlider', 'default': 10.1, min: 5, max: 15, exponential: false, decimal: 1, description: 'Float slider input'}, 78 | {type: 'int', control: 'slider', key: 'intSlider', 'default': 10, min: 5, max: 15, exponential: false, description: 'Integer slider input'}, 79 | {type: 'vec3', control: 'color', key: 'vec3Color', 'default': [1, 0, 0], description: 'RGB color input'}, 80 | {type: 'vec4', control: 'color', key: 'vec4Color', 'default': [1, 0, 0, 1], description: 'RGBA color input'}, 81 | {type: 'string', control: 'select', key: 'select', 'default': 'a', options: ['a', 'b', 'c'], description: 'Dropdown/select'}, 82 | {type: 'int', control: 'jointSelector', key: 'jointSelector', description: 'Joint select from the animation component on a parent entity'} 83 | ]; 84 | ``` 85 | 86 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/) -------------------------------------------------------------------------------- /doc-source/statemachines-animation.md: -------------------------------------------------------------------------------- 1 | # Animation State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions to animate and transform entities in Sumerian\. 4 | 5 | Transform actions change the translation, rotation, and scale of the entity\. Tween actions change the same values smoothly over a configurable amount of time\. 6 | 7 | **Transform Actions** 8 | + **Look at** – Rotate the entity to face a point in space\. 9 | + **Tween look at** – Smoothly rotate the entity to face a point in space over time\. 10 | + **Face current camera** – Rotate the entity to face the active camera\. 11 | + **Move**, **Rotate**, and **Scale** – Move, rotate, or scale the entity immediately\. 12 | + \(move\) **Oriented** – If the entity is rotated, move relative to the current rotation\. For example, moving a host 1 unit on the X axis with oriented always moves the host to their right, on the host's X axis\. If not oriented, the host moves on the world X axis, regardless of which direction it faces\. 13 | + **Relative** – Move, rotate, or scale relative to the current transform values\. Uncheck to set new tranform values absolutely\. 14 | + **On every frame** – Repeat a relative transform while the state is active, spreading the specified values over each second that passes\. For example, you can add 90 degrees of rotation *relative*, and *on every frame*\. If the scene renders at 60 frames per second, the entity rotates 1\.5 degrees every frame until a transition occurs\. 15 | + **Tween move**, **Tween rotate**, **Tween scale** – Smoothly move, rotate, or scale the entity over time\. 16 | + **Shake** – Shake the entity\. 17 | 18 | Animation actions control the entity's animation component\. 19 | 20 | **Animation Actions** 21 | + **Copy joint transform** – Copy a joint transform from another entity, and apply it to this entity\. This entity must be a child of an entity with an animation component\. 22 | + **Pause animation** – Pause skeleton animation\. 23 | + **Resume animation** – Continue playing skeleton animation\. 24 | + **Set animation** – Transition to a selected animation\. 25 | + **Set animation offset** – Change the animation clip offset\. 26 | + **Set animation time scale** – Change the time scale for the current animation\. 27 | 28 | Host actions configure a Sumerian host to play an emote or look at another entity\. 29 | 30 | **Host Actions** 31 | + **Play emote** – Play a host emote\. 32 | + **Set point of interest target** – Change the target entity of a host\. -------------------------------------------------------------------------------- /doc-source/statemachines-attributes.md: -------------------------------------------------------------------------------- 1 | # Attribute and Tag State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to manage attributes and tags on an entity\. 4 | 5 | Attribute actions manage attributes on the state machine's entity or transition based on the value of an attribute\. 6 | 7 | **Attribute Actions** 8 | + **Duplicate attribute** – Copy the value of an attribute into the value of a second attribute\. 9 | + **Toggle boolean attribute** – Change the value of an attribute from true to false, or vice versa\. 10 | + **Set boolean attribute**, **Set numeric attribute**, **Set string attribute** – Set the value of an attribute\. 11 | + **Log attribute** – Log the value of an attribute\. 12 | + **Attribute math**, **Attribute math with constant** – Modify the value of an attribute by doing arithmetic using a number or using the value of second attribute\. 13 | + **Check boolean attribute**, **Compare boolean attributes**, **Compare numeric attribute to constant**, **Compare numeric attributes**, **Compare string attribute to constant**, **Compare string attribute with regex**, **Compare string attributes** – Transition based on the value of an attribute\. 14 | 15 | Tag actions modify an entity's tags, or transition based on the presence or absence of a tag\. 16 | 17 | **Tag Actions** 18 | + **Add tag**, **Clear tag** – Add or remove a tag\. 19 | + **Toggle tag** – Add a tag if it isn't present; remove it if it is present\. 20 | + **Check for tag** – Transition based on the presence of a tag\. -------------------------------------------------------------------------------- /doc-source/statemachines-audio.md: -------------------------------------------------------------------------------- 1 | # Audio and Camera State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to control audio settings and the scene camera\. 4 | 5 | **Audio Actions** 6 | + **Mute**, **Toggle mute**, and **Unmute** – Mute or unmute sounds in the scene\. **Toggle mute** mutes if sound is currently unmuted and vice\-versa\. 7 | + **Audio system** – Mute all audio in the scene, just [sound component](entities-sound.md) audio, or just [speech component](entities-speech.md) audio\. 8 | + **Play sound**, **Pause sound**, and **Stop sound** – Play, pause, or stop a sound from the entity's sound component\. 9 | + **Sound fade in** and **Sound fade out** – Start or stop a sound with a fade\. 10 | + **Start microphone recording** – Start recording audio from microphone input\. 11 | + **Stop microphone recording** – Stop recording audio from microphone input and store it on the entity\. The audio can then be used by the [Send audio input to dialogue bot](#statemachines-audio) action\. 12 | 13 | Camera actions interact with the entity's camera component\. 14 | 15 | **Camera Actions** 16 | + **Dolly zoom** – Perform a dolly zoom\. 17 | + **Switch camera** – Switch to a different camera\. -------------------------------------------------------------------------------- /doc-source/statemachines-aws.md: -------------------------------------------------------------------------------- 1 | # AWS Feature State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions to control Sumerian features that call other AWS services, including speech \(Amazon Polly\) and dialogue \(Amazon Lex\)\. 4 | 5 | **AWS Feature Actions** 6 | + **AWS SDK ready** – Wait for the AWS SDK for JavaScript to get credentials before using features that call AWS services\. See [Configuring AWS Credentials for Your Amazon Sumerian Scene](scene-aws.md) for details\. 7 | + **Change speech component voice** – Change the voice of the entity's [speech component](entities-speech.md)\. Cannot be used during speech playback\. 8 | + **Change speech component volume** – Change the volume of the entity's speech component\. 9 | + **Send audio input to dialogue bot** – Send recorded audio to the Amazon Lex chatbot assigned to the entity's [dialogue component](entities-dialogue.md)\. 10 | + **Send text input to dialogue bot** – Send text input to the Amazon Lex chatbot assigned to the entity's dialogue component\. 11 | + **Start speech** and **Stop speech** – Play or stop a speech\. 12 | + **Speech** – Choose a speech from those attached to the entity's speech component\. 13 | + **Use Amazon Lex Response** – Play the response from an Amazon Lex chatbot, passed from a **Send input to dialogue bot** action on the previous state\. -------------------------------------------------------------------------------- /doc-source/statemachines-controls.md: -------------------------------------------------------------------------------- 1 | # Keyboard and Mouse State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to respond to keyboard, mouse, and touch events\. 4 | 5 | Keyboard actions transition in response to a specific key press\. You can add multiple keyboard actions to the same state to respond to multiple inputs\. The first key press that satisfies any keyboard action on the state triggers a transition to the next state\. 6 | 7 | **Keyboard Actions** 8 | + **Key down** – Press a key\. 9 | + **Key up** – Release a key\. 10 | + **Key pressed** – Press a key\. 11 | + **Arrow key** – Press up, down, left, or right on the arrow keys\. 12 | + **WASD key** – Press W, A, S, or D\. 13 | 14 | Mouse actions listen for click, hover, and touch events on the entity or its children, and then transition to a new state\. 15 | 16 | **Mouse Actions** 17 | + **Click or tap on entity** – Choose an entity by clicking or tapping it\. 18 | + **Hover enter** – Move the mouse cursor over an entity\. 19 | + **Hover exit** – Move the mouse cursor off of an entity\. 20 | + **Mouse move** – Move the mouse cursor\. 21 | + **Mouse down or touch start** – Press a mouse button, or touch the screen\. Has separate transitions for touch and each mouse button\. 22 | + **Mouse up or touch end** – Release a mouse button, or stop touching the screen\. Has separate transitions for touch and each mouse button\. 23 | + **Mouse pressed** – Press a mouse button\. Choose **Left**, **Middle**, or **Right**\. Has one transition for the selected button\. 24 | + **Pick** – Click or tap an entity and then release, without moving away from the entity\. 25 | + **Pick and exit** – Click or tap an entity, and then release to open a link in a new window\. -------------------------------------------------------------------------------- /doc-source/statemachines-effects.md: -------------------------------------------------------------------------------- 1 | # Effects and Lighting State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to modify scene lighting or add special effects\. 4 | 5 | **Effects and Lighting Actions** 6 | + **Add light** – Add a point light to the entity\. 7 | + **Set light properties** – Modify a light component's properties\. 8 | + **Remove light** – Remove the entity's light component\. 9 | + **Tween light** – Smoothly transition between two light colors\. 10 | + **Fire FX** – Make the entity emit fire\. To extinguish the fire, use the **Remove particles** action\. 11 | ![\[Fire particle effects\]](http://docs.aws.amazon.com/sumerian/latest/userguide/) 12 | + **Smoke FX** – Make an entity emit smoke\. To cancel the smoke emitter, use the **Remove particles** action\. 13 | ![\[Smoke particle effects\]](http://docs.aws.amazon.com/sumerian/latest/userguide/) 14 | + **Start particle system** and **Stop particle system** – Start or stop a particle emitter\. 15 | + **Pause particle system** – Pause a particle system\. 16 | + **Remove particles** – Remove any particle emitter attached to the entity 17 | + **Toggle post effects** – Enable or disable all post effects in the scene\. -------------------------------------------------------------------------------- /doc-source/statemachines-materials.md: -------------------------------------------------------------------------------- 1 | # Materials and Rendering State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to modify entity textures and visibility\. Remove or hide entities that are no longer in use to save resources\. 4 | 5 | **Materials and Rendering Actions** 6 | + **Hide** and **Show** – Hide or show the entity and its children\. 7 | + **Remove entity** – Remove the entity from the scene\. 8 | + **Set material color** – Change the color of the entity's material\. 9 | + **Set render target** – Render what a camera sees on the entity's texture\. 10 | + **Sprite animation** – Start a sprite animation\. 11 | + **Tween material color** – Smoothly change the material color\. 12 | + **Tween material opacity** – Smoothly change the material's opacity\. 13 | + **Tween texture offset** – Smoothly change the material texture offset\. -------------------------------------------------------------------------------- /doc-source/statemachines-physics.md: -------------------------------------------------------------------------------- 1 | # Physics and Collision State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to apply physics and check for collisions\. 4 | 5 | Physics actions move an object by simulating real\-world physics\. 6 | 7 | **Physics Actions** 8 | + **Apply force on rigid body** – Apply a force to the entity's rigid body\. 9 | + **Apply impulse on rigid body** – Apply an impulse to the entity's rigid body\. 10 | + **Apply torque on rigid body** – Apply a torque to the entity's rigid body\. 11 | + **Set rigid body angular velocity** – Change the angular velocity of a rigid body\. 12 | + **Set rigid body position** – Change the position of a rigid body\. 13 | + **Set rigid body rotation** – Change the rotation of a rigid body\. 14 | + **Set rigid body velocity** – Change the velocity of a rigid body\. 15 | 16 | Collision actions detect changes in an object's position and transition to a new state\. 17 | 18 | **Collision Actions** 19 | + **Camera distance** – The entity is at a distance from the current camera or a point in space\. 20 | + **In box** – The entity is within a box bounded by two points at opposite corners\. 21 | + **Trigger enter** – The entity's collider enters a trigger volume\. 22 | + **Trigger leave** – The entity's collider leaves a trigger volume\. -------------------------------------------------------------------------------- /doc-source/statemachines-scripting.md: -------------------------------------------------------------------------------- 1 | # Logic and Transition State Machine Actions in Amazon Sumerian 2 | 3 | You can use state machine actions in Amazon Sumerian to run [scripts](sumerian-scripting.md), respond to events, and add transitions to a state\. 4 | 5 | Logic actions perform calculations, run scripts, or interact with the page document\. 6 | 7 | **Logic Actions** 8 | + **DOM listen** – Add a DOM event listener on one or many elements \(specified by a query selector\), and perform a transition on a given event\. 9 | + **Emit message** – Emit a message \(a ping\) to a channel on the bus\. Messages can be listened to by the **Listen** transition action, or by scripts using the `SystemBus.addListener(channel, callback)` function\. 10 | + **Execute script** – Run a [script](sumerian-scripting.md), and transition on success or failure\. Use the `enter` and `exit` functions in your script to run code when the state is entered and exited\. To trigger a transition, call `ctx.transitions.success()` or `ctx.transitions.failure()` on [the context object](scripting-context.md)\. 11 | + **Execute script condition** – Evaluate an expression, and transition on a true or false result\. 12 | + **Execute script expression** – Execute a statement\. 13 | + **Get HTML text** and **Set HTML text** – Read or change the contents of an HTML element\. 14 | + **Log message** – Print a message in the debug console of your browser\. 15 | + **Toggle full screen** – Expand the scene to fill the screen\. For browsers to allow this, the previous state must have a [Click or tap on entity](statemachines-controls.md) action that transitions to the state that runs this action\. 16 | 17 | Timeline actions interact with the entity's timeline component\. 18 | 19 | **Timeline Actions** 20 | + **Pause timeline** – Pause a timeline\. 21 | + **Set timelime time** – Jump to a point on a timeline\. 22 | + **Start timeline** and **Stop timeline** – Start or stop a timeline\. 23 | 24 | Transition actions move from one state to another\. Many actions include transitions\. Use transition actions if the actions on a state don't include one, or to add branching behavior to your state machine\. 25 | 26 | **Transition Actions** 27 | + **In view** – Perform a transition based on whether the entity is in a camera's frustum\. 28 | + **Listen** – Perform a transition on receiving a system bus message on a channel\. 29 | + **Random transition** – Perform a random transition\. 30 | + **Transition** – Transition to a different state\. 31 | + **Transition on next frame** – Transition to a selected state on the next frame\. 32 | + **Wait** – Perform a transition after a specified amount of time, or a random amount of time between 0 seconds and a specified maximum number of seconds\. -------------------------------------------------------------------------------- /doc-source/sumerian-assets.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Assets 2 | 3 | The assets panel in Sumerian collects shareable assets in the scene\. When you add an asset to a scene, Sumerian automatically adds it to a *default pack* in the assets panel\. Entities that you create are not automatically added, but you can drag them from the entities panel into the assets panel to create an entity asset\. 4 | 5 | **Asset Types** 6 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-entity.png) **Entity** – A [Sumerian entity](sumerian-entities.md)\. If you import a file or asset pack, drop the entity from the assets panel onto the canvas to add it to your scene\. 7 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-gesturemap.png) **Gesture map** – A document that maps gesture animations to trigger words in a speech asset\. 8 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-mesh.png) **Mesh** – A polygon mesh from a 3D model\. 9 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-skeleton.png) **Skeleton** – A skeleton from a 3D model\. 10 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-animation.png) **Animation** – A collection of animation clips from a 3D model\. 11 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-clip.png) **Clip** – An animation clip from a 3D model\. 12 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-material.png) **Material** – A [material component](entities-material.md) with textures for each renderable layer generated from a 3D model\. 13 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-sound.png) **Sound** – An audio file for use with a [sound component](entities-sound.md)\. 14 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-script.png) **Script** – A JavaScript script that can be instantiated on a [script component](entities-sound.md)\. 15 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-speech.png) **Speech** – A text file for use with a [speech component](entities-speech.md)\. 16 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-json.png) **JSON** – A JSON file that can be used as a parameter input on a [script component](entities-sound.md)\. 17 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-skybox.png) **Skybox** – A collection of textures that can be added to the background of the scene in the scene's [environment settings](scene-environment.md)\. 18 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-behavior.png) **Behavior** – A collection of actions that can be added to a [state machine component](entities-statemachine.md)\. 19 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-icons-texture.png) **Texture** – An image file that can be added to layers of a [material component](entities-material.md), a [2D graphics component](entities-2dgraphics.md), or a skybox\. 20 | 21 | To add an asset to a scene, you can drag it from your desktop directly onto the canvas\. Depending on the file type, the editor creates an entity in the entities panel, and one or more assets\. For example, when you add a JPG image to a scene, you get an image entity in the scene, a material asset, and a texture asset\. 22 | 23 | **To add an asset to a scene** 24 | 25 | 1. Open a scene in the Sumerian editor\. 26 | 27 | 1. Drag a file from your desktop file browser onto the canvas\. 28 | 29 | **or** 30 | 31 | Create a blank asset by clicking the plus icon next to the default pack\. To see the icon, select the pack name\. 32 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-bin-add.png) 33 | 34 | 1. Choose the asset in the assets panel and modify it by using the options in the inspector panel\. -------------------------------------------------------------------------------- /doc-source/sumerian-concepts.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Concepts 2 | 3 | Amazon Sumerian lets you create virtual reality \(VR\) and augmented reality \(AR\) *scenes* that are made up of *components* and *entities*, organized into *projects*\. Let's look closely at the concepts used in the Sumerian editor and this guide\. 4 | 5 | ## Scenes 6 | 7 | A scene is a 3D space that contains objects and behaviors that define a VR or AR environment\. Objects include geometry, materials, and sounds that you import from a supported file format, and objects that you create in the scene like lights, cameras, and particle effects\. Behaviors include state machine behaviors, animations, timelines, and scripts\. 8 | 9 | When you're ready to show off your scene, export it directly to Amazon CloudFront as a static website that you can open in a browser\. 10 | 11 | See [Scenes](dashboard-scenes.md) for more information\. 12 | 13 | ## Components and Entities 14 | 15 | All objects and behaviors are *components* that combine to create *entities*\. For example, when you import a 3D model and add it to a scene, the editor creates an entity that has a geometry component, a material component, a transform component, and an animation component\. You can then use the editor to add a rigid body, colliders, and other components to the entity\. 16 | 17 | See [Amazon Sumerian Entities](sumerian-entities.md) for more information\. 18 | 19 | ## Assets 20 | 21 | Assets are the images, sounds, scripts, models, and documents that you import into Sumerian to use in a scene\. You can manage assets independently of the scenes that use them in the *asset library*\. Assets can belong to a user or project\. 22 | 23 | See [Asset Packs](dashboard-assets.md) for more information\. 24 | 25 | ## Hosts 26 | 27 | A host is a asset provided by Sumerian that has built in animation, speech, and behavior for interacting with users\. 28 | 29 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/hosts.png) 30 | 31 | Hosts use Amazon Polly to speak to users from a text source\. You can use hosts to engage users and guide them through a VR experience\. 32 | 33 | See [Amazon Sumerian Host Component](entities-host.md) for more information\. 34 | 35 | ## Projects 36 | 37 | Projects are an organizational tool for managing scenes, assets, and templates\. 38 | 39 | See [Projects](dashboard-projects.md) for more information\. 40 | 41 | ## Templates 42 | 43 | Templates let you save a copy of a scene to use as a starting point for other scenes\. Templates belong to a project\. Sumerian provides several templates, which you can access from the dashboard\. 44 | 45 | See [Templates](dashboard-templates.md) for more information\. -------------------------------------------------------------------------------- /doc-source/sumerian-dashboard.md: -------------------------------------------------------------------------------- 1 | # The Amazon Sumerian Dashboard 2 | 3 | The Dashboard is the first thing you see when you open the Amazon Sumerian app\. This is where you manage your projects, scenes, asset packs, and templates\. 4 | 5 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/dashboard.png) 6 | 7 | Projects collect scenes and the templates and asset packs that you export from them\. You can create draft projects outside of a project, but you must have a project to export templates and assets\. 8 | 9 | When you open a scene in the editor, it is locked to prevent other users from modifying it\. The dashboard manages locks and lets you steal a lock if the other user leaves a scene open by accident\. 10 | 11 | **Topics** 12 | + [Projects](dashboard-projects.md) 13 | + [Scenes](dashboard-scenes.md) 14 | + [Asset Packs](dashboard-assets.md) 15 | + [Templates](dashboard-templates.md) 16 | + [Trash](dashboard-trash.md) 17 | + [Locks](dashboard-locks.md) -------------------------------------------------------------------------------- /doc-source/sumerian-editor.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Editor 2 | 3 | The Sumerian editor provides an interface for easily importing assets, building a scene, and publishing the scene on the internet\. 4 | 5 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor.png) 6 | 7 | When you load a scene in the Sumerian editor, you can see a menu bar at the top of the screen, the entities panel, the assets panel, the canvas, and the inspector panel\. This menu bar provides menus for navigating between scenes, accessing tools, and publishing\. 8 | 9 | **Top bar** 10 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-navbar.png) 11 | + *Sumerian logo*– Exit to dashboard\. 12 | + **Scene** – Create a new scene, publish your scene, or open a recent scene\. 13 | + **Tools** – Access the text editor, behavior editor, and timeline editor\. 14 | + **Create entity** – Add a shape, light, camera, or blank entity to the scene\. 15 | + **Import assets** – Open the asset library\. 16 | + **Help** – View the shortcut list or submit feedback\. 17 | + *Username* – Log out\. 18 | 19 | The status bar at the bottom of the screen shows updates about save, import, and rendering operations\. 20 | 21 | **Status bar** 22 | ![\[\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-statusbar.png) 23 | + *Progress bar* – Shows information about the current activity, such as model uploading\. 24 | + *Path* – The current user, project, and scene\. 25 | 26 | The following topics describe the menu options in each of the areas of the editor\. 27 | 28 | **Topics** 29 | + [Amazon Sumerian Editor Canvas](editor-canvas.md) 30 | + [Importing Assets From the Asset Library in the Amazon Sumerian Editor](editor-assetlib.md) 31 | + [Using the Assets Panel in the Amazon Sumerian Editor](editor-assets.md) 32 | + [Using the Entities Panel in the Amazon Sumerian Editor](editor-entities.md) 33 | + [Using the Inspector Panel in the Amazon Sumerian Editor](editor-inspector.md) 34 | + [Using the Tools in the Amazon Sumerian Editor](editor-tools.md) 35 | + [Keyboard and Mouse Controls for the Amazon Sumerian Editor](editor-shortcuts.md) 36 | + [Publishing Scenes in the Amazon Sumerian Editor](editor-publish.md) -------------------------------------------------------------------------------- /doc-source/sumerian-entities.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Entities 2 | 3 | Entities are a kind of container in Sumerian that you use to collect and organize assets in your scene\. For example, when you add a 3D model to your scene, the editor splits it into mesh, texture, and animation assets and assigns them to an entity with the corresponding Sumerian geometry, material, and animation components\. Your scene can contain up to 1,000 entities\. 4 | 5 | Entities can be cameras, lights, or containers for other entities\. The [Entities panel](editor-entities.md) organizes entities into a hierarchy\. You can use it to attach entities to one another in parent\-child relationships\. 6 | 7 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-panel.png) 8 | 9 | Components are the configurable parts of an entity that determine its appearance and behavior during playback\. To make a lamp model light the scene, add a light component\. To move or change the entity during playback, add a state machine, timeline, or script component\. 10 | 11 | **To create an entity and add components** 12 | 13 | 1. Open a scene in the Sumerian editor\. 14 | 15 | 1. Choose **Create entity**\. 16 | 17 | 1. Choose a shape or built\-in object\. For a blank entity, choose **Entity**\. 18 | 19 | 1. Choose the new entity in the entities panel\. 20 | 21 | 1. In the inspector panel, expand the **Details** section\. Enter text in the fields to change the entity name, description, tags, and attributes\. 22 | 23 | 1. To place the entity in the scene, use the X, Y, and Z axis handles in the canvas\. Or expand the **Transform** section and enter absolute coordinates\. 24 | 25 | 1. Choose the plus icon, and then choose a component type to add a component to the entity\. 26 | 27 | ## Managing Entities 28 | 29 | Use the entities panel to organize your scene's entities in a hierarchy\. When you make an entity a child of another entity, it attaches to the parent\. That is, when you move the parent, the child moves, and when you set the child's position, it's relative to the position of the parent\. 30 | 31 | **To manage entities** 32 | 33 | 1. Open a scene in the Sumerian editor\. 34 | 35 | 1. Choose an entity in the entities panel\. 36 | 37 | 1. Drag the entity onto another entity to make it a child of that entity\. 38 | 39 | 1. Use the icons next to the entity name to manage it the eye icon next to an entity to hide it\. 40 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-hide.png) – Hide the entity\. 41 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-duplicate.png) – Make a copy of the entity\. 42 | + ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/entities-icons-trash.png) – Delete the entity\. 43 | 44 | ## Managing Components 45 | 46 | Components have properties you can use to configure settings or attach assets\. All entities include a transform component that you can use to move the entity around the scene\. Depending on the type of entity that you create, other components are also included automatically\. 47 | 48 | **Default Components** 49 | + **2D shapes** – Transform, 2d graphics 50 | + **3D shapes** – Transform, geometry, material 51 | + **Cameras** – Transform, camera, script 52 | + **HTML 3D** – Transform, HTML 3D 53 | + **Lights** – Transform, light 54 | + **Particles** – Transform, particles 55 | + **Timeline** – Transform, timeline 56 | 57 | **To manage components** 58 | 59 | 1. Open a scene in the Sumerian editor\. 60 | 61 | 1. Choose an entity in the entities panel\. 62 | 63 | 1. In the inspector panel, choose a component's name to expand or collapse its properties\. See the topics below for each component for details on their available properties\. 64 | 65 | 1. Click the cog icon and use the following options: 66 | + **Reset** – Restore the default values for the component's properties\. 67 | + **Toggle panel** – Show or hide the component properties\. 68 | + **Remove** – Delete the component\. 69 | + **Copy** \(some components\) – Copy the component configuration\. 70 | + **Paste** \(some components\) – Paste the component configuration that you copied from the same component on a different entity\. 71 | 72 | Some components also have special properties that are affected by the components on their parent\. For example, a collider's behavior changes depending on the type of rigid body that's attached to the same entity or parent entity\. 73 | 74 | The following topics describe the parameters and use of each type of component\. 75 | 76 | **Basic Components** 77 | + [Amazon Sumerian Transform Component](entities-transform.md) 78 | + [Amazon Sumerian Geometry Component](entities-geometry.md) 79 | + [Amazon Sumerian Material Component](entities-material.md) 80 | + [Amazon Sumerian Camera Component](entities-camera.md) 81 | + [Amazon Sumerian VR Camera Rig Component](entities-vrcamerarig.md) 82 | + [Amazon Sumerian HMD Camera Component](entities-hmdcamera.md) 83 | + [Amazon Sumerian VR Controller Component](entities-vrcontroller.md) 84 | + [Amazon Sumerian Host Component](entities-host.md) 85 | + [Amazon Sumerian Speech Component](entities-speech.md) 86 | + [Amazon Sumerian Dialogue Component](entities-dialogue.md) 87 | 88 | **Content and Effects** 89 | + [Amazon Sumerian 2D Graphics Component](entities-2dgraphics.md) 90 | + [Amazon Sumerian HTML Components](entities-html.md) 91 | + [Amazon Sumerian Sound Component](entities-sound.md) 92 | + [Amazon Sumerian Light Component](entities-light.md) 93 | + [Amazon Sumerian Particle System Component](entities-particlesystem.md) 94 | 95 | **Animation and Physics** 96 | + [Amazon Sumerian Animation Component](entities-animation.md) 97 | + [Amazon Sumerian Collider Component](entities-collider.md) 98 | + [Amazon Sumerian Rigid Body Component](entities-rigidbody.md) 99 | + [Amazon Sumerian State Machine Component](entities-statemachine.md) 100 | + [Amazon Sumerian Script Component](entities-script.md) 101 | + [Amazon Sumerian Timeline Component](entities-timeline.md) -------------------------------------------------------------------------------- /doc-source/sumerian-gettingstarted.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Tutorials and Samples 2 | 3 | You can start working with the Sumerian editor quickly with just a web browser\. You don't need to download any additional software or connect a virtual reality \(VR\) headset to make interactive scenes and learn about Sumerian features\. 4 | 5 | To get familiar with the Sumerian editor, build a scene by using the [getting started tutorial](gettingstarted-tutorial.md)\. The tutorial introduces entity management, cameras, configuration, and state machines\. 6 | 7 | Next, learn about working with external assets by downloading and importing a [sample character model](gettingstarted-robin.md)\. You can create models with free tools and import them into your Sumerian scene, converting them to Sumerian assets with texture and animation data intact\. 8 | 9 | Do more with cameras and state machines by recreating the [model showcase scene](gettingstarted-showcase.md)\. Learn how to configure a camera script and use a state machine to trigger animations in response to user input\. 10 | 11 | **Topics** 12 | + [Getting Started with Amazon Sumerian](gettingstarted-tutorial.md) 13 | + [Working with a Sample Model](gettingstarted-robin.md) 14 | + [Building a Model Showcase](gettingstarted-showcase.md) -------------------------------------------------------------------------------- /doc-source/sumerian-permissions.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Permissions 2 | 3 | You can use AWS Identity and Access Management \(IAM\) to grant Sumerian permissions to users and compute resources in your account\. IAM controls access to AWS at the API level to enforce permissions uniformly and securely\. 4 | 5 | ## IAM Managed Policies for Sumerian 6 | 7 | To make granting permissions easy, IAM supports **managed policies** for each service\. A service can update these managed policies with new permissions when it releases new APIs\. Sumerian provides managed policies for user permissions needed to use the Sumerian editor\. 8 | + `AmazonSumerianFullAccess` – Permission to use all Sumerian features\. 9 | 10 | ``` 11 | { 12 | "Version": "2012-10-17", 13 | "Statement": [ 14 | { 15 | "Effect": "Allow", 16 | "Action": [ 17 | "sumerian:*" 18 | ], 19 | "Resource": "*" 20 | } 21 | ] 22 | } 23 | ``` 24 | 25 | **To add a managed policy to an IAM user, group, or role** 26 | 27 | 1. Open the [IAM console](https://console.aws.amazon.com/iam/home)\. 28 | 29 | 1. Open the role associated with your instance profile, an IAM user, or an IAM group\. 30 | 31 | 1. Under **Permissions**, attach the managed policy\. 32 | 33 | You only need access to Sumerians APIs\. Sumerian manages all of the storage \(Amazon S3\) and content delivery \(Amazon CloudFront\) related to the scenes that you create outside of your account\. 34 | 35 | ## Granting a Scene Access to AWS Services 36 | 37 | To use AWS services in a scene, the scene needs credentials as well\. You can use Amazon Cognito Identity to create an identity pool that gives the scene access to a role with permission to use AWS\. Create a role that has permissions to any services that you will access from scripts, and permissions for components that use AWS services\. 38 | 39 | **To create an identity pool for a Sumerian scene** 40 | 41 | 1. Open the [**Federated identities** page](https://console.aws.amazon.com/cognito/federated) in the Amazon Cognito console\. 42 | 43 | 1. Choose **Create new identity pool**\. 44 | 45 | 1. Create a pool with the following settings\. 46 | + **Unauthenticated identities** – enabled 47 | 48 | 1. Choose **Edit identity pool** to see the pool details\. 49 | 50 | 1. Note the **Identity pool ID** for later use\. 51 | 52 | When you create an identity pool, Amazon Cognito prompts you to create two roles, an authenticated role, and an unauthenticated role\. Add permissions to the unauthenticated role\. 53 | 54 | **To add permissions to an identity pool role for a Sumerian scene** 55 | 56 | 1. Open the [**Roles** page](https://console.aws.amazon.com/iam/home#/roles) in the IAM console\. 57 | 58 | 1. Choose the role named **Cognito\_*pool\-name*Unauth\_Role**\. 59 | 60 | 1. Choose **Attach policy** and add policies for the services that your scene uses\. 61 | + **Speech component** – `AmazonPollyReadOnlyAccess` gives the scene permission to use Amazon Polly to render text into audio with the [speech component](entities-speech.md)\. 62 | + **AWS SDK for JavaScript** – add policies that grant access to the services that you call with the SDK for JavaScript\. For example, `AmazonS3ReadOnlyAccess`\. 63 | 64 | Assign the identity pool to your scene under **[AWS configuration](scene-aws.md)** in scene settings\. 65 | 66 | ## Restricting Access to a Published Scene 67 | 68 | To prevent public access to a scene, embed it in a web app by using AWS Amplify\. When you [deploy a scene privately](editor-publish.md), Amazon Sumerian packages it for playback but doesn't publish it to a public location\. You can then use the Amplify library to load it into your app\. 69 | 70 | Amplify uses credentials from an Amazon Cognito identity pool to download a scene securely from Sumerian\. You can grant your identity pool's role access to all scenes in your account, or just to scenes in a specific project\. 71 | 72 | To grant access to all scenes, add the following policy to your identity pool's role\. 73 | 74 | ``` 75 | { 76 | "Version": "2012-10-17", 77 | "Statement": [ 78 | { 79 | "Effect": "Allow", 80 | "Action": [ 81 | "sumerian:ViewRelease" 82 | ], 83 | "Resource": "*" 84 | } 85 | ] 86 | } 87 | ``` 88 | 89 | To grant access to a single project, specify the project by using the `Resource` key\. 90 | 91 | ``` 92 | { 93 | "Version": "2012-10-17", 94 | "Statement": [ 95 | { 96 | "Effect": "Allow", 97 | "Action": [ 98 | "sumerian:ViewRelease" 99 | ], 100 | "Resource": "arn:aws:sumerian:region:accountid:project:projectname" 101 | } 102 | ] 103 | } 104 | ``` -------------------------------------------------------------------------------- /doc-source/sumerian-scene.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Scene Settings 2 | 3 | In addition to the [options available in the dashboard](dashboard-scenes.md), the Sumerian editor contains many options for configuring a scene\. In the inspector panel, you can configure credentials for the AWS SDK for JavaScript, adjust the canvas size and grid, and configure global settings like fog, background image, and post\-processing effects\. 4 | 5 | **To configure a scene** 6 | 7 | 1. Open a scene in the Sumerian editor\. 8 | 9 | 1. Choose the root node in the **Entities** panel\. 10 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 11 | 12 | 1. Modify scene settings in the inspector panel\. 13 | + **Details** – Update the scene's name and description\. 14 | + **Tags** – Add metadata tags to the scene\. 15 | + **Custom attributes** – Add metadata key\-value pairs to the scene\. 16 | 17 | You can save a copy of your scene as a **template** to use as a starting point for creating other scenes\. If your scene is saved to a project, the template is saved to the same project\. Otherwise, you must choose a project to hold the template\. 18 | 19 | **To create a template** 20 | 21 | 1. Open a scene in the Sumerian editor\. 22 | 23 | 1. Choose the root node in the **Entities** panel\. 24 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/editor-entities-scene.png) 25 | 26 | 1. Expand the scene section in the inspector panel\. 27 | 28 | 1. Choose **Save scene as template**\. 29 | 30 | 1. If the scene is a draft, choose a project for the template\. 31 | 32 | You can [copy or move templates between scenes](dashboard-templates.md) in the dashboard\. You can update a template by creating a template again from the same source scene or from a scene created from the template\. When you save a template, you can choose to create a new template or update the existing template\. 33 | 34 | Collapse the scene settings section by choosing the name of your scene\. 35 | 36 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/scene-sections.png) 37 | 38 | **Topics** 39 | + [Configuring AWS Credentials for Your Amazon Sumerian Scene](scene-aws.md) 40 | + [Creating Snapshots of Your Amazon Sumerian Scene](scene-snapshots.md) 41 | + [Configuring the Canvas for Your Amazon Sumerian Scene](scene-document.md) 42 | + [Configuring Environment Settings for Your Amazon Sumerian Scene](scene-environment.md) 43 | + [Configuring Post\-Processing Effects for Your Amazon Sumerian Scene](scene-posteffects.md) 44 | + [Calculating the Size of Your Amazon Sumerian Scene](scene-scenesize.md) 45 | + [Viewing Performance Information for Your Amazon Sumerian Scene](scene-scenestats.md) -------------------------------------------------------------------------------- /doc-source/sumerian-scripting.md: -------------------------------------------------------------------------------- 1 | # Scripting 2 | 3 | Add scripts to your scene to update your scene based on user input or events\. You can use scripts to access the DOM, create and modify entities with the Sumerian engine library, or use the AWS SDK for JavaScript to access AWS services and resources\. 4 | 5 | **Note** 6 | Visit this guide's [GitHub repo](https://github.com/awsdocs/amazon-sumerian-user-guide/tree/master/scripts) for a collection of useful sample scripts\. Contributions are welcome\! 7 | 8 | **To create a blank script** 9 | 10 | 1. Open a scene in the Sumerian editor\. 11 | 12 | 1. Create a blank asset by clicking the plus icon next to the default pack and then click **Script**\. Select the pack name to see the icon\. 13 | ![\[Image NOT FOUND\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/assets-bin-add.png) 14 | 15 | 1. Press j to open the text editor\. 16 | 17 | 1. Choose the new script under documents\. Use the pencil icon next to the script name to change its name\. 18 | 19 | The script template includes 7 methods and a [parameters](scripting-parameters.md) array\. The methods correspond to a scene's lifecycle events and are called by the engine at the following times\. 20 | + `setup` – When scene playback starts\. 21 | + `fixedUpdate` – On every physics update\. 22 | + `update` – On every render frame\. 23 | + `lateUpdate` – After calling all `update` methods in the scene\. 24 | + `enter` – On a [state machine script action](statemachines-scripting.md), when the state is entered\. 25 | + `exit` – On a state machine script action, when the state is exited\. 26 | + `cleanup` – When scene playback stops\. 27 | 28 | Reference documentation for the Sumerian engine library is available on the [Sumerian website](https://content.sumerian.amazonaws.com/engine/latest/docs/)\. 29 | 30 | **Topics** 31 | + [Built\-in Scripts](scripting-builtins.md) 32 | + [The Context Object](scripting-context.md) 33 | + [Parameters and Arguments](scripting-parameters.md) 34 | + [External Dependencies](scripting-dependencies.md) 35 | + [Debugging](scripting-debugging.md) -------------------------------------------------------------------------------- /doc-source/sumerian-statemachines.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian State Machines 2 | 3 | Amazon Sumerian behaviors are state machines that you can attach to the [state machine component](entities-statemachine.md) on an entity\. A behavior is a collection of *states* that transition between one another based on user interaction, timing, or other events\. 4 | 5 | ![\[Diagram of a state machine\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-statemachine-diagram.png) 6 | 7 | Each state in a behavior consists of one or more *actions* that contain some logic that Sumerian defines\. An action on the active state can do things like respond to a user clicking the entity that the behavior is attached to, run a script, or record audio and send it to an Amazon Lex chatbot\. 8 | 9 | ![\[A state machine that adds an Amazon Lex chatbot to a host\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/components-dialogue-state-audio.png) 10 | 11 | All actions on a state execute simultaneously when the state is entered\. If an action has a built\-in transition, the transition enters the next state when the action is complete\. Some actions modify the entity or scene and don't have a built\-in transition\. Others perform a calculation or wait for an event, and then fire a transition\. 12 | 13 | In the previous example, the first state waits for the AWS SDK to get credentials and signal that it's ready\. When this occurs, it transitions to a state that waits for the user to press the Spacebar\. This transitions to another state that has two actions: one starts recording audio, and a second waits for the user to release the key\. When the user releases the key, another state stops the audio recording and transitions to a fifth state that sends the recorded audio to an Amazon Lex chatbot\. 14 | 15 | The chatbot action has three transitions, and can respond differently depending on the result of the call to Amazon Lex\. Finally, the sixth state plays the audio response from the chatbot and transitions back to the second state to wait for another key press\. For more information on this example, see [Amazon Sumerian Dialogue Component](entities-dialogue.md)\. 16 | 17 | Sumerian provides many actions, organized into the following categories\. 18 | 19 | **State Machine Actions** 20 | + [Animation](statemachines-animation.md) – Animate and transform entities\. 21 | + [Audio and Camera](statemachines-audio.md) – Control audio settings and the scene camera\. 22 | + [AWS Features](statemachines-aws.md) – Control Sumerian features that call other AWS services, including speech \(Amazon Polly\) and dialogue \(Amazon Lex\)\. 23 | + [Keyboard and Mouse](statemachines-controls.md) – Respond to keyboard, mouse, and touch events\. 24 | + [Effects and Lighting](statemachines-effects.md) – Modify scene lighting or add special effects\. 25 | + [Materials and Rendering](statemachines-materials.md) – Modify entity textures and visibility\. 26 | + [Physics and Collision](statemachines-physics.md) – Apply physics and check for collisions\. 27 | + [Logic and Transitions](statemachines-scripting.md) – Run scripts, respond to events, and add transitions to a state\. 28 | + [Attributes and Tags](statemachines-attributes.md) – Manage entity metadata and perform transitions based on the value of a string, number, or boolean\. -------------------------------------------------------------------------------- /doc-source/sumerian-troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting Issues with Amazon Sumerian Scenes 2 | 3 | This topic lists common errors and issues that you might encounter when using the Sumerian editor and player\. If you find an issue that is not listed here, you can use the **Feedback** button on this page to report it\. 4 | 5 | **Issue:** \(Chrome\) Can't enter virtual reality mode\. 6 | 7 | You may need to set the following flags to use virtual reality mode in Chrome\. 8 | + **WebVR** – `#enable-webvr` 9 | + **Gamepad Extensions** – `#enable-gamepad-extensions` 10 | + **Override software rendering list** – `#override-software-rendering-list` 11 | 12 | To access Chrome flags, type chrome://flags into your search bar\. 13 | 14 | **Issue:** Browser uses the wrong GPU for hardware acceleration\. 15 | 16 | If you have multiple graphics cards, you may need to configure your system to use the right GPU for browser applications\. For example, the NVIDIA control panel has an option named **target GPU** that you can set for each application\. -------------------------------------------------------------------------------- /doc-source/sumerian-usecases.md: -------------------------------------------------------------------------------- 1 | # Amazon Sumerian Use Cases and Requirements 2 | 3 | At the core of Amazon Sumerian is a web\-based editor for constructing 3D scenes with animation, scripted interaction, and special effects\. The editor runs in your web browser, and all of your data is stored in AWS\. The editor outputs scenes to Amazon CloudFront as a static website that you can load directly into any WebVR\-compatible browser and headset, or embed in your website for others to access\. 4 | 5 | **Note** 6 | Don't know how to script? The Sumerian editor provides a fully featured state machine for scripting animations and user interactions visually, with no coding required\. 7 | 8 | WebVR is an open specification that lets you create and share virtual reality \(VR\) experiences through the web\. WebVR applications, like any web app, are supported on several desktop and mobile operating systems\. This enables you to avoid the need to port your application to different programming languages and package formats to reach all users\. Sumerian provides tools and components that you can use to [add VR to your scene](assets-vrtools.md)\. 9 | 10 | Sumerian also lets you create augmented reality \(AR\) applications\. An AR application can use your phone's camera or an AR\-compatible headset to overlay graphics on the real world\. Sumerian provides a [template and sample application](assets-artools.md) for creating ARKit applications for iOS phones\. 11 | 12 | Sumerian provides a library of optimized 3D objects and scene templates that you can use to construct scenes without any existing assets\. If you do have 3D models, you can import them with their animations and textures by dragging them from your file system into the editor canvas\. Sumerian supports models in `OBJ` and `FBX` formats\. -------------------------------------------------------------------------------- /doc-source/troubleshooting-profiling.md: -------------------------------------------------------------------------------- 1 | # Profiling Amazon Sumerian Scenes 2 | 3 | You can use browser performance analysis tools to measure your Amazon Sumerian scene's performance during playback and to identify issues\. For additional insight, you can use a cookie to configure Sumerian to record detailed timing information about the engine's update and render loops for each frame\. 4 | 5 | Use [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/) to set the cookie and profile your scene\. 6 | 7 | **To profile a scene in Chrome** 8 | 9 | 1. Open a scene in the Sumerian editor\. 10 | 11 | 1. In the **Entities** panel, choose the root node of your scene to access [scene settings](sumerian-scene.md)\. In the scene panel, expand the **Details** section, and then choose **View scene** to open the scene in a new tab\. 12 | 13 | 1. Open the **Console** panel in Chrome DevTools as follows: 14 | + Windows, Linux, Chrome – Ctrl Shift J 15 | + Mac – Command Option J 16 | 17 | 1. To set the cookie, run the following statement at the console prompt\. 18 | 19 | ``` 20 | document.cookie = 'sumerianProfiling=useSystemTimingMarks;path=/' 21 | ``` 22 | 23 | 1. Reload the page\. 24 | 25 | 1. Choose **Performance** in the navigation bar of the DevTools panel\. 26 | 27 | 1. Click the record button to start a recording\. Use your scene for a few seconds, and then click the record button again to stop recording\. 28 | 29 | 1. The top section of the performance graph shows the scene's frames per second \(FPS\) in green\. Locate a section where the frame rate dropped\. Click and drag to zoom in on a few frames\. 30 | 31 | ![\[Performance testing a Sumerian scene.\]](http://docs.aws.amazon.com/sumerian/latest/userguide/images/devtools-performance.png) 32 | 33 | The Sumerian profiling information appears under **User Timing**\. Each frame has an **updateWorld** phase, where the engine logic runs, and a **render** phase, where the user's view of the world is generated\. 34 | 35 | Under the **updateWorld** section, a second timeline shows the timings for each subsystem that's engaged by the engine during this phase\. Use this information to identify components in your scene, like scripts and state machines, that take a long time to update\. If the render phase is too long, reduce the visual complexity of your scene or reduce the number of lights\. 36 | 37 | When detailed profiling is enabled, the Sumerian engine uses additional resources\. When you're done profiling, unset the cookie to disable it\. 38 | 39 | ``` 40 | document.cookie = 'sumerianProfiling=;path=/' 41 | ``` 42 | 43 | For Oculus Go and other Android devices, put your device in developer mode and connect to it from the **DevTools** menu\. For Oculus Go, see [Device Setup \- Oculus Go](https://developer.oculus.com/documentation/mobilesdk/latest/concepts/mobile-device-setup-go/)\. For other devices, see [Get Started with Remote Debugging Android Devices](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/)\. 44 | 45 | For Firefox, you can use the Gecko Profiler Add\-on\. Use the same commands in the browser console to set and unset the cookie\. See [Profiling with the Gecko Profiler](https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler) for more information\. -------------------------------------------------------------------------------- /models/american-robin.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awsdocs/amazon-sumerian-user-guide/dc6c7388890a05fc0d2f293b2b46416f6fefb636/models/american-robin.fbx -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | ## Sample Scripts 2 | These scripts use the Amazon Sumerian engine library to create or modify 3 | scene content dynamically during playback. 4 | 5 | Some of the scripts define setup functions that run when playback 6 | starts. Attach these to an entity using a script component. 7 | 8 | Scripts ending in "-action.js" are state machine script actions 9 | that define enter and exit functions that run when a state is 10 | entered or exited. Attach these to a state machine behavior with 11 | the "execute script" action. 12 | 13 | ### add-quad.js 14 | Create a quad element and add it to the world. 15 | 16 | ### add-skybox.js 17 | Use a texture from Amazon S3 to create a skybox. 18 | 19 | ### add-sphere.js 20 | Create a sphere element and add it to the world. 21 | 22 | ### bot-selector.js 23 | Change the Amazon Lex bot assigned to an entity. 24 | 25 | ### create-speech-action.js 26 | Change the text of an entity's speech component. 27 | 28 | ### download-lists.js 29 | Download a list of strings from Amazon S3 and store them for later use. 30 | 31 | ### hide-entity-action.js 32 | Show or hide any entity in a scene. 33 | 34 | ### random-speech.js 35 | Choose one of the speech files attached to an entity at random and play it. -------------------------------------------------------------------------------- /scripts/add-quad.js: -------------------------------------------------------------------------------- 1 | /* Creates a quad entity and add it to the world. 2 | Stores a reference to the quad in context and delete it 3 | when playback stops. 4 | */ 5 | 6 | 'use strict'; 7 | 8 | function setup(args, ctx) { 9 | const quadMesh = new sumerian.Quad(10,10,1,2,3); 10 | const material = new sumerian.Material(sumerian.ShaderLib.texturedLit); 11 | 12 | ctx.quad = ctx.world.createEntity(quadMesh, material, 'quad'); 13 | ctx.quad.addToWorld(); 14 | ctx.quad.addRotation([-Math.PI/2,0,0]); 15 | } 16 | 17 | function cleanup(args, ctx) { 18 | ctx.quad.removeFromWorld(); 19 | } 20 | -------------------------------------------------------------------------------- /scripts/add-skybox.js: -------------------------------------------------------------------------------- 1 | /* Adds functions to the world context that- 2 | - Enumerate skybox textures stored in Amazon S3 3 | - Choose a texture at random 4 | - Get a presigned URL to download the texture 5 | - Create a skybox entity with the texture URL 6 | - Add the skybox to the world 7 | 8 | Gets bucket name and prefix from script parameters. Call 9 | ctx.worldData.changeSkybox from a state machine script 10 | action or event handler to change the skybox during playback. 11 | */ 12 | 13 | 'use strict'; 14 | 15 | function setup(args, ctx) { 16 | ctx.worldData.listobjects = function(bucket, prefix) { 17 | var keys = []; 18 | return new Promise(function(resolve, reject) { 19 | sumerian.SystemBus.addListener('aws.sdkReady', () => { 20 | ctx.worldData.s3client = new AWS.S3(); 21 | ctx.worldData.s3client.listObjectsV2({ Bucket: bucket, Prefix: prefix }, function(err, data) { 22 | if (err) { 23 | reject(err); 24 | } else { 25 | var i; 26 | for ( i in data.Contents) { 27 | keys[i] = data.Contents[i].Key; 28 | } 29 | resolve(keys); 30 | } 31 | }); 32 | }, true); 33 | }); 34 | } 35 | 36 | ctx.worldData.getRandomPsu = function(keys, bucket){ 37 | const url = ctx.worldData.s3client.getSignedUrl('getObject', { 38 | Bucket: bucket, 39 | Key: keys[Math.floor(Math.random()*keys.length)], 40 | Expires: 600 41 | }) 42 | return url; 43 | } 44 | 45 | ctx.worldData.changeSkybox = function() { 46 | // remove existing skybox 47 | if ( typeof ctx.worldData.skysphere != "undefined" ) { 48 | ctx.worldData.skysphere.removeFromWorld(); 49 | } 50 | // get psu for random key 51 | const url = ctx.worldData.getRandomPsu( ctx.worldData.skyboxkeys, ctx.worldData.skyboxbucket ); 52 | // add skybox 53 | const skybox = new sumerian.Skybox(sumerian.Skybox.SPHERE, url, null, 0, false); 54 | ctx.worldData.skysphere = ctx.world.createEntity(skybox.transform, skybox.materials[0], skybox.meshData); 55 | ctx.worldData.skysphere.addToWorld(); 56 | } 57 | 58 | ctx.worldData.skyboxbucket = args.bucket; 59 | ctx.worldData.prefix = args.prefix; 60 | ctx.worldData.skyboxkeys = []; 61 | 62 | var promise = ctx.worldData.listobjects(args.bucket, args.prefix); 63 | promise.then( function(keys){ 64 | ctx.worldData.skyboxkeys = keys; 65 | ctx.worldData.changeSkybox() 66 | }); 67 | } 68 | 69 | // Called when play mode stops. 70 | // 71 | function cleanup(args, ctx) { 72 | ctx.worldData.skysphere.removeFromWorld(); 73 | } 74 | 75 | // Defines script parameters. 76 | // 77 | var parameters = [ 78 | { 79 | name : "Bucket", 80 | key : "bucket", 81 | type : "string" 82 | }, 83 | { 84 | name : "Prefix", 85 | key : "prefix", 86 | type : "string" 87 | } 88 | ]; -------------------------------------------------------------------------------- /scripts/add-sphere.js: -------------------------------------------------------------------------------- 1 | /* Creates a sphere entity and add it to the world. 2 | Stores a reference to the sphere in context and delete it 3 | when playback stops. 4 | */ 5 | 6 | 'use strict'; 7 | 8 | function setup(args, ctx) { 9 | const polarSphereMeshData = new sumerian.Sphere(32, 32, 0.5, sumerian.Sphere.TextureModes.Polar); 10 | const material = new sumerian.Material(sumerian.ShaderLib.texturedLit); 11 | 12 | ctx.sphere = ctx.world.createEntity(polarSphereMeshData, material, 'Polar', [0, 1, 2]); 13 | ctx.sphere.addToWorld(); 14 | } 15 | 16 | function cleanup(args, ctx) { 17 | ctx.sphere.removeFromWorld(); 18 | } 19 | -------------------------------------------------------------------------------- /scripts/bot-selector.js: -------------------------------------------------------------------------------- 1 | /* Adds a function to the entity context that changes the in-use Amazon Lex bot 2 | by modifying the dialogue component configuration on the same entity. 3 | The function takes a click event and retrieves the new chatbot name and 4 | alias from the entity that the user clicks. 5 | 6 | Attaches an event listener to two HTML buttons from an HTML entity in the 7 | scene with the following content: 8 | 9 | 10 | 11 | */ 12 | 13 | 'use strict'; 14 | 15 | function setup(args, ctx) { 16 | ctx.entityData.changeBot = function(event){ 17 | var name = event.target.getAttribute("botname"); 18 | var alias = event.target.getAttribute("botalias"); 19 | console.log(name); 20 | ctx.entity.dialogueComponent.updateConfig({name: name, alias: alias}) 21 | }; 22 | document.getElementById("bot1button").addEventListener('click', ctx.entityData.changeBot); 23 | document.getElementById("bot2button").addEventListener('click', ctx.entityData.changeBot); 24 | } 25 | -------------------------------------------------------------------------------- /scripts/create-speech-action.js: -------------------------------------------------------------------------------- 1 | /* State machine script action. 2 | 3 | Changes the content of a speech to include a username stored in 4 | the entity context, plays the speech, and signals success. 5 | 6 | Assign this script to a state machine behavior with the "execute 7 | script" action. The enter function is called when the state is 8 | entered. ctx.transitions.success signals that the action 9 | completed successfully and transitions to the next state. 10 | 11 | Add a speech component to the entity. Set ctx.entityData.username 12 | in a setup script on the same entity, or a previous action on the 13 | same state machine behavior. 14 | */ 15 | 16 | 'use strict'; 17 | 18 | function enter(args, ctx) { 19 | var body = "Hello " + ctx.entityData.username; 20 | ctx.entity.speechComponent.speeches[0].updateConfig({entity: ctx.entity, name: ctx.entityData.username, type: "text", voice: "Russell", body: body}); 21 | ctx.entity.speechComponent.speeches[0].play(); 22 | ctx.transitions.success(); 23 | }; 24 | 25 | function exit(args, ctx) { 26 | } 27 | 28 | var parameters = []; 29 | -------------------------------------------------------------------------------- /scripts/download-lists.js: -------------------------------------------------------------------------------- 1 | /* Downloads lists of strings from an Amazon S3 bucket. 2 | Concatenates all of the objects into a single list and store 3 | in the world context. 4 | Gets bucket name and prefix from script parameters. 5 | */ 6 | 7 | 'use strict'; 8 | 9 | function setup(args, ctx) { 10 | ctx.worldData.list = []; 11 | ctx.worldData.listbucket = args.bucket; 12 | ctx.worldData.listprefix = args.prefix; 13 | sumerian.SystemBus.addListener('aws.sdkReady', () => { 14 | ctx.worldData.s3client = new AWS.S3(); 15 | ctx.worldData.s3client.listObjectsV2({Bucket: ctx.worldData.listbucket, Prefix: ctx.worldData.listprefix}, function(err, data) { 16 | if (err) { 17 | console.log('ERROR', err, data); 18 | } else { 19 | var i; 20 | // store keys 21 | for ( i in data.Contents) { 22 | console.log(data.Contents[i].Key); 23 | // download files 24 | ctx.worldData.s3client.getObject({Bucket: ctx.worldData.listbucket, Key: data.Contents[i].Key}, function(err, data) { 25 | if (err) { 26 | console.log('ERROR', err, data); 27 | } else { 28 | console.log(data); 29 | ctx.worldData.list = ctx.worldData.list.concat(data.Body.toString().split('\n')); 30 | console.log(ctx.worldData.list); 31 | } 32 | }) 33 | } 34 | } 35 | }); 36 | }, true 37 | ); 38 | } 39 | 40 | // Called when play mode stops. 41 | // 42 | function cleanup(args, ctx) { 43 | } 44 | 45 | // Defines script parameters. 46 | // 47 | var parameters = [ 48 | { 49 | name : "Bucket", 50 | key : "bucket", 51 | type : "string" 52 | }, 53 | { 54 | name : "Prefix", 55 | key : "prefix", 56 | type : "string" 57 | } 58 | ]; -------------------------------------------------------------------------------- /scripts/hide-entity-action.js: -------------------------------------------------------------------------------- 1 | /* State machine script action. 2 | 3 | Hides or shows an entity in the scene when the state is entered. 4 | Takes an entity reference and action as script parameters. 5 | Calls ctx.transitions.success to transition to the next state. 6 | */ 7 | 8 | 'use strict'; 9 | 10 | function enter(args, ctx) { 11 | if ( args.select == 'hide' ){ 12 | args.entity.hide(); 13 | } else { 14 | args.entity.show(); 15 | } 16 | ctx.transitions.success(); 17 | } 18 | 19 | function exit(args, ctx) { 20 | } 21 | 22 | var parameters = [ 23 | {type: 'entity', key: 'entity', description: 'Entity drop area'}, 24 | {type: 'string', control: 'select', key: 'select', 'default': 'hide', options: ['hide', 'show'], description: 'action'}, 25 | ]; 26 | -------------------------------------------------------------------------------- /scripts/random-speech.js: -------------------------------------------------------------------------------- 1 | /* Plays a random speech from the list of speeches attached 2 | to the entity's speech component. 3 | */ 4 | 5 | 'use strict'; 6 | 7 | var setup = function(args, ctx) { 8 | sumerian.SystemBus.addListener('aws.sdkReady', 9 | () => { 10 | var speechComponent = ctx.entity.getComponent("speechComponent"); 11 | var speeches = speechComponent.speeches; 12 | var speech = speeches[Math.floor(Math.random() * speeches.length)]; 13 | speech.play(); 14 | }, 15 | true 16 | ); 17 | }; 18 | --------------------------------------------------------------------------------