Known Issues & FAQ

We've worked hard to deliver a great LearnBrite Scenario experience, but we're still tracking some known issues. If you find others, please Give us feedback.

Trial & Licensing

Does the trial have restricted functionality?

Who is an “author”?

What is “Build-in conferencing”

What counts as usage for built-in conferencing?

What is the done-for-you (DFY) LMS integration?

Versions

Which version of Scenario should I use?

Creating spaces & using templates

How do I copy a space?

Blank Template has Invisible Floor

Building from a Blank Template

Editing

Advanced Transform Controls

What is the recommended image size for the banners in the Virtual Conference space?

Navigation

Spawn (starting) hotspot

Bringing Multiple Spaces together in a World

Switching Spaces in a Campus (World)

Optimization

My space loads slowly!

Space Settings

How do I change the settings of a space?

Virtual Meeting checkbox – collaborate in a space together

UI

What is the “goggles” icon supposed to do (on different devices)

Text-to-speech

The Chinese Female voice stops before finishing the sentence

Gamification

How can I track a score in ChatMapper?

How can I track a score within a space?

How can I add achievements?

Actions

Make 3D items clickable and trigger actions (2.6+)

Make parts of a scene clickable (2.6+)

Stop Camera Position Changes after onclick action (2.9+)

How can I hide/show items?

Mediaboards

Which YouTube URL should I use?

Notes

How to change the visual look of Notes

How to use UI icons in Notes and Dialogue

Adding Images to Notes

Multiuser / Conferencing

Roles and permissions

Setting the maximum number of users in a meeting space

What is the Maximum number of users in a space?

iOS 12 Chrome does not support Audio and Video conferencing

ChatMapper

Treating Variables in ChatMapper as Text or Number

Troubleshooting ChatMapper Exports

Why do some actions (e.g. displayImage) skip the node afterwards?

Known Issues

3D editing

Error messages

Component couldn't load

ResponsiveVoice

Browser Compatibility

Safari: too many redirects

Android Firefox

Brave Browser

Trial & Licensing

Does the trial have restricted functionality?

The trial offers unrestricted access to everything in the platform.

Who is an “author”?

An Author is somebody that can create and manage properties (scenarios, spaces, and worlds) in Dashboard, which users can then access. Authors do have a crown in the 3D environment (they are classified as "Editor") but they are not the same thing: Authors are limited in number by the subscription, whereas Editors (or Presenters) are not – you can even make every user who accesses the space/world an Editor by default.

What is “Build-in conferencing”

As a platform, we integrate with a variety of conferencing/communication services (Zoom, Slack, Bluejeans, etc.), so we differentiate our "native" conferencing this way. In practical terms, built-in conferencing is what is active by default in any space or world you create, which you access by clicking on the phone icon in the 3D environment.

What counts as usage for built-in conferencing?

Built-in conferencing time is time spent on a call, or sharing screen/video, with the built-in conferencing. Simply being in a space does not use this time; using Zoom (or other services) for calls and screen/video sharing does not consume this time either.

What is the done-for-you (DFY) LMS integration?

Every space created comes with a 1-click export of a SCORM module that works with almost all LMSs and allows recording a score in them. In certain environments however some tweaking is needed (due to a variety of factors from security policies, to an LMS that is not standards-compliant or only uses LTI as a connection mechanism, to custom requirements on your part, etc). If your subscription includes the DFY LMS integration, we will work closely with you to integrate with your LMS.

Versions

Which version of Scenario should I use?

Any space you create will use the version currently set as default (2.10 at the time of writing, Oct. 2019). We try to make it as straightforward as possible to upgrade to the latest version, so if one of your spaces/worlds falls behind, you can upgrade it by doing the following:

  1. Go to the edit page of the property you want to upgrade
  2. Click on “Show advanced” on the bottom right corner


  1. Scroll down to the “Version” header. Click on it, and you will see the current status (whether the property needs updating, or not)
  2. If an update is available, click on “Update to latest version”

Later versions will give you extra features (if you encounter any bugs let us know!).

Creating spaces & using templates

