# Responses



# Scene

<div id="bkmrk-"></div>### [![Response_Node_Capture_Picture.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-node-capture-picture.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Capture Picture

[![aM3image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/N18am3image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-09/N18am3image.png)

The **Capture Picture node** is used to capture an image from a camera within the scene, and the captured image can then be displayed on a 3D object within the scene. This allows the user to take snapshots and show them in the VR environment, such as displaying a captured image on a screen or other surface.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/5wEimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-09/Xn9image.png)

A **Surveillance Monitor** is first created to display the captured images. This monitor is then attached to the VR camera.

[![Add_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/cT8image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

<div class="pointer-container" id="bkmrk-%C2%A0-0"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, the **Capture Picture Node** is used to capture an image on a picture frame model when the user triggers the Activate event. Before that, the Cast SceneNode is used to identify the picture frame as a 3D object, as the Capture Picture Node only works with 3D objects.

# Scene



# New Page



# AI Agent

### [![Response_AiAgent_Reset.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/5Y3response-aiagent-reset.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-03/5Y3response-aiagent-reset.png)AI Agent Reset Chat History

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/FTTimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/FTTimage.png)The **AI Agent Reset Chat History** node enables the system to clear and reset the ongoing conversation history for a specific AI Agent. It is typically used when you want the AI to start a completely fresh interaction or switch to a new scenario without being influenced by the context of any prior messages.

### ![Response_AiAgent_SendMessage.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-aiagent-sendmessage.png) AI Agent Send Message

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/jCDimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/jCDimage.png)

The **AI Agent Send Message** node enables the system to send a specific text message to an assigned AI Agent for processing. The **Output Voice?** boolean parameter that dictates how the AI agent will deliver its response:

- **False:** The AI agent will respond with text.
- **True:** The AI agent will process the text message and respond with generated voice audio.


### [![Response_AiAgent_StartListen.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-aiagent-startlisten.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) AI Agent Start Listen

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/E5cimage.png)

The **AI Agent Start Listen node** is used to make the AI start listening to the user. When activated, this node enables the AI to process and listen to spoken input from the user, allowing for interactive conversations and commands within the VR environment.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/UjYimage.png)

In this example, an AI Doctor is set up in the AI Agents window. This window can be accessed by clicking the Interaction icon in the viewport menu, then select the AI Agents, and then add the AI name with the desired instructions in the Instructions field. A variable is created to store the AI's responses.

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/2wtimage.png)

The **AI Agent Start Listen node** is used to make the AI Agent named Doctor start listening to the user when the object named "Start" is triggered. This setup enables the AI to process and listen to user input as soon as the trigger event is activated.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/TdABZrHXY2g" width="560"></iframe>

---

<div class="pointer-container" id="bkmrk-%C2%A0-8"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>### [![Response_AiAgent_StopListen.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-aiagent-stoplisten.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) AI Agent Stop Listen

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/Iwwimage.png)

The **AI Agent Stop Listen node** is used to make the AI stop listening to the user. When activated, this node halts the AI’s ability to process further user input, allowing the AI to respond based on the information gathered up to that point.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/UjYimage.png)

In this example, an AI Doctor is set up in AI Agents window. This window can be accessed by clicking the Interaction icon in the viewport menu, then select the AI Agents, and then add the AI name with the desired instructions in the Instructions field. A variable is created to store the AI's responses.

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/3UZimage.png)

The **AI Agent Stop Listen node** is used to stop the AI Agent from listening to the user when the "Stop" trigger event occurs. This allows the AI agent named Doctor to respond based on the input received before listening was stopped.

### [![Response_AiAgent_StopListen.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-aiagent-stoplisten.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) AI Agent Stop Listen (Text)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Gldimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Gldimage.png)

The **AI Agent Stop Listen (Text) node** is used to make the AI stop listening to the user. When activated, this node halts the AI’s ability to process further user input, allowing the AI to respond based on the information gathered up to that point.

This node has an extra output "Spoken Text", when the node is activated, it outputs the input audio in text format.

---

<div class="pointer-container" id="bkmrk-%C2%A0-12"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>### [![Response_Ai_Valid_Key.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/response-ai-valid-key.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Has Valid AI Key

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/2Xximage.png)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--33"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8">  
</div></div></div></div></div>The **Has Valid AI Key** node checks whether a valid AI key is available for AI-related features in Sim Lab Composer. This node ensures that AI functionalities can operate properly by verifying the presence of an active and valid AI key.

#### Example

[![AI has key.JPG](https://simlab-soft.com/help/uploads/images/gallery/2025-03/ai-has-key.JPG)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/lXbimage.png)

In this example, the **Has Valid AI Key** node is used at the start of the scene to check if the user has an activated AI key. The node is connected to a **Branch** node, where the **False** output (indicating no valid AI key) triggers a message in front of the user, informing them that the AI key must be activated.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/YEMeCS8QcFY" width="560"></iframe>

---

### ![Response_AiKey_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2025-07/response-aikey-set.png) Set AI Key

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-07/scaled-1680-/image.png)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--40"><div><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8">  
</div></div></div>The **Set AI Key** node allows you to assign an AI API key to a VR experience directly from the Training Builder. This lets the experience use AI features without requiring the user to manually activate an API key in the viewer. You can select the provider (OpenAI, Gemini, or OpenRouter) and embed the corresponding API key into the experience.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-07/scaled-1680-/VH8image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-07/VH8image.png)

In this example, the **Set AI Key** node is connected to a **Scene Start** event to initialize the AI provider as soon as the experience begins. After adding the node and selecting the provider, the API key is pasted into the node’s field. The key is then activated when the scene starts, allowing the AI agent to respond without the user needing their own key. If the embedded key is not active or reaches its usage limit, the experience automatically switches to the user’s API key in the viewer if one is available.

Check this **[tutorial](http://youtube.com/watch?v=qzqNtXBTGY4)** for more about this node.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/qzqNtXBTGY4" width="560"></iframe>

---

### ![Response_AiModel_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2025-07/response-aimodel-set.png) **Set AI Agent Model**

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-07/scaled-1680-/R5Nimage.png)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--47"><div><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8">  
</div></div></div>The **Set AI Agent Model** node is used to assign a specific AI provider and model to an AI agent in your VR experience. This ensures the AI agent will operate using the selected provider and model for any interactions that occur in the scene. You can choose the AI agent you have created, specify the provider (OpenAI, Gemini, or OpenRouter), and define the model name.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-07/scaled-1680-/XCzimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-07/XCzimage.png)

In this example, the **Set AI Agent Model** node is triggered by pressing a button in the VR scene. When the button is clicked, the node assigns the “Patient” AI agent to the OpenAI provider and sets the model to GPT‑4. This setup allows the AI agent to function with the defined provider and model as soon as the event is triggered.

Check this **[tutorial](http://youtube.com/watch?v=qzqNtXBTGY4)** for more about this node.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/qzqNtXBTGY4" width="560"></iframe>

---

###  Using AI Providers and API Keys in SimLab Composer

SimLab Composer now supports **OpenAI, Google Gemini, and OpenRouter** for integrating AI into your VR experiences. With the new **Set AI Key** and **Set AI Agent Model** nodes, you can connect your experience to these providers .

 **Providers and Models:**

**1️⃣ OpenAI**

- **Provider URL:** `https://api.openai.com/v1/chat/completions`
- **Models:**
    
    
    - gpt‑4.1
    - gpt‑4
    - gpt‑3.5‑turbo

**2️⃣ Google Gemini** (OpenAI‑compatible endpoint)

- **Provider URL:** `https://generativelanguage.googleapis.com/v1beta/openai/chat/completions`
- **Models:**
    
    
    - gemini‑2.0‑flash

**3️⃣ OpenRouter**

- **Provider URL:** `https://openrouter.ai/api/v1/chat/completions`
- **Models:**
    
    
    - openrouter/cypher‑alpha:free
    - nvidia/llama‑3.3‑nemotron‑super‑49b‑v1:free
        
        
        - **OpenAI keys** work with **Chat, Text‑to‑Speech, and Speech‑to‑Text**.
        - **Gemini and OpenRouter keys** work with **Text only.**

<div class="mb-2 flex gap-3 empty:hidden -ml-2" id="bkmrk--53"><div class="items-center justify-start rounded-xl p-1 flex"><div class="flex items-center"><div class="flex"><button aria-label="Good response" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="good-response-turn-action-button"></button><button aria-label="Bad response" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="bad-response-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button>  
</div><button aria-label="Edit in canvas" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="flex items-center pb-0"><svg class="icon-md" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg>  
</div><button aria-expanded="false" aria-haspopup="menu" class="cursor-pointer h-[30px] rounded-md px-1 text-token-text-secondary hover:bg-token-main-surface-secondary" data-state="closed" id="bkmrk--58" type="button"></button></div></div></div>

# New Page



# User \ Controller

# User \\ Transform

<div id="bkmrk-">  
</div>### [![Response_User_TeleportToCamera.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-user-teleporttocamera.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Teleport To Camera

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/utpimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Teleport To Camera** node enables the user to teleport to a new location by assigning a camera in the **CameraNode** field. Once the teleportation is executed, the user is moved to the position and orientation defined by the specified camera.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/A1Fimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/A1Fimage.png)

In this example, a **Teleport To Camera** response is used to move the user to a new location once the object named Activate is triggered. When triggered, the sound named Teleport\_Sound will play, and the user will be teleported to the location of the camera assigned in the Teleport To Camera node.

# Data Types\Number\Operations

---

#### [![Response_Value_Number_Add.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/response-value-number-add.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Add

