startOrientation
とendOrientation
のデルタ四元数を計算しようとしています。このfiddleは私の問題を示しています。デルタクォータニオンを3jで計算する
まず、デルタクォータニオンを計算してからと乗算してstartOrientation
を得るが、それは機能しない。キューブの回転は常に間違っています。
行37のコメントを外して、キューブの正しい回転を確認します。どのようにデルタを計算するための任意のアイデア?
startOrientation
とendOrientation
のデルタ四元数を計算しようとしています。このfiddleは私の問題を示しています。デルタクォータニオンを3jで計算する
まず、デルタクォータニオンを計算してからと乗算してstartOrientation
を得るが、それは機能しない。キューブの回転は常に間違っています。
行37のコメントを外して、キューブの正しい回転を確認します。どのようにデルタを計算するための任意のアイデア?
あなたが(見たいと思っている)ものを調べてみましょう。あなたは
gyro = start^(-1)*end
で始まり、その後、あなたが見ることができるように、この製品は、これまで希望start
四元ているからである
scene = end*gyro = end*start^(-1)*end
にシーンの回転を設定します。あなたは、gyro
のあなたの現在の計算における為替end
とstart
ある
gyro = end^(-1)*start
を計算する必要があるだろう
start == scene = end*gyro
という期待から。
また(結果は当然.clone()
を除いて、四元数である場合、それらすべてである)、自己修正する四元法のどの探ります。
'.inverse()method equal to
.conjugate()さらににおいてgyroTrackingDelta
導入奇妙な副作用と基準を共有次いでendOrientation
var gyroTrackingDelta=endOrientation.inverse();
第反転ように。)(正規化 `そのクラスに該当計算。望ましくない自己改変を避けるべきであるワーキングバリアントは、
var gyroTrackingDelta=endOrientation.clone().inverse();
gyroTrackingDelta.multiply(startOrientation);
scene.quaternion.copy(endOrientation).multiply(gyroTrackingDelta);
ありがとう!それは魅力のように機能します! – Nikolaus
THREE.Quaternion.slerpを使用する必要がありますか?
これはコメントです –
です。 –
試して解決します。 –