MAINT-989 Velocity and acceleration should take time into account
parent
a2cb33d6ce
commit
a40e881303
|
|
@ -171,8 +171,8 @@ protected:
|
|||
F32 behavior_maxeffect);
|
||||
|
||||
F32 toLocal(const LLVector3 &world);
|
||||
F32 calculateVelocity_local();
|
||||
F32 calculateAcceleration_local(F32 velocity_local);
|
||||
F32 calculateVelocity_local(const F32 time_delta);
|
||||
F32 calculateAcceleration_local(F32 velocity_local, const F32 time_delta);
|
||||
private:
|
||||
const std::string mParamDriverName;
|
||||
const std::string mParamControllerName;
|
||||
|
|
@ -425,23 +425,22 @@ F32 LLPhysicsMotion::toLocal(const LLVector3 &world)
|
|||
return world * dir_world;
|
||||
}
|
||||
|
||||
F32 LLPhysicsMotion::calculateVelocity_local()
|
||||
F32 LLPhysicsMotion::calculateVelocity_local(const F32 time_delta)
|
||||
{
|
||||
const F32 world_to_model_scale = 100.0f;
|
||||
LLJoint *joint = mJointState->getJoint();
|
||||
const LLVector3 position_world = joint->getWorldPosition();
|
||||
const LLVector3 last_position_world = mPosition_world;
|
||||
const LLVector3 positionchange_world = (position_world-last_position_world) * world_to_model_scale;
|
||||
const LLVector3 velocity_world = positionchange_world;
|
||||
const F32 velocity_local = toLocal(velocity_world);
|
||||
const F32 velocity_local = toLocal(positionchange_world) / time_delta;
|
||||
return velocity_local;
|
||||
}
|
||||
|
||||
F32 LLPhysicsMotion::calculateAcceleration_local(const F32 velocity_local)
|
||||
F32 LLPhysicsMotion::calculateAcceleration_local(const F32 velocity_local, const F32 time_delta)
|
||||
{
|
||||
// const F32 smoothing = getParamValue("Smoothing");
|
||||
static const F32 smoothing = 3.0f; // Removed smoothing param since it's probably not necessary
|
||||
const F32 acceleration_local = velocity_local - mVelocityJoint_local;
|
||||
const F32 acceleration_local = (velocity_local - mVelocityJoint_local) / time_delta;
|
||||
|
||||
const F32 smoothed_acceleration_local =
|
||||
acceleration_local * 1.0/smoothing +
|
||||
|
|
@ -554,9 +553,9 @@ BOOL LLPhysicsMotion::onUpdate(F32 time)
|
|||
// Calculate velocity and acceleration in parameter space.
|
||||
//
|
||||
|
||||
//const F32 velocity_joint_local = calculateVelocity_local(time_iteration_step);
|
||||
const F32 velocity_joint_local = calculateVelocity_local();
|
||||
const F32 acceleration_joint_local = calculateAcceleration_local(velocity_joint_local);
|
||||
const F32 joint_local_factor = 30.0;
|
||||
const F32 velocity_joint_local = calculateVelocity_local(time_delta * joint_local_factor);
|
||||
const F32 acceleration_joint_local = calculateAcceleration_local(velocity_joint_local, time_delta * joint_local_factor);
|
||||
|
||||
//
|
||||
// End velocity and acceleration
|
||||
|
|
|
|||
Loading…
Reference in New Issue