ph_setcorrections (var ERP, var CFM);
ph_setcollisions (var ERP, var CFM);
Legt den globalen Korrekturfaktor für Gelenke (ph_setcorrections) oder
Kollisionskontakte (ph_setcollisions) fest.
ERP steht für Error Reducing Parameter, und gibt
an, wie schnell fehlgeleitete Kräfte korrigiert werden. CFM ( Contact
Force Mixing) legt dagegen fest, in, wie weit die Ausrichtung
und Bewegung verletzt werden darf.
Parameter:
ERP |
Error Reduction Parameter [0..100000], default: 20000 |
CFM |
Contact Force Mixing [0..100000], default: 0.1 |
Rückgabewert:
1 bei Erfolg, sonst 0.
Geschwindigkeit:
Schnell
Bemerkungen:
- Bei einem ERP von 0 können Objekte irgendwann davondriften, weil Fehler nicht korrigiert werden. Ist ERP auf
den Maximalwert gesetzt, dann werden unakzeptable Positionen oder Ausrichtungen
innerhalb eines Frames korrigiert. Dies kann ein Überschießen
verursachen, deswegen werden kleine Werte empfohlen.
- CFM bei Gelenken auf 0 gesetzt, erzeugt eine sehr harte
Verbindung. Das kann zu Fehlern führen. Setzt man
hingegen CFM auf den Maximalwert, dann verläuft die
Bewegung als wenn das Objekt an einem Gummiband hängen würde.
- Gelenke sollten etwas mehr Spielraum haben, wohingegen auf Kollisionen
schneller reagiert werden muss. Der Default-ERP-Wert
ist
20000, was dazu führt, dass etwa 20% eines Eindringens in den Gelenkbereich
per Frame korrigiert werden. Für Kontakte sollte man
ggf. einen höheren
Wert wie etwa 80% (80000) verwenden, so dass miteinander kollidierende Objekte
sofort auseinandergeschubst werden. Die genauen Werte hängen von Größe
und Geschwindigkeit Ihrer Entities ab.
Beispiel:
ph_setcorrections(0,0); // switch off error correction for joints
ph_setcollisions(20000, 100); // make collision contacts soft/spongy
ph_setcollisions(100000, 0); // make collision contacts really hard
Siehe auch:
phent_setelasticity
► Aktuelle Version Online