[![Add_Node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/add-node.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Add** response enables user to add two values by either typing in a numerical value in Number A and Number B field or by attaching a value or a variable node to those ports, then once the response is executed the resulting value can be acquired through the **Result** port.

#### Example

[![Add_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example2.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this Example an **Add Response** is used to add the values of 5 to the value of Variable1 once the user triggers the object named Activate, and the result of the addition is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Value_Number_ceiling.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-ceiling.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Ceiling

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/ceiling-node.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Ceiling** response enables the user to round up a value by either typing in a numerical value in the Number A field or by attaching a value or a variable node to that port. Then once the response is executed, the smallest integral value greater than or equal to the input value can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/vFhimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/vFhimage.png)

In this example, a **Ceiling Response** is used to round up the value of Variable1 to the smallest integral value greater than or equal to it once the user triggers the object named Activate. The result of the ceiling operation is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Value_Number_divide.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-divide.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Divide

[![Divide_node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/divide-node.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Divide** response enables user to divide a value by another value, by either typing in a numerical value in Number A and Number B field or by attaching a value or a variable node to those ports, then once the response is executed the resulting value can be acquired through the **Result** port.

#### Example

[![Divide_Example.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/divide-example.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this Example a **Divide Response** is used to divide the number 25 by the value of the variable named "Variable1" and the result of the division is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Value_Number_Floor.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-floor.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Floor

  
[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/SF2image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Floor** response enables the user to round down a value by either typing in a numerical value in the Number A field or by attaching a value or a variable node to that port. Then once the response is executed, the largest integral value less than or equal to the input value can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/VmLimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/VmLimage.png)

In this example, a **Floor Response** is used to round down the value of Variable1 to the largest integral value less than or equal to it once the user triggers the object named Activate. The result of the floor operation is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

[![Response_Value_Number_modulo.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-modulo.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)<span data-darkreader-inline-color="" style="color: rgb(34, 34, 34); font-size: 2.333em; font-weight: 400;"> Modulo</span>

  
[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/E5Pimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Modulo** response enables the user to find the remainder of a division by either typing in numerical values in the Number A and Number B fields or by attaching values or variable nodes to those ports. Then once the response is executed, the modulus of the input value with respect to the divisor can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/sptimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/sptimage.png)

In this example, a **Modulo Response** is used to calculate the remainder when the value of the variable named Variable1 is divided by the value of Variable2, once the user triggers the object named Activate. The result of the modulo operation is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Value_Number_Multiply.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-multiply.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Multiply

[![Multiply_Node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/multiply-node.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Multiply** response enables user to multiply two values by either typing in a numerical value in Number A and Number B field or by attaching a value or a variable node to those ports, then once the response is executed the resulting value can be acquired through the **Result** port.

#### Example

[![Multiply_Node3.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/multiply-node3.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this Example a **Subtract Response** is used to subtract the value of Variable1 from the value of the Variable2, then a **Multiply Response** is used to multiply the subtraction result by 3 once the user triggers the object named Activate, and the result of the multiplication is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Value_Number_SquareRoot.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-squareroot.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Square Root

  
[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/OdMimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Square Root** response enables the user to calculate the square root of a value by either typing in a numerical value in the Number field or by attaching a value or a variable node to that port. Then once the response is executed, the square root of the input value can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/hUtimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/hUtimage.png)


In this example, a **Square Root** response is used to calculate the square root of the value of Variable1 once the user triggers the object named Activate. The result of the square root operation is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Value_Number_subtract.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-subtract.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Subtract

[![Subtract_Node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/subtract-node.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Subtract** response enables user to subtract a value from another by either typing in a numerical value in Number A and Number B field or by attaching a value or a variable node to those ports, then once the response is executed the resulting value can be acquired through the **Result** port.

#### Example

[![Subtract_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/subtract-example2.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this Example a **Subtract Response** is used to subtract the value of Variable1 from the value of the variable named Variable2, once the user triggers the object named Activate, and the result of the subtraction is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

# Data Types\Number\ Variable

---

### [![SET.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/set.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Set

Has two options:

[![Add_Node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/Wp1image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

- **By Value:**

The **Set number variable** response enables user to set a value by either typing in a numerical value in the value field or by attaching a value or a variable node to that port. Then once the response is executed, the variable value can be acquired through the **Value** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/Bdhimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/Bdhimage.png)

In this example, a **Set number variable** is used to assign the value of Variable1 once the user triggers the object named Activate, and the new value is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

[![Add_Node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/6gRimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

- **By Expression**

The **Set number variable by expression** response enables user to set a value by either typing in an expression in the expression field or by attaching a value or a variable node to that port. Then once the response is executed, the variable value can be acquired through the **Value** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/sGSimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/Bdhimage.png)

In this example, a **Set Number Variable By Expression** is used to set the result of the sum of Variable1 and Variable2 once the user triggers the object named Activate. The new value is then written in the Result variable, which can be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Variable_NumberDecrement.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-variable-numberdecrement.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Decrement Number Variable

  
[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/UoLimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Decrement Number Variable** response enables the user to decrease a variable's value by 1 each time the event connected to it is triggered. Once the response is executed, the updated value can be acquired through the **Value** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/bbzimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/hUtimage.png)


In this example, a **Decrement Number Variable** response is used to decrease the value of Variable1 by 1 once the user triggers the object named Activate. The result of the decrease number variable operation is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

[![Response_Variable_NumberIncrement.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-variable-numberincrement.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)<span data-darkreader-inline-color="" style="color: rgb(34, 34, 34); font-size: 2.333em; font-weight: 400;"> Increment Number Variable</span>

  
[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/0Eyimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Increment Number Variable** response enables the user to increase a variable's value by 1 each time the event connected to it is triggered. Once the response is executed, the updated value can be acquired through the **Value** port.

#### Example

[![Increment.JPG](https://simlab-soft.com/help/uploads/images/gallery/2025-03/increment.JPG)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/hUtimage.png)


In this example, a **Increment Number Variable** response is used to increase the value of Variable1 by 1 once the user triggers the object named Activate. The result of the decrease number variable operation is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

[![Response_Variable_NumberGet.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-variable-numberget.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)<span data-darkreader-inline-color="" style="color: rgb(34, 34, 34); font-size: 2.333em; font-weight: 400;"> Get </span>

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/FbIimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Number Variable Value** response enables the user to get a variable's value each time the event connected to it is triggered. Once the response is executed, the updated value can be acquired through the **Value** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/o5himage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/o5himage.png)


In this example, a **Number Variable Value** response is used to get the new value for Variable1 after it was changed by **Set Number Variable By Expression** once the user triggers the object named GetValueButton. The value of the number variable is then written in a variable named Result, which can then be connected to a variable writer to be displayed during the VR Experience.

---

# Data Types\Number\ Compare

### [![Responses_DataTypes_Numbers_Compare_Equals.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-datatypes-numbers-compare-equals.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Equal (Number)

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/Agnimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

<div class="pointer-container" id="bkmrk-%C2%A0"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>The **Equal (Number)** response enables the user to compare two values by either typing in a numerical value in the Number A and Number B fields or by attaching a value or a variable node to those ports. Then once the response is executed, the result of the comparison can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/S2himage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/S2himage.png)

<div class="pointer-container" id="bkmrk-%C2%A0-1"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, an **Equal Response** response is used to compare the value of Variable1 with the value of Variable2 once the user triggers the object named Activate. The result of the comparison can be acquired through the **Result** port. We have connected this Result port to the **Branch** node, and if the result of the branch is True, the TrueBox will show; if the result is False, the FalseBox will show.

---

### [![Responses_DataTypes_Numbers_Compare_Greater.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-datatypes-numbers-compare-greater.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Greater

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/hBOimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

<div class="pointer-container" id="bkmrk-%C2%A0-4"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>The **Greater** response enables the user to compare two values to determine if one is greater than the other by either typing in a numerical value in the Number A and Number B fields or by attaching a value or a variable node to those ports. Then once the response is executed, the result of the comparison can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/gMmimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/gMmimage.png)

<div class="pointer-container" id="bkmrk-%C2%A0-7"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, a **Greater Response** is used to compare the value of Variable1 with the value of Variable2 once the user triggers the object named Activate. The result of the comparison can be acquired through the Result port. We have connected this Result port to the Branch node, and if the result of the branch is True, the TrueBox will show; if the result is False, the FalseBox will show.

---

### [![Responses_DataTypes_Numbers_Compare_GreaterOrEqual.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-datatypes-numbers-compare-greaterorequal.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Greater Or Equal 

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/hI8image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Greater Or Equal** response enables the user to compare two values to determine if one is greater than or equal to the other by either typing in a numerical value in the Number A and Number B fields or by attaching a value or a variable node to those ports. Then once the response is executed, the result of the comparison can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/dmcimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/dmcimage.png)

In this example, a **Greater Or Equal Response** is used to compare the value of Variable1 with the value of Variable2 once the user triggers the object named Activate. The result of the comparison can be acquired through the Result port. We have connected this Result port to the Branch node, and if the result of the branch is True, the TrueBox will show; if the result is False, the FalseBox will show.

---

### [![Responses_DataTypes_Numbers_Compare_Less.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-datatypes-numbers-compare-less.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Less 

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/ye5image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Less** response enables the user to compare two values to determine if one is less than the other by either typing in a numerical value in the Number A and Number B fields or by attaching a value or a variable node to those ports. Then once the response is executed, the result of the comparison can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/fxoimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/fxoimage.png)

In this example, a **Less** is used to compare the value of Variable1 with the value of Variable2 once the user triggers the object named Activate. The result of the comparison can be acquired through the Result port. We have connected this Result port to the Branch node, and if the result of the branch is True, the TrueBox will show; if the result is False, the FalseBox will show.

---

### [![Responses_DataTypes_Numbers_Compare_LessOrEqual.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-datatypes-numbers-compare-lessorequal.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Less Or Equal

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/q9simage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Less Or Equal** response enables the user to compare two values to determine if one is less than or equal to the other by either typing in a numerical value in the Number A and Number B fields or by attaching a value or a variable node to those ports. Then once the response is executed, the result of the comparison can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/V5nimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/V5nimage.png)

In this example, a **Less** is used to compare the value of Variable1 with the value of Variable2 once the user triggers the object named Activate. The result of the comparison can be acquired through the Result port. We have connected this Result port to the Branch node, and if the result of the branch is True, the TrueBox will show; if the result is False, the FalseBox will show.

---


### [![Responses_DataTypes_Numbers_Compare_NotEqual.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-datatypes-numbers-compare-notequal.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Not Equal

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/3bBimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk-%C2%A0-15"><div class="flex-shrink-0 flex flex-col relative items-end"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8"><div class="pointer-container" id="bkmrk-%C2%A0-19"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></div></div></div></div></div>The **Not Equal** response enables the user to compare two values to determine if they are different by either typing in a numerical value in the Number A and Number B fields or by attaching a value or a variable node to those ports. Then once the response is executed, the result of the comparison can be acquired through the **Result** port.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/SiNimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/SiNimage.png)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk-%C2%A0-16"><div class="flex-shrink-0 flex flex-col relative items-end"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8"><div class="pointer-container" id="bkmrk-%C2%A0-20"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div></div></div></div></div></div></div>In this example, a **Not Equal** is used to compare the value of Variable1 with the value of Variable2 once the user triggers the object named Activate. The result of the comparison can be acquired through the Result port. We have connected this Result port to the Branch node, and if the result of the branch is True, the TrueBox will show; if the result is False, the FalseBox will show.

---

# Data Types\Number\ Conversion

### [![Response_Value_NumberToString.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-numbertostring.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Number To String  
  


[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/Wu3image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

  
The **Number to String** node enables the user to convert a numerical value to a string by either typing in a numerical value in the Number field or by attaching a value or a variable node to that port. Then once the conversion is executed, the resulting string can be acquired through the **String** port.


---

# Data Types\Number\ Expression

This node can evaluate an expression, then[![komeeqn57image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/hulkomeeqn57image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/hulkomeeqn57image.png)

the result of this evaluation can be used to activate other responses.

####   


#### Example

In the example below when the "**Import\_UPS**" geometry is clicked "**Evaluate Number Expression**" is executed. The expression is simple math.sqrt(16), and the result is linked to the "**Set Number Variable**" node, in "**result**" variable. This variable is then linked to a "Variable Writer" to display it.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/7ynimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/7ynimage.png)

# Data Types \ String \ Operations

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/qObimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/qObimage.png) Add String 

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/LKmimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/LKmimage.png)

This node can be used to add two strings to each other.

In the below example a **Score** string variable is input to this node, along with **My Score is** string filled in. The result is input to a Set String Variable node, into another string variable name **MyScore** which is linked to a Variable Writer in the scene to be displayed.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/EsXimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/EsXimage.png)

---

### [![Response_Value_Number_Add.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/response-value-number-add.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Find

[![Add_Node.jpg](https://simlab-soft.com/help/uploads/images/gallery/2025-04/scaled-1680-/5iZimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The "**Find**" node is used to search for a specific word, group of letters, or substring within a larger sentence or string value. If the specified text is found, the node returns the number of characters from the beginning of the string to the start of the found text. If the specified text is not found, the node returns -1. This allows users to detect and locate specific content inside a string.

#### Example

[![Add_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2025-04/scaled-1680-/852image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this example, the **Find node** is used to search for the word "apple" in a string variable with the initial value "I like apple pie." When the user triggers the object, the Variable with Initial node retrieves the string, and the Find node looks for the word "apple." The resulting index is then stored in a number variable named "Value" using the Set Number Variable node, which can then be connected to a Variable Writer to display the result during the VR experience. If "apple" is found, the Value variable stores the position where "apple" starts in the sentence. If not found, the Value variable is set to -1.

---

### [![Response_Value_String_LowerCase.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/response-value-string-lowercase.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/response-value-string-lowercase.png)Lower Case

The "**Lower Case**" can be used to ![EI7image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/ei7image.png)covert an upper case string to lower case, as shown in the example below.

In this example the string "SIMLAB SOFT" is input inside this node, which is executed when **Activate** scene node is triggered. This will result in updating the valued of LowerCaseName string variable to be simlab soft.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/iz7image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/iz7image.png)

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/pIoimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/pIoimage.png)Replace

**Replace** node can be used to replace specific **Target[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/2yoimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/2yoimage.png)** text string from a **Source** text string with the **Replacement** string.

In the below example the node is executed upon clicking **Activate** node, and has three string inputs. Source which is main string "Hello Name". Target string which is "Name", and Replacement string which is Samia.

The Result greeting from this will be "Hello Samia".

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/QeXimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/QeXimage.png)

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/BDvimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/BDvimage.png)Length 

This node returns the length of a given string.

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/F4simage.png)

In the example below the node is triggered by

clicking **Activate** geometry, and it's filled with a long paragraph string. The length result is stored in variable **Result** in the **Set Number Variable** node.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/1rQimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/1rQimage.png)


---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/SKCimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/SKCimage.png)[ ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/BDvimage.png)Upper Case

Contrary to the "**Lower Case**" node this node coverts a loser case string to upper case, as shown in the example below.[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/8F5image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/8F5image.png)

In this example the string "simlab soft" is input inside this node, which is executed when **Activate** scene node is triggered. This will result in updating the valued of UpperCaseName string variable to be SIMLAB SOFT.

####   


#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/t3Wimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/t3Wimage.png)

# Data Types \ String \ Compare

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/SM6image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/SM6image.png) Equal 

A compare node that takes two input strings and compares them if equal or not. [![jxPimage.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/jxpimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/jxpimage.png)

####   


####   


####   


#### Example

In the example below, two not equal strings has been input to this node, thus the output result would be false. The output is used as an input to Show/Hide node for a sphere, that won't be shown in this case.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/asNimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/asNimage.png)


---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/ycFimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/ycFimage.png)Not Equal

Contrary to the previous node this one compares

two input strings for not being equal.[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/uhbimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/uhbimage.png)

#### Example

In the example below, two equal strings has been input to this node, thus the output result would be false. The output is used as an input to Show/Hide node for a sphere. In this case the sphere will be shown.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Renimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Renimage.png)

# Data Types \ String \ Variable

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/xa2image.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/xa2image.png)Set

With this string variable node a user can set a string variable by Value or Expression.

#### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/N7himage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/N7himage.png)By Value 

Using this node a string variable is set by value, as shown in the example below. The **Greeting** variable is set using string input node with "**Good day sir!**"

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/berimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/berimage.png)

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/993image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/993image.png)


#### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/U5mimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/U5mimage.png)By Expression 

Using this node a string variable is set by expression, as shown in the example below. The **Name** variable is set using an expression input node with string.lower() expression.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/vizimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/vizimage.png)

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/ihsimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/ihsimage.png)


---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/WWvimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/WWvimage.png)Get 

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Ro1image.png)This node is used to get a string variable value. As shown in the example below, the string variable **Greeting** is gotten as input to this node.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Ljeimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Ljeimage.png)

# Data Types \ String \ Expression

---

### ![Response_Expression_String.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-expression-string.png) Evaluate String Expression

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/ncjimage.png)The **Evaluate String Expression** response enables the system to implement an expression in Lua language. Supported expressions can be found at this **[link](https://devdocs.io/lua~5.4/)**. Once the response is executed, the expression result can be acquired through the Result port.

####   


#### Example

In this example, an **Evaluate String Expression** response enables the system to execute a Lua expression. Once the response is executed, the result of the expression can be retrieved through the **Result** port and can be displayed using a variable writer during the VR Experience.

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/rykimage.png)


---

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--4"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8"><svg class="icon-md" fill="none" height="41" role="img" viewbox="0 0 41 41" width="41" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div></div></div></div>

# Data Types \Color

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/uF3image.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/uF3image.png)Color To RGB 

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Zjrimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Zjrimage.png)


This node converts colors to their RGB components. After that changes can be done to these components.

#### Example

In the below example "**Node Triggered**" node is linked to "**First\_drawer**" geometry that when clicked the "**Get Material Color**" node gets "**Drill\_material**". In "**Color To RGB**" node the color of this material is converted to its RGB components, and then a value of "**1**" is added to its Green component. The RGB components are converted back to color using "**RGB To Color**" node, and the material color is set in the "**Set Material Color**" node.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/nLvimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/nLvimage.png)

