我正在爲Three.js的基本編輯器工作。我希望能夠旋轉,移動和縮放對象。旋轉,移動和縮放基於方向和相機位置的對象,在Three.js
使用基本功能的工作,但很好,但有時有點混亂。
cube.rotation.z = Math.PI * val;
cube.rotation.x = Math.PI * val;
cube.position.z = val * -1;
cube.scale.y = val;
我想要做什麼是在一個方向,而不是一個軸,並從攝像機的角度旋轉對象。
下面是說明這一點的codepen。 https://codepen.io/arpo/pen/LxyoRJ
只要其他輸入不變,它就可以正常工作。 如果拖動範圍「向左旋轉」,它將在z軸上旋轉立方體。但是,如果將範圍「向後旋轉」移至右側,然後再次拖動「向左旋轉」,則旋轉看起來像在Y軸上。其他輸入也是如此。
我明白爲什麼會發生這種情況,但我不知道如何獲得預期的效果。我也希望這從照相機的角度來工作。因此,如果將相機移動到左側並拖動範圍「向後移動」,立方體應遠離或靠近。
所以我想要的是,當您使用旋轉左/右範圍旋轉立方體時,我希望它從用戶視角向左或向右擺動。如果您使用移動範圍,我希望立方體遠離用戶。
是的,我知道這件事,因此「我明白爲什麼會發生這種情況,但我不知道如何獲得理想的效果。」 – arpo
您能否具體說明所需的效果是什麼?圍繞世界軸或相機軸旋轉?什麼應該是旋轉中心 - 對象中心還是世界中心?這些是總共4個選項,每個都有不同的工作方式。 – Matey
我知道這很難解釋。我想要的是,當您使用旋轉左/右範圍旋轉立方體時,我希望它從用戶視角向左或向右擺動。如果您使用遠離範圍,我希望立方體遠離用戶。我認爲這與矩陣操作有關,但我的知識還沒有。我想這裏提出的問題是瞭解它的一部分。 – arpo