|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface DWorld
The world object is a container for rigid bodies and joints. Objects in different worlds can not interact, for example rigid bodies from two different worlds can not collide.
All the objects in a world exist at the same point in time, thus one reason to use separate worlds is to simulate systems at different rates. Most applications will only need one world.
, The damping happens right after the moved callback is called; this way it still possible use the exact velocities the body has acquired during the step. You can even use the callback to create your own customized damping.
Nested Class Summary | |
---|---|
static class |
DWorld.DWorldStepMemoryFunctionsInfo
Deprecated. Do not use ! (TZ) |
static class |
DWorld.DWorldStepReserveInfo
Memory reservation policy descriptor structure for world stepping functions. |
Field Summary | |
---|---|
static double |
dWORLDSTEP_RESERVEFACTOR_DEFAULT
|
static int |
dWORLDSTEP_RESERVESIZE_DEFAULT
|
Method Summary | |
---|---|
void |
cleanupWorkingMemory()
Release internal working memory allocated for world The worlds allocate working memory internally for simulation stepping. |
void |
destroy()
Destroy a world and everything in it. |
void |
DESTRUCTOR()
|
double |
getAngularDamping()
Get the world's angular damping scale. |
double |
getAngularDampingThreshold()
Get the world's angular damping threshold. |
double |
getAutoDisableAngularAverageThreshold()
Deprecated. Not implemented in ODE. |
double |
getAutoDisableAngularThreshold()
Get auto disable angular threshold for newly created bodies. |
int |
getAutoDisableAverageSamplesCount()
Get auto disable sample count for newly created bodies. |
boolean |
getAutoDisableFlag()
Get auto disable flag for newly created bodies. |
double |
getAutoDisableLinearAverageThreshold()
Deprecated. Not implemented in ODE. |
double |
getAutoDisableLinearThreshold()
Get auto disable linear threshold for newly created bodies. |
int |
getAutoDisableSteps()
Get auto disable steps for newly created bodies. |
double |
getAutoDisableTime()
Get auto disable time for newly created bodies. |
double |
getCFM()
Get the constraint force mixing value. |
double |
getContactMaxCorrectingVel()
Get the maximum correcting velocity that contacts are allowed to generated. |
double |
getContactSurfaceLayer()
Get the depth of the surface layer around all geometry objects. |
double |
getERP()
Get the error reduction parameter. |
void |
getGravity(DVector3 g)
Get the gravity vector for a given world. |
double |
getLinearDamping()
Get the world's linear damping scale. |
double |
getLinearDampingThreshold()
Get the world's linear damping threshold. |
double |
getMaxAngularSpeed()
Get the default maximum angular speed. |
int |
getQuickStepNumIterations()
Get the number of iterations that the QuickStep method performs per step. |
double |
getQuickStepW()
Get the SOR over-relaxation parameter. |
void |
impulseToForce(double stepsize,
double ix,
double iy,
double iz,
DVector3 force)
Converts an impulse to a force. |
boolean |
quickStep(double stepsize)
Quick-step the world. |
void |
setAngularDamping(double scale)
Set the world's angular damping scale. |
void |
setAngularDampingThreshold(double threshold)
Set the world's angular damping threshold. |
void |
setAutoDisableAngularAverageThreshold(double angular_average_threshold)
Deprecated. Not implemented in ODE. |
void |
setAutoDisableAngularThreshold(double threshold)
Set auto disable angular threshold for newly created bodies. |
void |
setAutoDisableAverageSamplesCount(int average_samples_count)
Set auto disable average sample count for newly created bodies. |
void |
setAutoDisableFlag(boolean do_auto_disable)
Set auto disable flag for newly created bodies. |
void |
setAutoDisableLinearAverageThreshold(double linear_average_threshold)
Deprecated. Not implemented in ODE. |
void |
setAutoDisableLinearThreshold(double threshold)
Set auto disable linear threshold for newly created bodies. |
void |
setAutoDisableSteps(int steps)
Set auto disable steps for newly created bodies. |
void |
setAutoDisableTime(double time)
Set auto disable time for newly created bodies. |
void |
setCFM(double cfm)
Set the global CFM (constraint force mixing) value. |
void |
setContactMaxCorrectingVel(double vel)
Set the maximum correcting velocity that contacts are allowed to generate. |
void |
setContactSurfaceLayer(double depth)
Set the depth of the surface layer around all geometry objects. |
void |
setDamping(double linear_scale,
double angular_scale)
Convenience function to set body linear and angular scales. |
void |
setERP(double erp)
Set the global ERP value, that controls how much error correction is performed in each time step. |
void |
setGravity(double x,
double y,
double z)
Set the world's global gravity vector. |
void |
setGravity(DVector3C g)
Set the world's global gravity vector. |
void |
setLinearDamping(double scale)
Set the world's linear damping scale. |
void |
setLinearDampingThreshold(double threshold)
Set the world's linear damping threshold. |
void |
setMaxAngularSpeed(double max_speed)
Set the default maximum angular speed for new bodies. |
void |
setQuickStepNumIterations(int num)
Set the number of iterations that the QuickStep method performs per step. |
void |
setQuickStepW(double over_relaxation)
Set the SOR over-relaxation parameter |
boolean |
setStepMemoryManager(DWorld.DWorldStepMemoryFunctionsInfo memfuncs)
Set memory manager for world to be used with simulation stepping functions The function allows to customize memory manager to be used for internal memory allocation during simulation for a world. |
boolean |
setStepMemoryReservationPolicy(DWorld.DWorldStepReserveInfo policyinfo)
Set memory reservation policy for world to be used with simulation stepping functions The function allows to customize reservation policy to be used for internal memory which is allocated to aid simulation for a world. |
void |
step(double stepsize)
Step the world. |
boolean |
useSharedWorkingMemory(DWorld from_world)
Set the world to use shared working memory along with another world. |
Field Detail |
---|
static final double dWORLDSTEP_RESERVEFACTOR_DEFAULT
static final int dWORLDSTEP_RESERVESIZE_DEFAULT
Method Detail |
---|
void DESTRUCTOR()
void setGravity(double x, double y, double z)
void setGravity(DVector3C g)
void getGravity(DVector3 g)
void setERP(double erp)
erp
- Typical values are in the range 0.1--0.8. The default is 0.2.double getERP()
void setCFM(double cfm)
cfm
- Typical values are in the range @m{10^{-9}} -- 1.
The default is 10^-5 if single precision is being used, or 10^-10
if double precision is being used.double getCFM()
boolean useSharedWorkingMemory(DWorld from_world)
dWordStep
and dWorldQuickStep
.
Similarly, several worlds can be set up to share this memory caches thus
reducing overall memory usage by cost of making worlds inappropriate for
simultaneous simulation in multiple threads.
If null value is passed for from_world
parameter the world is detached from
sharing and returns to defaults for working memory, reservation policy and
memory manager as if just created. This can also be used to enable use of shared
memory for a world that has already had working memory allocated privately.
Normally using shared memory after a world has its private working memory allocated
is prohibited.
Allocation policy used can only increase world's internal reserved memory size
and never decreases it. dWorldCleanupWorkingMemory
can be used to release
working memory for a world in case if number of objects/joint decreases
significantly in it.
With sharing working memory worlds also automatically share memory reservation
policy and memory manager. Thus, these parameters need to be customized for
initial world to be used as sharing source only.
Failure result status means a memory allocation failure.
from_world
- Null or the world the shared memory is to be used from.
cleanupWorkingMemory()
,
setStepMemoryReservationPolicy(DWorldStepReserveInfo)
,
setStepMemoryManager(DWorldStepMemoryFunctionsInfo)
void cleanupWorkingMemory()
useSharedWorkingMemory(DWorld)
,
setStepMemoryReservationPolicy(DWorldStepReserveInfo)
,
setStepMemoryManager(DWorldStepMemoryFunctionsInfo)
boolean setStepMemoryReservationPolicy(DWorld.DWorldStepReserveInfo policyinfo)
dWORLDSTEP_RESERVEFACTOR_DEFAULT
and dWORLDSTEP_RESERVESIZE_DEFAULT
are used.
Passing policyinfo
argument as NULL results in reservation policy being
reset to defaults as if the world has been just created. The content of
policyinfo
structure is copied internally and does not need to remain valid
after the call returns.
If the world uses working memory sharing, changing memory reservation policy
affects all the worlds linked together.
Failure result status means a memory allocation failure.
policyinfo
- Null or a pointer to policy descriptor structure.
useSharedWorkingMemory(DWorld)
boolean setStepMemoryManager(DWorld.DWorldStepMemoryFunctionsInfo memfuncs)
dAlloc dRealloc dFree
based memory manager is used.
Passing memfuncs
argument as NULL results in memory manager being
reset to default one as if the world has been just created. The content of
memfuncs
structure is copied internally and does not need to remain valid
after the call returns.
If the world uses working memory sharing, changing memory manager
affects all the worlds linked together.
Failure result status means a memory allocation failure.
memfuncs
- Null or a pointer to memory manager descriptor structure.
useSharedWorkingMemory(DWorld)
void step(double stepsize)
stepsize
- The number of seconds that the simulation has to advance.boolean quickStep(double stepsize)
Increasing the number of QuickStep iterations may help a little bit, but it is not going to help much if your system is really near singular. Failure result status means that the memory allocation has failed for operation. In such a case all the objects remain in unchanged state and simulation can be retried as soon as more memory is available.
stepsize
- The number of seconds that the simulation has to advance.
void impulseToForce(double stepsize, double ix, double iy, double iz, DVector3 force)
void setQuickStepNumIterations(int num)
num
- The default is 20 iterations.int getQuickStepNumIterations()
void setQuickStepW(double over_relaxation)
over_relaxation
- value to use by SORdouble getQuickStepW()
void setAutoDisableLinearThreshold(double threshold)
threshold
- default is 0.01double getAutoDisableLinearThreshold()
void setAutoDisableAngularThreshold(double threshold)
threshold
- default is 0.01double getAutoDisableAngularThreshold()
double getAutoDisableLinearAverageThreshold()
void setAutoDisableLinearAverageThreshold(double linear_average_threshold)
linear_average_threshold
- default is 0.01double getAutoDisableAngularAverageThreshold()
void setAutoDisableAngularAverageThreshold(double angular_average_threshold)
angular_average_threshold
- default is 0.01int getAutoDisableAverageSamplesCount()
void setAutoDisableAverageSamplesCount(int average_samples_count)
average_samples_count
- Default is 1, meaning only instantaneous velocity is used.
Set to zero to disable sampling and thus prevent any body from auto-disabling.void setContactSurfaceLayer(double depth)
depth
- The default value is zero.double getContactSurfaceLayer()
void setContactMaxCorrectingVel(double vel)
vel
- The default value is infinity (i.e. no limit).double getContactMaxCorrectingVel()
void destroy()
int getAutoDisableSteps()
void setAutoDisableSteps(int steps)
steps
- default is 10double getAutoDisableTime()
void setAutoDisableTime(double time)
time
- default is 0 secondsboolean getAutoDisableFlag()
void setAutoDisableFlag(boolean do_auto_disable)
do_auto_disable
- default is false.double getLinearDampingThreshold()
void setLinearDampingThreshold(double threshold)
threshold
- The damping won't be applied if the linear speed is
below this threshold. Default is 0.01.double getAngularDampingThreshold()
void setAngularDampingThreshold(double threshold)
threshold
- The damping won't be applied if the angular speed is
below this threshold. Default is 0.01.double getLinearDamping()
void setLinearDamping(double scale)
scale
- The linear damping scale that is to be applied to bodies.
Default is 0 (no damping). Should be in the interval [0, 1].double getAngularDamping()
void setAngularDamping(double scale)
scale
- The angular damping scale that is to be applied to bodies.
Default is 0 (no damping). Should be in the interval [0, 1].void setDamping(double linear_scale, double angular_scale)
linear_scale
- The linear damping scale that is to be applied to bodies.angular_scale
- The angular damping scale that is to be applied to bodies.double getMaxAngularSpeed()
DBody.getMaxAngularSpeed()
void setMaxAngularSpeed(double max_speed)
DBody.setMaxAngularSpeed(double)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |