diff --git a/src/core/controls/DragControl.ts b/src/core/controls/DragControl.ts index 902b0c6..0aad188 100644 --- a/src/core/controls/DragControl.ts +++ b/src/core/controls/DragControl.ts @@ -164,11 +164,17 @@ export default class DragControl implements IControls { * 获取当前鼠标坐标(归一化设备坐标) */ private getMousePosition(clientX: number, clientY: number): THREE.Vector2 { - const rect = this.domElement.getBoundingClientRect() + // const rect = this.domElement.getBoundingClientRect() + // return new THREE.Vector2( + // ((clientX - rect.left) / rect.width) * 2 - 1, + // ((clientY - rect.top) / rect.height) * -2 + 1 + // ) return new THREE.Vector2( - ((clientX - rect.left) / rect.width) * 2 - 1, - ((clientY - rect.top) / rect.height) * -2 + 1 + clientX / this.viewport.renderer.domElement.offsetWidth * 2 - 1, + (clientY / this.viewport.renderer.domElement.offsetHeight * -2 + 1) ) + // _point.x = e.offsetX / this.renderer.domElement.offsetWidth + // _point.y = e.offsetY / this.renderer.domElement.offsetHeight } /** diff --git a/src/core/manager/EntityManager.ts b/src/core/manager/EntityManager.ts index 47135d1..7e33821 100644 --- a/src/core/manager/EntityManager.ts +++ b/src/core/manager/EntityManager.ts @@ -462,11 +462,18 @@ export default class EntityManager { getObjectByCanvasMouse(event: MouseEvent): Object3DLike[] { const _domElement = this.viewport.renderer.domElement - const rect = _domElement.getBoundingClientRect() - const _pointer = new Vector2() - _pointer.x = (event.clientX - rect.left) / rect.width * 2 - 1 - _pointer.y = -(event.clientY - rect.top) / rect.height * 2 + 1 - this.viewport.raycaster.setFromCamera(_pointer, this.viewport.camera) + // const rect = _domElement.getBoundingClientRect() + // const _pointer = new Vector2() + // _pointer.x = (event.clientX - rect.left) / rect.width * 2 - 1 + // _pointer.y = -(event.clientY - rect.top) / rect.height * 2 + 1 + + + const _point = new THREE.Vector2() + _point.x = event.offsetX / _domElement.offsetWidth + _point.y = event.offsetY / _domElement.offsetHeight + + + this.viewport.raycaster.setFromCamera(_point, this.viewport.camera) const _intersections = this.viewport.raycaster.intersectObjects(this._selectableObjects, true) if (!_intersections || _intersections.length === 0) {