Поделиться через


ConditionForceEffect.SetParameters Метод

Определение

Задает параметры для эффекта обратной связи условной силы.

public:
 virtual void SetParameters(float3 direction, float positiveCoefficient, float negativeCoefficient, float maxPositiveMagnitude, float maxNegativeMagnitude, float deadZone, float bias) = SetParameters;
void SetParameters(float3 const& direction, float const& positiveCoefficient, float const& negativeCoefficient, float const& maxPositiveMagnitude, float const& maxNegativeMagnitude, float const& deadZone, float const& bias);
public void SetParameters(Vector3 direction, float positiveCoefficient, float negativeCoefficient, float maxPositiveMagnitude, float maxNegativeMagnitude, float deadZone, float bias);
function setParameters(direction, positiveCoefficient, negativeCoefficient, maxPositiveMagnitude, maxNegativeMagnitude, deadZone, bias)
Public Sub SetParameters (direction As Vector3, positiveCoefficient As Single, negativeCoefficient As Single, maxPositiveMagnitude As Single, maxNegativeMagnitude As Single, deadZone As Single, bias As Single)

Параметры

direction
Vector3 Vector3

float3

Вектор, описывающий направление и величину эффекта на каждой оси. Каждая отдельная ось имеет диапазон от –1,0 до 1,0 и не зависит от других осей. Если указать отрицательное значение для оси, входные значения будут обратно от оси.

positiveCoefficient
Single

float

Наклон линии, описывающий, как быстро увеличивается сила по мере перемещения входных данных от центральной точки в положительном направлении вдоль указанной оси. Диапазон от -бесконечности до +бесконечности.

negativeCoefficient
Single

float

Наклон линии, описывающий, как быстро увеличивается сила по мере перемещения входных данных от центральной точки в отрицательном направлении вдоль указанной оси. Диапазон от -бесконечности до +бесконечности.

maxPositiveMagnitude
Single

float

Максимальная величина обратной связи по мере перемещения входных данных от центральной точки в положительном направлении вдоль указанной оси. Диапазон — от 0 до 1,0.

maxNegativeMagnitude
Single

float

Максимальная величина обратной связи по усилию, когда входные данные перемещаются от центральной точки в отрицательном направлении вдоль указанной оси. Диапазон — от 0 до 1,0.

deadZone
Single

float

Указывает значение, ниже которого не применяется обратная связь по принудительному применению. Диапазон от 0,0 до 1,0 и применяется асимметрично вокруг центральной точки.

bias
Single

float

Смещение до центральной точки в фактических вычислениях. Диапазон — от -1.0 до 1.0.

Примеры

// Create a spring effect and load it into the device.  This is an async operation
// since it might take a brief amount of time for the driver to complete this.
ConditionForceEffect ^ springEffect = ref new ConditionForceEffect(ConditionEffectKind::Spring);
if (springEffect)
{
    IAsyncAction ^ action = motor->LoadEffectAsync(springEffect);
    concurrency::create_task(action).then([=]()
    {
        // Make sure the effect was loaded successfully.  There is a finite amount
        // of storage available for effects in the hardware, so this is expected
        // to fail if there is not enough room.  Alternatively, the motor might
        // not support the requested effect (although this is rare).
        if (action->Status == AsyncStatus::Completed)
        {
            // Set the parameters for the spring effect.  Note how the parameters
            // can be modified after the effect has been loaded into the hardware.
            springEffect->SetParameters(
                { 1.0f, 0.0f, 0.0f },   // Unit vector indicating the effect applies to the X axis
                1.0f, -1.0f,            // Full strength when the wheel is turned to its maximum angle
                0.3f, -0.3f,            // Limit the maximum feedback force to 30%
                0.025f,                 // Apply a small dead zone when the wheel is centered
                0.0f);                  // Equal force in both directions

            // Go ahead and start the effect, since we want this running all the time
            springEffect->StartEffect();
        }
    });
}          

Комментарии

На следующем рисунке показано влияние аргументов на SetParameters:

Влияние параметров на силу. На изображении все значения коэффициентов являются положительными.  Отрицательное значение коэффициента приведет к тому, что сила (зеленая линия) станет отрицательной под линией оранжевой оси, фактически обращая направление силы.  Это не рекомендуется, так как если это не сделано тщательно, обычно это приведет к положительному циклу обратной связи, который приведет к насыщению мотора в этом направлении. Значения величины и мертвой зоны всегда положительные и симметричные относительно соответствующих осей.  (Это иллюстрируется для мертвой зоны, но величина работает так же: значение 0,5 ограничивает силу обратной связи в любом месте от -0,5 до +0,5.) Смещение отображается здесь на уровне 0,0, но изменение значения просто сдвигает средне-оранжевую линию в ту или иную сторону.  Обратите внимание, что это не влияет на наклон зеленых линий, определенный значениями коэффициентов.

Применяется к