realvirtual.io
  • Building Digital Twins with Unity and realvirtual.io
  • Basics
    • Installation
    • Demo Model
      • Old Demo Model
    • Editor User Interface
      • Hierarchy Window
      • 3D Views
      • Quick Edit
      • Move Pivot Points (Pro)
      • Selection Window (Pro)
      • Material Window (Pro)
      • Measurement (Pro)
      • Kinematic Tool (Pro)
      • Model Checker
    • Runtime UI
      • Group Manager
      • Debug Console
      • Responsiveness
      • Runtime Persistence
    • Importing and exporting
    • Folder structure
    • Tutorial
    • Physics
    • CAD import (Pro)
      • CADLink (Pro)
      • CAD Checker (Pro)
      • CAD Updater (Pro)
    • Reusable Components (Prefabs)
    • Cadenas parts4cad
    • Publishing the Digital Twin
    • Revision management
  • News
  • Login & Download Updates (Pro)
  • Components & Scripts
    • Realvirtual
      • Environment Controller
    • MU, Source and Sink
      • Source
      • Sink
    • Motion and Kinematic
      • Drive
      • Kinematic
      • Group
      • Joint
      • CAM
      • TransportSurface
      • Guided Transport
      • KinematicMU (Pro)
      • Drive behavior
      • Chain
      • Chain element
      • Motion for developers
    • Sensors
      • Sensor
      • Measure
      • MeasureRaycast
    • Picking and Placing MUs
      • Grip
      • Gripper
      • Fixer
      • Pattern
    • Changing MUs
      • MaterialChanger
      • MUSwitcher
      • PartChanger
      • Cutter
    • Scene Interaction
      • Tooltip (Pro)
      • 3D Buttons
      • Screen Overlay Buttons
      • Scene Selectables (Pro)
      • Lamp
      • Interact3D
      • UI components
      • HMI components (Pro)
        • Start your own HMI
        • HMI Tab
        • HMI DropDown
        • HMI Puschbutton
        • HMI Switch
        • HMI Value
        • HMI Text
        • HMI Slider
        • HMI Message
        • HMI Marker
      • ModelZoo (Pro)
    • Interfaces
      • Interface Tools
        • Signal Manager
        • Signal Importer Exporter
        • Signal Catcher
        • OnValueChangedReconnect
      • Signal Importer / Exporter
      • ABB RobotStudio (Pro)
      • Denso Robotics (Pro)
      • EthernetIP (Pro)
      • Fanuc (Pro)
      • FMI
      • Igus Rebel
      • MQTT (Pro)
      • Modbus (Pro)
      • OPCUA (Pro)
      • PLCSIM Advanced (Pro)
      • RoboDK (Pro)
      • RFSuite (Pro)
      • SEW SimInterface (Pro)
      • Siemens Simit Interface (Pro)
      • Simit Shared Memory (Pro)
      • Simulink (Pro)
      • S7 TCP
      • TwinCAT (Pro)
      • TwinCAT HMI (Pro)
      • UDP (Pro)
      • Universal Robots (Pro)
      • Wandelbots Nova (Pro)
      • Websocket (Pro)
      • Windmod Y200 (Pro)
      • Custom Interfaces
    • Performance Tools
      • Combine Meshes (Pro)
      • Create Prefab (Pro)
      • Hierarchy Cleanup (Pro)
      • Mesh Optimizer (Pro)
      • Performance Optimizer (Pro)
    • Defining Logic
      • Unity Scripting
      • Behavior Graph
      • Logicsteps
      • Unity Visual Scripting
      • Recorder
    • Robot Inverse Kinematics (Pro)
    • Volume Tracking (Pro)
  • Multiplayer (Pro)
  • Extensions
    • ModelZoo
      • Beckhoff TwinCAT
      • Siemens S7
      • Denso Cobotta 1300
      • Wandelbots Nova Fanuc CRX
      • Universal Robots UR10
      • Fanuc Roboguide
    • realvirtual.io AIBuilder
      • realvirtual.io AI Builder Overview
      • Generate AI Training Data
      • AI Training
        • Ultralytics Yolo
      • Testing AI in a Digital Twin
      • Deploying the AI
    • realvirtual.io Simulation
      • Conveyor Library
      • Path System
        • Path finding
        • Line
        • Curve
        • Workstation
        • Catcher
        • Pathmover
    • realvirtual.io Industrial Metaverse
      • Setup Guide
      • VR Modules
      • AR Modules
      • Multiuser
    • AGX Physics
    • VR Builder
    • CMC ViewR
  • Advanced Topics
    • Render Pipelines
    • Mixed Reality with Meta Quest3
    • Upgrade Guide
      • Upgrade to 2022
    • Open Digital Twin Interface
    • Usefull Addons
    • Improving Performance
    • Supported Platforms
    • Compiler Defines
    • For Developers
      • Important Classes and Interfaces
      • Assembly Definitions
      • Starting your development
      • Class documentation
      • realvirtual Init Sequence
      • realvirtualBehavior Lifetime Methods
      • Testing
    • Newtonsoft JSON
    • Troubleshooting
  • Release Notes
  • AI Digital Twin Assistant (GPT4)
  • License Conditions
