[−][src]Struct rapier3d::dynamics::IntegrationParameters
Parameters for a time-step of the physics engine.
Fields
dt: Real
The timestep length (default: 1.0 / 60.0
)
return_after_ccd_substep: bool
If true
, the world's step
method will stop right after resolving exactly one CCD event (default: false
).
This allows the user to take action during a timestep, in-between two CCD events.
erp: Real
The Error Reduction Parameter in [0, 1]
is the proportion of
the positional error to be corrected at each time step (default: 0.2
).
joint_erp: Real
The Error Reduction Parameter for joints in [0, 1]
is the proportion of
the positional error to be corrected at each time step (default: 0.2
).
warmstart_coeff: Real
Each cached impulse are multiplied by this coefficient in [0, 1]
when they are re-used to initialize the solver (default 1.0
).
restitution_velocity_threshold: Real
Contacts at points where the involved bodies have a relative
velocity smaller than this threshold wont be affected by the restitution force (default: 1.0
).
allowed_linear_error: Real
Amount of penetration the engine wont attempt to correct (default: 0.005m
).
prediction_distance: Real
The maximal distance separating two objects that will generate predictive contacts (default: 0.002
).
allowed_angular_error: Real
Amount of angular drift of joint limits the engine wont
attempt to correct (default: 0.001rad
).
max_linear_correction: Real
Maximum linear correction during one step of the non-linear position solver (default: 0.2
).
max_angular_correction: Real
Maximum angular correction during one step of the non-linear position solver (default: 0.2
).
max_stabilization_multiplier: Real
Maximum nonlinear SOR-prox scaling parameter when the constraint
correction direction is close to the kernel of the involved multibody's
jacobian (default: 0.2
).
max_velocity_iterations: usize
Maximum number of iterations performed by the velocity constraints solver (default: 4
).
max_position_iterations: usize
Maximum number of iterations performed by the position-based constraints solver (default: 1
).
min_island_size: usize
Minimum number of dynamic bodies in each active island (default: 128
).
max_ccd_position_iterations: usize
Maximum number of iterations performed by the position-based constraints solver for CCD steps (default: 10
).
This should be sufficiently high so all penetration get resolved. For example, if CCD cause your objects to stutter, that may be because the number of CCD position iterations is too low, causing them to remain stuck in a penetration configuration for a few frames.
The highest this number, the highest its computational cost.
max_ccd_substeps: usize
Maximum number of substeps performed by the solver (default: 1
).
multiple_ccd_substep_sensor_events_enabled: bool
Controls the number of Proximity::Intersecting events generated by a trigger during CCD resolution (default: false
).
If false, triggers will only generate one Proximity::Intersecting event during a step, even if another colliders repeatedly enters and leaves the triggers during multiple CCD substeps.
If true, triggers will generate as many Proximity::Intersecting and Proximity::Disjoint/Proximity::WithinMargin events as the number of times a collider repeatedly enters and leaves the triggers during multiple CCD substeps. This is more computationally intensive.
ccd_on_penetration_enabled: bool
Whether penetration are taken into account in CCD resolution (default: false
).
If this is set to false
two penetrating colliders will not be considered to have any time of impact
while they are penetrating. This may end up allowing some tunelling, but will avoid stuttering effect
when the constraints solver fails to completely separate two colliders after a CCD contact.
If this is set to true
, two penetrating colliders will be considered to have a time of impact
equal to 0 until the constraints solver manages to separate them. This will prevent tunnelling
almost completely, but may introduce stuttering effects when the constraints solver fails to completely
separate two colliders after a CCD contact.
Implementations
impl IntegrationParameters
[src]
pub fn new(
dt: Real,
erp: Real,
joint_erp: Real,
warmstart_coeff: Real,
restitution_velocity_threshold: Real,
allowed_linear_error: Real,
allowed_angular_error: Real,
max_linear_correction: Real,
max_angular_correction: Real,
prediction_distance: Real,
max_stabilization_multiplier: Real,
max_velocity_iterations: usize,
max_position_iterations: usize,
max_ccd_position_iterations: usize,
max_ccd_substeps: usize,
return_after_ccd_substep: bool,
multiple_ccd_substep_sensor_events_enabled: bool,
ccd_on_penetration_enabled: bool
) -> Self
[src]
dt: Real,
erp: Real,
joint_erp: Real,
warmstart_coeff: Real,
restitution_velocity_threshold: Real,
allowed_linear_error: Real,
allowed_angular_error: Real,
max_linear_correction: Real,
max_angular_correction: Real,
prediction_distance: Real,
max_stabilization_multiplier: Real,
max_velocity_iterations: usize,
max_position_iterations: usize,
max_ccd_position_iterations: usize,
max_ccd_substeps: usize,
return_after_ccd_substep: bool,
multiple_ccd_substep_sensor_events_enabled: bool,
ccd_on_penetration_enabled: bool
) -> Self
Use IntegrationParameters { dt: 60.0, ..Default::default() }
instead
Creates a set of integration parameters with the given values.
pub fn dt(&self) -> Real
[src]
You can just read the IntegrationParams::dt
value directly
The current time-stepping length.
pub fn inv_dt(&self) -> Real
[src]
The inverse of the time-stepping length, i.e. the steps per seconds (Hz).
This is zero if self.dt
is zero.
pub fn set_dt(&mut self, dt: Real)
[src]
You can just set the IntegrationParams::dt
value directly
Sets the time-stepping length.
pub fn set_inv_dt(&mut self, inv_dt: Real)
[src]
Sets the inverse time-stepping length (i.e. the frequency).
This automatically recompute self.dt
.
Trait Implementations
impl Clone for IntegrationParameters
[src]
fn clone(&self) -> IntegrationParameters
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Default for IntegrationParameters
[src]
Auto Trait Implementations
impl RefUnwindSafe for IntegrationParameters
[src]
impl Send for IntegrationParameters
[src]
impl Sync for IntegrationParameters
[src]
impl Unpin for IntegrationParameters
[src]
impl UnwindSafe for IntegrationParameters
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Downcast for T where
T: Any,
[src]
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
[src]
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
[src]
pub fn as_any(&self) -> &(dyn Any + 'static)
[src]
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
[src]
impl<T> DowncastSync for T where
T: Send + Sync + Any,
[src]
T: Send + Sync + Any,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
pub const ALIGN: usize
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
pub unsafe fn drop(ptr: usize)
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
[src]
SS: SubsetOf<SP>,
pub fn to_subset(&self) -> Option<SS>
[src]
pub fn is_in_subset(&self) -> bool
[src]
pub fn to_subset_unchecked(&self) -> SS
[src]
pub fn from_subset(element: &SS) -> SP
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,