Below is the effect of changing material color components.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/QiVimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/QiVimage.png)[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/GpFimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/GpFimage.png)

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Jxoimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Jxoimage.png)RGB To Color 

As in the above example, "**RGB To Color**" converts

RGB components back to color.[![MXfimage.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/mxfimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/mxfimage.png)

# Data Types\Boolean\ Expression

---

This node can be used to generate values (true or false) that can

trigger events throughout the interactive experience.[![WIEimage.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/wieimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/wieimage.png)

#### Example

In the example below when "**3DGeom-7**" is clicked, the expression in "**Evaluate Boolean Expression**" node is checked to execute the node after or not. In this case the expression is simple "**==**" which is true, so the "**3DGeom-7**" geometry will be set to Grabbable.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/GCtimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/GCtimage.png)

# Data Types\Time

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/93yimage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/93yimage.png)Time Interval 

This node calculates the time difference between[![RR5image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Gakrr5image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Gakrr5image.png)

"**Start**", and "**End**" times. It stores the result in

an integer "**Interval**" out put.

###   


---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/ZqZimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/ZqZimage.png)Update Time

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/FvKimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/FvKimage.png)

This node can be used to store time variables.

#### Example

The example below demonstrates the use of both time nodes above. In it the value of "**inisial\_time**" variable is updated upon Scene Start. Then when "**Box**" geometry is clicked the value of "**current\_time**" variable is updated. Then the "**Time Interval**" node is executed, where "**result**" variable is calculated as difference between both times.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/xvWimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/xvWimage.png)

In the experience the "**result**" variable is connected to[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/NxPimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/NxPimage.png)

a Variable writer to display its value.

# Scene State

---

### Apply 

This node can be used to apply a scene state when an[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/YOwimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/YOwimage.png)

action is done in the 3D area.

#### Example

In the below example when "**Body\_9**" is clicked the "**BlueColor\_pump**" scene state is applied.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/CPiimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/CPiimage.png)

---

### Find By Name

In complicated scenes with large number of scene [![Lgmimage.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/lgmimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/lgmimage.png)

states, this node can come in handy. The user can use

this node to search for a scene state and then apply

it or do any action with it.

#### Example

In the example below this node is used to search for "GreenColor\_pump" and then applied the scene state.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/548image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/548image.png)

# Sequence

---

### Attach Sequence To

[Creating sequences](https://simlab-soft.com/help/books/simlab-composer-help/page/sequence-timeline) can be done from animating an object in the scene. This sequence can be attached to Hand or an Object in VR.

#### Hand

With sequences available in the Sequences Library, a sequence can be attached to the Hand in VR experience using this node in Dynamic Training Builder.

#### Example

Check this [tutorial ](https://www.youtube.com/watch?v=YkPAQTO5GKE)for the example below, where Boolean expressions were created and upon checking the Boolean Expression a sequence is attached to Hand.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/EtGimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/EtGimage.png)

#### Object

This node can be used to connect a controller grabbable object to a sequence in VR.

#### Example

In the example below the "Switch" sequence is attached to "Handle" object, when Controller "Gloves" geometry moves it. In this example a simple grabbable sequence can do the job, but this is just to demonstrate use of this node.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/HOwimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/HOwimage.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Y4ximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Y4ximage.png)

#### Example 2

In this example we have a path for a box to walk along being controlled by a magnet.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/5Cnimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/5Cnimage.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/095image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/095image.png)

---

### Playback Controls

Used to control sequence behavior.

#### Continue

##### Same Direction

The selected sequence will continue[![J0Simage.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/GDxj0simage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/GDxj0simage.png)

to play in the same direction.

##### Set Direction

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/Niaimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/Niaimage.png)With this node the user can change the selected sequence direction, by selecting Reverse to True.

##### Example

In the below example a number of the above Playback Controls are used. Here on "**Scene Start**","**Play Sequence**" response is executed for "Elevator\_Up" sequence. Followed by a 1 second "**Delay**", then "**Stop Sequence**" for another one second "**Delay**". Then the sequence is continued, followed by another "**Delay**" then "**Resume Animation Sequence**" from start.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/iEZimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/iEZimage.png)

#### Play

##### Play Sequence/Play Sequence From Start

Both controls will play animation sequence, one from current position, and the other -as the name implies- will play it from start.

#### Reverse

##### Reverse

Reverse sequences starts the animation sequence in the reverse mode (from the last frame). The reverse control will start from the last frame not from the current (because it reverses the overall animation)

In the below example the "Elevator\_Up" sequence upon clicking "Elevator\_panel(2)" geometry will be played from start. So if the elevator at that time was at the top position, it would go down then -as the sequence implies- would go up, then wait for 5 seconds, then "Reverse Sequence" that is go down from last frame.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/TSAimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/TSAimage.png)

####   


####   


####   


####   


##### Reverse From End


This control will start the sequence from the end, even if it hasn’t been played yet.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/QSBimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/QSBimage.png)

#### Flip

Flip sequences flips current animation (that is, forward animation will be backward , backward animation will be forward). Think about it like we are opening a door and we pause the animation in the middle, flip control will return the door back from the current frame to original start position.

#### Stop

Stopes the animation sequence, as shown in examples presented in this section.


---

### Playback Properties

#### Current Frame

##### Get Sequence Current Frame

This node will get the value of the current sequence frame, the user can then use this value in any operation. In the example below the value of the current sequence frame is stored in "Current\_Frame" variable, which is set to the "VR Variable Writer" in the scene to display its value.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/0ESimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/0ESimage.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/eqmimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/eqmimage.png)

#####   


##### Set Sequence Current Frame

If the user wants to go to a specific frame in the sequence this is the function to use. In the below example upon clicking node the sequence current frame is set to 10.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/8l6image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/8l6image.png)

To show the result we got the valued of the current frame and assign it to "Current\_Frame" variable that is displayed in the variable writer as shown below.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/PSnimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/PSnimage.png)

#### Full Range

This node can be used to calculate the full range of a sequence.

##### Get End

Gets and outputs the end frame of the selected [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/tddimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/tddimage.png)

sequence, when triggered.

#####   


##### Get Start


Gets and outputs the start frame of the selected [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/b3timage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/b3timage.png)

sequence, when triggered.

#### Looping

Sequences can be set to loop after finishing.

##### Get Sequence Looping

This node will get the looping status of the input[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/2m2image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/2m2image.png)

sequence, whether true or false.

#####   


##### Set Sequence Looping

This node will set the looping status for the input [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/ElPimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/ElPimage.png)

sequence to either true or false.

#### Play Range

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/LKqimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/LKqimage.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/hK7image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/hK7image.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/dyeimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/dyeimage.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-10/scaled-1680-/TQximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-10/TQximage.png)

#### Play Rate (Speed)

#### Swing

#### Is Playing

#### Is Reversing

---

### Find By Name

# User

### ![Response_User_MouseCursor_Show.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-user-mousecursor-show.png) Show Mouse Cursor

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/GhKimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/GhKimage.png)

The **Show Mouse Cursor node** explicitly controls the visibility and functionality of the user's mouse pointer within the VR Viewer. When activated, the node checks the boolean Enable input for the specified User. Setting it to True displays the cursor on-screen, allowing the user to freely move it and click to interact with objects utilizing **Node Triggered** events. It is important to note that while this cursor mode is active, standard navigation is suspended—the user cannot walk or rotate their camera view until the node is activated again with the Enable input set to False, which hides the cursor and restores normal movement.  
  
The **Show Mouse Cursor** mode is used for desktop/PC version of VR Viewer

# User \ Controller

---

### [![Response_Node_AttachToHand.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-node-attachtohand.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Attach To Hand

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/Fq2image.png)

The **Attach to Hand** node enables the user to attach objects to specific parts of the hand in a VR environment by selecting the desired hand part. This node allows for precise placement of objects, such as tools or items, enhancing interactivity within the VR Experience. Once the attachment is configured, the object will remain in the chosen part of the hand during interactions.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/Hp1image.png)

In this example, an **Attach to Hand node** is used to attach a syringe to the index finger once the "Hand Enter Node" event is triggered. The syringe is attached to the specified part of the hand automatically when the event occurs, enabling interaction with the object in the VR environment.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/b1KMBtWP8EQ" width="560"></iframe>

---

### [![Response_Node_DetachFromHand.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-detachfromhand.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/response-node-detachfromhand.png) Detach From Hand 

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/scLimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scLimage.png)

The **Detach From Hand** , detaches an object currently attached by the [Attach To Hand ](https://simlab-soft.com/help/link/369#bkmrk-number-variable-valu)response, so the object no more moves with the hand

---

### [![Response_User_SetShowBeam.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-user-setshowbeam.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Trigger Beam<span style="color: rgb(34, 34, 34); font-size: 2.333em; font-weight: 400;"> </span>  


![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/rWQimage.png)

The **Trigger Beam node** enables the user to control the visibility of a beam coming out of the controller in the VR Experience, once the node is executed.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/woWimage.png)

In this example, a **Trigger Beam node** is used to hide the beam coming out of the controller once the object named Activate is triggered. When the event is triggered, the change is reflected during the VR Experience.

---

# User \ Transform

### ![Response_User_Rotation_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-user-rotation-get.png) Get User Rotation

  
![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/95simage.png)

The **Get User Rotation** response enables the user to get the values of the User's head rotation, and allows them to store the values of the **Pitch**, **Yaw** and **Roll** and the results can be acquired through their output ports.

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk-"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8"><svg class="icon-md" fill="none" height="41" role="img" viewbox="0 0 41 41" width="41" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div>####   


####   


#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/Hmgimage.png)


In this example, a **Get User Rotation** response is used to check the head rotation angles (Pitch, Yaw and Roll). Once the object named Activate is triggered, the head rotation values (Pitch, Yaw, Roll) of the user with attribute InBuilding and Value Yes are calculated and stored in the variables named Pitch, Yaw, Roll, in order to use them in the VR Experience.

---

### [![Response_User_TeleportToCamera.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-user-teleporttocamera.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Teleport To Camera

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/utpimage.png)

The **Teleport To Camera** node enables the user to teleport to a new location by assigning a camera in the **CameraNode** field. Once the teleportation is executed, the user is moved to the position and orientation defined by the specified camera, the user can also decide whether this teleportation affect the host only or all the user in the experience (in case of collaboration).

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/A1Fimage.png)

In this example, a **Teleport To Camera** response is used to move the user to a new location once the object named Activate is triggered. When triggered, the sound named Teleport\_Sound will play, and the user will be teleported to the location of the camera assigned in the Teleport To Camera node.

> [![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png) ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1272491882890399814/1272491882890399814 "Tutorial is available on SimLab VR Discord server")

---

### [![Response_User_TeleportToCamera.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/response-attachuser.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Attach User

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/Y9cimage.png)

The **Attach User** node allows users to attach the user to specific objects within the VR Experience. This node ensures that the user moves along with the object, providing an immersive experience where the user is fixed to the selected object throughout the VR environment, this can be decided to affect only the host or all user (in case of collaboration).

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/0dDimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-01/0dDimage.png)

In this example, the **Attach User** node is used to attach the user to a roller coaster at the start of the scene. When the scene starts, the user will be fixed to the roller coaster, moving along with it as it travels through the environment, providing an immersive experience.

> [![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png) ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1298557994208071701/1328733596726333451 "Tutorial is available on SimLab VR Discord server")

---

### [![Response_User_TeleportToCamera.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/Fphresponse-user-detach.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Detach User

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/1jBimage.png)

The **Detach User** node allows users to detach from an object within the VR Experience. This node provides a straightforward way to release the user from an object they were attached to, ensuring they regain control of their own movement and are no longer fixed to the selected object or location.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/Fw9image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-01/Fw9image.png)

In this example, the **Detach User** node is used to detach the user from a roller coaster when the roller coaster's animation ends. Once the animation is complete, the user will be released from the roller coaster.

> [![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png) ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1298557994208071701/1328733596726333451 "Tutorial is available on SimLab VR Discord server")

# User \  Gadget

### [![Response_Gadget_EquipToUser.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-gadget-equiptouser.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Equip To User

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/vvmimage.png)

The **Equip to User** Node enables the user to equip or unequip gadgets, adjacent objects, or HUD elements to the user within the VR environment. This node enhances interactivity by enabling users to interact directly with various items and interface elements as part of their virtual experience.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/ji9image.png)

In this example, the **Equip to User Node** is used to equip a gun controller to the user. Select the gun object, then assign it to the controller by clicking on the plus icon in the User Gadget window.

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/J1kimage.png)

To activate the gun gadget, press the right grip button then the gun will be attached to the User's controller in the VR environment.

---

# User \ Attributes \ String

### [![Response_User_Attribute_StringSet.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-user-attribute-stringset.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Set User Attribute (String)

  
![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/D3Iimage.png)

The **Set User Attribute** response enables user to set a value to an attribute by either typing in a string value in the value field or by attaching a value or a variable node to that port. Then once the response is executed, the variable value can be acquired through the **Value** port.

####   


#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/6ZGimage.png)

[ ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/euiimage.png)

In this example, we added a **String User Attribute** called it **Indoor** with the value **No**

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/TXeimage.png)

<div class="pointer-container" id="bkmrk-%C2%A0-18"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>Once the user enters the object named Building, the **Indoor** attribute's value will be set to **Yes**, then when the object named Teleport Button is triggered, the user(s) with the attribute named **Indoor** and the value **Yes** will be teleported to the **Outside** CameraNode location.

---

# User \  Point To Object

### [![Response_Gadget_EquipToUser.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-gadget-equiptouser.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Point To Object

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/gdNimage.png)

The **Point To Node** enables the user to be guided to the location of a specific place or object within the scene. When this node is activated, an arrow is displayed, pointing to the location of the assigned SceneNode within the VR environment.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/Bd3image.png)

In this example, the **Point To Node** is used to guide the user to the location of an object named button when the Scene Start event occurs. As soon as the scene begins, an arrow appears, pointing directly to the button location, helping the user finding it within the VR environment.

---

# User \ Set Mode

### ![Response_InteractionMode_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-interactionmode-set.png) Set Interaction Mode

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/image.png)

The **Set Interaction Mode node** dynamically changes how participants engage with the VR environment. When activated, the node evaluates the targeted User input—which can be configured for either "Host Only" or "All Users" and immediately switches their current control state to the selected Mode. The available interaction modes include:

- **Default:** The standard, baseline interaction and movement mechanics of the VR Viewer.
- **Drawing:** Enables the user to freely draw directly onto 3D surfaces within the scene.
- **Scene Building:** Unlocks spatial editing capabilities, allowing the user to dynamically adjust the location, rotation, and scale of 3D objects to freely move and place models around the environment.
- **Measurement:** Enables the user to draw straight lines across the scene, accurately measuring distances and lengths in meters.

###   


---

### ![Response_Scene_NightMode_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-scene-nightmode-set.png) Set Night Mode

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/rKvimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/rKvimage.png)

**The Set Night Mode node** instantly alter the environmental lighting and skybox of the VR scene to nighttime. Once activated, the node evaluates the boolean Enable input—transitioning the scene's overall environment to a dark night mode.

# User Name & ID

### [![Response_Cloud_USERID_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-cloud-userid-get.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Get User ID

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/xXdimage.png)

The **Get User ID node** is used to retrieve the unique identifier of the user interacting within the VR environment. This ID can be utilized for various purposes, such as tracking user actions or customizing experiences based on the user.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/YZximage.png)

