aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin
diff options
context:
space:
mode:
authorRobert Adams2012-12-17 13:51:39 -0800
committerRobert Adams2012-12-17 13:51:39 -0800
commit8653ea93b2669a180beaedad8765bdeec385d501 (patch)
tree735c648fd129a3d9ec218598bd12c88747cabf67 /OpenSim/Region/Physics/BulletSPlugin
parentBulletSim: fix vehicles going underground when unsat. Problem was that, when ... (diff)
downloadopensim-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.
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs6
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSMotors.cs4
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSScene.cs6
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,