1

我想创建很多对象并使用鼠标分别旋转每个对象。到目前为止,我可以用鼠标选择其中一个对象,但不能使用鼠标进行对象旋转。

  1. 由于鼠标只有mouse.x = event.clientX - windowHalfX; mouse.y = event.clientY - windowHalfY;,我只知道如何使用 mousemove 和 mousedown 事件处理程序来更改SELECTED.rotation.yand SELECTED.rotation.x(其中 SELECTED 是选定的对象)——我怎样才能控制SELECTED.rotation.z呢?

  2. 如果选定的对象是倒置的,x 旋转也会向后,这似乎不是很可取。有没有办法修改这个?

我发现的许多示例都使用相机旋转而不是实际旋转对象。我想找到一种无需更换相机即可旋转对象的解决方案。

4

1 回答 1

1

您应该从three.js 中查看给定的控制示例。它们不舒服,大多数情况下您需要复制它们并根据需要进行修改。但是他们拿了一个对象,它是控制器,这可能是相机或对象。这是一个小例子:

yawLeft = -((event['pageX'] - fullWidth) - halfWidth) / halfWidth;
pitchDown = ((event['pageY'] - fullHeight) - halfHeight) / halfHeight;

rotationVector.x = (-pitchUp + pitchDown);
rotationVector.y = (-yawRight + yawLeft);
rotationVector.z = (-rollRight + rollLeft);

var tmpQuaternion = new THREE.Quaternion();
tmpQuaternion.set(rotationVector.x * rotMult, rotationVector.y * rotMult, rotationVector.z * rotMult, 1).normalize();
object.quaternion.multiplySelf(tmpQuaternion);

对象可以是相机或模型。没关系,因为相机也是 THREE.Object3D。

于 2012-08-07T12:50:38.860 回答