Powered by GitBook
On this page
  • Advanced Surface
  • Connecting Drives to Transport Surfaces
  • Drives above the TransportSurface Drive - using parent Drives
  • Constraints of transported Objects
Edit on GitHub
  1. Components & Scripts
  2. Motion and Kinematic

TransportSurface

PreviousCAMNextGuided Transport

Last updated 16 days ago

For modeling conveyor systems or any kind of freely moving goods (what is called in realvirtual.io) on a surface you need to use a Transport Surface.

⚠️ Note: For standard speed-controlled accumulation conveyor systems, you should use the purely physics-based approach with TransportSurface.

However, if this approach becomes unstable or imprecise—especially in position-controlled systems (e.g., driven by PLCs)—consider switching to a guided transport setup:

  • Use for force-based control.

  • Use for fully position-controlled, kinematic movement without violating physics constraints.

A Transport Surface is always connected to a which is controlling the speed and position. The Transport Surface needs to be placed on the object which is also including the box collider for the surface itself.

If you are seeing instability with drives please check as well as in Section Physics.

Here is a tutorial about defining your first conveyor:

Advanced Surface

The Advanced Surface option enables enhanced visual representation of the transport surface by automatically generating animated texture effects that are independent of object scaling.

When Advanced Surface is enabled, a child GameObject named Belt is created under the TransportSurface in the hierarchy. This object includes the ConveyorBelt component, which divides the surface into four segments. For each segment, a custom mesh is generated, allowing textures to follow the geometry of the surface—including curves—accurately and seamlessly.

Two different textures are available for use. The example below highlights the visual difference between the default and advanced textures.

💡 The size and placement of the Belt mesh are determined by the dimensions of the BoxCollider attached to the TransportSurface.

Connecting Drives to Transport Surfaces

Drives above the TransportSurface Drive - using parent Drives

ParentDrives is only needed if IsKinematic Drives are moving TransportSurfaces in a linear direction or rotational direction, e.g. for turn tables or lifting devices.

To prevent this the option ParentDrive is available on the Transport Surface:

This option will automatically decouple the Transport Surface upon simulation start and will make a function as expected possible. During simulation, the Transportsurface will be without a parent in the top level of the hierarchy. You can see an example in the Demo model TurningAndLiftingTransportSurface which can be found under realvirtual.io > Scenes:

When you build up more complex kinematic structures, make sure to always keep the gameobject with the component transport surface parallel to the kinematic structure of the other drive belonging to the surface. An further expample model is MovingTransportSurface which can also be found under realvirtual.io > Scenes. The picture below shows how to define such a structure. The parent drive of the transport surface is the one which is the lowest in the kinematic structure.

If the parent drive of the transport surface is rotating, the pivot points (centre of rotation) of both objects must be in the same position for the movement to be transmitted correctly. If necessary, an empty GameObject must be inserted to achieve this.

Constraints of transported Objects

You can choose if the constraints of objects which enter the transportsurface have to be changed or not. Setting the boolean ChangeConstraintsOnEnter or ChangeConstraintsOnExit to true will give the possibility to that.

When you change the constraints they will not be set back automatically to the former settings when the object leaves the transport surface. There you have to set ChangeConstraintsOnExit true and define the values. Choosing "None" all contraints will be removed from the object.

To add a Transport Surface you can use the realvirtual.io menu or Add Component on the Gameobject itself. The Transport Surface will be added automatically to the which is next (up in the hierarchy) to the Transport Surface. In some cases, you might need to change it or to add multiple Transport Surfaces to one . You can do this on the itself:

Sometimes Unity Physics is very difficult and the solution to master it is a little bit weird. As described in normal movements of a linear or rotational axis are not done based IsKinematic Rigidbodies. The transformation is done based on the Unity hierarchy and the position of because this is usually much more stable.

The Transport Surface is different from normal linear or rotational movements of an axis. It is using pure Unity physics functions for transporting the .

This causes one problem. If it is for example necessary to combine a linear or rotational movement with the Transport Surface itself this will cause problems. Unity will not move the Transport Surface as expected.

© 2025 realvirtual - All rights reserved. No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including printing, saving, photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher.

Drive
Drive
Drive
Physics
Unity’s Transform
MUs
Collider
https://realvirtual.io
MU
GuidedTransport
KinematicMU
Drive
Advanced Surface
Advanced Suface
Physic solver settings
Stability of TransportSurfaces