J'essaie de dessiner des objets 2D dans le plan z = 0, maintenant je veux convertir les coordonnées de la souris écran en coordonnées 3D du monde.three.js 2D mouseclick à coordonnées 3d utilisant raycaster
J'utilisé l'appareil photo ci-dessous:
camera = new THREE.OrthographicCamera(SCREEN_WIDTH/- 2, SCREEN_WIDTH/2,
SCREEN_HEIGHT/2, SCREEN_HEIGHT/- 2, NEAR, FAR);
camera.position.set(0,0,500);
camera.lookAt(scene.position);
container = document.getElementById('ThreeJS');
container.appendChild(renderer.domElement);
var floorGeometry = new THREE.PlaneGeometry(1000, 1000, 10, 10);
var material = new THREE.MeshBasicMaterial({color: 0x000000, opacity: 1});
var floor = new THREE.Mesh(floorGeometry, material);
floor.position.set(0,0,0);
scene.add(floor);
targetList.push(floor);
J'ai essayé deux façons: 1.Le réponse: [question]: Mouse/Canvas X, Y to Three.js World X, Y, Z
var vector = new THREE.Vector3();
vector.set(
(event.clientX/window.innerWidth) * 2 - 1,
- (event.clientY/window.innerHeight) * 2 + 1,
0.5);
vector.unproject(camera);
var dir = vector.sub(camera.position).normalize();
var distance = - camera.position.z/dir.z;
var pos = camera.position.clone().add(dir.multiplyScalar(distance));
mais does't travail pour moi la pos n'est pas la bonne position dans les coordonnées du monde 3D; Pour être honnête, je ne comprends pas cette méthode en fait ...
2:
mouse.x = (event.clientX/window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY/window.innerHeight) * 2 + 1;
var raycaster = new THREE.Raycaster();
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(targetList);
// if there is one (or more) intersections
if (intersects.length > 0)
{
console.log(intersects[0].point);
console.log("Hit @ " + toString(intersects[0].point));
}
Cela fonctionne bien à la place normale, mais si ajouter "largeur: 300px; hauteur: 400px" #test div avant #ThreeJS div, il est allé totalement la mauvaise position, POURQUOI, POURQUOI, POURQUOI?
Quelqu'un pourrait-il me donner une solution utilisable?
oublièrent, je Three.js R.73 –
http://stackoverflow.com/questions/27862229/changing-raycaster-position- dynamiquement/27885851 # 27885851 –