How do I copy a space?

This can be achieved through the “Clone” function, which allows duplicating a space with a variety of options. To do so, open the options menu of a space (the three vertical dots on the right), then click on “Clone”.

Note: cloning will always copy the configuration of a space,

which are set in the “Edit space” advanced options.

In the popup, you can simply click on the green “Clone” button, or you can show additional options by clicking the “Show advanced” button.

Blank Template has Invisible Floor

The blank template has an invisible floor which allows you to drag bots and items around. Just be aware this plane exists if you are trying to place items lower than the floor you won’t be able to unless you manually adjust the position “y” value to be a negative number in the edit items list.

Building from a Blank Template

Learn more about building a scene with 3rd party 3d models for rooms/scenes here

https://academy.learnbrite.com/building-from-a-blank-template/ 

Editing

Advanced Transform Controls

To use advanced transform controls:

  1. In your space click the Pencil+ menu icon
  2. Choose Start editing
  3. Again, in your space click the Pencil+ menu icon
  4. Choose Show items list
  5. Find the item you wish to adjust placement for, click Edit
  6. Click the button Show advanced transform controls

Now in the scene you will see a widget with axis and some extra buttons below the top toolbar.

Using Transform you can click the transform widget and drag the item in that axis to place it where you would like.

Using Rotate you can click the rotate widget and rotate the item in that axis.

Using Scale you can click the scale widget and drag to adjust the item’s scale on any axis.

What is the recommended image size for the banners in the Virtual Conference space?

We follow the recommendations from the IAB (Interactive Advertising Bureau, iab.com). Any image with size equivalent to 970×250 pixels will fit the banners without distortion, though please note that the image must be rotated 90 degrees for the vertical banners (i.e. the dimensions of the image for vertical banners are 250×970).

The correct ratio for non-distorted images is therefore 97:25 for horizontal banners and 25:97 for vertical ones.

Navigation

Spawn (starting) hotspot

Where the user enters a scene is a special type of hotspot. With most templates when you arrive there is only the bots and you. Going into edit mode you can not move the spawn hotspot (you can’t move the hotspot you are currently occupying) so create a new hotspot in edit mode, stop editing, move to the new hotspot… now you can select and move the spawn hotspot in edit mode.

Be aware the spawn hotspot does not bring people exactly to that spot, but in a small radius around it randomly, this helps avoid when many users enter a space that their bodies are not inside each others.

Bringing Multiple Spaces together in a World

To do this, you will need to create a World in https://app.learnbrite.com/dashboard/worls, and then add all the spaces you want to connect together in it.

Switching Spaces in a Campus (World)

LB.Actions.navigateTo({"spaceId":"YOUR_SPACE_ID"});

The spaceId is shown in the URL when visiting the space.

You can also use “next” and “previous” if your world is supposed to be sequential, i.e. if spaces need to be visited in a certain order. “next” and “previous” will simply go to the space that is either after or before the current one in the list. Using “previous” in the first space will not work, and using “next” in the last space will not work either.

Note: you can also pop-up the locations menu, so that the user can choose which space they will go to instead of forcing them to a specific one

{"action":"UI.openLocations"}

Example: call LB.Actions.navigateTo

Dialogue

[action:"navigateTo", spaceId:"YOUR_NEXT_SPACEID"]

or

[action:"UI.openLocations"]

onclick

{"action":"navigateTo", "spaceId":"YOUR_NEXT_SPACEID"}

or

{"action":"UI.openLocations"}

Script

LB.Actions.navigateTo({spaceId:"YOUR_NEXT_SPACEID"});

or

LB.Actions.UI.openLocations({});

Optimization

My space loads slowly!

There are a couple of performance considerations to make when setting up a space. All the suggestions that follow should be weighed against the specific requirements of your experience. As an additional rule of thumb, if you are designing an experience targeting more powerful devices or areas with high connection speed, you can afford to have “heavier” scenes (i.e. scenes that include more objects, or more detail). LearnBrite items are optimized to be as light as possible.

More items = more things to load

