AGX Dynamics 2.39.0.0
Loading...
Searching...
No Matches
agxTerrain::Shovel Class Reference

#include <Shovel.h>

+ Inheritance diagram for agxTerrain::Shovel:

Classes

class  ExcavationSettings
 Class containing the settings for the different ExcavationModes for a shovel. More...
 
struct  SoilPenetrationParameters
 

Public Types

enum class  ExcavationMode : agx::UInt32 { PRIMARY = 0 , DEFORM_BACK = 1 , DEFORM_RIGHT = 2 , DEFORM_LEFT = 3 }
 Enum for describing the different excavation modes of a shovel: PRIMARY - The primary mode of excavation, where the shovel digs along the cutting direction in the terrain horizontal plane. More...
 

Public Member Functions

 Shovel (agx::RigidBody *shovelBody, const agx::Line &topEdge, const agx::Line &cuttingEdge, const agx::Vec3 &cuttingDirection, Shovel *connectedShovel=nullptr)
 Basic constructor.
 
agx::Real computeCuttingEdgeLength () const
 
bool getAlwaysRemoveShovelContacts () const
 
agx::Real getContactRegionThreshold () const
 Get the starting distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain can be created.
 
agx::Real getContactRegionVerticalLimit () const
 
agx::Plane getCurrentSeparationPlane (Terrain *terrain, ExcavationMode mode) const
 
agx::Vec3 getCuttingDirection () const
 
agx::Vec3 getCuttingDirectionWorld () const
 
agx::Line getCuttingEdge () const
 
agx::Line getCuttingEdgeWorld () const
 
agx::Real getDeadLoadFraction () const
 Get the last computed dead load fraction of the shovel, i.e how much of it's inner volume that is filled with dynamic soil.
 
bool getEnable () const
 Access the state enable flag.
 
bool getEnableInnerShapeCreateDynamicMass () const
 Get if inner shape alone should always create dynamic mass.
 
bool getEnableParticleForceFeedback ()
 
bool getEnableParticleFreeDeformers () const
 
ExcavationSettingsgetExcavationSettings (ExcavationMode mode)
 
agx::Real getInnerContactArea () const
 Get the last computed inner contact area of the shovel, i.e the estimated cross-section area of the inner volume that is filled with dynamic soil.
 
agx::Real getMaxPenetrationForce () const
 Set the maximum limit on penetration force (N) that the terrain will generate on this shovel.
 
agx::Real getMinimumSubmergedContactLengthFraction () const
 Get the minimum submerged cutting edge length fraction (0-1) that generates submerged cutting.
 
agx::Real getNoMergeExtensionDistance () const
 Get the margin outside the shovel bonding box where soil particle merging is forbidden.
 
agx::UInt getNumberOfTeeth () const
 
agx::Real getParticleInclusionMultiplier () const
 
agx::Real getPenetrationDepthThreshold () const
 Get the vertical penetration depth threshold for when the shovel tooth for penetration resistance should reach full effectiveness.
 
agx::Real getPenetrationForceScaling () const
 
agx::RigidBodygetRigidBody () const
 
agx::Vec3 getSecondaryCuttingDirection (Terrain *terrain) const
 
agx::Real getSecondarySeparationAngle (Terrain *terrain) const
 
agx::Real getSecondarySeparationDeadloadLimit () const
 
bool getSoilPenetrationModel (agxTerrain::Terrain *terrain, agxTerrain::SoilPenetrationResistance::PenetrationModel &model) const
 Get the soil penetration model used for the specified shovel in the given terrain.
 
agx::Real getToothLength () const
 
agx::Real getToothMaximumRadius () const
 
agx::Real getToothMinimumRadius () const
 
agx::Line getTopEdge () const
 
agx::Line getTopEdgeWorld () const
 
agx::Real getVerticalBladeSoilMergeDistance () const
 Get the vertical distance under the blade cutting edge that the soil is allowed to instantly merge up to.
 
void setAlwaysRemoveShovelContacts (bool enable)
 Set to true/false if shovel <-> terrain contacts should always be removed param enable - set to true/false if shovel <-> terrain contacts should always be removed.
 
