526 lines
25 KiB
C++
526 lines
25 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "MujocoOptions.generated.h"
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EMujocoAngle : uint8
|
|
{
|
|
Degree UMETA(DisplayName = "Degree"),
|
|
Radian UMETA(DisplayName = "Radian")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EMujocoIntegrator : uint8
|
|
{
|
|
Implicit UMETA(DisplayName = "Implicit"),
|
|
ImplicitFast UMETA(DisplayName = "ImplicitFast"),
|
|
Euler UMETA(DisplayName = "Euler"),
|
|
RK4 UMETA(DisplayName = "RK4"),
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EMujocoSolver : uint8
|
|
{
|
|
PGS UMETA(DisplayName = "PGS"),
|
|
CG UMETA(DisplayName = "CG"),
|
|
Newton UMETA(DisplayName = "Newton")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EMujocoConeType : uint8
|
|
{
|
|
Pyramidal UMETA(DisplayName = "Pyramidal"),
|
|
Elliptic UMETA(DisplayName = "Elliptic")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EMujocoJacobian : uint8
|
|
{
|
|
Dense UMETA(DisplayName = "Dense"),
|
|
Sparse UMETA(DisplayName = "Sparse"),
|
|
Auto UMETA(DisplayName = "Auto")
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EMujocoFlagState : uint8
|
|
{
|
|
Disable UMETA(DisplayName = "Disable"),
|
|
Enable UMETA(DisplayName = "Enable")
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct LUCKYMUJOCO_API FMujocoSimulationFlags
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
/** Constraint solver computations */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideConstraint = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "constraint", EditCondition = "bOverrideConstraint"))
|
|
EMujocoFlagState Constraint = EMujocoFlagState::Enable;
|
|
|
|
/** Equality constraints */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideEquality = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "equality", EditCondition = "bOverrideEquality"))
|
|
EMujocoFlagState Equality = EMujocoFlagState::Enable;
|
|
|
|
/** Friction loss constraints */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideFrictionLoss = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "frictionloss", EditCondition = "bOverrideFrictionLoss"))
|
|
EMujocoFlagState FrictionLoss = EMujocoFlagState::Enable;
|
|
|
|
/** Joint and tendon limit constraints */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideLimit = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "limit", EditCondition = "bOverrideLimit"))
|
|
EMujocoFlagState Limit = EMujocoFlagState::Enable;
|
|
|
|
/** Contact constraints and collision detection */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideContact = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "contact", EditCondition = "bOverrideContact"))
|
|
EMujocoFlagState Contact = EMujocoFlagState::Enable;
|
|
|
|
/** Passive forces (spring-dampers, fluid, custom forces) */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverridePassive = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "passive", EditCondition = "bOverridePassive"))
|
|
EMujocoFlagState Passive = EMujocoFlagState::Enable;
|
|
|
|
/** Gravity effects */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideGravity = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "gravity", EditCondition = "bOverrideGravity"))
|
|
EMujocoFlagState Gravity = EMujocoFlagState::Enable;
|
|
|
|
/** Actuator forces and dynamics */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideActuation = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "actuation", EditCondition = "bOverrideActuation"))
|
|
EMujocoFlagState Actuation = EMujocoFlagState::Enable;
|
|
|
|
/** Safety mechanism for small solref[0] values */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideRefSafe = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "refsafe", EditCondition = "bOverrideRefSafe"))
|
|
EMujocoFlagState RefSafe = EMujocoFlagState::Enable;
|
|
|
|
/** Sensor computations */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideSensor = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "sensor", EditCondition = "bOverrideSensor"))
|
|
EMujocoFlagState Sensor = EMujocoFlagState::Enable;
|
|
|
|
/** Computation of kinetic and potential energy */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideEnergy = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "energy", EditCondition = "bOverrideEnergy"))
|
|
EMujocoFlagState Energy = EMujocoFlagState::Disable;
|
|
|
|
/** Forward-inverse dynamics comparison */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideFwdInv = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "fwdinv", EditCondition = "bOverrideFwdInv"))
|
|
EMujocoFlagState FwdInv = EMujocoFlagState::Disable;
|
|
|
|
/** Multiple-contact detection (experimental) */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideMultiCCD = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "multiccd", EditCondition = "bOverrideMultiCCD"))
|
|
EMujocoFlagState MultiCCD = EMujocoFlagState::Disable;
|
|
|
|
/** Constraint island discovery */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideIsland = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "island", EditCondition = "bOverrideIsland"))
|
|
EMujocoFlagState Island = EMujocoFlagState::Disable;
|
|
|
|
/** Native convex collision detection */
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (InlineEditConditionToggle))
|
|
bool bOverrideNativeCCD = false;
|
|
|
|
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Flags", meta = (Attribute = "nativeccd", EditCondition = "bOverrideNativeCCD"))
|
|
EMujocoFlagState NativeCCD = EMujocoFlagState::Disable;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct LUCKYMUJOCO_API FMujocoCompileOptions
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
/** Override AutoLimits setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideAutoLimits = false;
|
|
|
|
/** Automatically infer limits based on range attributes. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "autolimits", EditCondition = "bOverrideAutoLimits"))
|
|
bool AutoLimits = true;
|
|
|
|
/** Override BoundMass setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideBoundMass = false;
|
|
|
|
/** Lower bound on the mass of each body except the world body. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "boundmass", EditCondition = "bOverrideBoundMass"))
|
|
float BoundMass = 0.0f;
|
|
|
|
/** Override BoundInertia setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideBoundInertia = false;
|
|
|
|
/** Lower bound on diagonal inertia components except for the world body. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "boundinertia", EditCondition = "bOverrideBoundInertia"))
|
|
float BoundInertia = 0.0f;
|
|
|
|
/** Override SetTotalMass setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideSetTotalMass = false;
|
|
|
|
/** Scale the model's total mass to the specified value (-1 disables). */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "settotalmass", EditCondition = "bOverrideSetTotalMass"))
|
|
float SetTotalMass = -1.0f;
|
|
|
|
/** Override BalanceInertia setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideBalanceInertia = false;
|
|
|
|
/** Automatically corrects invalid diagonal inertia matrices. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "balanceinertia", EditCondition = "bOverrideBalanceInertia"))
|
|
bool BalanceInertia = false;
|
|
|
|
/** Override StripPath setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideStripPath = false;
|
|
|
|
/** Removes path information from file names. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "strippath", EditCondition = "bOverrideStripPath"))
|
|
bool StripPath = false;
|
|
|
|
/** Specifies whether angles are expressed in degrees or radians. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "angle"))
|
|
EMujocoAngle AngleUnits = EMujocoAngle::Radian;
|
|
|
|
/** Override FitAABB setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideFitAABB = false;
|
|
|
|
/** Fit mesh to an axis-aligned bounding box (AABB) when replacing with primitives. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "fitaabb", EditCondition = "bOverrideFitAABB"))
|
|
bool FitAABB = false;
|
|
|
|
/** Override Euler sequence setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideEulerSequence = false;
|
|
|
|
/** Specifies the Euler rotation sequence (e.g., "xyz", "XYZ"). */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "eulerseq", EditCondition = "bOverrideEulerSequence"))
|
|
FString EulerSequence = TEXT("xyz");
|
|
|
|
/** Override Mesh Directory setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideMeshDir = false;
|
|
|
|
/** Directory where the compiler looks for mesh and height field files. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "meshdir", EditCondition = "bOverrideMeshDir"))
|
|
FString MeshDir = "meshes";
|
|
|
|
/** Override Texture Directory setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideTextureDir = false;
|
|
|
|
/** Directory where the compiler looks for texture files. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "texturedir", EditCondition = "bOverrideTextureDir"))
|
|
FString TextureDir = "textures";
|
|
|
|
/** Sets both MeshDir and TextureDir. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "assetdir"))
|
|
FString AssetDir = "assets";
|
|
|
|
/** Override DiscardVisual setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideDiscardVisual = false;
|
|
|
|
/** Discard purely visual elements when compiling the model. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "discardvisual", EditCondition = "bOverrideDiscardVisual"))
|
|
bool DiscardVisual = false;
|
|
|
|
/** Override UseThread setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideUseThread = false;
|
|
|
|
/** Enable multi-threaded compilation. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "usethread", EditCondition = "bOverrideUseThread"))
|
|
bool UseThread = true;
|
|
|
|
/** Override FuseStatic setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideFuseStatic = false;
|
|
|
|
/** Fuse static bodies with their parents to optimize simulation. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "fusestatic", EditCondition = "bOverrideFuseStatic"))
|
|
bool FuseStatic = false;
|
|
|
|
/** Override InertiaFromGeom setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideInertiaFromGeom = false;
|
|
|
|
/** Controls automatic inference of body masses and inertias from geoms. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "inertiafromgeom", EditCondition = "bOverrideInertiaFromGeom"))
|
|
bool InertiaFromGeom = true;
|
|
|
|
/** Override AlignFree setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideAlignFree = false;
|
|
|
|
/** Aligns free joint frames with the inertial frame. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "alignfree", EditCondition = "bOverrideAlignFree"))
|
|
bool AlignFree = false;
|
|
|
|
/** Override InertiaGroupRange setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (InlineEditConditionToggle))
|
|
bool bOverrideInertiaGroupRange = false;
|
|
|
|
/** Range of geom groups used to infer body masses and inertias. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Compiler", meta = (Attribute = "inertiagrouprange", EditCondition = "bOverrideInertiaGroupRange"))
|
|
FIntPoint InertiaGroupRange = FIntPoint(0, 5);
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct LUCKYMUJOCO_API FMujocoOptions
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
/** Override TimeStep setting. When enabled, the default value (0.001) is applied. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideTimeStep = false;
|
|
|
|
/** Simulation time step in seconds. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "timestep", EditCondition = "bOverrideTimeStep", ClampMin = 0.0001, ClampMax = 0.01, UIMin = 0.0001, UIMax = 0.01))
|
|
float TimeStep = 0.001f; // Default to 1ms
|
|
|
|
/** Override API Rate setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideApiRate = false;
|
|
|
|
/** API update rate in Hz. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "apirate", EditCondition = "bOverrideApiRate"))
|
|
float ApiRate = 100.0f;
|
|
|
|
/** Override ImpRatio setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideImpRatio = false;
|
|
|
|
/** Ratio of frictional-to-normal constraint impedance. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "impratio", EditCondition = "bOverrideImpRatio"))
|
|
float ImpRatio = 1.0f;
|
|
|
|
/** Override Gravity setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideGravity = false;
|
|
|
|
/** Gravitational acceleration vector. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "gravity", EditCondition = "bOverrideGravity"))
|
|
FVector Gravity = FVector(0.0f, 0.0f, -9.81f);
|
|
|
|
/** Override Wind setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideWind = false;
|
|
|
|
/** Velocity vector of the surrounding medium, simulating wind effects. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "wind", EditCondition = "bOverrideWind"))
|
|
FVector Wind = FVector(0.0f, 0.0f, 0.0f);
|
|
|
|
/** Override Magnetic setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideMagnetic = false;
|
|
|
|
/** Global magnetic flux vector. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "magnetic", EditCondition = "bOverrideMagnetic"))
|
|
FVector Magnetic = FVector(0.0f, -0.5f, 0.0f);
|
|
|
|
/** Override Density setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideDensity = false;
|
|
|
|
/** Density of the medium, affecting lift and drag forces. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "density", EditCondition = "bOverrideDensity"))
|
|
float Density = 0.0f;
|
|
|
|
/** Override Viscosity setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideViscosity = false;
|
|
|
|
/** Viscosity of the medium, affecting viscous forces. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "viscosity", EditCondition = "bOverrideViscosity"))
|
|
float Viscosity = 0.0f;
|
|
|
|
/** Override Contact Margin setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideMarginOverride = false;
|
|
|
|
/** Contact margin override when enabled. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "o_margin", EditCondition = "bOverrideMarginOverride"))
|
|
float MarginOverride = 0.0f;
|
|
|
|
/** Override Integrator setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideIntegrator = false;
|
|
|
|
/** Constraint solver integration method. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "integrator", EditCondition = "bOverrideIntegrator"))
|
|
EMujocoIntegrator Integrator = EMujocoIntegrator::Euler;
|
|
|
|
/** Override ConeType setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideConeType = false;
|
|
|
|
/** Contact friction cone type. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "cone", EditCondition = "bOverrideConeType"))
|
|
EMujocoConeType ConeType = EMujocoConeType::Pyramidal;
|
|
|
|
/** Override JacobianType setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideJacobianType = false;
|
|
|
|
/** Constraint Jacobian type. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "jacobian", EditCondition = "bOverrideJacobianType"))
|
|
EMujocoJacobian JacobianType = EMujocoJacobian::Auto;
|
|
|
|
/** Override Solver setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideSolver = false;
|
|
|
|
/** Solver algorithm for constraint resolution. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "solver", EditCondition = "bOverrideSolver"))
|
|
EMujocoSolver Solver = EMujocoSolver::Newton;
|
|
|
|
/** Override MaxIterations setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideMaxIterations = false;
|
|
|
|
/** Maximum number of solver iterations. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "iterations", EditCondition = "bOverrideMaxIterations"))
|
|
int32 MaxIterations = 100;
|
|
|
|
/** Override SolverTolerance setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideSolverTolerance = false;
|
|
|
|
/** Solver termination tolerance. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "tolerance", EditCondition = "bOverrideSolverTolerance"))
|
|
float SolverTolerance = 1e-8f;
|
|
|
|
/** Override LineSearchIterations setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideLineSearchIterations = false;
|
|
|
|
/** Maximum number of linesearch iterations performed by CG/Newton constraint solvers. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "ls_iterations", EditCondition = "bOverrideLineSearchIterations"))
|
|
int32 LineSearchIterations = 50;
|
|
|
|
/** Override LineSearchTolerance setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideLineSearchTolerance = false;
|
|
|
|
/** Tolerance threshold used for early termination of the linesearch algorithm. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "ls_tolerance", EditCondition = "bOverrideLineSearchTolerance"))
|
|
float LineSearchTolerance = 0.01f;
|
|
|
|
/** Override NoSlipIterations setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideNoSlipIterations = false;
|
|
|
|
/** Maximum number of iterations of the Noslip solver. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "noslip_iterations", EditCondition = "bOverrideNoSlipIterations"))
|
|
int32 NoSlipIterations = 0;
|
|
|
|
/** Override NoSlipTolerance setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideNoSlipTolerance = false;
|
|
|
|
/** Tolerance threshold used for early termination of the Noslip solver. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "noslip_tolerance", EditCondition = "bOverrideNoSlipTolerance"))
|
|
float NoSlipTolerance = 1e-6f;
|
|
|
|
/** Override CCDIterations setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideCCDIterations = false;
|
|
|
|
/** Maximum number of iterations of the algorithm used for convex collisions. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "ccd_iterations", EditCondition = "bOverrideCCDIterations"))
|
|
int32 CCDIterations = 50;
|
|
|
|
/** Override CCDTolerance setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideCCDTolerance = false;
|
|
|
|
/** Tolerance threshold used for early termination of the convex collision algorithm. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "ccd_tolerance", EditCondition = "bOverrideCCDTolerance"))
|
|
float CCDTolerance = 1e-6f;
|
|
|
|
/** Override SDFIterations setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideSDFIterations = false;
|
|
|
|
/** Number of iterations used for Signed Distance Field collisions (per initial point). */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "sdf_iterations", EditCondition = "bOverrideSDFIterations"))
|
|
int32 SDFIterations = 10;
|
|
|
|
/** Override SDFInitPoints setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideSDFInitPoints = false;
|
|
|
|
/** Number of starting points used for finding contacts with Signed Distance Field collisions. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "sdf_initpoints", EditCondition = "bOverrideSDFInitPoints"))
|
|
int32 SDFInitPoints = 40;
|
|
|
|
/** Override ActuatorGroupDisable setting. */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (InlineEditConditionToggle))
|
|
bool bOverrideActuatorGroupDisable = false;
|
|
|
|
/** Actuator groups to disable (bitfield representation). */
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco", meta = (Attribute = "actuatorgroupdisable", EditCondition = "bOverrideActuatorGroupDisable"))
|
|
int32 ActuatorGroupDisable = 0;
|
|
};
|
|
|
|
UCLASS(BlueprintType, EditInlineNew, DefaultToInstanced, config = Game)
|
|
class LUCKYMUJOCO_API UMujocoExportOptions : public UObject
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Mujoco")
|
|
FString ModelName;
|
|
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco")
|
|
bool bAddGroundPlane = false;
|
|
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco")
|
|
bool bAddSkyBox = false;
|
|
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco")
|
|
FMujocoCompileOptions Compiler;
|
|
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco")
|
|
FMujocoOptions Options;
|
|
|
|
UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Mujoco")
|
|
FMujocoSimulationFlags SimulationFlags;
|
|
}; |