TransportSurface simulates conveyor belts and transport systems for moving objects through industrial automation processes. More...

Public Member Functions | |
delegate void | OnEnterExitDelegate (Collision collission, TransportSurface surface) |
Delegate for collision enter/exit events. | |
bool | IsSurfaceGuided () |
Checks if the transport surface is following a guide path. | |
Drive | GetDrive () |
Gets the drive component controlling this transport surface. | |
void | OnXRInit (GameObject placedobj) |
Initializes the transport surface for XR/AR placement. | |
void | OnXRStartPlace (GameObject placedobj) |
Handles the start of XR/AR placement mode. | |
void | OnXREndPlace (GameObject placedobj) |
Handles the end of XR/AR placement mode. | |
Vector3 | GetClosestDirection (Vector3 position) |
Gets the transport direction at the closest point to the given position in global coordinates. | |
Vector3 | GetClosestPoint (Vector3 position) |
Gets the closest point on the transport surface to the given position. | |
Bounds | GetTransportSurfaceBounds () |
Gets the bounds of the transport surface including kinematic groups. | |
Vector3 | GetMiddleTopPoint () |
Gets the center point on top of the transport surface for object placement. | |
void | OnEnterSurface (Collision other) |
Triggers the OnEnter event when an object collides with the transport surface. | |
void | OnExitSurface (Collision other) |
Triggers the OnExit event when an object leaves the transport surface. | |
void | SetDrive (Drive newDrive) |
![]() | |
void | PreStartSim () |
Is called by the realvirtualController before the component is started. | |
void | StartSim () |
Is called by the realvirtualController to start or stop the component. | |
void | StopSim () |
Vector3 | DirectionToVector (DIRECTION direction) |
Transfers the direction enumeration to a vector. | |
DIRECTION | VectorToDirection (bool torotatoin, Vector3 vector) |
Transfers a vector to the direction enumeration. | |
float | GetLocalScale (Transform thetransform, DIRECTION direction) |
List< BehaviorInterfaceConnection > | UpdateConnectionInfo () |
List< Signal > | GetConnectedSignals () |
void | SetVisibility (bool visibility) |
Sets the visibility of this object including all subobjects. | |
List< BehaviorInterfaceConnection > | GetConnections () |
List< Signal > | GetSignals () |
GameObject | GetChildByName (string name) |
Gets a child by name. | |
List< GameObject > | GetChildsByName (string name) |
Gets all child by name. | |
GameObject | GetChildByNameAlsoHidden (string name) |
List< GameObject > | GetAllMeshesWithGroup (string group) |
List< GameObject > | GetAllWithGroup (string group) |
List< GameObject > | GetAllWithGroups (List< string > groups) |
List< GameObject > | GetAllMeshesWithGroups (List< string > groups) |
List< string > | GetMyGroups () |
List< GameObject > | GetMeshesWithSameGroups () |
List< GameObject > | GetAllWithSameGroups () |
MeshRenderer | GetMeshRenderer () |
Gets the mesh renderers in the childrens. | |
void | SetCollider (bool enabled) |
sets the collider in all child objects | |
void | ErrorMessage (string message) |
Displays an error message. | |
void | ChangeConnectionMode (bool isconnected) |
void | Log (string message) |
Logs a message. | |
void | Log (string message, object obj) |
Logs a message with a relation to an object. | |
void | Warning (string message, object obj) |
Logs a warinng with a relation to an object. | |
void | Error (string message, object obj) |
Logs an error with a relation to an object. | |
void | Error (string message) |
Logs an error. | |
GameObject | DebugPosition (string debugname, Vector3 position, Quaternion quaternation, float scale) |
Displays a gizmo for debugging positions. | |
void | SetFreezePosition (bool enabled) |
Freezes all child components to the current poosition. | |
void | SetRbConstraints (RigidbodyConstraints constraints) |
virtual void | AwakeAlsoDeactivated () |
Public Attributes | |
bool | UseAGXPhysics |
Vector3 | TransportDirection |
Transport direction in local coordinates, automatically set by the Drive component. | |
bool | AnimateSurface |
Enables texture animation to visualize surface movement. | |
bool | AdvancedSurface |
Enables advanced conveyor belt visualization with detailed geometry. | |
float | TextureScale |
Texture animation speed multiplier in texture units per meter. | |
bool | ChangeConstraintsOnEnter |
Modifies rigidbody 2constraints when objects enter the surface. | |
RigidbodyConstraints | ConstraintsEnter |
Rigidbody constraints applied when objects enter. | |
bool | ChangeConstraintsOnExit |
Modifies rigidbody constraints when objects leave the surface. | |
RigidbodyConstraints | ConstraintsExit |
Rigidbody constraints applied when objects exit. | |
bool | Radial |
Enables radial/rotational transport mode for turntables and curved conveyors. | |
Drive | UseThisDrive |
float | speed |
Current transport speed in millimeters per second. | |
float | SpeedScaleTransportSurface |
Speed scaling factor applied to the transport surface. | |
bool | IsGuided |
Indicates if surface follows a guide path system. | |
string | Layer |
Physics layer for transport surface collision detection. | |
bool | UseMeshCollider |
Uses mesh collider for precise collision, box collider for better performance. | |
bool | DebugMode |
Enables visual debugging information during runtime. | |
Drive | ParentDrive |
Parent drive for hierarchical movement systems, transport surface moves relative to parent. | |
Vector3 | parentposbefore |
List< Rigidbody > | LoadedPart |
List of rigidbodies currently on the transport surface. | |
Vector3 | StartGlobalTransportDirection |
Initial global transport direction stored at start. | |
![]() | |
string | Name |
The name of the component if it should be different from the GameObject name. | |
ActiveOnly | Active |
GameObject | FromTemplate |
realvirtualController | realvirtualController |
bool | HideNonG44Components |
bool | SceneIsAdditive |
bool | ForceStop |
Protected Member Functions | |
new void | Awake () |
![]() | |
bool | hidename () |
bool | hideactiveonly () |
virtual void | OnStopSim () |
virtual void | OnPreStartSim () |
virtual void | OnStartSim () |
MU | GetTopOfMu (GameObject obj) |
Gets the top of an MU component (the first MU script going up in the hierarchy) | |
void | InitGame4Automation () |
Initialiates the components and gets the reference to the realvirtualController in the scene. | |
virtual void | AfterAwake () |
void | Awake () |
Properties | |
Drive | Drive [get, set] |
Gets or sets the Drive component controlling this transport surface. | |
Events | |
OnEnterExitDelegate | OnEnter |
Event triggered when objects enter the transport surface. | |
OnEnterExitDelegate | OnExit |
Event triggered when objects leave the transport surface. | |
Additional Inherited Members | |
![]() | |
enum | ActiveOnly { Always , Connected , Disconnected , Never , DontChange } |
![]() | |
static bool | DirectionIsLinear (DIRECTION direction) |
Gets back if the direction is linear or a rotation. | |
Detailed Description
TransportSurface simulates conveyor belts and transport systems for moving objects through industrial automation processes.
The TransportSurface component is the core element for creating material flow simulation in realvirtual. It provides physics-based movement of objects along defined transport paths, supporting both linear conveyors and rotational systems like turntables. The surface works by applying forces or velocity changes to objects that come into contact with it, simulating real conveyor belt behavior.
Key features:
- Physics-based transport using Unity's physics engine or optional AGX physics
- Support for both linear (straight conveyors) and radial (turntables, rotary tables) movement
- Texture animation synchronized with transport speed for visual feedback
- Automatic speed and direction inheritance from connected Drive components
- Constraint management for stabilizing objects during transport
- Guide path support for complex curved conveyor systems
- Parent drive support for nested transport systems (e.g., conveyors on moving platforms)
- Advanced surface visualization with optional detailed belt geometry
- XR/AR placement support for interactive factory layout planning
Common applications in industrial automation:
- Assembly line conveyors for product transport
- Sorting and distribution systems with multiple branches
- Accumulation conveyors with zone control
- Transfer stations between different transport levels
- Turntables and rotary indexing tables for orientation changes
- Pallet transport systems in warehouses and production
- Material handling in packaging and palletizing systems
Integration with other components:
- Connects to Drive components for speed and direction control
- Works with Sensor components for object detection
- Integrates with TransportGuides for curved path following
- Compatible with MU (Material Unit) components for tracked objects
- Supports Kinematic groups for complex geometry handling
- Can be controlled via PLC signals through Drive behaviors
Performance considerations:
- Use box colliders instead of mesh colliders for better performance
- Enable texture animation only when visual feedback is needed
- Consider using simplified collision meshes for complex conveyor geometry
- Group multiple conveyor sections under single TransportSurface when possible
- Use the rvTransport layer for optimized physics calculations
- For high-speed conveyors, ensure adequate fixed timestep settings
The TransportSurface automatically handles coordination with the Drive component's movement, ensuring synchronized transport speed and direction. It supports both editor-time preview and runtime simulation, making it ideal for virtual commissioning scenarios.
For detailed documentation and examples, see: https://doc.realvirtual.io/components-and-scripts/motion/transportsurface
Member Function Documentation
◆ GetClosestDirection()
Vector3 realvirtual.TransportSurface.GetClosestDirection | ( | Vector3 | position | ) |
Gets the transport direction at the closest point to the given position in global coordinates.
Implements realvirtual.IGuidedSurface.
◆ GetClosestPoint()
Vector3 realvirtual.TransportSurface.GetClosestPoint | ( | Vector3 | position | ) |
Gets the closest point on the transport surface to the given position.
Implements realvirtual.IGuidedSurface.
◆ GetDrive()
Drive realvirtual.TransportSurface.GetDrive | ( | ) |
Gets the drive component controlling this transport surface.
Implements realvirtual.IGuidedSurface.
◆ GetMiddleTopPoint()
Vector3 realvirtual.TransportSurface.GetMiddleTopPoint | ( | ) |
Gets the center point on top of the transport surface for object placement.
◆ GetTransportSurfaceBounds()
Bounds realvirtual.TransportSurface.GetTransportSurfaceBounds | ( | ) |
Gets the bounds of the transport surface including kinematic groups.
◆ IsSurfaceGuided()
bool realvirtual.TransportSurface.IsSurfaceGuided | ( | ) |
Checks if the transport surface is following a guide path.
Implements realvirtual.IGuidedSurface.
◆ OnEnterExitDelegate()
delegate void realvirtual.TransportSurface.OnEnterExitDelegate | ( | Collision | collission, |
TransportSurface | surface | ||
) |
Delegate for collision enter/exit events.
◆ OnEnterSurface()
void realvirtual.TransportSurface.OnEnterSurface | ( | Collision | other | ) |
Triggers the OnEnter event when an object collides with the transport surface.
◆ OnExitSurface()
void realvirtual.TransportSurface.OnExitSurface | ( | Collision | other | ) |
Triggers the OnExit event when an object leaves the transport surface.
◆ OnXREndPlace()
void realvirtual.TransportSurface.OnXREndPlace | ( | GameObject | placedobj | ) |
Handles the end of XR/AR placement mode.
◆ OnXRInit()
void realvirtual.TransportSurface.OnXRInit | ( | GameObject | placedobj | ) |
Initializes the transport surface for XR/AR placement.
◆ OnXRStartPlace()
void realvirtual.TransportSurface.OnXRStartPlace | ( | GameObject | placedobj | ) |
Handles the start of XR/AR placement mode.
Member Data Documentation
◆ AdvancedSurface
bool realvirtual.TransportSurface.AdvancedSurface |
Enables advanced conveyor belt visualization with detailed geometry.
◆ AnimateSurface
bool realvirtual.TransportSurface.AnimateSurface |
Enables texture animation to visualize surface movement.
◆ ChangeConstraintsOnEnter
bool realvirtual.TransportSurface.ChangeConstraintsOnEnter |
Modifies rigidbody 2constraints when objects enter the surface.
◆ ChangeConstraintsOnExit
bool realvirtual.TransportSurface.ChangeConstraintsOnExit |
Modifies rigidbody constraints when objects leave the surface.
◆ ConstraintsEnter
RigidbodyConstraints realvirtual.TransportSurface.ConstraintsEnter |
Rigidbody constraints applied when objects enter.
◆ ConstraintsExit
RigidbodyConstraints realvirtual.TransportSurface.ConstraintsExit |
Rigidbody constraints applied when objects exit.
◆ DebugMode
bool realvirtual.TransportSurface.DebugMode |
Enables visual debugging information during runtime.
◆ IsGuided
bool realvirtual.TransportSurface.IsGuided |
Indicates if surface follows a guide path system.
◆ Layer
string realvirtual.TransportSurface.Layer |
Physics layer for transport surface collision detection.
◆ LoadedPart
List<Rigidbody> realvirtual.TransportSurface.LoadedPart |
List of rigidbodies currently on the transport surface.
◆ ParentDrive
Drive realvirtual.TransportSurface.ParentDrive |
Parent drive for hierarchical movement systems, transport surface moves relative to parent.
◆ Radial
bool realvirtual.TransportSurface.Radial |
Enables radial/rotational transport mode for turntables and curved conveyors.
◆ speed
float realvirtual.TransportSurface.speed |
Current transport speed in millimeters per second.
◆ SpeedScaleTransportSurface
float realvirtual.TransportSurface.SpeedScaleTransportSurface |
Speed scaling factor applied to the transport surface.
◆ StartGlobalTransportDirection
Vector3 realvirtual.TransportSurface.StartGlobalTransportDirection |
Initial global transport direction stored at start.
◆ TextureScale
float realvirtual.TransportSurface.TextureScale |
Texture animation speed multiplier in texture units per meter.
◆ TransportDirection
Vector3 realvirtual.TransportSurface.TransportDirection |
Transport direction in local coordinates, automatically set by the Drive component.
◆ UseMeshCollider
bool realvirtual.TransportSurface.UseMeshCollider |
Uses mesh collider for precise collision, box collider for better performance.
Property Documentation
◆ Drive
|
getset |
Gets or sets the Drive component controlling this transport surface.
Event Documentation
◆ OnEnter
OnEnterExitDelegate realvirtual.TransportSurface.OnEnter |
Event triggered when objects enter the transport surface.
◆ OnExit
OnEnterExitDelegate realvirtual.TransportSurface.OnExit |
Event triggered when objects leave the transport surface.