void setContactRegionThreshold (agx::Real contactRegionThreshold)
 Set the starting distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain can be created.
 
void setContactRegionVerticalLimit (agx::Real verticalLimit)
 Set the maximum vertical distance from the shovel bottom plane where regular geometry contacts between the shovel and the terrain are allowed to be created.
 
void setCuttingDirection (agx::Vec3 cuttingDirection)
 
void setCuttingEdge (agx::Line cuttingEdge)
 Set the cutting edge in local space.
 
void setEnable (bool enable)
 Change state enable of this shovel Default: true.
 
void setEnableInnerShapeCreateDynamicMass (bool enable)
 Set if inner shape alone should always create dynamic mass.
 
void setEnableParticleForceFeedback (bool enable)
 Set whenever the excavation force feedback during PRIMARY excavation should be generated from particle contacts instead of aggregate contacts.
 
void setEnableParticleFreeDeformers (bool enable)
 Set true/false if the shovel deformers should make particle free deformations.
 
void setExcavationSettings (ExcavationMode mode, ExcavationSettings excavationSettings)
 Set a settings object for an ExcavationMode of the shovel.
 
void setMaxPenetrationForce (agx::Real maxPenetrationForce)
 Set a maximum limit on penetration force (N) that the terrain will generate on this shovel.
 
void setMinimumSubmergedContactLengthFraction (agx::Real minimumSubmergedContactLengthFraction)
 Set the minimum submerged cutting edge length fraction (0-1) that generates submerged cutting.
 
void setNoMergeExtensionDistance (agx::Real extensionDistance)
 Set the extension outside the shovel bounding box where soil particle merging is forbidden.
 
void setNumberOfTeeth (agx::UInt count)
 
void setParticleInclusionMultiplier (agx::Real radiusMultiplier)
 
void setPenetrationDepthThreshold (agx::Real depthThreshold)
 Set the vertical penetration depth threshold for when the shovel tooth for penetration resistance should reach full effectiveness.
 
void setPenetrationForceScaling (agx::Real penetrationForceScaling)
 Set the linear scaling coefficient for the penetration force (Default: 1.0)
 
void setSecondarySeparationDeadloadLimit (agx::Real secondarySeparationLimit)
 Sets the dead-load limit where secondary separation will start to activate where the forward direction starts to change according to the virtual separation plate created by the material inside the shovel.
 
bool setSoilPenetrationModel (agxTerrain::SoilPenetrationResistance::PenetrationModel model, agxTerrain::Terrain *terrain)
 Set the soil penetration model used for the specified shovel in the given terrain.
 
void setToothLength (agx::Real length)
 
void setToothMaximumRadius (agx::Real radius)
 
void setToothMinimumRadius (agx::Real radius)
 
void setTopEdge (agx::Line topEdge)
 Set the top edge in local space.
 
void setVerticalBladeSoilMergeDistance (agx::Real verticalSoilBladeMergeDistance)
 Sets the vertical distance under the blade cutting edge that the soil is allowed to instantly merge up to.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 

Protected Types

using Flags = agx::BitState< StateFlags, agx::UInt32 >
 
enum  StateFlags : agx::UInt32 {
  ENABLED = 1 << 0 , REMOVE_SHOVEL_CONTACTS = 1 << 1 , INNER_SHAPE_CREATE_DYNAMIC_MASS = 1 << 2 , ENABLE_PARTICLE_FREE_DEFORMATION = 1 << 3 ,
  ENABLE_PARTICLE_FORCE_FEEDBACK = 1 << 4
}
 

Protected Member Functions

 Shovel ()
 Default constructor used in serialization.
 
virtual ~Shovel ()
 Reference counted object - protected destructor.
 
agxCollide::GeometryRefVector createVoxelCollisionGeometries (agx::Real tessellationLevel) const
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 

Protected Attributes

Shovelm_connectedShovel
 
agx::Real m_contactThreshold
 
agx::Vec3 m_cuttingDirection
 
agx::Line m_cuttingEdge
 
agx::Real m_deadLoadFraction
 
std::array< ExcavationSettings, 4 > m_excavationSettings
 
Flags m_flags
 
agx::Real m_innerContactArea
 
agx::Real m_minimumSubmergedContactLengthFraction
 
agx::Real m_noMergeExtensionDistance
 
agx::UInt m_nTeeth
 
agx::Real m_particleInclusionMultiplier
 
agx::Real m_secondarySeparationDeadLoadLimit
 
bool m_settingsAreDirty
 
agx::RigidBodyObserver m_shovelBody
 
SoilPenetrationParameters m_soilPenetrationParameters
 
agx::Real m_toothLength
 
agx::Real m_toothMaxRadius
 
agx::Real m_toothMinRadius
 
agx::Line m_topEdge
 
agx::Real m_verticalContactThreshold
 
agx::Real m_verticalSoilBladeMergeDistance
 
agxCollide::GeometryRefVector m_voxelCollisionGeometries
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Additional Inherited Members

- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 

Detailed Description

Definition at line 50 of file Shovel.h.

Member Typedef Documentation

◆ Flags

using agxTerrain::Shovel::Flags = agx::BitState<StateFlags, agx::UInt32>
protected

Definition at line 654 of file Shovel.h.

Member Enumeration Documentation

◆ ExcavationMode

Enum for describing the different excavation modes of a shovel: PRIMARY - The primary mode of excavation, where the shovel digs along the cutting direction in the terrain horizontal plane.

DEFORM_BACK - The mode of excavation where the shovel is digging in the opposite direction of the cutting direction in the terrain horizontal plane. ( Example: Backside grading ) DEFORM_LEFT - The mode of excavation where the shovel is digging to the counter-clock wise (Left) direction orthogonal to the cutting direction in the terrain horizontal plane. ( Example: Side push/grading ) DEFORM_RIGHT - The mode of excavation where the shovel is digging to the clock wise (Right) direction orthogonal to the cutting direction in the terrain horizontal plane. ( Example: Side push/grading )

Enumerator
PRIMARY 
DEFORM_BACK 
DEFORM_RIGHT 
DEFORM_LEFT 

Definition at line 91 of file Shovel.h.

◆ StateFlags

Enumerator
ENABLED 
REMOVE_SHOVEL_CONTACTS 
INNER_SHAPE_CREATE_DYNAMIC_MASS 
ENABLE_PARTICLE_FREE_DEFORMATION 
ENABLE_PARTICLE_FORCE_FEEDBACK 

Definition at line 646 of file Shovel.h.

Constructor & Destructor Documentation

◆ Shovel() [1/2]

agxTerrain::Shovel::Shovel ( agx::RigidBody shovelBody,
const agx::Line topEdge,
const agx::Line cuttingEdge,
const agx::Vec3 cuttingDirection,
Shovel connectedShovel = nullptr 
)

Basic constructor.

Parameters
shovelBody- The base body of the shovel.
topEdge- The top edge of the active zone, specified in the LOCAL shovelBody frame that will be created in front of the shovel.
cuttingEdge- The lowest edge on the shovel, specified in the LOCAL shovelBody frame that serves as the cutting edge of the active zone.
cuttingDirection- The cutting direction of the shovel where the penetration resistance will be active, which is usually parallel to the lowest shovel plate that is used to initially penetrate the soil.
connectedShovel- Set if the shovel should be connected to another shovels InnerBody for pruposes of simulating composite shovels with varying shovel vectors in along the shovel geometry. This means you can have multiple cutting edges with varying orientation per shovel where you have a central shovel with a single inner shape. (Default: nullptr)

◆ Shovel() [2/2]

agxTerrain::Shovel::Shovel ( )
protected

Default constructor used in serialization.

◆ ~Shovel()

virtual agxTerrain::Shovel::~Shovel ( )
protectedvirtual

Reference counted object - protected destructor.

Member Function Documentation

◆ computeCuttingEdgeLength()

agx::Real agxTerrain::Shovel::computeCuttingEdgeLength ( ) const
Returns
the computed cutting edge length of the Shovel.

◆ createVoxelCollisionGeometries()

