我想计算在3D立方体上渲染的材质的单个点的UV坐标。
我发现鼠标指针与摄像机光线相交,使用THREE.Raycaster:
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 1);
vector.unproject(camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(scene.children);
我已经尝试计算点,但x,y坐标映射随放大或缩小而变化。代码段如下:
var pixelX = intersects[0].uv.x;
var pixelY = intersects[0].uv.y;
其中intersects [0]表示来自摄像机的光线的交叉点。
有关详细信息,请参阅:http://plnkr.co/edit/YYN8aechHGTKXvPv6tOo?p=preview。
在plunker的基础上,假设我得到螺旋对象开始的点的uv坐标(比如x1,y1)。但是在放大或缩小立方体之后,该点的uv坐标不会保持不变,即它会变为某个随机点(x2,y2)