diff options
author | Robert Adams | 2012-12-17 13:51:39 -0800 |
---|---|---|
committer | Robert Adams | 2012-12-17 13:51:39 -0800 |
commit | 8653ea93b2669a180beaedad8765bdeec385d501 (patch) | |
tree | 735c648fd129a3d9ec218598bd12c88747cabf67 | |
parent | BulletSim: fix vehicles going underground when unsat. Problem was that, when ... (diff) | |
download | opensim-SC-8653ea93b2669a180beaedad8765bdeec385d501.zip opensim-SC-8653ea93b2669a180beaedad8765bdeec385d501.tar.gz opensim-SC-8653ea93b2669a180beaedad8765bdeec385d501.tar.bz2 opensim-SC-8653ea93b2669a180beaedad8765bdeec385d501.tar.xz |
BulletSim: apply friction to linear and angular motion before returning advanced motor value. This seems to be the problem with BulletSim vehicles turning too quickly. Also removed the configuration parameter that controlled the timestep scaling kludge for angular velocity that was added to research the question of quick turning.
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 6 | ||||
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | 6 |
3 files changed, 2 insertions, 14 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs index 48ba419..5887249 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | |||
@@ -1051,12 +1051,6 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
1051 | // ================================================================== | 1051 | // ================================================================== |
1052 | m_lastVertAttractor = verticalAttractionContribution; | 1052 | m_lastVertAttractor = verticalAttractionContribution; |
1053 | 1053 | ||
1054 | // DEBUG DEBUG DEBUG: optionally scale the angular velocity. Debugging SL vs ODE turning functions. | ||
1055 | Vector3 originalAngularMotorContrib = angularMotorContribution; | ||
1056 | if (PhysicsScene.VehicleScaleAngularVelocityByTimestep) | ||
1057 | angularMotorContribution *= pTimestep; | ||
1058 | |||
1059 | // Sum corrections | ||
1060 | m_lastAngularVelocity = angularMotorContribution | 1054 | m_lastAngularVelocity = angularMotorContribution |
1061 | + verticalAttractionContribution | 1055 | + verticalAttractionContribution |
1062 | + deflectionContribution | 1056 | + deflectionContribution |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs index cf0a9dc..e0faf4e 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs | |||
@@ -134,8 +134,6 @@ public class BSVMotor : BSMotor | |||
134 | Vector3 addAmount = (TargetValue - CurrentValue)/TimeScale * timeStep; | 134 | Vector3 addAmount = (TargetValue - CurrentValue)/TimeScale * timeStep; |
135 | CurrentValue += addAmount; | 135 | CurrentValue += addAmount; |
136 | 136 | ||
137 | returnCurrent = CurrentValue; | ||
138 | |||
139 | // The desired value reduces to zero which also reduces the difference with current. | 137 | // The desired value reduces to zero which also reduces the difference with current. |
140 | // If the decay time is infinite, don't decay at all. | 138 | // If the decay time is infinite, don't decay at all. |
141 | float decayFactor = 0f; | 139 | float decayFactor = 0f; |
@@ -156,6 +154,8 @@ public class BSVMotor : BSMotor | |||
156 | CurrentValue *= (Vector3.One - frictionFactor); | 154 | CurrentValue *= (Vector3.One - frictionFactor); |
157 | } | 155 | } |
158 | 156 | ||
157 | returnCurrent = CurrentValue; | ||
158 | |||
159 | MDetailLog("{0}, BSVMotor.Step,nonZero,{1},origCurr={2},origTarget={3},timeStep={4},timeScale={5},addAmnt={6},targetDecay={7},decayFact={8},fricTS={9},frictFact={10}", | 159 | MDetailLog("{0}, BSVMotor.Step,nonZero,{1},origCurr={2},origTarget={3},timeStep={4},timeScale={5},addAmnt={6},targetDecay={7},decayFact={8},fricTS={9},frictFact={10}", |
160 | BSScene.DetailLogZero, UseName, origCurrVal, origTarget, | 160 | BSScene.DetailLogZero, UseName, origCurrVal, origTarget, |
161 | timeStep, TimeScale, addAmount, | 161 | timeStep, TimeScale, addAmount, |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs index ebaf97e..069cb0d 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | |||
@@ -189,7 +189,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters | |||
189 | // 'true' of the vehicle code is to log lots of details | 189 | // 'true' of the vehicle code is to log lots of details |
190 | public bool VehicleLoggingEnabled { get; private set; } | 190 | public bool VehicleLoggingEnabled { get; private set; } |
191 | public bool VehiclePhysicalLoggingEnabled { get; private set; } | 191 | public bool VehiclePhysicalLoggingEnabled { get; private set; } |
192 | public bool VehicleScaleAngularVelocityByTimestep { get; private set; } | ||
193 | 192 | ||
194 | #region Construction and Initialization | 193 | #region Construction and Initialization |
195 | public BSScene(string identifier) | 194 | public BSScene(string identifier) |
@@ -1239,11 +1238,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters | |||
1239 | (s,cf,p,v) => { s.m_params[0].vehicleAngularDamping = cf.GetFloat(p, v); }, | 1238 | (s,cf,p,v) => { s.m_params[0].vehicleAngularDamping = cf.GetFloat(p, v); }, |
1240 | (s) => { return s.m_params[0].vehicleAngularDamping; }, | 1239 | (s) => { return s.m_params[0].vehicleAngularDamping; }, |
1241 | (s,p,l,v) => { s.m_params[0].vehicleAngularDamping = v; } ), | 1240 | (s,p,l,v) => { s.m_params[0].vehicleAngularDamping = v; } ), |
1242 | new ParameterDefn("VehicleScaleAngularVelocityByTimestep", "If true, scale angular turning by timestep", | ||
1243 | ConfigurationParameters.numericTrue, | ||
1244 | (s,cf,p,v) => { s.VehicleScaleAngularVelocityByTimestep = cf.GetBoolean(p, s.BoolNumeric(v)); }, | ||
1245 | (s) => { return s.NumericBool(s.VehicleScaleAngularVelocityByTimestep); }, | ||
1246 | (s,p,l,v) => { s.VehicleScaleAngularVelocityByTimestep = s.BoolNumeric(v); } ), | ||
1247 | 1241 | ||
1248 | new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)", | 1242 | new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)", |
1249 | 0f, | 1243 | 0f, |