agxCollide::GeometryRefVector agxTerrain::Shovel::createVoxelCollisionGeometries ( agx::Real  tessellationLevel) const
protected

◆ getAlwaysRemoveShovelContacts()

bool agxTerrain::Shovel::getAlwaysRemoveShovelContacts ( ) const
Returns
true/false if shovel <-> terrain contacts are removed.

◆ getContactRegionThreshold()

agx::Real agxTerrain::Shovel::getContactRegionThreshold ( ) const

Get the starting distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain can be created.

Contacts that do not reach the distance threshold will be filtered away.

Returns
the starting distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain can be created. ( Default: cuttingEdgeLength / 10.0 )

◆ getContactRegionVerticalLimit()

agx::Real agxTerrain::Shovel::getContactRegionVerticalLimit ( ) const

◆ getCurrentSeparationPlane()

agx::Plane agxTerrain::Shovel::getCurrentSeparationPlane ( Terrain terrain,
ExcavationMode  mode 
) const
Returns
get current separation plane for each excavation mode

◆ getCuttingDirection()

agx::Vec3 agxTerrain::Shovel::getCuttingDirection ( ) const
Returns
the forward vector in local space.

◆ getCuttingDirectionWorld()

agx::Vec3 agxTerrain::Shovel::getCuttingDirectionWorld ( ) const
Returns
the forward vector in world space.

◆ getCuttingEdge()

agx::Line agxTerrain::Shovel::getCuttingEdge ( ) const
Returns
the cutting edge in local space.

◆ getCuttingEdgeWorld()

agx::Line agxTerrain::Shovel::getCuttingEdgeWorld ( ) const
Returns
the cutting edge in world space.

◆ getDeadLoadFraction()

agx::Real agxTerrain::Shovel::getDeadLoadFraction ( ) const

Get the last computed dead load fraction of the shovel, i.e how much of it's inner volume that is filled with dynamic soil.

The dead load fraction ranges from 0.0 (empty), to 1.0 (full).

Returns
the last computed dead load fraction

◆ getEnable()

bool agxTerrain::Shovel::getEnable ( ) const

Access the state enable flag.

Returns
true if the body is enabled (default) - otherwise false

◆ getEnableInnerShapeCreateDynamicMass()

bool agxTerrain::Shovel::getEnableInnerShapeCreateDynamicMass ( ) const

Get if inner shape alone should always create dynamic mass.

The alternative is to only create dynamic mass in the inner shape when primary excavation soil wedges create mass.

Returns
true if inner shape should always create dynamic mass (default), false otherwise.

◆ getEnableParticleForceFeedback()

bool agxTerrain::Shovel::getEnableParticleForceFeedback ( )
Returns
whenever the excavation force feedback during PRIMARY excavation should be generated from particle contacts instead of aggregate contacts. (Default: false)

◆ getEnableParticleFreeDeformers()

bool agxTerrain::Shovel::getEnableParticleFreeDeformers ( ) const
Returns
whether the shovel deformers should create dynamic mass.

◆ getExcavationSettings()

ExcavationSettings & agxTerrain::Shovel::getExcavationSettings ( ExcavationMode  mode)
Returns
the excavation settings for an excavation mode in the shovel.

◆ getInnerContactArea()

agx::Real agxTerrain::Shovel::getInnerContactArea ( ) const

Get the last computed inner contact area of the shovel, i.e the estimated cross-section area of the inner volume that is filled with dynamic soil.

Note
- This is used in the shovel-aggregate contact in primary excavation to calculate stiffness and cohesion.
Returns
the last computed inner contact area of the shovel.

◆ getMaxPenetrationForce()

agx::Real agxTerrain::Shovel::getMaxPenetrationForce ( ) const

Set the maximum limit on penetration force (N) that the terrain will generate on this shovel.

(Default: Infinity)

Returns
The maximum penetration force that the terrain will act on this shovel

◆ getMinimumSubmergedContactLengthFraction()

agx::Real agxTerrain::Shovel::getMinimumSubmergedContactLengthFraction ( ) const

Get the minimum submerged cutting edge length fraction (0-1) that generates submerged cutting.

