简体   繁体   中英

ThreeJS: Screen position to camera position

I've seen a lot of posts people want to have the camera position to screen position. My question is how to do the contrary.

What I currently want to achieve is set the "door" position to a % of the screen, this calculation is ready, and I do have the final screen X, Y (px) position. The current Z offset = 250 of the camera.

I've found this code to convert camera position to screen position:

var vector = projector.projectVector(door.position.clone(), camera);
vector.x = (vector.x + 1) / 2 * window.innerWidth;
vector.y = -(vector.y - 1) / 2 * window.innerHeight;

To do the reversie I tried this, but does not give the result I expect:

var mouseX = ((perc.x) / window.innerWidth) * 2 - 1,
    mouseY = -((perc.y) / window.innerHeight) * 2 + 1;

var vector = new THREE.Vector3(mouseX, mouseY, 1);
projector.unprojectVector(vector, camera);
return vector.sub(camera.position).normalize()

I have tried several ways and tried to Google, but didn't found an answer.

Q: How to convert screen position to camera position?

使用较大的不可见平面定义门可以向哪个方向扩展,然后在该平面上使用光线投射器搜索门对象应延伸到的位置。

Well, as posted by Gero3, what you want to do is to create a plane that will cover all of your visible camera area (something like new THREE.PlaneGeometry(5000,5000); and then use raycaster to locate screen coordinated on that plane.

Here is an example from another similar question :

http://jsfiddle.net/PwWbT/

Hope that helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM