2016-01-27 2 views
2

code.jsthreeJS получить реальную позицию в мире без меша на курсоре?

// ... 
this.width = 2000 
this.height = 2000 
// ... 
this.camera = new THREE.OrthographicCamera(this.width/-2, this.width/2, this.height/2, this.height/-2, 1, 1000); 
this.camera.position.z = 100; 
this.camera.position.x = 600; 
this.camera.position.y = -900; 
this.raycaster = new THREE.Raycaster(); 
// ... 
this.renderer = new THREE.WebGLRenderer({alpha: true, antialias: true}); 
// ... 
this.mouse.x = (event.clientX/this.renderer.domElement.width) * 2 - 1; 
this.mouse.y = - (event.clientY/this.renderer.domElement.height) * 2 + 1; 
// ... 
this.raycaster.setFromCamera(this.mouse, this.camera); 
    this.intersects = this.raycaster.intersectObjects(this.allElements); 
    if (this.intersects.length == 0) { 
// TODO: how get real world position if don't have mesh on cursor? 

JS вернуть реальное положение пикселя, this.mouse вернуть местное положение -1..1, как получить реальное мировое положение как х: 250, Y: 250 не -1,1 , и т. д., если i'am не имеют сетки на курсоре, используйте смещение камеры. Я использую это: mouse.x - cameraPos.x, mouse.y + cameraPos.y и получить неправильное положение.

p.s. Извините за очень плохой английский.

+0

Здравствуйте, @Alex, пожалуйста, не пытайтесь пройти мимо блоков, добавив ненужный текст. Мы даже не знаем, что здесь происходит. Добавьте некоторый контекст. Благодарю. –

ответ

0

Этот код работа для меня:

let x = e.clientX - 400 + this.camera.position.x - cameraStartPos.x 
let y = e.clientY - 100 + -this.camera.position.y - cameraStartPos.y 

400 и 100 i'am не знаю, мб это волшебство!

Смежные вопросы