The more items are added to the scene, the heavier the scene will be to load. If multiple instances of a model are needed, it’s better to repeat the same model as opposed to having different ones.

For example, to fence off an area we might need 4 different fence models (one per side). By cloning the same model (i.e. a model with the same URL) multiple times, as opposed to using four different types of fence, fewer resources will be consumed. In the image below, the setup on the left will be more performant than the one on the right.

Realistic objects = heavier objects

While it depends on the optimization made by the original author, a good rule of thumb for models is that the more detailed they are, the heavier they will be to load. Conversely, “blockier” or more “angular” models are much lighter, as  they include less polygons. It is often good to search for the “low poly” version of an object (e.g. by searching for “hand low poly”, or “office low poly”), and consider whether the detail on that object is acceptable.

In the example below, the hand on the left will load much quicker than the hand on the right.

 

Object scale ≠ object weight

An object might appear very small in the scene, but that does not guarantee that the object itself is lighter, as scale and detail are completely independent of one another.

Using cached resources

If you are using LearnBrite’s Storage solution, you should make sure that the assets loaded in the scene are loaded from it – or another CDN, in programmer-speak. You can confirm this by looking at the URL of the item (in the field lbAssetFile) in the object’s properties, it should start with https://cache.learnbrite.com. This will not help when a user first loads the space, but it will make any future visit load much faster.

Space Settings

How do I change the settings of a space?

To change the settings of a space (or world), click on the options menu of a space (three vertical dots, on the right of the card) and choose “Edit space”.

Within this page, click on the “Show advanced” button. You can then expand each section by clicking on its header.

Note: when you’re done, be sure to click on “Save” at the bottom, otherwise your changes will not be saved!

Virtual Meeting checkbox – collaborate in a space together

There are two ways to make a space or world multiuser: the first is by turning on the “Virtual meeting room” option when creating it:

And the second is to turn it on by checking the “Virtual meeting room” checkbox in the edit page.

UI

What is the “goggles” icon supposed to do (on different devices)

  • Toggle between 1st person and third person views on typical flat screen devices
  • On mobile it may enter “magic window” mode
  • On DayDream phones it will ask you to put the device in the headset
  • In WebVR enabled browsers (with headsets connected) it will switch to immersive VR mode

Text-to-speech

The Chinese Female voice stops before finishing the sentence

Logographic writing (such as Chinese hanji or Japanese kanji, e.g. 中文) “tricks” the algorithm that calculates the length of text-to-speech.

If you are experiencing this issue, you can fix it by changing the “Enable time estimation for TTS” setting in the “Experimental settings” section of your space to “Disabled”. For a guide on how to do so, see the “How do I change the settings of a space?” section in this same guide.

Gamification

How can I track a score in ChatMapper?

Tracking a score for the user is done routinely with ChatMapper e-learning projects through variables.

1. Creating and updating the variable in ChatMapper

In ChatMapper, create a new user variable (CTRL+SHIFT+U) with a name of your choosing and an initial value of 0.

CM_new-user-var.jpg

The same variable can also be created directly in code, by writing the following line in the Script Editor of the conversation’s first node.

Variable["CMScore"] = 0

The variable is thus declared and initialized (i.e. given an initial value), and can be then used during the scenario to record the learner’s progress, for instance by increasing it every time a correct answer is given.

CM_update-user-var.jpg

In this case, we’re increasing the CMScore variable by 1 for each correct answer, which can be done like so:

Variable["CMScore"] = Variable["CMScore"] + 1

2. Submitting the score

There is one last step in ChatMapper, which is to communicate the scenario’s outcome to the LMS. This can be done by calling “LB.Lms.submitScore”, like so:

LB.Lms.submitScore(Variable["CMScore"]);

Where Variable["CMScore"] will of course be the name of your variable, if it is different.

3. Publishing as a scenario

