目前:我有一个带有纹理的球体,它围绕y轴旋转。我还有被单击的3D空间中的位置,以及球体上旋转后的位置(我想是这样)。
目标:获取纹理上的位置,例如:我想知道我点击了图像的哪个方块。(请参见下面的示例球体和图像)
实际应用中,我不会使用这张图片,但我觉得它是一个很好的起点。
获取球体上位置的代码基于此示例:
function onDocumentMouseDown( event ) {
event.preventDefault();
mouse.x = ( event.clientX / renderer.domElement.clientWidth ) * 2 - 1;
mouse.y = - ( event.clientY / renderer.domElement.clientHeight ) * 2 + 1;
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObjects( objects );
if ( intersects.length > 0 ) {
console.log(intersects[ 0 ].point);
var vector = new THREE.Vector3( 1, 0, 0 );
var axis = new THREE.Vector3( 0, 1, 0 );
var angle = objects[ 0 ].rotation.y;
//Rotate Point
intersects[ 0 ].point = vector.applyAxisAngle( axis, angle );
console.log(intersects[ 0 ].point);
}
}
球体:
图像包裹:
![图像包裹](https://istack.dev59.com/sotpo.webp)