ConditionForceEffect.SetParameters Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Legt die Parameter für den Rückkopplungseffekt für bedingte Erzwingung fest.
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)
Parameter
Ein Vektor, der die Richtung und Größe des Effekts auf jeder Achse beschreibt. Jede einzelne Achse hat einen Bereich von -1,0 bis 1,0 und ist unabhängig von den anderen Achsen. Wenn Sie einen negativen Wert für eine Achse angeben, werden die Eingabewerte von der Achse umgekehrt.
- positiveCoefficient
-
Single
float
Die Steigung der Linie, die beschreibt, wie schnell die Kraft zunimmt, wenn sich die Eingabe vom Mittelpunkt in positive Richtung entlang der angegebenen Achse entfernt. Bereich ist von -unendlich bis +unendlich.
- negativeCoefficient
-
Single
float
Die Steigung der Linie, die beschreibt, wie schnell die Kraft zunimmt, wenn sich die Eingabe vom Mittelpunkt in negative Richtung entlang der angegebenen Achse entfernt. Bereich ist von -unendlich bis +unendlich.
- maxPositiveMagnitude
-
Single
float
Die maximale Größe des Kraftfeedbacks, wenn sich die Eingabe vom Mittelpunkt in positiver Richtung entlang der angegebenen Achse entfernt. Der Bereich liegt zwischen 0 und 1,0.
- maxNegativeMagnitude
-
Single
float
Die maximale Größe des Kraftfeedbacks, wenn sich die Eingabe vom Mittelpunkt in negativer Richtung entlang der angegebenen Achse entfernt. Der Bereich liegt zwischen 0 und 1,0.
- deadZone
-
Single
float
Gibt den Wert an, unter dem das Erzwingungsfeedback nicht angewendet wird. Der Bereich liegt zwischen 0,0 und 1,0 und wird asymmetrisch um den Mittelpunkt angewendet.
- bias
-
Single
float
Der Offset zum Mittelpunkt in Effektberechnungen. Der Bereich liegt zwischen -1,0 und 1,0.
Beispiele
// 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();
}
});
}
Hinweise
Die folgende Abbildung veranschaulicht die Auswirkungen der Argumente auf SetParameters:
In der Abbildung sind alle Koeffizientenwerte positiv. Ein negativer Wert für den Koeffizient führt dazu, dass die Kraft (die grüne Linie) unterhalb der orangefarbenen Achsenlinie negativ wird, wodurch die Richtung der Kraft umgekehrt wird. Dies wird nicht empfohlen, da dies in der Regel zu einer positiven Rückkopplungsschleife führt, die dazu führt, dass der Motor in diese Richtung gesättigt wird. Magnitude- und Dead-Zone-Werte sind immer positiv und symmetrisch für ihre jeweiligen Achsen. (Dies wird für die tote Zone veranschaulicht, aber die Größe funktioniert auf die gleiche Weise – ein Wert von 0,5 begrenzt die Feedbackkraft auf eine beliebige Stelle zwischen -0,5 und +0,5.) Die Verzerrung wird hier bei 0,0 angezeigt, aber durch Ändern des Werts wird nur die mittlere orange Linie in die eine oder andere Richtung geschiebet. Beachten Sie, dass sich dies nicht auf die Steigung der grünen Linien auswirkt, die durch die Koeffizientenwerte definiert werden.