A series of video guides that go through the process step-by-step can be found here: https://learnbrite.com/vr-scenario-academy-scenario-authoring/. On a high level, this process consists of :

  1. Publish the scenario (will create a .json file)
  2. Create a new Scenario (https://app.learnbrite.com/dashboard/scenarios/create) and Upload the .json file
  3. Create a new space (and select the Scenario created in the previous step during creation).

How can I track a score within a space?

The easiest and quickest way to test that a score can be submitted by the platform to the chosen LMS is to create an object in the space, and call submitScore from it.

  1. In the edit menu, select “Add content”, then add any model (for instance you can search for “cube”)
  2. After the model loaded, enter edit mode, and click on the gear icon


  1. In the onclick field, click on “Edit Action”

  1. Click on “More” (the rightmost of the blue buttons at the bottom)
  2. Select “Custom action” from the dropdown
  3. Fill it with the following parameters:
  • Action Name: callFunction
  • name: LB.Lms.submitScore
  • parameter: 100

  1. Then click or tap on “Save action”,  then Save” at the bottom of the previous popup.
  2. Exit edit mode.

By clicking on the item now, a score of 100 will be submitted, and you can check that it’s reported correctly in your LMS of choice.

How can I add achievements?

See the Trophio guide

Actions

Make 3D items clickable and trigger actions (2.6+)

Version 2.6+ of scenario added onclick to supported fields for 3D items. (see Scenario Actions document for more details on available actions)

Edit mode -> Items List

In the example below we’ve added {"action":"playGesture", "name":"yes"} as an onclick event so now you can click on the Plant in the scene and your avatar will play the head-nodding gesture.

Make parts of a scene clickable (2.6+)

With Scenario version 2.6+ a new feature allows you to place transparent cubes in a scene and add an onclick trigger to them. This can be useful when you want to make static 3d models of interactive. Often 3d models and scenes come as one combined model, using the transparent box trigger you can make parts of a scene responsive without needing to break the 3d model into separate components.

Edit mode -> Items List -> Add New Item

Name: BoxTrigger

Click [Save name]

Choose `Custom item` and click [Add item]

Copy the following URL

https://app.learnbrite.com/assetdb/transparentcube.js

Paste into the field, click [Add item]

A transparent box appears in the scene.

Click the Edit list icon

Find the BoxTrigger, click [Edit]

Now you can enter any scenario action you would like in the onclick field. (see Scenario Actions document for more details on available actions)

For example try:

{"action":"playGesture", "name":"yes"}

Click [Save item]

The box will be invisible in the scene, the mouse cursor will change when over the box. Clicking the box will trigger the action.

Stop Camera Position Changes after onclick action (2.9+)

Eg. I clicked an item and it did an action (play ambient) but it also changed my camera position in third person view.

To stop the camera position from being updated,  set enterCMmode to false

Eg. for your own onclick field change enterCMMode

{"action":"playConversationId","cnvid":9218,"sourceExternalId":"577f76676764b","delayMs":0,"executedFromEA":true,"getIntoCMMode":true}

To

{"action":"playConversationId","cnvid":9218,"sourceExternalId":"577f76676764b","delayMs":0,"executedFromEA":true,"getIntoCMMode":false}

And click the Save item button

How can I hide/show items?

Hide an item

LB.Utils.findItem("breathalizer").visible=false

Show an item

LB.Utils.findItem("breathalizer").visible=true

Fade out an avatar

LB.Utils.fadeObject(player().meshes,false);

Fade out an item

LB.Utils.fadeObject(LB.Utils.findItem("breathalizer"),false);

Fade in an item

LB.Utils.fadeObject(LB.Utils.findItem("breathalizer"),true);

You can also set the duration of the fade and hook things for when it ends.

This is very advanced stuff but you are welcome to use it.

Note: We will be making Actions for these type of things in the future

Mediaboards

Which YouTube URL should I use?

There are three types of YouTube URLs:

Watch URLs play the video directly on the mediaboard since version 2.9, as if it were a screen. This also happens in VR.

Although YouTube is great for experimental and proof of concept productions, occasionally the API may not respond when playing video directly in the 3D environment. For commercial productions, we recommend using services such as Vimeo, uploading your videos to our included platform storage, or simply playing videos as popups with YouTube embed URLs

Youtu.be and embed URLs before 2.11 created a popup that could not be customized, and didn’t show anything in VR. Since 2.11, those URLs create a popup that uses the displayVideo action, and can therefore be customized with the same parameters, and they work in VR as if they were watch URLs.

Notes

How to change the visual look of Notes

Click the settings icon for a note

Change innerHTML is the text that appears on the note and can include html tags eg. <img>

Change style using CSS rules, see below for some useful examples including changing the size

Example: notes with no background

Transparent background (great for notes with images)

backgroundcolor:transparent

Example: notes with black background

Black background with white text

background-color:#000000;color:white

Example: notes with semi-transparent grey with white text label size

background:rgba(1,1,1,0.5);height:70px;min-height:70px;color:white

Example: change size of a note

background-color:#ffff6d; font-size:20px; width:800px; height:50px;min-height:50px

How to use UI icons in Notes and Dialogue

Example: Laser Pointer

<i class="fa fa-bullseye fa-stack-1.5x fa-lg" aria-hidden="true"></i>

Example: Hotspot Marker

<i class="fa fa-map-marker fa-1_5x fa-lg fa-fw fa-stack-1.5x" style="color:007bff;"></i>

A full list of available icons can be found here https://fontawesome.com/v4.7.0/icons/ 

You can also get creative with rotating and stacking icons, here are some examples https://fontawesome.com/v4.7.0/examples/ 

Adding Images to Notes

The HTML <img> tag is supported. There are two things you need to add to image tags so they appear in the 3d scene and the popup correctly.

Eg. Change your original image tag

<img height="40" width="139" src="https://platform.slack-edge.com/img/add_to_slack.png">

To include the following two changes, add crossorigin="anonymous" and prepend you url with https://hurl.learnbrite.com/pr/ which will help avoid CORS loading errors.

<img crossorigin="anonymous" height="40" width="139" src="https://hurl.learnbrite.com/pr/https://platform.slack-edge.com/img/add_to_slack.png">

Multiuser / Conferencing

Roles and permissions

The 5 roles are (Author, Editor, Presenter, VIP and Participant)

Author – Create/Delete spaces, worlds, bots, scenarios, upload to storage. Editor capabilities when in a space.

Editor –  Create/Edit/Delete decorations in spaces. Worlds participant list, whisper, call, send to, kick. Present audio/video/screenshare (visible in all instances in audiences over 50)

Presenter – Present audio/video/screenshare(visible in all instances in audiences over 50)

VIP – no extra capabilities. A diamond appears next to the name tag, useful for indicating exhibitors, sponsors, celebrities

User (default) – a participant, no extra capabilities

Setting the maximum number of users in a meeting space

There are two variables you can change for a Space

maxUsers – the maximum number of users allowed in a space after which new visitors will be notified the space is full

LB.scenarioConfig.currentScene.maxUsers = 50;

instanceMaxUsers – the maximum number of users in a space before a new instance is created

LB.scenarioConfig.currentScene.instanceMaxUsers = 50;

What is the Maximum number of users in a space?

Regarding the number of users accessing an environment, that is effectively unlimited; as more and more users access the environment, we create "instances" in which they see a limited number of others (up to 50), plus presenters. This way even users on lower-end hardware, or older browsers like IE11, can have an enjoyable experience.

For conferencing, the number of supported users depends on which features you are planning to use:

  • All users can communicate (also across instances) via chat and whispers.
  • Audio calls using our built-in conferencing are limited to 250 users (including those dialing-in by phone).
  • Video conferencing and screen sharing is supported up to 50 users with the built-in conferencing, but you can host hundreds of users with Zoom Meetings and thousands with Zoom Webinars/Twitch/YouTube live (all of which we are integrated with).

iOS 12 Chrome does not support Audio and Video conferencing

expect iOS13 release in 2019 to allow for browsers other than Safari. https://learnbrite.atlassian.net/browse/SCEN-938

  • Solution: Use Safari or dial-in until iOS13 ships.

ChatMapper

Treating Variables in ChatMapper as Text or Number

I'm watching a ChatMapper variable in the dialogue system and it’s increasing like a string rather than a number

enemy: "10"
enemy: "102"
enemy: "1020"
enemy: "1020021"

in the ChatMapper file an example script node shows

Variable["param4"] = Variable["param4"] + 100
Variable["enemy"] = Variable["enemy"] + 2
Variable["rubNum"] = 1341
Variable["dec3"] = 3
Variable["node3"]="DP 1.3.4.1"

So why would `enemy` be treated like a Text string rather than a Number?

Answer: Initial value for variables in ChatMapper

If you don’t supply an initial value the Variable will be treated as a Text variable

by setting initial value to 0 it now shows as

Scenario will now treat the Variable as a number

enemy: 4

Troubleshooting ChatMapper Exports

  • Ensure you have only one conversation set to Autoplay (since version 2.7.5 in case an author mistakenly adds more than one conversation as Autoplay a popup list will appear allowing the user to choose one of the conversations marked as Autoplay)
  • If you create a new conversation (rather than using the Explore, Actor2, Actor3, Actor4, Actor5) be sure to click the first node of the tree and select the location `Sample location`
  • Leave the Player actor’s avatar_externalId blank so the user gets their own avatar look (you can use this however if you want to override the players actor for a roleplay scenario, eg. forcing them to appear as a male nurse)
  • If you have added any files, make sure that each file is referenced only once. If the same file is referenced in more than one place (for instance an SFX mp3 referenced in two different nodes), exporting as ChatMapper package (CMPKG) will fail. To get around this, you can create a copy of the file for each different time you use it, and give it slightly different names. Some suggested schemes:
  • Adding a digit to the end of the filename, e.g. correct_answer.mp3 and correct_answer2.mp3
  • Creating a folder with the filename, and in it placing 1.mp3, 2.mp3, etc., so the final result are paths like correct_answer/1.mp3 and correct_answer/2.mp3

Why do some actions (e.g. displayImage) skip the node afterwards?

Some actions will progress the conversation to the next node before effectively “pausing” it, so when the conversation resumes it will seem like a node was skipped. We suggest adding an empty node after such actions to prevent this behaviour, if needed.

Known Issues

3D editing

I cannot remove 3D items from my space

  • In version 2.7 or earlier you can not remove 3d items that are included in 3d templates
  • In the Seminar room, Auditorium, and Boardroom, the furniture is baked into the template and cannot be moved/removed

Error messages

Component couldn't load

This error message appears when there was some issue loading one of the components required to run the platform. Normally this is a one-time network related error that will disappear by reloading. If the issue persists, please check the details below.

ResponsiveVoice

Some browser extensions might block the text-to-speech library used by the platform. You might need to review the browser settings and allow the library to load. When ResponsiveVoice fails to load, voice will be disabled in Scenario. Subtitles will be used as a fallback, but some advanced conversations might not work properly.

Browser Compatibility

Safari: too many redirects

Safari has a feature called “Intelligent Tracking Protection” (ITP) whose objective is to block cross-site tracking, but at times it can conflict with standard login processes; it can be disabled by doing the following:

iOS

  1. Open the Settings app
  2. Scroll down to Safari and tap on it
  3. Scroll down to “Prevent Cross-Site Tracking”
  4. Toggle it off so that it is white

macOS

  1. Open Safari
  2. Click on “Safari” at the top left of your screen
  3. Click on “Preferences…”
  4. Click on the “Privacy” tab
  5. Uncheck “Prevent cross-site tracking”

Android Firefox

In Android Firefox, avatars do not display. This is a known issue and has no fix at this time.

Brave Browser

Default settings in Brave browser cause a looping reload of any experience.

Compatibility with Brave browser can be achieved by choosing the Brave shield in the URL bar changing the default "Cross-site cookies blocked" to "Allow all cookies".

© 2020 LearnBrite

Trademarks & Copyrights are property of their respective owners. Pictures are indicative only & may not reflect final production.

How useful was this article?

Click on a star to rate it!

We are sorry that this article was not useful for you!

Let us improve this article!

Tell us how we can improve this article?