Default: 0.5

◆ getNoMergeExtensionDistance()

agx::Real agxTerrain::Shovel::getNoMergeExtensionDistance ( ) const

Get the margin outside the shovel bonding box where soil particle merging is forbidden.

◆ getNumberOfTeeth()

agx::UInt agxTerrain::Shovel::getNumberOfTeeth ( ) const
Returns
the teeth count of the shovel.

◆ getParticleInclusionMultiplier()

agx::Real agxTerrain::Shovel::getParticleInclusionMultiplier ( ) const
Returns
the radius multiplier for extending the inclusion bound with particle radius during post-excavation with particles in bucket. (Default: 1.0)
Note
- This will only be active post-excavation and NOT during excavation when we have active soil wedges.

◆ getPenetrationDepthThreshold()

agx::Real agxTerrain::Shovel::getPenetrationDepthThreshold ( ) const

Get the vertical penetration depth threshold for when the shovel tooth for penetration resistance should reach full effectiveness.

The penetration depth is defined as the vertical distance between the tip of a shovel tooth and the surface position of the height field. The penetration resistance will increase from a baseline of 10% until maximum effectiveness is reached when the vertical penetration depth of the shovel reaches the specified value. (Default: 0.5 m)

Returns
the vertical depth penetration threshold that will cause penetration resistance to reach full effectiveness.

◆ getPenetrationForceScaling()

agx::Real agxTerrain::Shovel::getPenetrationForceScaling ( ) const
Returns
the linear scaling coefficient for the penetration force (Default: 1.0)

◆ getRigidBody()

agx::RigidBody * agxTerrain::Shovel::getRigidBody ( ) const
Returns
the base rigid body from the shovel object.

◆ getSecondaryCuttingDirection()

agx::Vec3 agxTerrain::Shovel::getSecondaryCuttingDirection ( Terrain terrain) const
Returns
the secondary cutting direction of the shovel in a specified terrain

◆ getSecondarySeparationAngle()

agx::Real agxTerrain::Shovel::getSecondarySeparationAngle ( Terrain terrain) const
Returns
the secondary separation forward vector of the shovel in a specified terrain

◆ getSecondarySeparationDeadloadLimit()

agx::Real agxTerrain::Shovel::getSecondarySeparationDeadloadLimit ( ) const
Returns
the dead-load limit where secondary separation will start to active where the forward direction starts to change according to the virtual separation plate created by the material inside the shovel

◆ getSoilPenetrationModel()

bool agxTerrain::Shovel::getSoilPenetrationModel ( agxTerrain::Terrain terrain,
agxTerrain::SoilPenetrationResistance::PenetrationModel model 
) const

Get the soil penetration model used for the specified shovel in the given terrain.

Available models are:

NO_MODEL - Only use the soil pressure above the cutting edge to determine the penetration resistance. ELASTIC_PLASTIC_LIMIT - Calculate the expected penetration resistance based in the elastic plastic limit. (Default) PLASTIC - Calculate the expected penetration resistance based on plastic expansion due to tooth pressure.

Parameters
model- The output variable where the penetration model that is used will be put, if successful.
terrain- The specified terrain where this model applies.
Returns
the specified if the model was successfully extracted, false otherwise.

◆ getToothLength()

agx::Real agxTerrain::Shovel::getToothLength ( ) const
Returns
the tooth length of the shovel.

◆ getToothMaximumRadius()

agx::Real agxTerrain::Shovel::getToothMaximumRadius ( ) const
Returns
the maximum radius of the shovel teeth.

◆ getToothMinimumRadius()

agx::Real agxTerrain::Shovel::getToothMinimumRadius ( ) const
Returns
the minimum radius of the shovel teeth.

◆ getTopEdge()

agx::Line agxTerrain::Shovel::getTopEdge ( ) const
Returns
the top edge in local space.

◆ getTopEdgeWorld()

agx::Line agxTerrain::Shovel::getTopEdgeWorld ( ) const
Returns
the top edge in world space.

◆ getVerticalBladeSoilMergeDistance()

agx::Real agxTerrain::Shovel::getVerticalBladeSoilMergeDistance ( ) const

