Grip component for attaching and transporting MUs with moving mechanisms like robots or grippers. More...
Public Member Functions | |
| void | DeActivate (bool activate) |
| Deactivates or activates the grip component. | |
| void | OnMultiplayer (bool isclient, bool isstart) |
| void | Fix (MU mu) |
| Fixes (grips) the given MU to this grip. | |
| void | Unfix (MU mu) |
| Releases (ungrips) the given MU. Does NOT trigger AutoPlace — use internal Place() flank for auto-placement. | |
| void | Pick () |
| Picks all MUs: uses sensor (PartToGrip) if assigned, otherwise auto-detects via OverlapSphere. | |
| void | Place () |
| Places all currently gripped MUs. Applies AutoPlace logic if PlaceMode requires it. | |
Public Member Functions inherited from realvirtual.realvirtualBehavior | |
| virtual void | OnOwnershipChanged (bool isOwner) |
| Called when network ownership changes. | |
| void | SetNetworkOwner (bool isOwner) |
| Sets IsNetworkOwner and triggers OnOwnershipChanged callback. | |
| 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, bool includeTriggers=true) |
| 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 warning 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 | AdvancedMode |
| If true all advanced properties are shown in the inspector. | |
| float | GripRange |
| Search radius in millimeters for automatic MU detection when no Sensor is assigned. | |
| Sensor | PartToGrip |
| Identifies the MU to be gripped. When null the OverlapSphere auto-detection uses GripRange. | |
| bool | DirectlyGrip |
| If set to true the MU is directly gripped when Sensor PartToGrip detects a Part. | |
| GameObject | PickAlignWithObject |
| bool | AlignRotation |
| If not null the MUs are aligned with this object before picking. | |
| Sensor | PickBasedOnSensor |
| Picking is started when this sensor is occupied (optional) | |
| Drive_Cylinder | PickBasedOnCylinder |
| Picking is stared when Cylinder is Max or Min (optional) | |
| bool | PickOnCylinderMax |
| Picking is started when Cylinderis Max. | |
| PlaceMode | PlaceMode |
| Controls how MUs are released on Place() | |
| float | GripTargetSearchRadius |
| Search radius in millimeters for finding the nearest GripTarget on Place. | |
| float | RaycastDistance |
| Raycast distance in millimeters for Auto-Place surface detection. | |
| bool | NoPhysicsWhenPlaced |
| Object remains kinematic (no phyisics) when placed. | |
| GameObject | PlaceAlignWithObject |
| If not null the MUs are aligned with this object after placing. Useful for positioning near Fixers that will take over. | |
| bool | PlaceLoadOnMU |
| When placing the components they should be loaded onto an MU as subcomponent. | |
| Sensor | PlaceLoadOnMUSensor |
| Sensor defining the MU where the picked MUs should be loaded to. | |
| UnityEngine.Joint | ConnectToJoint |
| bool | PickObjects |
| true for picking MUs identified by the sensor. | |
| bool | PlaceObjects |
| //!< true for placing the loaded MUs. | |
| bool | OneBitControl |
| If true the grip is controlled by one bit. If false the grip is controlled by two bits. | |
| PLCOutputBool | SignalPick |
| PLCOutputBool | SignalPlace |
| EventMUGrip | EventMUGrip |
| Unity event which is called for MU grip and ungrip. On grip it passes MU and true. On ungrip it passes MU and false. | |
| bool | ShowGizmo |
| If true the grip range gizmo is displayed in the scene view. | |
| List< GameObject > | PickedMUs |
Public Attributes inherited from realvirtual.realvirtualBehavior | |
| 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 |
| bool | IsNetworkOwner |
| True when this component owns its simulation (local authority). Set to false by MultiplayerWEB on remote clients. | |
Additional Inherited Members | |
Public Types inherited from realvirtual.realvirtualBehavior | |
| enum | ActiveOnly { Always , Connected , Disconnected , Never , DontChange } |
Static Public Member Functions inherited from realvirtual.realvirtualBehavior | |
| static bool | DirectionIsLinear (DIRECTION direction) |
| Gets back if the direction is linear or a rotation. | |
Protected Member Functions inherited from realvirtual.realvirtualBehavior | |
| 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 () |
Detailed Description
Grip component for attaching and transporting MUs with moving mechanisms like robots or grippers.
The Grip component is a fundamental part of realvirtual's material handling system, enabling dynamic pick-and-place operations in industrial automation simulations. It provides flexible attachment mechanisms for securely gripping MUs (Material Units) and transporting them through the production system. The component works by detecting MUs through a sensor or automatic OverlapSphere search, fixing them kinematically or with physics joints, and maintaining the attachment while the parent object moves.
Key Features:
- Sensor-based MU detection OR automatic OverlapSphere pick (no sensor required)
- Kinematic attachment for stable, physics-free transportation
- Optional physics joint connection for dynamic simulations
- Auto-Place Raycast: GripTarget → LoadMu on MU → Physics on TransportSurface → Kinematic
- GripTarget marker support for precise pick placement
- Alignment control for precise positioning during pick and place operations
- Direct gripping mode for immediate attachment on sensor detection
- Support for loading MUs as subcomponents onto other MUs
- Single-bit or dual-bit PLC control modes
- Unity events for grip and ungrip notifications
Common Applications:
- Robotic end effectors and tool changers
- Conveyor transfer mechanisms
- AGV loading/unloading systems
- Palletizing and depalletizing operations
- Assembly line pick-and-place stations
- Material sorting and distribution systems
Integration Points: The Grip component integrates seamlessly with other realvirtual components through the sensor system for MU detection, the MU system for material tracking, and Drive_Cylinder for automated gripping based on cylinder positions. It can be controlled through PLC signals (PLCOutputBool) for industrial control system integration or directly through Unity Inspector properties for simulation control.
Performance Considerations: The component uses kinematic attachment by default, which is more performant than physics-based joints. OverlapSphere and Raycast are called only once per Pick/Place event (not per frame). Pre-allocated Collider buffer avoids GC allocations in the pick/place code path.
Events and Signals: The EventMUGrip Unity event provides real-time notifications of grip operations, passing the MU reference and grip state (true for grip, false for ungrip). This enables custom logic execution during material handling operations, such as updating production tracking systems or triggering dependent automation sequences.
For detailed documentation and examples, visit: https://doc.realvirtual.io/components-and-scripts/grip
Member Function Documentation
◆ DeActivate()
| void realvirtual.Grip.DeActivate | ( | bool | activate | ) |
Deactivates or activates the grip component.
Implements realvirtual.IFix.
◆ Fix()
| void realvirtual.Grip.Fix | ( | MU | mu | ) |
Fixes (grips) the given MU to this grip.
Implements realvirtual.IFix.
◆ OnMultiplayer()
| void realvirtual.Grip.OnMultiplayer | ( | bool | isclient, |
| bool | isstart | ||
| ) |
Implements realvirtual.IMultiPlayer.
◆ Pick()
| void realvirtual.Grip.Pick | ( | ) |
Picks all MUs: uses sensor (PartToGrip) if assigned, otherwise auto-detects via OverlapSphere.
◆ Place()
| void realvirtual.Grip.Place | ( | ) |
Places all currently gripped MUs. Applies AutoPlace logic if PlaceMode requires it.
◆ Unfix()
| void realvirtual.Grip.Unfix | ( | MU | mu | ) |
Releases (ungrips) the given MU. Does NOT trigger AutoPlace — use internal Place() flank for auto-placement.
Implements realvirtual.IFix.
Member Data Documentation
◆ AdvancedMode
| bool realvirtual.Grip.AdvancedMode |
If true all advanced properties are shown in the inspector.
◆ AlignRotation
| bool realvirtual.Grip.AlignRotation |
If not null the MUs are aligned with this object before picking.
◆ DirectlyGrip
| bool realvirtual.Grip.DirectlyGrip |
If set to true the MU is directly gripped when Sensor PartToGrip detects a Part.
◆ EventMUGrip
| EventMUGrip realvirtual.Grip.EventMUGrip |
Unity event which is called for MU grip and ungrip. On grip it passes MU and true. On ungrip it passes MU and false.
◆ GripRange
| float realvirtual.Grip.GripRange |
Search radius in millimeters for automatic MU detection when no Sensor is assigned.
◆ GripTargetSearchRadius
| float realvirtual.Grip.GripTargetSearchRadius |
Search radius in millimeters for finding the nearest GripTarget on Place.
◆ NoPhysicsWhenPlaced
| bool realvirtual.Grip.NoPhysicsWhenPlaced |
Object remains kinematic (no phyisics) when placed.
◆ OneBitControl
| bool realvirtual.Grip.OneBitControl |
If true the grip is controlled by one bit. If false the grip is controlled by two bits.
◆ PartToGrip
| Sensor realvirtual.Grip.PartToGrip |
Identifies the MU to be gripped. When null the OverlapSphere auto-detection uses GripRange.
◆ PickBasedOnCylinder
| Drive_Cylinder realvirtual.Grip.PickBasedOnCylinder |
Picking is stared when Cylinder is Max or Min (optional)
◆ PickBasedOnSensor
| Sensor realvirtual.Grip.PickBasedOnSensor |
Picking is started when this sensor is occupied (optional)
◆ PickObjects
| bool realvirtual.Grip.PickObjects |
true for picking MUs identified by the sensor.
◆ PickOnCylinderMax
| bool realvirtual.Grip.PickOnCylinderMax |
Picking is started when Cylinderis Max.
◆ PlaceAlignWithObject
| GameObject realvirtual.Grip.PlaceAlignWithObject |
If not null the MUs are aligned with this object after placing. Useful for positioning near Fixers that will take over.
◆ PlaceLoadOnMU
| bool realvirtual.Grip.PlaceLoadOnMU |
When placing the components they should be loaded onto an MU as subcomponent.
◆ PlaceLoadOnMUSensor
| Sensor realvirtual.Grip.PlaceLoadOnMUSensor |
Sensor defining the MU where the picked MUs should be loaded to.
◆ PlaceMode
| PlaceMode realvirtual.Grip.PlaceMode |
Controls how MUs are released on Place()
◆ PlaceObjects
| bool realvirtual.Grip.PlaceObjects |
//!< true for placing the loaded MUs.
◆ RaycastDistance
| float realvirtual.Grip.RaycastDistance |
Raycast distance in millimeters for Auto-Place surface detection.
◆ ShowGizmo
| bool realvirtual.Grip.ShowGizmo |
If true the grip range gizmo is displayed in the scene view.
Public Member Functions inherited from