0

THREE.js を使用してページにいくつかのオブジェクトを表示しています。オブジェクトをクリックすることはできますが、どのオブジェクトをクリックしても はintersects[0].object.position常に を返しますx=0, y=0, z=0が、オブジェクトの実際の位置は間違いなく異なることに気付きました。

次のコードを確認して、何が間違っているのかコメントしていただけますか?

function onDocumentMouseDown(event) {
  event.preventDefault();
  var vector = new THREE.Vector3((event.clientX / window.innerWidth)*2-1, -(event.clientY / window.innerHeight)*2+1, 0.5);
  projector.unprojectVector(vector, camera);
  var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
  var intersects = ray.intersectObjects(teeth, true);
  if (intersects.length > 0) {
    //not working
    camera.position.x=intersects[0].object.position.x;
    //not working
    camera.position.y=intersects[0].object.postion.y;
    //working
    intersects[0].object.material.color.setHex(Math.random()*0xffffff);
  }
}
4

1 に答える 1

2

オブジェクトの位置: intersects[0].object.position

交差位置: intersects[0].position

function onDocumentMouseDown(event) {
  event.preventDefault();
  var vector = new THREE.Vector3((event.clientX / window.innerWidth)*2-1, -(event.clientY / window.innerHeight)*2+1, 0.5);
  projector.unprojectVector(vector, camera);
  var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
  var intersects = ray.intersectObjects(teeth, true);
  if (intersects.length > 0) {
    //not working
    camera.position.x=intersects[0].point.x;
    //not working
    camera.position.y=intersects[0].point.y;
    //working
    intersects[0].object.material.color.setHex(Math.random()*0xffffff);
  }
}
于 2012-11-18T10:23:00.187 に答える