Get the vertical distance under the blade cutting edge that the soil is allowed to instantly merge up to.

◆ setAlwaysRemoveShovelContacts()

void agxTerrain::Shovel::setAlwaysRemoveShovelContacts ( bool  enable)

Set to true/false if shovel <-> terrain contacts should always be removed param enable - set to true/false if shovel <-> terrain contacts should always be removed.

◆ setContactRegionThreshold()

void agxTerrain::Shovel::setContactRegionThreshold ( agx::Real  contactRegionThreshold)

Set the starting distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain can be created.

Contacts that are not past the distance threshold will be filtered away.

Parameters
contactRegionThreshold- The contact distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain are allowed to be created. ( Default: cuttingEdgeLength / 10.0 )

◆ setContactRegionVerticalLimit()

void agxTerrain::Shovel::setContactRegionVerticalLimit ( agx::Real  verticalLimit)

Set the maximum vertical distance from the shovel bottom plane where regular geometry contacts between the shovel and the terrain are allowed to be created.

Contacts past the distance will be filtered away.

Parameters
verticalLimit- The vertical contact distance threshold from the shovel planes where regular geometry contacts between the shovel underside and the terrain are allowed to be created. ( Default: cuttingEdgeLength / 10.0 )

◆ setCuttingDirection()

void agxTerrain::Shovel::setCuttingDirection ( agx::Vec3  cuttingDirection)
Parameters
cuttingDirection- new cutting direction in local space.

◆ setCuttingEdge()

void agxTerrain::Shovel::setCuttingEdge ( agx::Line  cuttingEdge)

Set the cutting edge in local space.

Parameters
cuttingEdge- new cutting edge in local space.

◆ setEnable()

void agxTerrain::Shovel::setEnable ( bool  enable)

Change state enable of this shovel Default: true.

Parameters
enable- true to enable, false to disable

◆ setEnableInnerShapeCreateDynamicMass()

void agxTerrain::Shovel::setEnableInnerShapeCreateDynamicMass ( bool  enable)

Set if inner shape alone should always create dynamic mass.

The alternative is to only create dynamic mass in the inner shape when primary excavation soil wedges create mass. Default: true.

Parameters
enable- true if inner shape should always create dynamic mass (default), false otherwise.

◆ setEnableParticleForceFeedback()

void agxTerrain::Shovel::setEnableParticleForceFeedback ( bool  enable)

Set whenever the excavation force feedback during PRIMARY excavation should be generated from particle contacts instead of aggregate contacts.

Parameters
enable- true if particles should generate contact forces on the shovel, false otherwise. (Default: false)

◆ setEnableParticleFreeDeformers()

void agxTerrain::Shovel::setEnableParticleFreeDeformers ( bool  enable)

Set true/false if the shovel deformers should make particle free deformations.

(Default: false) Note, if this is true all excavation modes will make particle free deformations. Even if enableCreateDynamicMass is set to false for one or more excavation modes.

Parameters
enable- true if the shovel deformers mode should make particle free deformations.

◆ setExcavationSettings()

void agxTerrain::Shovel::setExcavationSettings ( ExcavationMode  mode,
ExcavationSettings  excavationSettings 
)

Set a settings object for an ExcavationMode of the shovel.

Excavation modes are as follows: PRIMARY - The primary mode of excavation, where the shovel digs along the cutting direction in the terrain horizontal plane. DEFORM_BACK - The mode of excavation where the shovel is digging in the opposite direction of the cutting direction in the terrain horizontal plane. ( Example: Backside grading ) DEFORM_LEFT - The mode of excavation where the shovel is digging to the counter-clock wise (Left) direction orthogonal to the cutting direction in the terrain horizontal plane. ( Example: Side push/grading ) DEFORM_RIGHT - The mode of excavation where the shovel is digging to the clock wise (Right) direction orthogonal to the cutting direction in the terrain horizontal plane. ( Example: Side push/grading )

Parameters
mode- The specified excavation mode that the settings will apply to.
excavationSettings- The specified excavation settings that will apply to the excavation mode.

