2012-12-19 35 views
1

我有應用於球體內部的全景的equirectangular紋理。相機放置在球體的中心,用戶可以通過點擊並拖動鼠標來旋轉相機。但是,當用戶點擊並且不拖拽時,我希望能夠將屏幕座標轉換爲紋理上的座標。我可以確定紋理上的位置給定的世界位置座標用戶點擊,但查看Three.js文件我無法辨別我將如何去做這件事。將屏幕點轉換爲equirectangular紋理上的點

最終,問題是我將如何構建射線查詢以獲得來自給定屏幕點和紋理球體的射線之間的交點?

+0

您是否曾經找到過解決方案?我目前正在尋找完全一樣的東西。 – gibo

回答

0

在three.js示例目錄中有很多這樣的例子。例如,http://mrdoob.github.com/three.js/examples/canvas_interactive_cubes.html

模式你想谷歌是這樣的:

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(objects); 
if (intersects.length > 0) { 
    console.log(intersects[ 0 ].point); 
} 

如果畫布是完整的瀏覽器這將工作。另外,objects是一個數組。

three.js r.53