我正在尝试在Three.js中拍摄3D对象,查看该对象表面上的一个点,并在纹理文件上找到相应的点(最好使用x,y坐标)。
现在我正在投射光线以找到物体表面上的点。每个点都有一个相应的面,我认为应该以某种方式对应于纹理贴图。有没有已知的方法来检索此信息? (也许通过某种方式反转UV Mapping功能?)如果不是,我将继续解决问题并发布一个解决方案,如果我能弄明白的话。
答案 0 :(得分:1)
我能够通过以下方式解决这个问题:
//Find the Index of the face at the center of the screen
var vector = new THREE.Vector3(0, 0, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObject(object, true);
if (intersects.length > 0) {
var index = intersects[0].faceIndex;
}
//Find the UV Coordinates of the the three vertices of the face at that index
var point1,point2,point3;
point1.x = objectGlobal.children[0].geometry.faceVertexUvs[0][index][0].x;
point1.y = objectGlobal.children[0].geometry.faceVertexUvs[0][index][0].y
point2.x = objectGlobal.children[0].geometry.faceVertexUvs[0][index][1].x;
point2.y = objectGlobal.children[0].geometry.faceVertexUvs[0][index][1].y;
point3.x = objectGlobal.children[0].geometry.faceVertexUvs[0][index][2].x;
point3.y = objectGlobal.children[0].geometry.faceVertexUvs[0][index][2].y;