/ / výpočet delta Quaternion s Threejs - javascript, math, three.js, quaternions

výpočet delta Quaternion s trojjs - javascript, math, three.js, quaternions

Snažím sa vypočítať delta kvartér startOrientation a endOrientation, toto husle ukazuje môj problém.

Najprv vypočítam delta kvartér a potom ho vynásobím endOrientation získať startOrientation ale nefunguje to. Rotácia kocky je vždy nesprávna.

Uvoľnite čiaru 37, aby ste videli správnu rotáciu kocky. Nejaké nápady, ako vypočítať deltu?

odpovede:

2 pre odpoveď č. 1

Pozrime sa, čo počúvate (zdanlivo). Začnete s

gyro = start^(-1)*end

a potom nastavte otočenie scény na

scene = end*gyro = end*start^(-1)*end

Ako vidíte, tento produkt ani zďaleka nie je požadovaný start štvorica. Z očakávania, že

start == scene = end*gyro

budete musieť počítať

gyro = end^(-1)*start

to znamená výmena end a start vo vašom aktuálnom výpočte gyro.


Preskúmajte tiež, ktoré z metód kvaternionu sa upravujú samy (všetky sú, ak je výsledkom kvaternión, s výnimkou .clone() prirodzene).

The ´.verver ()method equal to.conjugate (). normalize () `spadá do tejto triedy, takže

var gyroTrackingDelta=endOrientation.inverse();

prvé inverzie endOrientation a potom zdieľa odkaz s gyroTrackingDelta zavedenie ďalších vedľajších účinkov do ďalšieho výpočtu. Pracovný variant, ktorý by sa mal vyhnúť nežiadúcej samo-úprave, je

var gyroTrackingDelta=endOrientation.clone().inverse();
gyroTrackingDelta.multiply(startOrientation);

scene.quaternion.copy(endOrientation).multiply(gyroTrackingDelta);

-1 pre odpoveď č. 2

Potrebujete použiť THREE.Quaternion.slerp?