◆ setMaxPenetrationForce()

void agxTerrain::Shovel::setMaxPenetrationForce ( agx::Real  maxPenetrationForce)

Set a maximum limit on penetration force (N) that the terrain will generate on this shovel.

(Default: Infinity)

Parameters
maxPenetrationForce- The maximum penetration force that the terrain will act on this shovel

◆ setMinimumSubmergedContactLengthFraction()

void agxTerrain::Shovel::setMinimumSubmergedContactLengthFraction ( agx::Real  minimumSubmergedContactLengthFraction)

Set the minimum submerged cutting edge length fraction (0-1) that generates submerged cutting.

Default: 0.5

◆ setNoMergeExtensionDistance()

void agxTerrain::Shovel::setNoMergeExtensionDistance ( agx::Real  extensionDistance)

Set the extension outside the shovel bounding box where soil particle merging is forbidden.

◆ setNumberOfTeeth()

void agxTerrain::Shovel::setNumberOfTeeth ( agx::UInt  count)
Parameters
count- new teeth count of shovel.

◆ setParticleInclusionMultiplier()

void agxTerrain::Shovel::setParticleInclusionMultiplier ( agx::Real  radiusMultiplier)

◆ setPenetrationDepthThreshold()

void agxTerrain::Shovel::setPenetrationDepthThreshold ( agx::Real  depthThreshold)

Set the vertical penetration depth threshold for when the shovel tooth for penetration resistance should reach full effectiveness.

The penetration depth is defined as the vertical distance between the tip of a shovel tooth and the surface position of the height field. The penetration resistance will increase from a baseline of 10% until maximum effectiveness is reached when the vertical penetration depth of the shovel reaches the specified value. (Default: 0.5 m)

Parameters
depthThreshold- the vertical pressure threshold that will cause penetration resistance to start.

◆ setPenetrationForceScaling()

void agxTerrain::Shovel::setPenetrationForceScaling ( agx::Real  penetrationForceScaling)

Set the linear scaling coefficient for the penetration force (Default: 1.0)

Parameters
penetrationForceScaling- The coefficient for scaling the penetration force that the terrain will give on this shovel

◆ setSecondarySeparationDeadloadLimit()

void agxTerrain::Shovel::setSecondarySeparationDeadloadLimit ( agx::Real  secondarySeparationLimit)

Sets the dead-load limit where secondary separation will start to activate where the forward direction starts to change according to the virtual separation plate created by the material inside the shovel.

Parameters
secondarySeparationLimit- The dead load limit where secondary separation will start to activate (Default: 0.8)

◆ setSoilPenetrationModel()

bool agxTerrain::Shovel::setSoilPenetrationModel ( agxTerrain::SoilPenetrationResistance::PenetrationModel  model,
agxTerrain::Terrain terrain 
)

Set the soil penetration model used for the specified shovel in the given terrain.

Available models are:

NO_MODEL - Only use the soil pressure above the cutting edge to determine the penetration resistance. ELASTIC_PLASTIC_LIMIT - Calculate the expected penetration resistance based in the elastic plastic limit. (Default) PLASTIC - Calculate the expected penetration resistance based on plastic expansion due to tooth pressure.

Parameters
model- The specified penetration model to use in the shovel against the terrain. ( Default: ELASTIC_PLASTIC_LIMIT )
terrain- The specified terrain where this model will apply.
Returns
true if the model was successfully changed, false otherwise.

◆ setToothLength()

void agxTerrain::Shovel::setToothLength ( agx::Real  length)
Parameters
length- new tooth length.

◆ setToothMaximumRadius()

void agxTerrain::Shovel::setToothMaximumRadius ( agx::Real  radius)
Parameters
radius- new maximum radius of the shovel teeth.

◆ setToothMinimumRadius()

void agxTerrain::Shovel::setToothMinimumRadius ( agx::Real  radius)
Parameters
radius- new minimum radius of the shovel teeth.

◆ setTopEdge()

void agxTerrain::Shovel::setTopEdge ( agx::Line  topEdge)

Set the top edge in local space.

Parameters
topEdge- new top edge in local space.

