AGX Dynamics 2.42.3.0
Loading...
Searching...
No Matches
CollapseSettings.h
Go to the documentation of this file.
1/*
2Copyright 2007-2025. Algoryx Simulation AB.
3
4All AGX source code, intellectual property, documentation, sample code,
5tutorials, scene files and technical white papers, are copyrighted, proprietary
6and confidential material of Algoryx Simulation AB. You may not download, read,
7store, distribute, publish, copy or otherwise disseminate, use or expose this
8material unless having a written signed agreement with Algoryx Simulation AB, or having been
9advised so by Algoryx Simulation AB for a time limited evaluation, or having purchased a
10valid commercial license from Algoryx Simulation AB.
11
12Algoryx Simulation AB disclaims all responsibilities for loss or damage caused
13from using this software, unless otherwise stated in written agreements with
14Algoryx Simulation AB.
15*/
16#pragma once
17
18#include <agx/Referenced.h>
19#include <agx/FrictionModel.h>
21#include <agx/BitState.h>
24
25
26namespace agxTerrain
27{
28 namespace GroundCollapse
29 {
31
32 /*
33 Class that manages settings for the ground collapse algorithm.
34 */
36 {
37 public:
39
40 /*
41 Set the number of points on the lower side of the slope. This affects how many failure surfaces are tested during the ground collapse calculations.
42 \param numAPoints - the desired number of points on the lower side of the slope. Default: 1.
43 */
44 inline void setNumLowerPoints( agx::UInt numLowerPoints ) { m_numLowerPoints = numLowerPoints; };
45 /*
46 Get the number of points on the lower side of the slope. Default: 1.
47 */
48 inline agx::UInt getNumLowerPoints() { return m_numLowerPoints; };
49
50
51 /*
52 Set the number of points on the upper side of the slope. This affects how many failure surfaces are tested during the ground collapse calculations.
53 \param numBPoints - the desired number of points on the upper side of the slope. Default: 1.
54 */
55 inline void setNumUpperPoints( agx::UInt numUpperPoints ) { m_numUpperPoints = numUpperPoints; };
56 /*
57 Get the number of points on the upper side of the slope. Default: 1.
58 */
59 inline agx::UInt getNumUpperPoints() { return m_numUpperPoints; };
60
61 /*
62 Set the number of varied radii for the constructed failure surfaces. Default: 1.
63 \param radiusNumber - the desired number of varying radii.
64 */
65 inline void setRadiusNumber( agx::UInt radiusNumber ) { m_numberOfRadii = radiusNumber; };
66 /*
67 Get the number of varied radii for the constructed failure surfaces. Default: 1.
68 */
69 inline agx::UInt getRadiusNumber() { return m_numberOfRadii; };
70
71 /*
72 Set the contact point configuration of the created wedges.
73 \param pointConfigiration - the contact point configuration of the created wedges. Default: [3, 3, 3].
74 */
75 void setPointConfiguration( const GroundCollapse::PointConfiguration& pointConfiguration );
76
77 /*
78 Set the simulation frequency by the ground collapse simulation.
79 \param simulationFrequency - the simulation frequency that should be used by the ground collapse simulation. Default: 60 Hz.
80 */
81 void setSimulationFrequency(agx::Real simulationFrequency);
82
83 /*
84 Get the contact point configuration of the created wedges. Default: [3, 3, 3].
85 */
86 GroundCollapse::PointConfiguration getPointConfiguration() const;
87
88 /*
89 Set the shrink factor used during contact generation between the soil aggregate and the terrain. Default: [0.125, 0.125].
90 \param contactShrinkFactor - the shrink factor to use during contact generation.
91 */
92 void setContactShrinkFactor( const agx::Vec2& contactShrinkFactor );
93
94 /*
95 \return the shrink factor used during contact generation. Default: [0.125, 0.125].
96 */
98
99 /*
100 Set the fraction of the upper point span which offsets the zone in the reverse
101 slope direction, to ensure all contacts are included.
102 \param offsetFraction - the fraction to offset the zone by. Default: 0.1.
103 */
104 void setUpperPointSpanOffset( agx::Real offsetFraction );
105
106 /*
107 \return the fraction of the upper point span which offsets the zone in the reverse
108 slope direction, to ensure all contacts are included. Default: 0.1.
109 */
111
112 /*
113 Set the offset fraction from the slope start where the lower points on the slope will start to be generated from.
114 The lower points will be generated from the starting point on the slope calculated as: start = \p offset * ( slopesUpperEndPoint - slopesLowerEndPoint)
115 \param offset - the desired offset for the generation of the slope lower points. Default: 0.25.
116 */
118
119 /*
120 Get the offset from the slope start where the lower points on the slope will start to be generated from.
121 The lower points will be generated from the starting point on the slope calculated as: start = \p offset * ( slopesUpperEndPoint - slopesLowerEndPoint)
122 \return the lower points offset. Default: 0.25.
123 */
125
126 /*
127 Set the scale factor to modify the length span where the lower points will be located on the slope.
128 \param scaleFactor - the fraction to increase the slope length. Default: 1.25.
129 */
131
132 /*
133 \return the scale factor of the length span where the lower points will be located on the slope. Default: 1.25.
134 */
136
137 /*
138 Set the number of intersection points used to determine the intersection of the
139 failure surface in the terrain when constructing the aggregate contact system.
140 \param numIntersectionPoints - the number of intersection points to use in the failure surface <-> terrain intersection test. Default: 100.
141 */
142 inline void setNumIntersectionPoints( agx::UInt numIntersectionPoints ) { m_numIntersectionPoints = numIntersectionPoints; };
143
144 /*
145 Get the number of intersection points used to determine the intersection of the
146 failure surface in the terrain when constructing the aggregate contact system. Default: 100.
147 */
148 inline agx::UInt getNumIntersectionPoints() { return m_numIntersectionPoints; };
149
150 /*
151 Set the acceleration threshold for failure surfaces.
152 \param threshold - acceleration threshold to use. Default: 0.1.
153 */
155
156 /*
157 \return the acceleration threshold used for failure surface. Default: 0.1.
158 */
160
161 /*
162 Set the contact viscosity for the soil aggregate contacts.
163 \param viscosity- viscosity to use in aggregate contacts. Default: 1E-12.
164 */
166
167 /*
168 Set the solve type for the soil aggregate contacts.
169 \param setSolveType - enum value signifying which solveType should be used in the aggregate contacts. Default: agx::FrictionModel::SolveType::ITERATIVE.
170 */
172
173 /*
174 \return the contact viscosity for the soil aggregate contacts. Default: 1E-12.
175 */
177
178 /*
179 Set whether the algorithm should stop after it finds a failure surface that fails.
180 Note: Only used for serial ground collapse simulation!
181 \param shouldStop - if the ground collapse simulation should stop or continue after
182 it has found a failed failure surface. Default: false.
183 */
184 void setShouldStopAfterFirstFailure( bool shouldStop );
185
186 /*
187 Note: Only used for serial ground collapse simulation!
188 \return if the ground collapse simulation stops after the first failure surface is found. Default: false.
189 */
191
192 /*
193 Set whether the critical failure surface should collapse into dynamic mass or not.
194 \param enable - true for enabling ground collapse to dynamic mass, false for disabled. Default: false.
195 */
196 void setEnableDynamicCollapse( bool enable );
197
198 /*
199 \return true if ground collapse will be turned to dynamic mass, false if not. Default: false.
200 */
202
203 /*
204 Enable whether results should be saved for all substeps.
205 \param enable - true for enabling saving substep results. Default: false.
206 */
207 void setEnableSubStepResults(bool enable);
208
209 /*
210 Get whether results should are saved for all substeps or not. Default: false.
211 */
213
214 /*
215 \return the number of simulation substeps used by the ground collapse simulation. Default: 1.
216 */
217 inline agx::UInt getNumSimulationSubsteps() { return m_numSimulationSubSteps; };
218
219 /*
220 Set the number of simulation substeps used by the ground collapse simulation.
221 \param numSimulationSubsteps - how many substeps the ground collapse simulation will use. Default: 1.
222 */
223 inline void setNumSimulationSubsteps( agx::UInt numSimulationSubSteps ) { m_numSimulationSubSteps = numSimulationSubSteps; };
224
225 /*
226 \return the freuqency used by the ground collapse simulation. Default: 60 Hz.
227 */
228 inline agx::Real getSimulationFrequency() { return m_simulationFrequency; };
229
230 /*
231 \return which friction model is used by the ground collapse simulation. Default: agx::FrictionModel::SolveType::ITERATIVE.
232 */
234
235 /*
236 Set whether a custom contact material should be used between soil aggregate <-> terrain
237 in the ground collapse simulation. Set the custom contact material with
238 `setCustomContactMaterial`. Default: false.
239 \param enable - true for enabling custom contact material, false otherwise.
240 */
241 void setUseCustomContactMaterial( bool enable );
242
243 /*
244 \return true if a custom contact material should be used between soil
245 aggregate <-> terrain in the ground collapse simulation. False otherwise. Default: false.
246 */
248
249 /*
250 Set whether parallel solve of the test failure surfaces should be enabled/disabled. If enabled,
251 all failure surfaces will be created and solved in parallel. If disabled, they will be serially
252 constructed and solved.
253 \param enable - true for enabling parallel solve. False for disable. Default: true.
254 */
255 void setEnableParallelSolve( bool enable );
256
257 /*
258 \return true if parallel solve is enabled, false if disabled. Default: true.
259 */
261
262 /*
263 Set whether custom user supplied failure surfaces should be used in the ground collapse simulation.
264 \param enable - true if the custom failure surfaces should be used. Default: false.
265 */
266 void setUseCustomFailureSurfaces( bool enable );
267
268 /*
269 \return true if custom user supplied failure surfaces are used in the ground collapse simulation.
270 False if they are not used. Default: false.
271 */
273
274 /*
275 Sets if the slope contacts should be represented as holonomic constraints.
276 \param enable - true if the contacts should be holonomic constraints, false otherwise. Default: False
277 */
278 void setUseHolonomicContacts( bool enable );
279
280 /*
281 \return true if the contacts should be holonomic constraints, false otherwise. Default: False
282 */
284
285 /*
286 Set a custom contact material to use between soil aggregate <-> terrain in the ground collapse simulation.
287 To be used, must also be enabled via `setUseCustomContactMaterial`.
288 \param cm - the custom contact material.
289 */
291
292 /*
293 \return the custom contact material which is used if `getUseCustomContactMaterial` is true.
294 */
296
298 {
299 USE_CUSTOM_CONTACT_MATERIAL = 1 << 0,
300 STOP_AFTER_FIRST_FAILURE = 1 << 1,
301 SHOULD_COLLAPSE_SOIL = 1 << 2,
302 SHOULD_SAVE_SUBSTEP_RESULTS = 1 << 3,
303 ENABLE_PARALLEL_SOLVE = 1 << 4,
304 USE_CUSTOM_SURFACES = 1 << 5,
305 USE_HOLONOMIC_CONTACTS= 1 << 6
306 };
307 using Flags = agx::BitState<StateFlags, agx::UInt32>;
308 public:
310
311 private:
312 Flags m_flags;
313 agx::UInt m_numLowerPoints;
314 agx::UInt m_numUpperPoints;
315 agx::UInt m_numberOfRadii;
316 agx::Real m_lowerPointSpanScaleFactor;
317 agx::Real m_searchZoneOffsetFraction;
318 agx::Real m_lowerPointsOffset;
319
320 agx::Real m_simulationFrequency;
321 agx::UInt m_numSimulationSubSteps;
322
323 agx::UInt m_numIntersectionPoints;
324 agx::Vec2 m_contactShrinkFactor;
325 PointConfiguration m_pointConfiguration;
326 agx::Real m_aggregateLinearAccelerationThreshold;
327 agx::Real m_aggregateContactSurfaceViscosity;
329 agx::ContactMaterialRef m_customMaterial;
330 };
331
333
334 AGX_DECLARE_POINTER_TYPES(SlopeDetectionSettings);
335 /*
336 Class for handling settings for the slope detection algorithm. The slope detection works so that it creates an
337 average mid point of all the terrain contacts inside the ground collapse zone, and then projects a number of
338 rays in a 360- degree sweep around the mid point. The rays are then discretized by a number of points along each ray.
339 Each ray is then examined to see if they contain a slope.
340
341 The settings can configure the number of rays around the mid point, the length of the rays from the mid point, and how many
342 points are discretized along the rays.
343 */
344 class AGXTERRAIN_EXPORT SlopeDetectionSettings : public agx::Referenced, public agxStream::Serializable
345 {
346 public:
347 SlopeDetectionSettings();
348
349 /*
350 Set the length of each ray in the slope detection algorithm from the force weighted mid point in the collapse zone.
351 \param lineLength - the lenght of the rays. Default: 25.
352 */
353 inline void setSlopeLineLength(agx::Real lineLength) { m_slopeLineLength = lineLength; };
354
355 /*
356 Get the length of the rays used in the slope detection algorithm. Default: 25.
357 */
358 inline agx::Real getSlopeLineLength() { return m_slopeLineLength; };
359
360 /*
361 Set the number of points used to discretize each ray in the slope detection algorithm.
362 \param numSlopePoints - the number of points along each ray. Default: 100.
363 */
364 inline void setNumSlopePoints(agx::UInt numSlopePoints) { m_numSlopePoints = numSlopePoints; };
365 /*
366 Get the number of points used to discretize each ray in the slope detection algorithm. Default: 100.
367 */
368 inline agx::UInt getNumSlopePoints() { return m_numSlopePoints; };
369
370 /*
371 Set the number of rays used to project outwards from the force weighted mid point in the collapse zone.
372 \param numSlopeRays - the number of rays used in the slope dectection algorithm. Default: 40.
373 */
374 inline void setNumSlopeRays(agx::UInt numSlopeRays) { m_numSlopeRays = numSlopeRays; };
375
376 /*
377 Get the number of rays used to project outwards from the force weighted mid point in the collapse zone. Default: 40.
378 */
379 inline agx::UInt getNumSlopeRays() { return m_numSlopeRays; };
380
381 AGXSTREAM_DECLARE_SERIALIZABLE(agxTerrain::GroundCollapse::SlopeDetectionSettings)
382
383 private:
384 agx::Real m_slopeLineLength;
385 agx::UInt m_numSlopePoints;
386 agx::UInt m_numSlopeRays;
387 };
389
390
392 /*
393 Class that handles render settings for the slope detection and ground collapse algorithm.
394 */
395 class AGXTERRAIN_EXPORT CollapseRenderSettings : public agx::Referenced, public agxStream::Serializable
396 {
397 public:
399
400 /*
401 Enable or disable debug graphics related to slope detection. Default: false.
402 */
403 void setEnableRenderSlopeDetection( bool enable ) { m_flags.update( StateFlags::RENDER_SLOPE_DETECTION, enable ); }
404
405 /*
406 \return if debug graphics related to slope detection are enabled or disabled. Default: false.
407 */
408 bool getEnableRenderSlopeDetection() const { return m_flags.Is( StateFlags::RENDER_SLOPE_DETECTION ); }
409
410 /*
411 Enable or disable debug graphics related to steepest slope data. Default: false.
412 */
413 void setEnableRenderSteepestSlopeData( bool enable ) { m_flags.update( StateFlags::RENDER_STEEPEST_SLOPE_DATA, enable ); }
414
415 /*
416 \return if debug graphics related to steepest slope data are enabled or disabled. Default: false.
417 */
418 bool getEnableRenderSteepestSlopeData() const { return m_flags.Is( StateFlags::RENDER_STEEPEST_SLOPE_DATA ); }
419
420 /*
421 Enable or disable debug graphics of the divided segments on the test failure surfaces. Default: false.
422 */
423 void setEnableRenderSurfaceIntersectionTest( bool enable ) { m_flags.update( StateFlags::RENDER_SURFACE_TERRAIN_INTERSECTION_TEST, enable ); }
424
425 /*
426 \return if debug graphics of the divided segments on the test failure surfaces is enabled or disabled. Default: false.
427 */
428 bool getEnableRenderSurfaceIntersectionTest() const { return m_flags.Is( StateFlags::RENDER_SURFACE_TERRAIN_INTERSECTION_TEST ); }
429
430 /*
431 Enable or disable debug graphics of the generated contacts between the failure surface <-> terrain. Default: false.
432 */
433 void setEnableRenderAllSurfaceContacts( bool enable ) { m_flags.update( StateFlags::RENDER_ALL_SURFACE_CONTACTS, enable ); }
434
435 /*
436 \return if debug graphics of the generated contacts between the failure surface <-> terrain are enabled or disabled. Default: false.
437 */
438 bool getEnableRenderAllSurfaceContacts() const { return m_flags.Is( StateFlags::RENDER_ALL_SURFACE_CONTACTS ); }
439
440 /*
441 \return if debug graphics of the generated contacts of failed failure surfaces are enabled or disabled. Default: false.
442 */
443 bool getEnableRenderFailedSurfaceContacts() const { return m_flags.Is( StateFlags::RENDER_FAILED_SURFACE_CONTACTS ); }
444
445 /*
446 Enable or disable debug graphics of the generated contacts in failed failure surfaces. Default: false.
447 */
448 void setEnableRenderFailedSurfaceContacts( bool enable ) { m_flags.update( StateFlags::RENDER_FAILED_SURFACE_CONTACTS, enable ); }
449
453 void setEnableColorContactsFromFos( bool enable ) { m_flags.update( StateFlags::COLOR_CONTACTS_FROM_FOS, enable ); }
454
458 bool getEnableColorContactsFromFos() const { return m_flags.Is( StateFlags::COLOR_CONTACTS_FROM_FOS ); }
459
460 /*
461 Set the renderable size for the surface contacts. Default: 0.05.
462 */
463 void setRenderContactSize( agx::Real size ) { m_renderContactSize = size; }
464
465 /*
466 Get the renderable size for the surface contacts. Default: 0.05.
467 */
468 agx::Real getRenderContactSize() const { return m_renderContactSize; }
469
470 /*
471 Enable or disable debug graphics of failed failure surfaces. Default: false.
472 */
473 void setEnableRenderCriticalSurface( bool enable ) { m_flags.update( StateFlags::RENDER_FAILED_SURFACES, enable ); }
474
475 /*
476 \return if debug graphics of failed failure surfaces is enabled or disabled. Default: false.
477 */
478 bool getEnableRenderCriticalSurface() const { return m_flags.Is( StateFlags::RENDER_FAILED_SURFACES ); }
479
480 /*
481 Enable or disable debug graphics of failed failure surfaces. Default: false.
482 */
483 void setEnableRenderFailedSurfaces( bool enable ) { m_flags.update( StateFlags::RENDER_FAILED_SURFACES, enable ); }
484
485 /*
486 \return if debug graphics of failed failure surfaces is enabled or disabled. Default: false.
487 */
488 bool getEnableRenderFailedSurfaces() const { return m_flags.Is( StateFlags::RENDER_FAILED_SURFACES ); }
489
490 /*
491 Enable or disable debug graphics of all failure surfaces. Default: false.
492 */
493 void setEnableRenderAllSurfaces( bool enable ) { m_flags.update( StateFlags::RENDER_ALL_SURFACES, enable ); }
494
495 /*
496 \return if the debug graphics of all failure surfaces is enabled or disabled. Default: false.
497 */
498 bool getEnableRenderAllSurfaces() const { return m_flags.Is( StateFlags::RENDER_ALL_SURFACES ); }
499
500 /*
501 Enable or disable debug graphics of points along the failure surface. Default: false.
502 */
503 void setEnableRenderSurfacePoints( bool enable ) { m_flags.update( StateFlags::RENDER_SURFACE_POINTS, enable ); }
504
505 /*
506 return if deubug graphics of points along the failure surface is enabled or disabled. Default: false.
507 */
508 bool getEnableRenderSurfacePoints() const { return m_flags.Is( StateFlags::RENDER_SURFACE_POINTS ); }
509
510 /*
511 Enable or disable debug graphics of the contact partitioning. Default: false.
512 */
513 void setEnableRenderContactPartitioning( bool enable ) { m_flags.update( StateFlags::RENDER_CONTACT_PARTITIONING, enable ); }
514
515 /*
516 \return if debug graphics of the contact partitioning is enabled or disabled. Default: false.
517 */
518 bool getEnableRenderContactPartitioning() const { return m_flags.Is( StateFlags::RENDER_CONTACT_PARTITIONING ); }
519
520 /*
521 Enable or disable debug graphics aggregate mass voxels. Default: false.
522 */
523 void setEnableRenderAggregateMassVoxels( bool enable ) { m_flags.update( StateFlags::RENDER_AGGREGATE_MASS_VOXELS, enable ); }
524
525 /*
526 Enable or disable debug graphics aggregate mass voxels. Default: false.
527 */
528 bool getEnableRenderAggregateMassVoxels() { return m_flags.Is( StateFlags::RENDER_AGGREGATE_MASS_VOXELS ); }
529
530 /*
531 Enable or disable debug graphics aggregate mass voxels. Default: false.
532 */
533 void setEnableRenderAggregateBorderVoxels( bool enable ) { m_flags.update( StateFlags::RENDER_AGGREGATE_BORDER_VOXELS, enable ); }
534
535 /*
536 Enable or disable debug graphics aggregate mass voxels. Default: false.
537 */
538 bool getEnableRenderAggregateBorderVoxels() { return m_flags.Is( StateFlags::RENDER_AGGREGATE_BORDER_VOXELS ); }
539
541 {
542 RENDER_SLOPE_DETECTION = 1 << 0,
543 RENDER_STEEPEST_SLOPE_DATA = 1 << 1,
544 RENDER_STEEPEST_SLOPE = 1 << 2,
545 RENDER_SLOPE_START_END_POINT = 1 << 3,
546 RENDER_SURFACE_TERRAIN_INTERSECTION_TEST = 1 << 4,
547 RENDER_ALL_SURFACE_CONTACTS = 1 << 5,
548 RENDER_FAILED_SURFACE_CONTACTS = 1 << 6,
549 COLOR_CONTACTS_FROM_FOS = 1 << 7,
550 RENDER_ALL_SURFACES = 1 << 8,
551 RENDER_FAILED_SURFACES = 1 << 9,
552 RENDER_CRITICAL_SURFACE = 1 << 10,
553 RENDER_SURFACE_POINTS = 1 << 11,
554 RENDER_CONTACT_PARTITIONING = 1 << 12,
555 RENDER_AGGREGATE_MASS_VOXELS = 1 << 13,
556 RENDER_AGGREGATE_BORDER_VOXELS = 1 << 14
557 };
558 using Flags = agx::BitState<StateFlags, agx::UInt32>;
559
563 protected:
565
566 protected:
567 Flags m_flags;
568 agx::Real m_renderContactSize;
569 };
570 }
571}
#define AGX_DECLARE_POINTER_TYPES(type)
Definition: Referenced.h:254
#define AGXSTREAM_DECLARE_SERIALIZABLE(T)
Use this in a Serializable class to add the required methods Important: Use full namespace in the dec...
Definition: Serializable.h:207
#define AGXTERRAIN_EXPORT
This class is an abstract base class for all classes that can be stored and retrieved from an Archive...
Definition: Serializable.h:44
agx::BitState< StateFlags, agx::UInt32 > Flags
void setEnableColorContactsFromFos(bool enable)
Enable or disable if contacts should be colored according to their factor of saftey.
void setLinearAccelerationThreshold(agx::Real threshold)
void setRadiusNumber(agx::UInt radiusNumber)
void setNumSimulationSubsteps(agx::UInt numSimulationSubSteps)
void setPointConfiguration(const GroundCollapse::PointConfiguration &pointConfiguration)
void setContactShrinkFactor(const agx::Vec2 &contactShrinkFactor)
agx::FrictionModel::SolveType getSolveType() const
void setUpperPointSpanOffset(agx::Real offsetFraction)
agx::ContactMaterial * getCustomContactMaterial() const
void setLowerPointSpanScaleFactor(agx::Real scaleFactor)
void setAggregateContactViscosity(agx::Real viscosity)
void setSolveType(agx::FrictionModel::SolveType setSolveType)
void setNumLowerPoints(agx::UInt numLowerPoints)
GroundCollapse::PointConfiguration getPointConfiguration() const
void setCustomContactMaterial(agx::ContactMaterial *cm)
void setLowerPointSpanOffset(agx::Real offset)
void setNumIntersectionPoints(agx::UInt numIntersectionPoints)
void setSimulationFrequency(agx::Real simulationFrequency)
void setShouldStopAfterFirstFailure(bool shouldStop)
void setNumUpperPoints(agx::UInt numUpperPoints)
agx::BitState< StateFlags, agx::UInt32 > Flags
This class store the combine material properties between two agx::Material's.
Definition: Material.h:518
Base class providing referencing counted objects.
Definition: Referenced.h:120
#define DOXYGEN_END_INTERNAL_BLOCK()
Definition: macros.h:89
#define DOXYGEN_START_INTERNAL_BLOCK()
Definition: macros.h:88
This namespace contain classes for streaming classes into archives, ASCII, binary for storage (serial...
The agxTerrain namespace contains a 3D model for a dynamic deformable Terrain and related classes.
Definition: Geometry.h:59
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
uint32_t UInt32
Definition: Integer.h:32
uint64_t UInt
Definition: Integer.h:27
double Real
Definition: Real.h:41