BulletSim: some formatting changes.
parent
9cc41d5118
commit
b53713cdda
|
@ -1360,19 +1360,26 @@ namespace OpenSim.Region.Physics.BulletSPlugin
|
||||||
{
|
{
|
||||||
//Another formula to try got from :
|
//Another formula to try got from :
|
||||||
//http://answers.unity3d.com/questions/10425/how-to-stabilize-angular-motion-alignment-of-hover.html
|
//http://answers.unity3d.com/questions/10425/how-to-stabilize-angular-motion-alignment-of-hover.html
|
||||||
Vector3 VehicleUpAxis = Vector3.UnitZ *VehicleOrientation;
|
|
||||||
//Flipping what was originally a timescale into a speed variable and then multiplying it by 2 since only computing half
|
Vector3 VehicleUpAxis = Vector3.UnitZ * VehicleOrientation;
|
||||||
//the distance between the angles.
|
|
||||||
float VerticalAttractionSpeed=(1/m_verticalAttractionTimescale)*2.0f;
|
// Flipping what was originally a timescale into a speed variable and then multiplying it by 2
|
||||||
//making a prediction of where the up axis will be when this is applied rather then where it is now this makes for a smoother
|
// since only computing half the distance between the angles.
|
||||||
//adjustment and less fighting between the various forces
|
float VerticalAttractionSpeed = (1 / m_verticalAttractionTimescale) * 2.0f;
|
||||||
|
|
||||||
|
// Make a prediction of where the up axis will be when this is applied rather then where it is now as
|
||||||
|
// this makes for a smoother adjustment and less fighting between the various forces.
|
||||||
Vector3 predictedUp = VehicleUpAxis * Quaternion.CreateFromAxisAngle(VehicleRotationalVelocity, 0f);
|
Vector3 predictedUp = VehicleUpAxis * Quaternion.CreateFromAxisAngle(VehicleRotationalVelocity, 0f);
|
||||||
//this is only half the distance to the target so it will take 2 seconds to complete the turn.
|
|
||||||
|
// This is only half the distance to the target so it will take 2 seconds to complete the turn.
|
||||||
Vector3 torqueVector = Vector3.Cross(predictedUp, Vector3.UnitZ);
|
Vector3 torqueVector = Vector3.Cross(predictedUp, Vector3.UnitZ);
|
||||||
//Scaling vector by our timescale since it is an acceleration it is r/s^2 or radians a timescale squared
|
|
||||||
Vector3 vertContributionV=torqueVector * VerticalAttractionSpeed *VerticalAttractionSpeed;
|
// Scale vector by our timescale since it is an acceleration it is r/s^2 or radians a timescale squared
|
||||||
|
Vector3 vertContributionV = torqueVector * VerticalAttractionSpeed * VerticalAttractionSpeed;
|
||||||
|
|
||||||
VehicleRotationalVelocity += vertContributionV;
|
VehicleRotationalVelocity += vertContributionV;
|
||||||
VDetailLog("{0}, MoveAngular,verticalAttraction,UpAxis={1},PredictedUp={2},torqueVector={3},contrib={4}",
|
|
||||||
|
VDetailLog("{0}, MoveAngular,verticalAttraction,UpAxis={1},PredictedUp={2},torqueVector={3},contrib={4}",
|
||||||
ControllingPrim.LocalID,
|
ControllingPrim.LocalID,
|
||||||
VehicleUpAxis,
|
VehicleUpAxis,
|
||||||
predictedUp,
|
predictedUp,
|
||||||
|
|
Loading…
Reference in New Issue