◆ setVerticalBladeSoilMergeDistance()

void agxTerrain::Shovel::setVerticalBladeSoilMergeDistance ( agx::Real  verticalSoilBladeMergeDistance)

Sets the vertical distance under the blade cutting edge that the soil is allowed to instantly merge up to.

Member Data Documentation

◆ m_connectedShovel

Shovel* agxTerrain::Shovel::m_connectedShovel
protected

Definition at line 686 of file Shovel.h.

◆ m_contactThreshold

agx::Real agxTerrain::Shovel::m_contactThreshold
protected

Definition at line 674 of file Shovel.h.

◆ m_cuttingDirection

agx::Vec3 agxTerrain::Shovel::m_cuttingDirection
protected

Definition at line 659 of file Shovel.h.

◆ m_cuttingEdge

agx::Line agxTerrain::Shovel::m_cuttingEdge
protected

Definition at line 657 of file Shovel.h.

◆ m_deadLoadFraction

agx::Real agxTerrain::Shovel::m_deadLoadFraction
protected

Definition at line 678 of file Shovel.h.

◆ m_excavationSettings

std::array< ExcavationSettings, 4 > agxTerrain::Shovel::m_excavationSettings
protected

Definition at line 672 of file Shovel.h.

◆ m_flags

Flags agxTerrain::Shovel::m_flags
protected

Definition at line 669 of file Shovel.h.

◆ m_innerContactArea

agx::Real agxTerrain::Shovel::m_innerContactArea
protected

Definition at line 680 of file Shovel.h.

◆ m_minimumSubmergedContactLengthFraction

agx::Real agxTerrain::Shovel::m_minimumSubmergedContactLengthFraction
protected

Definition at line 666 of file Shovel.h.

◆ m_noMergeExtensionDistance

agx::Real agxTerrain::Shovel::m_noMergeExtensionDistance
protected

Definition at line 664 of file Shovel.h.

◆ m_nTeeth

agx::UInt agxTerrain::Shovel::m_nTeeth
protected

Definition at line 663 of file Shovel.h.

◆ m_particleInclusionMultiplier

agx::Real agxTerrain::Shovel::m_particleInclusionMultiplier
protected

Definition at line 668 of file Shovel.h.

◆ m_secondarySeparationDeadLoadLimit

agx::Real agxTerrain::Shovel::m_secondarySeparationDeadLoadLimit
protected

Definition at line 667 of file Shovel.h.

◆ m_settingsAreDirty

bool agxTerrain::Shovel::m_settingsAreDirty
protected

Definition at line 684 of file Shovel.h.

◆ m_shovelBody

agx::RigidBodyObserver agxTerrain::Shovel::m_shovelBody
protected

Definition at line 656 of file Shovel.h.

◆ m_soilPenetrationParameters

SoilPenetrationParameters agxTerrain::Shovel::m_soilPenetrationParameters
protected

Definition at line 670 of file Shovel.h.

◆ m_toothLength

agx::Real agxTerrain::Shovel::m_toothLength
protected

Definition at line 660 of file Shovel.h.

◆ m_toothMaxRadius

agx::Real agxTerrain::Shovel::m_toothMaxRadius
protected

Definition at line 662 of file Shovel.h.

◆ m_toothMinRadius

agx::Real agxTerrain::Shovel::m_toothMinRadius
protected

Definition at line 661 of file Shovel.h.

◆ m_topEdge

agx::Line agxTerrain::Shovel::m_topEdge
protected

Definition at line 658 of file Shovel.h.

◆ m_verticalContactThreshold

agx::Real agxTerrain::Shovel::m_verticalContactThreshold
protected

Definition at line 675 of file Shovel.h.

◆ m_verticalSoilBladeMergeDistance

agx::Real agxTerrain::Shovel::m_verticalSoilBladeMergeDistance
protected

Definition at line 665 of file Shovel.h.

◆ m_voxelCollisionGeometries

agxCollide::GeometryRefVector agxTerrain::Shovel::m_voxelCollisionGeometries
protected

Definition at line 683 of file Shovel.h.


The documentation for this class was generated from the following file: