Scenes

The puzzles from this category perform various operations with scenes and rendering.

Visual programming blocks to work with 3D scenes

Contents

Puzzles Reference

load scene + percentage

When this puzzle is triggered, the current scene is unloaded and a new scene is loaded from a specified .gltf file.

Visual programming block to load 3D scene

For usage example, check out the Load Unload demo (source files available in the Asset Store).

After loading is finished, the puzzles in the "when loaded do" slot are triggered. Also, there is an optional "on progress do" slot. Puzzles placed in this slot are continuously triggered during the loading and can utilize the "percentage" puzzle. Once the scene is loaded it's assigned a name which can be used to access and manipulate the scene via various object-related puzzles. By default the assigned name equals to the specified scene URL (e.g. 'path/to/scene.gltf'). The "alias" option if enabled allows to set the name manually.

Another optional "on error do" slot triggers in case of load errors (such as missing glTF file).

Script example to load scenes

append scene + percentage

When this puzzle is triggered, a new scene is loaded from a specified .gltf file and appended to the current scene.

Visual programming block to append scene

For usage example, check out the Load Unload demo (source files available in the Asset Store).

After loading is finished, the puzzles in the "when loaded do" slot are triggered. Also there can be enabled the "on progress do" slot. Puzzles placed in this slot are continuously triggered during the loading and can utilize the "percentage" puzzle. The "append scene" puzzle doesn't load cameras and lights from a new scene by default. This behavior can be changed in the puzzle's options.

Once the scene is appended it's assigned a name which can be used to access and manipulate the scene via various object-related puzzles. By default the assigned name equals to the specified scene URL (e.g. 'path/to/scene.gltf'). The "alias" option, if enabled, allows to set the name manually.

Another optional "on error do" slot triggers in case of load errors (such as missing glTF file).

Append scene with visual programming

unload scene

Unloads the specified scene or its part from the application. Use the empty text value in order to unload all scenes.

Unload scene visual programming block

is scene loaded

Checks if the specified scene loaded. Use the empty text value in order to check the main scene.

Visual logic block to check if the 3D scene is loaded

enable rendering

Resumes previously disabled rendering.

Visual programming block to enable 3D rendering

disable rendering

Disables rendering. The graphics won't be updated but the user events will be captured and animation timelines will progress.

Visual programming block to disable 3D rendering

You can use disable rendering for the purpose of saving batteries on mobile devices or laptops, and getting rid of cooler noise on desktops. You can also enable the anti-alias option to significantly increase the rendering quality and compensate the loss of performance. This option targets the next frame after the rendering stops.

Script to enable anti-aliasing on pause

create environment

Create a new image-based lighting and assign a background to the scene. This puzzle also creates a new material with the name specified as the first parameter and adds it to the scene. You can use this material to replace textures or colors of the environment.

The second parameter can be ether:

Script to setup 3D environment

batch geometry

Merge geometry of a specified group of meshes to improve rendering performance. Upon execution, the puzzle collects meshes with similar properties, such as material in use, shadow settings, rendering order, etc, then creates and appends a new batch to the scene. Objects that can't be merged together are left intact.

Visual programming block to batch object geometry

To observe how batching works, just open the browser console:

Geometry batching status in Chrome console

In each "Adding batch object..." line you can see the name of the created batch object. This name consists of the name of the material forming the batch, the 'x' factor representing the number of meshes merged together and the "_batch" postfix.

For example:

Adding batch object: big_table_wood_x6_batch

line says that 6 meshes with the "big_table_wood" material were merged to a new batch object "big_table_wood_x6_batch".

Since the batch parts become "fixed" together, make sure you don't batch objects which you plan to move around, animate, or change individually from the batch.

export to gltf

Export your scene, model or a group of models to the glTF 2.0 format. Specify the only visible option to export only visible objects while the binary option is used to export to GLB (glTF Binary) format.

Visual programming block to perform glTF export

For best results we recommend you to have the glTF-compatible materials assigned on the exported models. See how to create them in Blender, 3ds Max, or Maya.

For usage example, check out the GLTF Compat demo (source files available in the Asset Store).

export to usdz

Export your scene or model to the Universal Scene Description (USDZ) format.

Visual programming block to perform USDZ export

By using this puzzle, you can preview your scene on Apple devices in the AR mode. To do that, create the <a> HTML element on your app page and assign the link to the exported USDZ asset as its href parameter.

For usage example, check out the Augmented Reality demo (source files available in the Asset Store).

For best results we recommend you to have the glTF-compatible materials assigned on the exported models. See how to create them in Blender, 3ds Max, or Maya.

raycast

Cast a ray from the source point (or object) in the given direction and return a list of all intersections (if any). The third parameter of the puzzle is used to reduce a set of the intersected objects. Leave none or specify the name of your scene to intersect all objects located in the loaded scene.

The returned list contains a sequence of dictionaries with the following information:

The list of intersections is sorted by distance, closest first.

Visual logic block for raycasting

add fog

Add the distance fog effect to the scene. This effect is typically used in large outdoor environments to enhance visual perception of distance objects, hide objects (LOD), or cover up scene inconsistencies (such as edges of the terrain mesh).

Add fog visual programming block

Exponential fog specified using the density value. Use zero as density to disable the added fog.

Linear fog specified using the near and far properties. Use zero as near and any negative value as far to disable the added fog.

Having Troubles with Puzzles?

Seek help on the forums!