Responses

AI Agent

Response_AiAgent_Reset.png AI Agent Reset Chat History

 

image.pngThe 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 AI Agent Send Message

image.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:

 

Response_AiAgent_StartListen.png AI Agent Start Listen


Ceiling Node.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






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

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.


 

Response_AiAgent_StopListen.png AI Agent Stop Listen


Ceiling Node.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







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

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 AI Agent Stop Listen (Text)

 

image.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.

 

 


 

Response_Ai_Valid_Key.png Has Valid AI Key


Ceiling Node.png


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

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.



Response_AiKey_Set.png Set AI Key

Ceiling Node.png


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

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 for more about this node.



Response_AiModel_Set.png Set AI Agent Model

Ceiling Node.png


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

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 for more about this node.


 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

2️⃣ Google Gemini (OpenAI‑compatible endpoint)

3️⃣ OpenRouter



Data Types\Number\Operations


Response_Value_Number_Add.png Add

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

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 Ceiling

Ceiling Node.png

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

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 Divide

Divide_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

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 Floor


Ceiling Node.png

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

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 Modulo


Ceiling Node.png

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

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 Multiply

Multiply_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

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 Square Root


Ceiling Node.png

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

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 Subtract

Subtract_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

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 Set

Has two options:

Add_Node.jpg

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

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

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

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 Decrement Number Variable


Ceiling Node.png

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

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 Increment Number Variable


Ceiling Node.png

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

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 Get

Ceiling Node.png

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

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 Equal (Number)


Ceiling Node.png

 

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

 

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 Greater


Ceiling Node.png

 

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

 

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 Greater Or Equal 


Ceiling Node.png

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

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 Less 


Ceiling Node.png

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

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 Less Or Equal


Ceiling Node.png

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

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 Not Equal


Ceiling Node.png

 

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

 

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 Number To String

Ceiling Node.png


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, thenkomeeqn57image.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









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




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

Data Types\Time


image.png Time Interval 

This node calculates the time difference betweenRR5image.png

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

an integer "Interval" out put. 



image.pngUpdate Time

image.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

In the experience the "result" variable is connected toimage.png

a Variable writer to display its value.


Scene State


Apply 

This node can be used to apply a scene state when animage.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


Find By Name

In complicated scenes with large number of scene           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

Sequence


Attach Sequence To

Creating sequences 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 for the example below, where Boolean expressions were created and upon checking the Boolean Expression a sequence is attached to Hand. 

image.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

image.png

Example 2

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

image.png

image.png


Playback Controls

Used to control sequence behavior.  

Continue

Same Direction

The selected sequence will continueJ0Simage.png 

to play in the same direction.



Set Direction

image.pngWith 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

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





Reverse From End

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

image.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

image.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

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

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

sequence, when triggered.



Get Start

Gets and outputs the start frame of the selected image.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 inputimage.png 

sequence, whether true or false. 



Set Sequence Looping

This node will set the looping status for the input image.png

sequence to either true or false.

Play Range

image.png

image.png

 

 

image.png

image.png

Play Rate (Speed)

Swing

Is Playing

Is Reversing



Find By Name


User

Response_User_MouseCursor_Show.png Show Mouse Cursor

 

image.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 Attach To Hand

Ceiling Node.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

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.

 


Response_Node_DetachFromHand.png Detach From Hand 

image.png

The Detach From Hand , detaches an object currently attached by the Attach To Hand response, so the object no more moves with the hand 


Response_User_SetShowBeam.png Trigger Beam 

Ceiling Node.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

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 Get User Rotation


Ceiling Node.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.




Example

image.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 Teleport To Camera


Ceiling Node.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

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 Tutorial is available on SimLab VR Discord server




Response_User_TeleportToCamera.png Attach User


Ceiling Node.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

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 Tutorial is available on SimLab VR Discord server




Response_User_TeleportToCamera.png Detach User


Ceiling Node.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

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 Tutorial is available on SimLab VR Discord server

User \ Gadget

Response_Gadget_EquipToUser.png Equip To User


Ceiling Node.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







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

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 Set User Attribute (String)



Ceiling Node.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


 








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

image.png

 

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 Point To Object


Ceiling Node.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





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 Set Interaction Mode


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:



Response_Scene_NightMode_Set.png Set Night Mode


image.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 Get User ID


Ceiling Node.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



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 Get User Name


Ceiling Node.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.



Example

image.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 Copy Material


image.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 Copy Material Properties


image.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

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 Set Texture From File

image.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 Branch on Expression


Ceiling Node.pngThe 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.


Example

image.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 Delay

image.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 Loop


Ceiling Node.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

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 Run Script

Ceiling Node.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:

Lua Scripting Blog


Lua Documentation for SimLab Training Builder



Response_CustomEvent_Trigger.png Trigger Custom Action

xyLimage.png

Calling this Trigger Custom Action will execute the corresponding Custom Action event (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 Cast SceneNode


Ceiling Node.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







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

image.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 Set Node Collision Enabled


Ceiling Node.pngThe 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

 

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 



Response_Node_Parent_Reset.png Delete SceneNode


Ceiling Node.png

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

 

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 Enable Walk-Through


image.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 Find Node By Name


image.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




Response_Node_Name_Get.png Get Node Name


image.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 Make Node Copy


image.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 Make Node Instance


image.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

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.


Response_Node_SimulatePhysics.png Set Node Simulate Physics

 

image.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

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 Get Node Transform


image.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 Set Node Transform


image.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 Set Node Transform (Animated)


image.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 Swap Nodes Transform

 

image.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 Visual \ Get Node Visual Location



image.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.





Visual.png Visual \ Set Visual Location


image.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

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 Visual \ Set Node Visual Location (Animated)


image.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 Fall To Surface

 

image.png

The Fall 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 Fall To Surface (Animated)

 

image.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 Get Node Location


Ceiling Node.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

 

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 Set Node Location


Ceiling Node.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

 

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 Set Node Location (Animated)


image.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

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 Ignore grabbing


image.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

image.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 Set Grabbable Sequence


image.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

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

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 Set Node grabbable State

 

image.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 Delete Resource


image.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  Download Resource


image.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:



Response_Resource_GetPathFromResource.png Get Path From Resource


image.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 Save VRPackage


image.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 Upload Media From User


image.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 Upload Resources


image.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:

External Connection \ WebSocket

OpenExternalConnection.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 On Message Received) 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

Input Ports:

Output Ports:




MessageSent.png Send Message Node

image.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:

Output Ports:

Media

Response_Node_MessageBoxShow.png Message Box \ Show Message Box


image.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

image.png





Response_Node_MessageBoxHide.png Message Box \ Hide Message Box


image.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 Capture Picture


aM3image.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

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

Add_Example2.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 Set Web Browser URL


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.



Example

image.png

web 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 Tutorial is available on SimLab VR Discord server



Media \ Variable Writer \

Color.png Get/Set Variable Writer Color


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 Get/Set Variable Writer Prefix:


image.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 Get/Set Variable Writer Suffix:


image.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  Get Variable Writer Value


image.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 Set Variable Writer Value


image.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 Set Scene Font


image.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


 


Response_VariableWriter_Font_Set.png Set Variable Writer Font


image.pngThe 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





variable.png Set Variable Writer Variable:


image.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 Set Dynamic Menu Visibility


image.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.

 






Media \ Sound

Response_Sound_RecordSound.png Record Sound


image.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  Set Sound File


image.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 Set Sound Volume


image.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 Sound Play

 

image.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 Sound Seek

 

image.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 Sound Toggle

 

image.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 Stop Sound Recording


image.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 Set Video File


image.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

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 Video Play


image.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 Video Seek


image.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 Video Toggle


image.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 Get Cloud Attribute


Ceiling Node.png


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

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 Set Cloud Attribute


Ceiling Node.png


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

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 Load Scene


Screenshot 2024-11-04 160632.pngThe 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

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 Tutorial is available on SimLab VR Discord server



Response_Scene_Home.png Home Scene


Screenshot 2024-11-04 160632.pngThe 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

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.

Discord_Icon.png Tutorial is available on SimLab VR Discord server



Response_Scene_Home.png Import Scene


Screenshot 2024-11-04 160632.pngThe 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.pngimage.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.





Integration

OpenExternalConnection.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 On Message Received) 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

Input Ports:

Output Ports:

 


 

 

Response_Report_Completed.png Report Completed

 

image.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:

 


 

Response_Report_Score.png Report Score


image.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:

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



MessageSent.png Send Message Node

image.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:

Output Ports:


SceneNode \ Snapping

Response_Node_Transform_Snap_Can.png Can Snap Node

image.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 Node Snap

 

image.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 Node Snap (Animated)

 

image.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 Get Node Children

Ceiling Node.pngThe 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

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 Reset Parent Node


Ceiling Node.pngThe 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

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 Tutorial is available on SimLab VR Discord server

SceneNode \ Appearance

Response_Node_Visibility_Get.png Is Node Visible

 

image.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

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 Create Curve


image.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 Add Curve Point


image.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

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 Remove Curve Point


image.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 Set Curve Thickness


image.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 Set Curve Type


image.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 Update Curve Point


image.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.