convert.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import math from '@sdk/utils/math'
  2. import convertTool from './convertTool'
  3. export default {
  4. /**
  5. * 2d转3d1
  6. * @param {*} x
  7. * @param {*} y
  8. * @param {*} player
  9. * @returns
  10. */
  11. pointFrom2DTo3D({ x, y }, player, camera, element) {
  12. if (!camera) {
  13. camera = player.camera
  14. }
  15. if (!element) {
  16. element = player.domElement
  17. }
  18. let position = new THREE.Vector3(0, 0, 0)
  19. math.convertScreenPositionToNDC(x, y, position, element)
  20. position.unproject(camera)
  21. position.y = 0
  22. return position
  23. },
  24. /**
  25. * 3d转2d
  26. * @param {*} position
  27. * @returns
  28. */
  29. pointFrom3DTo2D(position, player, camera, element) {
  30. let vector = position
  31. if (!camera) {
  32. camera = player.camera
  33. }
  34. if (!element) {
  35. element = player.domElement
  36. }
  37. if (position instanceof THREE.Vector3 === false) {
  38. vector = new THREE.Vector3(vector.x || 0, vector.y || 0, vector.z || 0)
  39. }
  40. return convertTool.getPos2d(vector, player, camera, element).pos
  41. },
  42. }