1

たくさんのオブジェクトを作成し、マウスを使用してそれぞれを個別に回転させたいです。これまでのところ、オブジェクトの 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 に答える