In this example, the **Get User ID node** is used to create a student attendance system. When the user triggers the Activate event, the "Get User ID" retrieves the Student ID number and stores it in the "`attendance_ID"` variable using the "Set Number Variable" node.

**Note:** To retrieve the User ID, the experience must be run from a **logged-in** account in SimLab VR Viewer.

---

[![Response_User_Name_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-user-name-get.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)<span style="color: rgb(34, 34, 34); font-size: 2.333em; font-weight: 400;"> </span><span style="color: rgb(34, 34, 34); font-size: 2.333em;">Get User Name</span>

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/5fXimage.png)

The **Get User Name node** is used to retrieve the name of the user interacting within the VR environment. This name can be utilized for various purposes, such as personalizing interactions or saving progress tied to a specific user.

<div class="mt-1 flex gap-3 empty:hidden -ml-2" id="bkmrk--9"><div class="items-center justify-start rounded-xl p-1 flex"><div class="flex items-center"><button aria-label="Read Aloud" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Copy" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Regenerate" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="flex"><button aria-label="Good response" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Bad response" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button>  
</div><div class="flex items-center pb-0"><div class="[&_svg]:h-full [&_svg]:w-full icon-md h-4 w-4"><svg fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div><button aria-expanded="false" aria-haspopup="menu" class="cursor-pointer h-[30px] rounded-md px-1 text-token-text-secondary hover:bg-token-main-surface-secondary" data-state="closed" id="bkmrk--18" type="button"></button></div></div></div>#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/0aDimage.png)

In this example, the "Get User Name" node is used to create a student attendance system. When the user triggers the Activate event, the "Get User Name" retrieves the student's name and stores it in the `attendance_UserName` variable using the "Set String Variable" node.

  
**Note:** To retrieve the User Name, the experience must be run from a **logged-in** account in SimLab VR Viewer.

---

# Material

### ![Response_Material_Copy.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-material-copy.png) Copy Material

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/7KYimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/7KYimage.png)

The Copy Material node duplicates an existing material and create a completely independent instance. Upon triggering the Execute input, the node takes the specified Material input and outputs a newly generated Copy of that material, which can then be freely modified without altering the original source.

---

### ![Response_Material_CopyProperties.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-material-copyproperties.png) Copy Material Properties

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/6MLimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/6MLimage.png)

The Copy Material Properties node transfers visual attributes directly from one material to another without generating a new instance. When the Execute input is triggered, the node takes the characteristics of the Source Material input and applies them directly to the Target Material input, instantly overwriting the target's previous properties.

##### Example:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/9lXimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/9lXimage.png)

In this example, triggering the "Change Color" object prompts the system to execute the Copy Material Properties node. Once activated, the node takes all the visual attributes from the "cabinets" source material and immediately applies them to the "tables" target material, causing any 3D objects using the tables material to instantly match the appearance of the cabinets.

# Material \ Texture

### ![Response_Material_Texture_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-material-texture-set.png) Set Texture From File  
  


[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/YgPimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/YgPimage.png)

This node replaces the current texture of a specified material with a 2D image file stored in your Resource Management system. By inputting the exact file name, you can dynamically update the visual appearance of any object using that material during the experience.

# Execution

### ![Response_BranchExpression.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-branchexpression.png) Branch on Expression

  
![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/q8Mimage.png)The **Branch on Expression** response enables the user to evaluate an expression with the possible outputs of True or False each time the event connected to it is triggered. Once the response is executed, the result of the evaluation can be acquired through the **True** or **False** ports.

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk-"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8"><svg class="icon-md" fill="none" height="41" role="img" viewbox="0 0 41 41" width="41" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div></div></div></div>#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/WPEimage.png)


In this example, a **Branch on Expression** response is used to evaluate an expression once the user triggers the object named Activate. The result of the expression, which will be either True or False, if the result was true, the object named "Variable\_01" will be shown, if it was false, the object named "Variable\_02" will be shown.

---

### [![Response_Delay.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-delay.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/response-delay.png) Delay

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/UO0image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/UO0image.png)

**The Delay node** waits for the specified **Duration** (in seconds), then executes the node linked to its **Execute** output.

Duration can be an integer or a float less than one to achieve sub-second delays.

---

### ![Response_Loop.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-loop.png) Loop

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/72Yimage.png)

The **Loop node** enables the user to repeatedly execute a connected response for a specified number of times as defined in the Number of Loops field. Each time the event connected to the loop is triggered, the response is executed repeatedly, and the loop continues until the assigned number of repetitions is completed.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/tagimage.png)


In this example, a **Loop node** is used to repeatedly execute the connected response that decreases the value of a number variable by one. The Decrement response is repeated for the number of times specified in the **Number of Loops** field, with the duration between each repetition set in the **Interval** field. Once the assigned number of repetitions is completed, the sound named **Countdown\_Over** plays.

---

### ![Responses_execution_RunScript.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/responses-execution-runscript.png) Run Script

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/untitled-1.png)

The **Run Script** node allows the user to execute advanced functions using the **Lua programming language**. This node provides flexibility by enabling custom scripts to be triggered when an event occurs. Allowing for complex operations and logic to be carried out as defined in the script. This node is ideal for scenarios requiring functionality beyond the standard nodes, offering advanced customization and control over the system.

You can read about Lua Scripting in SimLab Training builder through the following Blog:

<span style="text-decoration: underline;">**[Lua Scripting Blog](https://blog.simlab-soft.com/lua-scripting-in-simlab-training-builder-from-beginner-to-beyond/ "Lua Scripting Blog")**</span>

> **[Lua Documentation for SimLab Training Builder](https://www.simlab-soft.com/3d-products/docs/help/scripting/English/Lua/ "Lua Documentation for SimLab Training Builder")**

---

### [![Response_CustomEvent_Trigger.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-customevent-trigger.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/response-customevent-trigger.png) Trigger Custom Action

[![xyLimage.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/xylimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/xylimage.png)

Calling this **Trigger Custom Action** will execute the corresponding [**Custom Action** event ](https://simlab-soft.com/help/link/581#bkmrk-custom-event%C2%A0)(based on the matching ID), passing along any optional information provided in the info field.

This is useful when you want multiple paths in your experience to produce the same response — without duplicating it each time.

---

# SceneNode \ Management

### [![Responses_SceneNode_NodesManagement_CastSceneNode.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/responses-scenenode-nodesmanagement-castscenenode.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Cast SceneNode

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/DPOimage.png)

The **Cast SceneNode** enables the user to change the type of a SceneNode by selecting a typeInfo from the list, such as sound, 3D object, video, gadget, or camera. This node identifies the assigned SceneNode as the chosen type, allowing it to function accordingly within the VR environment.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/d0fimage.png)

In this example, Animals sounds are assigned to the animals as **SceneNode** type

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/c2vimage.png)

A **Cast SceneNode** is used to identify the SceneNode of an animal object (dog, cat, and horse) as a sound. An attribute named "Sound" is added to all three animals, and the corresponding sound is assigned to each. When the user triggers the animal SceneNode, the **Cast SceneNode** plays the sound assigned in the attribute.

---

### [![Response_Node_Parent_Reset.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/responses-scenenode-nodesmanagement-enablecollision.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Set Node Collision Enabled

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The **Set Node Collision Enabled** node is used to enable or disable collision for the user. This can be utilized to allow the user to pass through objects or be blocked by them within the VR environment.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/KNtimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/S2himage.png)

<div class="pointer-container" id="bkmrk-%C2%A0-11"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, the **Set Node Collision Enabled** node is used to disable collision for the user when the scene starts. The wall is assigned as the target object, and the collision is set to "False," allowing the user to pass through it.

This is shown in the following tutorial

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/QlagX08XJE0" width="560"></iframe>

<div class="mb-2 flex gap-3 empty:hidden -ml-2" id="bkmrk--19"><div class="items-center justify-start rounded-xl p-1 flex">  
</div></div>---

### [![Response_Node_Parent_Reset.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/responses-scenenode-nodesmanagement-enablecollision.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Delete SceneNode

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/kyTimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)

The **Delete SceneNode** node enables users to remove a specified object from the scene during a VR Experience. This node allows for dynamic scene modifications by deleting objects based on interactions or conditions, making the environment more interactive and adaptable. Once executed, the specified object is permanently removed from the scene.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/0QSimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/0QSimage.png)

<div class="pointer-container" id="bkmrk-%C2%A0-14"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, the **Delete SceneNode** node is used to remove a trigger box from the scene. The **Node Triggered** event is activated when the user triggers or clicks on an object named "Remove." As soon as the object is triggered, the **Delete SceneNode** node removes the trigger box from the scene, preventing further interactions with it.

---

###   


### ![Response_Node_Collision_WalkThrough.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-collision-walkthrough.png) Enable Walk-Through

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Eoyimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Eoyimage.png)

The **Enable Walk-Through node** explicitly controls the physical collision properties of a targeted 3D object within the VR Viewer. When activated, the node uses the boolean Enable input to determine the collision state of the specified SceneNode—allowing users to seamlessly pass directly through the object without physical obstruction if set to *True.*

---

### ![Response_Node_FindByName.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-findbyname.png) Find Node By Name

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/zXiimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/zXiimage.png)

The **Find Node By Name node** searches the VR environment and dynamically locate a specific 3D object based on its assigned text identifier. When activated, the node takes the exact string provided in the Name input, searches the scene to find the corresponding object, and outputs that specific SceneNode reference.

###   


[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/yeKimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/yeKimage.png)

###   


---

### ![Response_Node_Name_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-name-get.png) Get Node Name

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Ynximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Ynximage.png)

The **Get Node Name node** retrieves the exact text identifier of a specific 3D object within the scene. When activated, the node takes the targeted SceneNode input, extracts its assigned name, and outputs this text as a string value through the Result pin.

---

### ![Response_Node_MakeCopy.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-makecopy.png) Make Node Copy

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/m3ximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/m3ximage.png)

The **Make Node Copy node** duplicates a specific 3D object along with an independent copy of its material. Once activated, the node takes the targeted SceneNode input and generates a completely separate Copy, ensuring that any subsequent material or texture changes applied to this new object do not affect the original source.

---

### ![Response_Node_MakeInstance.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-makeinstance.png) Make Node Instance

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/HRAimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/HRAimage.png)

The **Make Node Instance node** generates a direct clone of a specific 3D object in the scene. When activated, the node takes the targeted SceneNode input and creates a new Instance that shares the exact same material properties as the original.


##### Example:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/PCVimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/PCVimage.png)

In this example, we create a simple shooting mechanic where firing a gun generates and shoots a bullet toward a target:

1. A **Node Is Grabbed** node continuously checks if the user is holding the "Gun" object, enabling the next node if the condition is met.
2. A **Grip Pressed** event node listens for the user to press the right hand's grip button, acting as the trigger to fire the weapon.
3. Once the grip is pressed, the **Make Node Instance** node activates, immediately generating a new instance of the "Bullet" object in the scene.
4. A **Get Node Location** node is then used to retrieve the exact X, Y, and Z coordinates of a specific "AimTarget" object.
5. Finally, a **Set Node Location (Animated)** node takes the newly generated bullet instance and smoothly moves it to the AimTarget's coordinates over a quick duration of 0.2 seconds, simulating a flying projectile.

<div class="flex items-center" id="bkmrk--47"><button aria-expanded="false" aria-haspopup="menu" class="cursor-pointer h-[30px] rounded-md px-1 text-token-text-secondary hover:bg-token-main-surface-secondary" data-state="closed" id="bkmrk--56" type="button"></button></div><div class="flex items-center" id="bkmrk--48"></div>---

<div class="flex items-center" id="bkmrk--50"></div><div class="flex items-center" id="bkmrk--51"></div>### ![Response_Node_SimulatePhysics.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-simulatephysics.png) Set Node Simulate Physics

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/eVHimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/eVHimage.png)

The **Set Node Simulate Physics node** activates or deactivates real-time physics calculations for a specific 3D object within the VR Viewer. When activated, the node uses the boolean Enable input to determine the object's physical state, allowing the object to react to gravity, collisions, and user interactions based on its assigned material physics properties

[![Untitled-1.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/untitled-1.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/untitled-1.png)

To configure how an object behaves during simulation, navigate to the Properties panel and select the Material tab. Under the Physics Properties section, you can adjust specific physical attributes for that material, such as its Density, Friction, and Restitution, which directly impact how the object interacts with the environment when physics are enabled.

# SceneNode \ Transform

### ![Response_Node_Transform_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-transform-set.png) Get Node Transform

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/3kSimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/3kSimage.png)

The **Get Node Transform node** retrieves the complete spatial data—including the exact location, rotation, and scale values—of a specific 3D object in the scene. When activated, the node takes the targeted SceneNode input, extracts its current transform matrix, and outputs this combined information through the Transform pin.

---

### ![Response_Node_Transform_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/SKsresponse-node-transform-set.png) Set Node Transform

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Inximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Inximage.png)

The **Set Node Transform node** instantly applies a complete set of spatial data—encompassing location, rotation, and scale—to a specific 3D object. Once activated, the node evaluates the targeted SceneNode and immediately updates its physical presence in the scene to perfectly match the data provided through the Transform input.

---

### ![Response_Node_Transform_Set_Animated.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-transform-set-animated.png) Set Node Transform (Animated)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/hFSimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/hFSimage.png)

The **Set Node Transform (Animated) node** functions similarly to the standard set transform node, but it smoothly transitions the 3D object to the new location, rotation, and scale over a defined period. When activated, the node takes the targeted SceneNode and seamlessly tweens its spatial data to match the provided Transform input over the specific amount of time defined by the numerical Duration input (measured in seconds).

---

### ![Response_Node_Transform_Swap.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-transform-swap.png) Swap Nodes Transform

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/aiximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/aiximage.png)

**The Swap Nodes Transform node** instantly exchanges the complete spatial data—including location, rotation, and scale—between two distinct 3D objects in the scene. When activated, the node evaluates the targeted objects provided in the SceneNode A and SceneNode B inputs and simultaneously swaps their placements, rotations, and proportions.

# SceneNode \ Transform \ Location

### [![Visual.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Y8Yvisual.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Y8Yvisual.png)Visual \\ Get Node Visual Location

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/z1Kimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/z1Kimage.png)

The **Get Node Visual Location** node enables the system to retrieve the exact X, Y, and Z coordinates of a SceneNode based on its absolute visual representation in the 3D scene.

Unlike standard location nodes that calculate position relative to a parent object, this node fetches the true visual position of the object within the environment, completely unaffected by the scene's parent-child hierarchy system.

<div _ngcontent-ng-c761594330="" class="container" id="bkmrk--0"><div _ngcontent-ng-c2150360127="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel stronger enable-updated-hr-color" dir="ltr" id="bkmrk--31" inline-copy-host=""></div></div>### [![Visual.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Y8Yvisual.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Y8Yvisual.png)Visual \\ Set Visual Location

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/R0Timage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/R0Timage.png)

The **Set Node Visual Location** node enables the system to instantly move a SceneNode to specific X, Y, and Z coordinates within the absolute visual space of the 3D scene. By directly altering where the object appears visually, this node completely bypasses any positional offsets or transformations that the object might normally inherit from its parent hierarchy.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/nVwimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/nVwimage.png)

In this example, an interaction is set up to match the positions of two independent objects.

1. Upon interacting with the "Ball" object, the **Node Triggered** event initiates the execution flow.
2. The **Get Node Visual Location** node extracts the true visual X, Y, and Z coordinates of the "Ball" in the scene.
3. These coordinate values are then fed directly into the X, Y, and Z inputs of a **Set Node Visual Location** node assigned to a "Target" object. This instantly moves the Target to the exact visual location of the Ball, regardless of how deeply nested either object is within the scene's hierarchy.

### [![Visual.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Y8Yvisual.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Y8Yvisual.png)Visual \\ Set Node Visual Location (Animated)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/2Vlimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/2Vlimage.png)

The **Set Node Visual Location (Animated)** node enables the system to smoothly move a SceneNode to specific X, Y, and Z coordinates within the absolute visual space of the 3D scene over a set period.

Similar to the standard **Set Node Visual Location** node, this movement completely bypasses any positional offsets or transformations inherited from the object's parent hierarchy. However, this animated variant includes an additional **Duration** parameter. Instead of instantly snapping the object to the new coordinates, this node creates a smooth transition (tweening) from its current visual location to the target location over the specified number of seconds.

---

### ![Response_Node_Location_FalltoSurface.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-location-falltosurface.png) Fall To Surface

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/SiBimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/SiBimage.png)

The F**all To Surface node** instantly repositions a specific 3D object directly onto the nearest 3D surface located immediately below it in the scene. When activated, the node takes the targeted SceneNode input and immediately updates its vertical placement to simulate a sudden, instantaneous drop, resting the object perfectly against the underlying geometry.

### ![Response_Node_Location_FalltoSurface.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-location-falltosurface.png) Fall To Surface (Animated)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/nXaimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/nXaimage.png)

The **Fall To Surface (Animated) node** functions similarly to the standard fall node, but instead of an instant drop, it smoothly transitions the 3D object down to the nearest underlying surface over a defined period. Once activated, the node takes the targeted SceneNode and seamlessly tweens its vertical descent until it rests on the geometry below, completing the fall animation over the exact amount of time specified by the numerical Duration input (measured in seconds).

---

### [![Response_Node_Location_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-node-location-get.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Get Node Location

  
![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/lDximage.png)

The **Get Node Location** response obtains the X, Y, and Z coordinates of an object's location each time the event connected to it is triggered. Once the response is executed, the coordinates can be acquired through the **X**, **Y**, and **Z** ports.

####   


#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/j1rimage.png)


<div class="pointer-container" id="bkmrk-%C2%A0-24"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, a **Get Node Location** response is used to obtain the X, Y, and Z coordinates of an object named Table once the user triggers the object named Activate. The coordinates are then stored in variables named X, Y, and Z, which can be connected to a variable writer to be displayed during the VR Experience.

---

### [![Response_Node_Location_AnimatedSet.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-node-location-animatedset.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Set Node Location

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/fliimage.png)

The **Set Node Location** response enables the user to set the location of an object to specific X, Y, and Z coordinates by either typing in the numerical values or by attaching a variable node to those ports. Once the response is executed, the object's new location is applied using the provided coordinates.

####   


#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/w9timage.png)


<div class="pointer-container" id="bkmrk-%C2%A0-25"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>In this example, a **Set Node Location** response is used to assign the X, Y, and Z coordinates stored in variables named X, Y, and Z to an object named Pot once the user triggers the object named Activate. The object's new location is set based on these coordinates, allowing the updated position to be reflected during the VR Experience.

### [![Response_Node_Location_AnimatedSet.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-node-location-animatedset.png) ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)Set Node Location (Animated)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/JRIimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/JRIimage.png)

The **Set Node Location (Animated)** node enables the system to smoothly move a SceneNode to a specific global coordinate in the 3D space over a set period. this node creates a seamless tweening effect from the object's current position to its new target destination

This differs significantly from the standard **Set Node Location** node, which instantly snaps or teleports the object to the new coordinates without any transition. The animated variant is ideal for creating moving platforms, sliding doors, or moving vehicles.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/a35image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/a35image.png)

In this example, an interactive elevator mechanism is created.

1. Upon interacting with the button object, the **Node Triggered** event initiates the execution flow.
2. The **Get Node Location** node is used to retrieve the current X, Y, and Z global coordinates of the "Elevator" object.
3. To move the elevator up, the Y-axis coordinate is passed into an **Add** node, where 5 units are added to its current value. The X and Z coordinates remain unchanged.
4. Finally, the **Set Node Location (Animated)** node applies these new coordinates to the elevator object. The **Duration** parameter is set to 3, meaning it will take exactly 3 seconds for the elevator to smoothly transition (tween) to its new position 5 units higher.


---

# SceneNode \ Grab

### ![Response_Node_Grabbing_Ignore.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-grabbing-ignore.png) Ignore grabbing

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/zRnimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/zRnimage.png)

The **Ignore Grabbing node** explicitly prevents a specific 3D object from being picked up or interacted with by the user's hands during the VR experience. When activated, the node disables the grabbable state of the targeted SceneNode if set to True. This node is highly useful for complex models where you want to enforce realistic interactions by restricting grip points, allowing you to easily exclude certain parts of a grouped object from being grabbed without having to detach or separate the components from the main assembly.

##### Example:

In this example, we configure a screwdriver so that the user can only pick it up by its handle, preventing them from grabbing it awkwardly by the metal rod or tip:

If **Set Node Grabbable State node** is used on the handle part of the screw driver alone, only the handle will move along with the grabbing hand, leaving the rest of the screw driver's assembly in place. Instead, **Ignore Grabbing** node should be used to exclude unwanted parts from being grabbed:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/ccwimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/ccwimage.png)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/RgNimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/RgNimage.png)

1. A **Set Node Grabbable State** node is activated to make the entire "Philips Screw Driver" parent group grabbable.
2. The execution flow immediately continues into an **Ignore Grabbing** node.
3. The specific "Screw driver head" object is assigned to the SceneNode input, and the Ignore boolean is set to True.
4. As a result, the metal tip is excluded from being a valid grab target, forcing the user to grab the tool properly by its handle while still ensuring the entire screwdriver assembly moves together as one cohesive object in the user's hand.

---

### ![Response_Node_GrabbableSequenceSet.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-grabbablesequenceset.png) Set Grabbable Sequence

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/rDjimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/rDjimage.png)

The Set Grabbable Sequence node makes a specific 3D object interactively grabbable by assigning an animation sequence to it during the VR experience. Once activated, the node evaluates the targeted SceneNode and attaches the specified Sequence input, defining exactly how the object animates when grabbed and manipulated by the user. This versatile node can be used to add a sequence, dynamically switch between different sequences on the fly, or completely remove an existing sequence from a grabbable object before continuing the logic flow.

##### Example:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/68Bimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/68Bimage.png)

In this example, we use the Set Grabbable Sequence node to create a dynamic gear stick that changes states based on the user's interactions:

1. A **Set Grabbable Sequence** node is used to make a "Gear Stick" object grabbable and attaching an animation sequence that, when grabbed, shifts the gear to first.
2. A **Watch Boolean Expression** node continuously monitors a string variable named "Clutch".
3. When the "Clutch" variable is set to "pressed", the watch node passes its OnTrue execution path to a second **Set Grabbable Sequence** node, which changes the grabbable object's sequence to a "Shift Gear To Second" sequence.

##### Tip:

Using the Set Grabbable Sequence node without attaching a sequence will disable the grabbing state of an object.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/bkIimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/bkIimage.png)

Here, another **Watch Boolean Expression** node is used to monitor a variable called "engineStatus". When the "engineStatus" variable is set to "off", it triggers a **Set Grabbable Sequence** node targeting the gear stick, but this time with no sequence attached (Empty). Leaving the sequence input empty completely disables the grabbing interaction, turning the gear stick back into a still, non-interactable object.

---

### ![Response_Node_GrabbableSet.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-grabbableset.png) Set Node grabbable State

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/5Nvimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/5Nvimage.png)

**The Set Node Grabbable State node** evaluates the boolean Enable input to determine the targeted SceneNode's grabbable status—making the object fully grabbable by the user if set to True, or disabling grab interactions entirely to make it a static object if set to False.

# Resource

---

### ![Response_Resource_DeleteResource.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-resource-deleteresource.png) Delete Resource

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/lM9image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/lM9image.png)

The **Delete Resource** node enables the system to remove specific resources currently stored in the SimLab File Vault. This node simply requires the exact "FileName" of the target file as an input to execute the deletion. It outputs a "Success" boolean to confirm whether the specified file was successfully removed from the vault.

---

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/T47image.png) ](https://simlab-soft.com/help/uploads/images/gallery/2025-09/T47image.png) Download Resource

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-09/scaled-1680-/QXZimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-09/QXZimage.png)

The **Download Resource** node enables the system to download a specific file directly from the SimLab File Vault while a user is actively engaged inside a VR experience. This node requires the exact URL of the vault file to be linked into the node's input. Upon execution, it retrieves the file and provides a "Success" status alongside the downloaded "FileName" to be used in subsequent logic.

For more information, refer to SimLab Vault tutorial below:

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/ZrGcO0HZmDI" width="560"></iframe>

---

### ![Response_Resource_GetPathFromResource.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-resource-getpathfromresource.png) Get Path From Resource

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/rPtimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/rPtimage.png)

The **Get Path From Resource** node enables the system to retrieve the exact URL or local file path of a specific resource or file. This node requires the exact "FileName" of the target file as an input.

---

### [![Response_Resource_SaveVRPackage.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-resource-savevrpackage.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-03/response-resource-savevrpackage.png)Save VRPackage

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/jgoimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/jgoimage.png)

The **Save VRPackage** node enables the system to save the current, active VR experience as a standalone `.vrpackage` file, directly from within the VR session itself. It requires a "FileName" to name the new package and includes a "User" dropdown (e.g., "Host Only") to specify which user is authorizing the save. It outputs a "Success" boolean and the final "FileName" to confirm the action.

###   


---

### ![Response_Resource_UploadMediaFromUser.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-resource-uploadmediafromuser.png) Upload Media From User

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/yl5image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/yl5image.png)

The **Upload Media From User** node functions similarly to the standard **Upload Resource** node by sending files to the SimLab File Vault via a designated URL. This node is specifically designed for multiplayer VR Collaboration environments.

It allows an administrator or host to target a specific user (via the "User" dropdown) and upload a file from *that user's* local device directly to the central File Vault. This is crucial for sharing media when a file exists only on an individual participant's machine and not on the host's device. Like the standard upload node, it outputs a "Success" boolean.

---

###   


### ![Response_Resource_UploadToURL.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-resource-uploadtourl.png) Upload Resources

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Zkrimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Zkrimage.png)

The **Upload Resource** node enables the system to send and save resources to the SimLab File Vault during a live VR experience. This node requires the destination URL for the file vault, as well as the assigned "FileName" for the file being uploaded and outputs a "Success" boolean.

For more information, refer to SimLab Vault tutorial below:

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/hUZvEgmD5Ls" width="560"></iframe>

# External Connection \ WebSocket

### [![OpenExternalConnection.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/openexternalconnection.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Open External Connection

SimLab Composer 14 introduces WebSocket support, enabling seamless integration with external systems allowing it to work with external hardware, co-simulation engines, and websites, unlocking numerous possibilities.

The WebSocket nodes (Open External Connection, Send Message, and <span style="text-decoration: underline; color: rgb(35, 111, 161);">[On Message Received](https://simlab-soft.com/help/books/dynamic-training-builder-nodes-manual/page/on-message-received)</span>) are exclusively available in the Ultimate Edition.

The **Open External Connection** node enables the opening of a WebSocket connection to an external system. When the **Auto Handle Lua** is set to **true**, incoming messages containing Lua scripts will be automatically executed. This allows for real-time interaction between SimLab Composer and external systems, such as co-simulation engines or hardware, with the ability to dynamically execute Lua code as part of the interaction.

[![Screenshot 2025-02-02 162338.jpg](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/screenshot-2025-02-02-162338.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/screenshot-2025-02-02-162338.jpg)

**Input Ports:**

- Execute
- URL: WebSocket URL that includes the server IP address, port, channel (optional). Example: ws://server1.simlab-soft.com:8765/robots\_1
- Auto Handle Lua: Incoming messages containing Lua scripts will automatically execute those scripts If enabled (True). <div class="container_b7e1cb" id="bkmrk--25"><div class="visualMediaItemContainer_f4758a"><div class="oneByOneGrid_f4758a oneByOneGridSingle_f4758a"><div class="mosaicItem__6c706 mosaicItemNoJustify__6c706 mosaicItemMediaMosaic__6c706 hideOverflow__6c706"><div class="imageContent__0f481 embedWrapper_b7e1cb itemContentContainer_f4758a mosaicItemContent__6c706">  
    </div></div></div></div></div>

**Output Ports:**

- Execute
- URL
- Auto Handle Lua

---

###   
[![MessageSent.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/messagesent.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Send Message Node

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/h5mimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/h5mimage.png)

The **Send Message** node allows you to communicate with the WebSocket server by sending messages. It is essential to ensure that the message format follows the protocol that the server and other clients can process. This node enables real-time interaction with external systems, making it possible to transmit data or commands to connected servers or clients.

**Input Ports:**

- Executive
- URL: WebSocket URL that includes the server IP address, port, and channel (optional). Example: ws://server1.simlab-soft.com:8765/robots\_1
- Message

**Output Ports:**

- Execute
- URL
- Message

# Media

### ![Response_Node_MessageBoxShow.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-messageboxshow.png) Message Box \\ Show Message Box

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/EC3image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/EC3image.png)

The **Show Message Box node** displays a floating text panel directly above a specific 3D object in the VR scene. Once activated, the node takes the targeted SceneNode input and generates a visible UI element containing the text strings provided in the Title and Body inputs, to provide contextual information or instructions to the user.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/lYyimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/lYyimage.png)

### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/7O8image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/7O8image.png)

###   


###   


---

###   


### ![Response_Node_MessageBoxHide.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-messageboxhide.png) Message Box \\ Hide Message Box

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/3urimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/3urimage.png)

The **Hide Message Box node** removes an active text panel currently displayed above a specific 3D object. When activated, the node takes the targeted SceneNode input and immediately dismisses its attached message box from the user's view.

---

### [![Response_Node_Capture_Picture.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-node-capture-picture.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Capture Picture

[![aM3image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/N18am3image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-09/N18am3image.png)

<div class="pointer-container" id="bkmrk-%C2%A0-12"><div class="pointer anim is-page-editable"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div class="input-group inline block"> <button class="button outline icon" data-clipboard-target="#pointer-url" title="Copy Link" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>The **Capture Picture node** is used to capture an image from a camera within the scene, and the captured image can then be displayed on a 3D object within the scene. This allows the user to take snapshots and show them in the VR environment, such as displaying a captured image on a screen or other surface.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/5wEimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-09/Xn9image.png)

A **Surveillance Monitor** is first created to display the captured images. This monitor is then attached to the VR camera.

[![Add_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/cT8image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this example, the **Capture Picture Node** is used to capture an image on a picture frame model when the user triggers the Activate event. Before that, the Cast SceneNode is used to identify the picture frame as a 3D object, as the Capture Picture Node only works with 3D objects.

---

### ![Response_WebBrowser_SetURL.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/response-webbrowser-seturl.png) Set Web Browser URL

![web URL.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/web-url.png)

The **Set Web Browser URL** node sets the URL for a web browser within the VR Experience. This node enables users to open and navigate to a specified webpage, making it possible to display web content like videos or instructional resources directly within the VR environment.

<div class="mb-2 flex gap-3 empty:hidden -ml-2" id="bkmrk--13"><div class="items-center justify-start rounded-xl p-1 z-10 -mt-1 bg-token-main-surface-primary screen-arch:mt-1 md:absolute flex"><div class="flex items-center"><button aria-label="Read aloud" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="voice-play-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Copy" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="copy-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Edit in canvas" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="flex items-center pb-0">  
</div></div></div></div><div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--14"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8"><svg class="icon-md" fill="none" height="41" role="img" viewbox="0 0 41 41" width="41" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div>#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/G1Pimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/G1Pimage.png)


![web URL PLANE.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/Bkxweb-url-plane.png)

In this example, the **Set Web Browser URL** node is used to open the SimLab website. The **Node Triggered** event is activated when the user triggers an object named "activate." As soon as the object is triggered, the **Set Web Browser URL** node is triggered, setting the URL to the SimLab website. The website then loads and is displayed on a web browser plane within the VR environment.

> [![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png) ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1298557994208071701/1312684216776916994 "Tutorial is available on SimLab VR Discord server")

<div class="mb-2 flex gap-3 empty:hidden -ml-2" id="bkmrk--18"><div class="items-center justify-start rounded-xl p-1 flex"><div class="flex items-center"><button aria-label="Read aloud" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="voice-play-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Copy" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="copy-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="flex"><button aria-label="Good response" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="good-response-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Bad response" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="bad-response-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button>  
</div><button aria-label="Edit in canvas" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="flex items-center pb-0"><svg class="icon-md" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg>  
</div><button aria-expanded="false" aria-haspopup="menu" class="cursor-pointer h-[30px] rounded-md px-1 text-token-text-secondary hover:bg-token-main-surface-secondary" data-state="closed" id="bkmrk--20" type="button"></button></div></div></div>

# Media \ Variable Writer \

### ![Color.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/color.png) Get/Set Variable Writer Color

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-05/scaled-1680-/image.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-05/image.png)

The **Set / Get Variable Writer Color** nodes are used to control the color of the text displayed by a Variable Writer in the VR environment. The Set node allows you to change the text color dynamically based on events or conditions, while the Get node retrieves the current color of the Variable Writer. This is useful for customizing the visual appearance of displayed values, such as indicating status or drawing attention to changes.

---

### ![Prefix.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/prefix.png) Get/Set Variable Writer Prefix:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-05/scaled-1680-/stCimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-05/stCimage.png)

The **Set / Get Variable Writer Prefix** nodes are used to modify or retrieve the prefix text displayed before the variable value in a Variable Writer. The Set node allows you to add custom text before the value, such as labels or units, while the Get node retrieves the current prefix. This helps provide context to the displayed value, making it clearer for the user.

---

### [![Suffix.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/JqVsuffix.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/JqVsuffix.png) Get/Set Variable Writer Suffix:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-05/scaled-1680-/30Kimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-05/30Kimage.png)

The **Set / Get Variable Writer Suffix** nodes are used to modify or retrieve the suffix text displayed after the variable value in a Variable Writer. The Set node allows you to add custom text after the value, while the Get node retrieves the current suffix. This helps make the displayed value more informative and user-friendly.

### ![Response_VariableWriter_Value_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-variablewriter-value-get.png) Get Variable Writer Value

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/YYCimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/YYCimage.png)

The **Get Variable Writer Value** node retrieves the pure data value from a designated **SceneNode** (the target Variable Writer object) and outputs this core **Value** for use in your logic.

###   


### ![Response_VariableWriter_Value_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-variablewriter-value-set.png) Set Variable Writer Value

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/F5iimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/F5iimage.png)

The **Set Variable Writer Value** node dynamically updates the core data of a target **SceneNode** (the Variable Writer object). By inputting a new string or numerical **Value**, the node overrides the writer's pure value while keeping any existing prefixes and suffixes perfectly intact.

### ![Response_Scene_Font_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-scene-font-set.png) Set Scene Font

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/W3Ximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/W3Ximage.png)

The **Set Scene Font** node updates the typography globally by changing the font of every Variable Writer object currently present in the VR scene. This node requires the exact **FileName** of a TrueType Font (`.ttf`) as its input. To function correctly, the designated `.ttf` file must first be imported into your project via the Resource Management tab in SimLab Composer.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/sEximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/sEximage.png)

###   


<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/rThSaw78sKU" width="560"></iframe>

### ![Response_VariableWriter_Font_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-variablewriter-font-set.png) Set Variable Writer Font

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Dimimage.png)The **Set Variable Writer Font** node allows for targeted typography changes by updating the font of a single, specific Variable Writer rather than the entire environment. By assigning the target **SceneNode** and providing the **FileName** of a valid `.ttf` font file (previously imported through the Resource Management tab), this node applies the new text style exclusively to the selected object, leaving all other text in the scene unaffected.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/l1Oimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/l1Oimage.png)

---

### [![variable.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/25Jvariable.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/25Jvariable.png) Set Variable Writer Variable:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-05/scaled-1680-/Lvcimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-05/Lvcimage.png)

The **Set Variable Writer Variable** node is used to assign or change the variable displayed by an existing Variable Writer. This allows you to update the displayed content dynamically during the VR experience by switching the linked variable at any time.

# Media \ Dynamic Menu

### ![Response_Node_DynamicMenu_Visibility_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-dynamicmenu-visibility-set.png) Set Dynamic Menu Visibility

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/LmLimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/LmLimage.png)

The **Set Dynamic Menu Visibility** node controls whether dynamic menus (specifically used with the Objects Menu and Group Menus add-ons) are shown or hidden during a VR experience, using a boolean toggle where **True** displays the menu and **False** hides it.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/8NtfNkBr_Z0" width="560"></iframe>

---

# Media \ Sound

### ![Response_Sound_RecordSound.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-sound-recordsound.png) Record Sound

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/F1Uimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/F1Uimage.png)

The **Record Sound** node initiates an audio recording session within the VR experience. This node utilizes a **User** dropdown parameter to determine whether the system captures microphone audio exclusively from the host or from all participating users. It outputs a **Success** boolean when the recording successfully starts.

---

### ![Response_Sound_File_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-sound-file-set.png) Set Sound File

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/2umimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/2umimage.png)

The **Stop Sound Recording** node halts an active audio recording session. This node requires a specified target **User** and an exact **FileName**. Upon execution, it stops the capture process and stores the resulting audio file directly into the project's Resource Management tab under the provided name

---

### ![Response_Sound_Volume_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/CZZresponse-sound-volume-set.png) Set Sound Volume

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/RDGimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/RDGimage.png)

The **Set Sound Volume node** is used to adjust the audio playback level of a specific 3D sound object within the scene. The numerical Volume input operates strictly within a range of 0 (muted) to 4 (maximum amplification)

---

### ![Response_Sound_PlayPause.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-sound-playpause.png) Sound Play

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/b8Gimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/b8Gimage.png)

The **Sound Play node** controls the playback of the audio file stored within a specific 3D sound object. When activated, the node uses the boolean Play input to determine the action for the targeted Sound Node—triggering the sound to start playing from the start of the audio file, or stopping the audio and seeking to the start.

---

### ![Response_Sound_Seek.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-sound-seek.png) Sound Seek

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/09limage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/09limage.png)

The **Sound Seek node** instantly jumps to a specific moment within the audio file attached to a 3D sound object. When activated, the node takes the targeted Sound Node and moves its playback position to the exact duration specified by the numerical Time input, measured in seconds.

---

### ![Response_Sound_Toggle.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-sound-toggle.png) Sound Toggle

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/rxDimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/rxDimage.png)

The **Sound Toggle node** easily switches between playing and pausing a specific 3D sound object in the scene. Once activated, the node evaluates the targeted Sound Node and automatically reverses its current playback status—pausing it if it is currently playing, or playing it if it is currently paused.

---

### ![Response_Sound_StopSoundRecording.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-sound-stopsoundrecording.png) Stop Sound Recording

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/yRAimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/yRAimage.png)

The **Set Sound File** node dynamically attaches or updates the audio source of a designated **Sound Node** object in the scene. This node requires the exact **FileName** of an audio file previously imported into the Resource Management tab, strictly including its file extension (for example, "welcome.mp3"). It outputs a **Success** boolean to confirm that the sound file was located and attached properly.

# Media \ Video

### ![Response_Video_File_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-video-file-set.png) Set Video File

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/W9Ximage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/W9Ximage.png)

The **Set Video File** node allows you to dynamically attach or change the media source of a specific Video Node within your scene. By assigning the target **Video Node** and inputting the exact **FileName** of your desired video (such as an `.mp4`), this node updates the object's media. For this to function correctly, the video file must first be imported into your project through the Resource Management tab. It also outputs a **Success** boolean to verify that the file was found and loaded.

##### Example

##### [![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/tRGimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/tRGimage.png)

In this example, an interaction is set up to load a short film onto a TV screen and immediately begin playback.

1. Upon interacting with the "Play Button" object, the **Node Triggered** event initiates the execution flow.
2. The **Set Video File** node is executed, assigning the previously imported video file "Short Film.mp4" directly to the "TV" video node object.
3. Once the file is successfully attached, the execution flow passes to the **Video Play** node (with the Play toggle set to **True**), which instantly starts playing the newly loaded short film on the TV screen.

---

### ![Response_Video_PlayPause.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-video-playpause.png) Video Play

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/VFGimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/VFGimage.png)

The **Video Play** node provides direct control over the playback of a **Video Node** through a boolean **Play** input. Setting the toggle to **True** starts the video, while **False** stops it.

### ![Response_Video_Seek.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-video-seek.png) Video Seek

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/nfcimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/nfcimage.png)

The **Video Seek** node immediately moves the playback of the target **Video Node** to a specific **Time** defined in seconds. It enables precise navigation to any timestamp within the video's total duration.

### ![Response_Video_Toggle.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-video-toggle.png) Video Toggle

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/cLoimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/cLoimage.png)

The **Video Toggle** node switches the playback state of the assigned **Video Node** between playing and paused. Each execution reverses the current state of the video material, making it ideal for simple play/pause button interactions.

# Cloud

### [![Response_Cloud_get_Attribute.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-cloud-get-attribute.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Get Cloud Attribute

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/plqimage.png)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--7"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8">  
</div></div></div></div></div>The **Get Cloud Attribute** node enables the user to retrieve saved progress for a specific VR Experience by assigning the attribute in the Attribute Name field. The progress can be saved for either the scene, the user, or both. Once the node is executed, the retrieved value can be acquired through the **Result** port.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/hALimage.png)

In this example, a **Get Cloud Attribute** node is used to retrieve stored data from Cloud. When the user enters the object named FinishLine, the object named Scoreboard will be shown. The data saved for this specific scene for all users is retrieved and stored in a variable named Scoreboard, which can then be displayed during the VR Experience.

---

### [![Response_Cloud_get_Attribute.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/response-cloud-get-attribute.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Set Cloud Attribute

![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/JyBimage.png)

<div class="flex-shrink-0 flex flex-col relative items-end" id="bkmrk--15"><div><div class="pt-0"><div class="gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full"><div class="relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8">  
</div></div></div></div></div>The **Set Cloud Attribute** node enables the user to store data for a specific VR Experience by assigning the attribute in the Attribute Name field then set the value of it. the data can be stored for either the user, the scene, or both. Once the node is executed, the specified data is saved accordingly.

#### Example

![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/orJimage.png)

In this example, a **Set Cloud Attribute** node is used to store data in Cloud. When the user enters the object named **FinishLine**, the value of the variable **Time** will be converted to String and stored under the **attribute named Time** for the **Scene Only**, meanwhile the value of the variable **Coins\_Count** will be converted to String and then stored under **the attribute Score** for the **User Only**.

**Note:** To retrieve the Cloud data, the experience must be run from a logged-in account in SimLab VR Viewer.

# Scene

###   


### [![Response_Scene_Load.png](https://simlab-soft.com/help/uploads/images/gallery/2024-11/response-scene-load.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Load Scene

[![Screenshot 2024-11-04 160632.png](https://simlab-soft.com/help/uploads/images/gallery/2024-11/scaled-1680-/w6Gimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The **Load Scene node** is used to teleport between different scenes within your VR Experience. Enhancing the overall immersion and interactivity of the experience.

####   


#### Example

[![Add_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-11/scaled-1680-/WFMimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this example, the **Load Scene Node** is used to transition the user from one scene to another. This node facilitates changing scenes, allowing for a dynamic experience as users navigate through different environments within the VR application.

> [![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[ Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1307969317068869664 "Tutorial is available on SimLab VR Discord server")

---

### [![Response_Scene_Home.png](https://simlab-soft.com/help/uploads/images/gallery/2024-11/response-scene-home.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Home Scene

[![Screenshot 2024-11-04 160632.png](https://simlab-soft.com/help/uploads/images/gallery/2024-11/screenshot-2024-11-04-160632.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The **Home Scene node** enables users to return to the initial scene of the VR Experience. This node provides a straightforward way for users to reset the VR Experience to the starting point, ensuring a user-friendly navigation experience.

####   


#### Example

[![Add_Example2.jpg](https://simlab-soft.com/help/uploads/images/gallery/2024-11/scaled-1680-/image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-example.jpg)

In this example, the **Home Scene Node** is used to return the user to the main scene when the trigger event occurs. This allows you to teleport back to the primary environment, enhancing the user experience by providing a clear and intuitive way to return to the starting point.

> <span style="color: rgb(0, 0, 0);">[![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[ Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1307969317068869664 "Tutorial is available on SimLab VR Discord server")</span>

---

### [![Response_Scene_Home.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/response-scene-import.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Import Scene

[![Screenshot 2024-11-04 160632.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/Mg3image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The **Import Scene** node is used to load an external scene into the current VR Experience. This allows users to dynamically bring in additional environments, objects, or elements as needed during runtime.

####   


#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/xguimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-01/xguimage.png)[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-01/scaled-1680-/NMTimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-01/NMTimage.png)

In this example, the **Import Scene node** is used to load a car model into the scene when the "Import" object is triggered. The Node Triggered event detects user interaction and executes the Import Scene node, which then loads the specified car model from an external VR package file. This allows the car to appear dynamically within the VR environment.

---

<div class="mb-2 flex gap-3 empty:hidden -ml-2" id="bkmrk--13"><div class="items-center justify-start rounded-xl p-1 flex"><div class="flex items-center"><button aria-label="Read aloud" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="voice-play-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><button aria-label="Copy" class="rounded-lg text-token-text-secondary hover:bg-token-main-surface-secondary" data-testid="copy-turn-action-button"><svg class="icon-md-heavy" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="flex">  
</div><div class="flex items-center pb-0"><svg class="icon-md" fill="none" height="24" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"></svg>  
</div><button aria-expanded="false" aria-haspopup="menu" class="cursor-pointer h-[30px] rounded-md px-1 text-token-text-secondary hover:bg-token-main-surface-secondary" data-state="closed" id="bkmrk--14" type="button"></button></div></div></div>

# Integration

### [![OpenExternalConnection.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/openexternalconnection.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Open External Connection

SimLab Composer 14 introduces WebSocket support, enabling seamless integration with external systems allowing it to work with external hardware, co-simulation engines, and websites, unlocking numerous possibilities.

The WebSocket nodes (Open External Connection, Send Message, and <span data-darkreader-inline-color="" style="text-decoration: underline; color: rgb(35, 111, 161);">[On Message Received](https://simlab-soft.com/help/books/dynamic-training-builder-nodes-manual/page/on-message-received)</span>) are exclusively available in the Ultimate Edition.

The **Open External Connection** node enables the opening of a WebSocket connection to an external system. When the **Auto Handle Lua** is set to **true**, incoming messages containing Lua scripts will be automatically executed. This allows for real-time interaction between SimLab Composer and external systems, such as co-simulation engines or hardware, with the ability to dynamically execute Lua code as part of the interaction.

[![Screenshot 2025-02-02 162338.jpg](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/screenshot-2025-02-02-162338.jpg)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/screenshot-2025-02-02-162338.jpg)

**Input Ports:**

- Execute
- URL: WebSocket URL that includes the server IP address, port, channel (optional). Example: ws://server1.simlab-soft.com:8765/robots\_1
- Auto Handle Lua: Incoming messages containing Lua scripts will automatically execute those scripts If enabled (True). <div class="container_b7e1cb" id="bkmrk--25"><div class="visualMediaItemContainer_f4758a"><div class="oneByOneGrid_f4758a oneByOneGridSingle_f4758a"><div class="mosaicItem__6c706 mosaicItemNoJustify__6c706 mosaicItemMediaMosaic__6c706 hideOverflow__6c706"><div class="imageContent__0f481 embedWrapper_b7e1cb itemContentContainer_f4758a mosaicItemContent__6c706">  
    </div></div></div></div></div>

**Output Ports:**

- Execute
- URL
- Auto Handle Lua

---

### ![Response_Report_Completed.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-report-completed.png) Report Completed

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/Bukimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/Bukimage.png)

The **Report Completed** node functions similarly to the **Report Score** node, but it records both a score and a completion time simultaneously. It is ideal for finalizing tasks, exams, or training scenarios where both accuracy and speed are evaluated. Like the Report Score node, the recorded data is safely stored and utilized within the SimLab VR Assessment Portal for instructor review.

Key parameters:

- **Object Name:** The name of the exam, task, or entity being evaluated.
- **Score:** The numerical score or grade achieved.
- **Duration:** The total time taken to complete the evaluated task.

---

###  

### ![Response_Report_Score.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-report-score.png) Report Score

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/6Q4image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/6Q4image.png)

The **Report Score** node enables the system to register and record a specific value as a score when the node is executed. This is highly useful for tracking user performance, evaluating task completion, or logging quiz results within a training scenario.

The node utilizes the following key parameters to define the recorded data:

- **Object Name:** Specifies the name of the exam, task, or specific entity being evaluated.
- **Score:** The numerical input field where the final score value is passed or entered.
- **Report Type:** A dropdown menu that determines the classification or outcome of the score. The available options are **Passed**, **Scored**, and **Failed**.

The node stores the score and its associated information to be used primarily in the **SimLab VR Assessment Portal**, where instructors and administrators can securely view and evaluate the reported values.

##### Example

In this example, the system records a student's final score the moment they finish a test.

1. Upon interacting with the "Finish Quiz" object, the **Node Triggered** event initiates the execution flow.
2. The **Number Variable Value** node is used to retrieve the current numerical value stored in the `FinalScore` variable.
3. This retrieved value is passed directly into the **Score** input of the **Report Score** node.
4. The **Report Score** node is configured with the **Object Name** set to "Student Final Score" and the **Report Type** set to "Scored," which officially logs the student's result into the system's evaluation records when executed.

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/bkUimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/bkUimage.png)

---

### [![MessageSent.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/messagesent.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Send Message Node

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2025-02/scaled-1680-/h5mimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2025-02/h5mimage.png)

The **Send Message** node allows you to communicate with the WebSocket server by sending messages. It is essential to ensure that the message format follows the protocol that the server and other clients can process. This node enables real-time interaction with external systems, making it possible to transmit data or commands to connected servers or clients.

**Input Ports:**

- Executive
- URL: WebSocket URL that includes the server IP address, port, and channel (optional). Example: ws://server1.simlab-soft.com:8765/robots\_1
- Message

**Output Ports:**

- Execute
- URL
- Message

# SceneNode \ Snapping

### [![Response_Node_Transform_Snap_Can.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-transform-snap-can.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/response-node-transform-snap-can.png) Can Snap Node

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/HBgimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/HBgimage.png)

The **Can Snap Node** checks whether a specific SceneNode is currently within the eligible snapping range of another object. This node evaluates the spatial relationship between objects and outputs a "Possible" boolean to confirm if a snap can occur, alongside referencing the "Other Node" and its spatial "Transform" data for further logic use.

---

###  

### [![Response_Node_Transform_Snap.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-transform-snap.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/response-node-transform-snap.png) Node Snap

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/UwFimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/UwFimage.png)

The **Snap Node** instantly snaps a designated SceneNode directly to the nearest eligible target socket or node. Executing this node forces the object to immediately align and attach itself to the valid snapping destination without any transition time.

---

###  

### ![Response_Node_Transform_Snap_Animated.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-transform-snap-animated.png) Node Snap (Animated)

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/gZEimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/gZEimage.png)

The **Snap Node (Animated)** securely aligns and attaches a SceneNode to its nearest eligible target, but does so with a smooth visual transition. This node utilizes a "Duration" input to smoothly interpolate the object's movement into its snapped position over the specified number of seconds, rather than snapping instantly.

# SceneNode \ Hierarchy

### [![Responses_SceneNode_NodesManagement_GetNodeChildren.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/responses-scenenode-nodesmanagement-getnodechildren.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Get Node Children

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/Zlrimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The **Get Node Children** enables the user to retrieve child SceneNodes from a specified parent node within the hierarchy in the scene browser. This function allows users to access the children of a parent node in the VR environment, facilitating more complex interactions and hierarchies.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-09/scaled-1680-/mPyimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/S2himage.png)

In this example, the **Get Node Children** enables the user to retrieve the child of a group named "Ball Parent" on the Trigger event. When the user triggers the Activate object, the Get Node Children retrieves the child node, and the Get Node Attribute (String) is used to acquire the child’s attribute.

---

### [![Response_Node_Parent_Reset.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-node-parent-reset.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png) Reset Parent Node

[![Ceiling Node.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/YMCimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/add-node.jpg)The **Reset Parent Node** enables the user to reset all transformations applied to an object and return it to its original position relative to its main parent. This can be done by linking the node to an event or condition within the scene. Once the reset is executed, the object will revert to its default state under the main parent.

#### Example

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/scaled-1680-/uD6image.png)](https://simlab-soft.com/help/uploads/images/gallery/2024-08/S2himage.png)

In this example, a **Reset Parent Node** is used to reset the transformations of a car object to its original state relative to its main parent once the "Car Move" sequence ends. When the user triggers the Activate object, the car move animation sequence will play. After the sequence concludes, the Reset Parent Node is triggered automatically, returning the car to its default position under the main parent.

> [![Discord_Icon.png](https://simlab-soft.com/help/uploads/images/gallery/2024-08/discord-icon.png) ](https://simlab-soft.com/help/uploads/images/gallery/2024-08/response-value-number-add.png)[Tutorial is available on SimLab VR Discord server](https://discord.com/channels/1062715275805470821/1239178616877875354/1239178616877875354 "Tutorial is available on SimLab VR Discord server")

# SceneNode \ Appearance

### ![Response_Node_Visibility_Get.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/response-node-visibility-get.png) Is Node Visible

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/MNnimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/MNnimage.png)

This node checks the current visibility state of a specified 3D object within the VR Viewer. It evaluates whether the targeted object is currently rendered (shown) or hidden in the scene, and outputs this status as a boolean value (True or False).

##### Example:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-03/scaled-1680-/DtJimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-03/DtJimage.png)

In this example, triggering the "Assembly" object prompts the system to check if the "Gear" node is currently visible. If the gear is visible, the True branch executes, setting the gear to glow and playing a "Remove Gear" animation sequence. However, if the gear is already hidden, the False branch executes instead, displaying a "Help Panel" to the user.

# SceneNode \ Curve

### ![Response_Curve_Create.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-curve-create.png) Create Curve

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/5FWimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/5FWimage.png)

The **Create Curve node** initializes a new 3D cylindrical line within the VR scene. This is highly useful for creating dynamic visual elements like charts, graphs, or data visualizations.

When activated, it generates a base curve using four primary inputs: a unique text **Name** (which acts as an identifier required by all other curve-related nodes to target this specific line), a **Color**, a numerical **Thickness** value, and a **CurveType** dropdown that dictates whether the overall line behaves as a smooth curve or rigid straight lines. It then outputs a reference to the newly created CurveNode to continue the logic flow.

---

### ![Response_Curve_Point_Add.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-curve-point-add.png) Add Curve Point

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/BI7image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/BI7image.png)

The **Add Curve Point node** builds upon an existing curve by generating a new point in 3D space. Once activated, the node locates the specific curve identified by the **Name** input and places a new point at the provided **X, Y, and Z** coordinates. The system automatically draws a line connecting this newly created point to the previously established point, seamlessly extending the curve. Crucially, this node outputs an **Index** value—a unique number assigned to this specific point in the sequence (e.g., the 3rd point created gets an index of 3)—which is used to target this point later.

##### Example:

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/yV8image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/yV8image.png)

In this expanded example, we build an interaction where clicking a button initializes a new curve and sequentially places two connected points based on a target object's location:

1. A **Node Triggered** event node continuously listens for the user to interact with a specific "Button" object in the scene.
2. Once the button is clicked, it activates a **Create Curve** node, which initializes a new curve named "dataCurve" with a distinct green color, a thickness value of 7, and a "Curved" line type.
3. The execution flow immediately proceeds to a **Get Node Location** node, which retrieves the exact X, Y, and Z spatial coordinates of a target 3D object named "Point".
4. The first **Add Curve Point** node is activated. It takes the "dataCurve" identifier and utilizes the precise X, Y, and Z coordinates retrieved from the target object to generate the first anchor point of the curve.
5. Simultaneously, an **Add** math node receives the original Y coordinate from the "Point" object and adds a numerical value of 2 to it.
6. Following the creation of the first point, a second **Add Curve Point** node is executed. It uses the same "dataCurve" identifier and the original X and Z coordinates, but it uses the newly calculated result from the Add node (Y + 2) for its vertical placement. This generates a second point exactly 2 units directly above the first, automatically drawing a connected line between them.

---

### ![Response_Curve_Point_Remove.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-curve-point-remove.png) Remove Curve Point

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/hWoimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/hWoimage.png)

The **Remove Curve Point node** is used to permanently delete a specific point from an active curve. Once activated, it takes the curve's **Name** and the specific **Index** number of the point you wish to erase. Upon deletion, the curve automatically bridges the gap between the remaining adjacent points to maintain a continuous, unbroken line.

---

### [![Response_Curve_Thickness_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-curve-thickness-set.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-04/response-curve-thickness-set.png)Set Curve Thickness

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/5qKimage.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/5qKimage.png)

The **Set Curve Thickness node** dynamically adjusts the physical width of an existing curve during the VR experience. When activated, it targets the curve specified by the **Name** input and instantly changes its visual bulk to match the number provided in the **Value** input, allowing you to easily scale the visual prominence of the line on the fly.

---

### [![Response_Curve_Type_Set.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-curve-type-set.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-04/response-curve-type-set.png)Set Curve Type

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/iW3image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/iW3image.png)

The **Set Curve Type node** instantly alters how the connections between a curve's points are visually rendered in the scene. Once activated, it locates the curve by its **Name** and applies the newly selected **CurveType** from the dropdown menu. This allows you to toggle a curve between "Curved" (which renders smooth, sweeping connections between the points) and "Linear" (which renders sharp, perfectly straight lines between the points) at any time.

---

### [![Response_Curve_Point_Update.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/response-curve-point-update.png) ](https://simlab-soft.com/help/uploads/images/gallery/2026-04/response-curve-point-update.png)Update Curve Point

[![image.png](https://simlab-soft.com/help/uploads/images/gallery/2026-04/scaled-1680-/wE1image.png)](https://simlab-soft.com/help/uploads/images/gallery/2026-04/wE1image.png)

The **Update Curve Point** node allows you to dynamically change the 3D location of a previously created point on an existing curve. When activated, it targets the curve using the **Name** input and isolates a specific point using its numerical **Index** value. It then instantly moves that point to the newly provided **X, Y, and Z** coordinates. The line connecting the points will automatically recalculate and redraw itself to reflect the point's new location in the scene.