@vuemap/vue-amap-extra
Version:
@vuemap/vue-amap扩展库,包含threejs相关图层
1 lines • 18.5 kB
Source Map (JSON)
{"version":3,"file":"CSS3DRenderer.mjs","sources":["../../../../packages/ThreeLayer/CSS3DRenderer.js"],"sourcesContent":["import { Matrix4, Object3D, Quaternion, Vector3 } from 'three';\r\n\r\n/**\r\n * Based on http://www.emagix.net/academic/mscs-project/item/camera-sync-with-css3-and-webgl-threejs\r\n */\r\n\r\nconst _position = new Vector3();\r\nconst _quaternion = new Quaternion();\r\nconst _scale = new Vector3();\r\n\r\nclass CSS3DObject extends Object3D {\r\n constructor(element = document.createElement('div')) {\r\n super();\r\n\r\n this.isCSS3DObject = true;\r\n\r\n this.element = element;\r\n this.element.style.position = 'absolute';\r\n this.element.style.pointerEvents = 'auto';\r\n this.element.style.userSelect = 'none';\r\n\r\n this.element.setAttribute('draggable', false);\r\n\r\n this.addEventListener('removed', function () {\r\n this.traverse(function (object) {\r\n if (object.element instanceof Element && object.element.parentNode !== null) {\r\n object.element.parentNode.removeChild(object.element);\r\n }\r\n });\r\n });\r\n }\r\n\r\n copy(source, recursive) {\r\n super.copy(source, recursive);\r\n\r\n this.element = source.element.cloneNode(true);\r\n\r\n return this;\r\n }\r\n}\r\n\r\nclass CSS3DSprite extends CSS3DObject {\r\n constructor(element) {\r\n super(element);\r\n\r\n this.isCSS3DSprite = true;\r\n\r\n this.rotation2D = 0;\r\n }\r\n\r\n copy(source, recursive) {\r\n super.copy(source, recursive);\r\n\r\n const self = this;\r\n\r\n self.rotation2D = source.rotation2D;\r\n\r\n return this;\r\n }\r\n}\r\n\r\n//\r\n\r\nconst _matrix = new Matrix4();\r\nconst _matrix2 = new Matrix4();\r\n\r\nclass CSS3DRenderer {\r\n constructor(parameters = {}) {\r\n const _this = this;\r\n\r\n let _width, _height;\r\n let _widthHalf, _heightHalf;\r\n\r\n const cache = {\r\n camera: { style: '' },\r\n objects: new WeakMap(),\r\n };\r\n\r\n const domElement =\r\n parameters.element !== undefined ? parameters.element : document.createElement('div');\r\n\r\n domElement.style.overflow = 'hidden';\r\n\r\n this.domElement = domElement;\r\n\r\n const viewElement = document.createElement('div');\r\n viewElement.style.transformOrigin = '0 0';\r\n viewElement.style.pointerEvents = 'none';\r\n domElement.appendChild(viewElement);\r\n\r\n const cameraElement = document.createElement('div');\r\n\r\n cameraElement.style.transformStyle = 'preserve-3d';\r\n\r\n viewElement.appendChild(cameraElement);\r\n\r\n this.getSize = function () {\r\n return {\r\n width: _width,\r\n height: _height,\r\n };\r\n };\r\n\r\n this.render = function (scene, camera) {\r\n const fov = camera.projectionMatrix.elements[5] * _heightHalf;\r\n\r\n if (camera.view && camera.view.enabled) {\r\n // view offset\r\n viewElement.style.transform = `translate( ${\r\n -camera.view.offsetX * (_width / camera.view.width)\r\n }px, ${-camera.view.offsetY * (_height / camera.view.height)}px )`;\r\n\r\n // view fullWidth and fullHeight, view width and height\r\n viewElement.style.transform += `scale( ${camera.view.fullWidth / camera.view.width}, ${\r\n camera.view.fullHeight / camera.view.height\r\n } )`;\r\n } else {\r\n viewElement.style.transform = '';\r\n }\r\n\r\n if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld();\r\n if (camera.parent === null && camera.matrixWorldAutoUpdate === true)\r\n camera.updateMatrixWorld();\r\n\r\n let tx, ty;\r\n\r\n if (camera.isOrthographicCamera) {\r\n tx = -(camera.right + camera.left) / 2;\r\n ty = (camera.top + camera.bottom) / 2;\r\n }\r\n\r\n const scaleByViewOffset =\r\n camera.view && camera.view.enabled ? camera.view.height / camera.view.fullHeight : 1;\r\n const cameraCSSMatrix = camera.isOrthographicCamera\r\n ? `scale( ${scaleByViewOffset} )` +\r\n 'scale(' +\r\n fov +\r\n ')' +\r\n 'translate(' +\r\n epsilon(tx) +\r\n 'px,' +\r\n epsilon(ty) +\r\n 'px)' +\r\n getCameraCSSMatrix(camera.matrixWorldInverse)\r\n : `scale( ${scaleByViewOffset} )` +\r\n 'translateZ(' +\r\n fov +\r\n 'px)' +\r\n getCameraCSSMatrix(camera.matrixWorldInverse);\r\n const perspective = camera.isPerspectiveCamera ? 'perspective(' + fov + 'px) ' : '';\r\n\r\n const style =\r\n perspective + cameraCSSMatrix + 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';\r\n\r\n if (cache.camera.style !== style) {\r\n cameraElement.style.transform = style;\r\n\r\n cache.camera.style = style;\r\n }\r\n\r\n renderObject(scene, scene, camera, cameraCSSMatrix);\r\n };\r\n\r\n this.setSize = function (width, height) {\r\n _width = width;\r\n _height = height;\r\n _widthHalf = _width / 2;\r\n _heightHalf = _height / 2;\r\n\r\n domElement.style.width = width + 'px';\r\n domElement.style.height = height + 'px';\r\n\r\n viewElement.style.width = width + 'px';\r\n viewElement.style.height = height + 'px';\r\n\r\n cameraElement.style.width = width + 'px';\r\n cameraElement.style.height = height + 'px';\r\n };\r\n\r\n function epsilon(value) {\r\n return Math.abs(value) < 1e-10 ? 0 : value;\r\n }\r\n\r\n function getCameraCSSMatrix(matrix) {\r\n const elements = matrix.elements;\r\n\r\n return (\r\n 'matrix3d(' +\r\n epsilon(elements[0]) +\r\n ',' +\r\n epsilon(-elements[1]) +\r\n ',' +\r\n epsilon(elements[2]) +\r\n ',' +\r\n epsilon(elements[3]) +\r\n ',' +\r\n epsilon(elements[4]) +\r\n ',' +\r\n epsilon(-elements[5]) +\r\n ',' +\r\n epsilon(elements[6]) +\r\n ',' +\r\n epsilon(elements[7]) +\r\n ',' +\r\n epsilon(elements[8]) +\r\n ',' +\r\n epsilon(-elements[9]) +\r\n ',' +\r\n epsilon(elements[10]) +\r\n ',' +\r\n epsilon(elements[11]) +\r\n ',' +\r\n epsilon(elements[12]) +\r\n ',' +\r\n epsilon(-elements[13]) +\r\n ',' +\r\n epsilon(elements[14]) +\r\n ',' +\r\n epsilon(elements[15]) +\r\n ')'\r\n );\r\n }\r\n\r\n function getObjectCSSMatrix(matrix) {\r\n const elements = matrix.elements;\r\n const matrix3d =\r\n 'matrix3d(' +\r\n epsilon(elements[0]) +\r\n ',' +\r\n epsilon(elements[1]) +\r\n ',' +\r\n epsilon(elements[2]) +\r\n ',' +\r\n epsilon(elements[3]) +\r\n ',' +\r\n epsilon(-elements[4]) +\r\n ',' +\r\n epsilon(-elements[5]) +\r\n ',' +\r\n epsilon(-elements[6]) +\r\n ',' +\r\n epsilon(-elements[7]) +\r\n ',' +\r\n epsilon(elements[8]) +\r\n ',' +\r\n epsilon(elements[9]) +\r\n ',' +\r\n epsilon(elements[10]) +\r\n ',' +\r\n epsilon(elements[11]) +\r\n ',' +\r\n epsilon(elements[12]) +\r\n ',' +\r\n epsilon(elements[13]) +\r\n ',' +\r\n epsilon(elements[14]) +\r\n ',' +\r\n epsilon(elements[15]) +\r\n ')';\r\n\r\n return 'translate(-50%,-50%)' + matrix3d;\r\n }\r\n\r\n function renderObject(object, scene, camera, cameraCSSMatrix) {\r\n if (object.isCSS3DObject) {\r\n const visible = object.visible === true && object.layers.test(camera.layers) === true;\r\n object.element.style.display = visible === true ? '' : 'none';\r\n\r\n if (visible === true) {\r\n object.onBeforeRender(_this, scene, camera);\r\n\r\n let style;\r\n\r\n if (object.isCSS3DSprite) {\r\n // http://swiftcoder.wordpress.com/2008/11/25/constructing-a-billboard-matrix/\r\n\r\n _matrix.copy(camera.matrixWorldInverse);\r\n _matrix.transpose();\r\n\r\n if (object.rotation2D !== 0)\r\n _matrix.multiply(_matrix2.makeRotationZ(object.rotation2D));\r\n\r\n object.matrixWorld.decompose(_position, _quaternion, _scale);\r\n _matrix.setPosition(_position);\r\n _matrix.scale(_scale);\r\n\r\n _matrix.elements[3] = 0;\r\n _matrix.elements[7] = 0;\r\n _matrix.elements[11] = 0;\r\n _matrix.elements[15] = 1;\r\n\r\n style = getObjectCSSMatrix(_matrix);\r\n } else {\r\n style = getObjectCSSMatrix(object.matrixWorld);\r\n }\r\n\r\n const element = object.element;\r\n const cachedObject = cache.objects.get(object);\r\n\r\n if (cachedObject === undefined || cachedObject.style !== style) {\r\n element.style.transform = style;\r\n\r\n const objectData = { style: style };\r\n cache.objects.set(object, objectData);\r\n }\r\n\r\n if (element.parentNode !== cameraElement) {\r\n cameraElement.appendChild(element);\r\n }\r\n\r\n object.onAfterRender(_this, scene, camera);\r\n }\r\n }\r\n\r\n for (let i = 0, l = object.children.length; i < l; i++) {\r\n renderObject(object.children[i], scene, camera, cameraCSSMatrix);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport { CSS3DObject, CSS3DSprite, CSS3DRenderer };\r\n"],"names":[],"mappings":"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"}