基礎由@ prisoner849提供的鏈接,我已經實現了以下解決方案:
一)在mouseUp事件我設定一個新的工具提示3D原點(僅當在鼠標的位置沒有顯著三角洲,點擊並拖動相機)
b)中的每一幀之間進行辨別,以下函數進行燒製,其中3D COORDS轉換到2D,並計算工具提示的位置:
function setTooltipOrigin(camera, renderer, tooltip, lastClickPoint) {
var canvas = renderer.domElement,
point = new THREE.Vector3();
point.x = lastClickPoint.x,
point.y = lastClickPoint.y,
point.z = lastClickPoint.z,
point.project(camera);
point.x = Math.round((0.5 + point.x/2) * (canvas.width/window.devicePixelRatio));
point.y = Math.round((0.5 - point.y/2) * (canvas.height/window.devicePixelRatio));
point.x -= 14; //small adjustment to the position, so the line points to the click point
point.y -= (tooltip.scrollHeight * 0.7); //same for y
tooltip.style.transform = 'translate(' + point.x + 'px, ' + point.y + 'px)';
}
[此](HTTPS ://manu.ninja/webgl-three-js-annotations)可能是他lpful – prisoner849
@ prisoner849謝謝,那正是我所需要的。我根據文章 –
添加了一個答案不客氣) – prisoner849