UNPKG

@vuemap/vue-amap-extra

Version:

@vuemap/vue-amap扩展库,包含threejs相关图层

1 lines 15.9 kB
{"version":3,"file":"ThreeVideo.mjs","sources":["../../../../packages/ThreeVideo/ThreeVideo.ts"],"sourcesContent":["import {Group, VideoTexture, CanvasTexture, PlaneGeometry, MeshPhongMaterial, Mesh, DoubleSide} from 'three';\r\nimport {bind} from \"lodash-es\";\r\nimport {clearGroup} from '../../utils/threeUtil';\r\nimport type {Vec, Offset} from './Type'\r\nimport type CustomThreeLayer from '../ThreeLayer/CustomThreeLayer'\r\n\r\ninterface Options {\r\n video: HTMLVideoElement //模型下载地址\r\n videoWidth: number // 视频宽度,默认为实际的视频宽度\r\n videoHeight: number // 视频高度,默认为实际的视频高度\r\n videoTranslate: Vec // 视频偏移量\r\n canvas: HTMLCanvasElement // 背景canvas图层\r\n position: number[] // 模型的经纬度\r\n altitude?: number // 高度,模型的离地高度\r\n rotation?: Vec // 模型旋转角度\r\n scale: number | number[] //模型缩放级别,可以整体缩放和按X Y Z缩放\r\n angle?: number // 模型旋转角度\r\n alwaysFront?: boolean // 位置移动是否开启动画,开启后将会以参数中的duration进行插帧移动\r\n opacity: number //透明度\r\n zIndex: number // 层级\r\n}\r\n\r\nclass ThreeVideo {\r\n object: any // group对象\r\n animations: any // 模型的动画\r\n layer?: CustomThreeLayer // threejs的图层对象\r\n video?: HTMLVideoElement\r\n videoMesh: any //视频\r\n bgMesh: any //背景\r\n canvasTexture?: any\r\n videoFrame = -1\r\n rotateFun: any\r\n\r\n constructor(layer: CustomThreeLayer) {\r\n this.layer = layer;\r\n }\r\n\r\n init(options: Options, $vue: any) {\r\n this.video = options.video;\r\n this.object = new Group();\r\n this.object.isCustomGroup = true;\r\n this.object.$vue = $vue;\r\n\r\n return new Promise<void>((resolve) => {\r\n this.video?.load()\r\n this.video?.play();\r\n const texture = new VideoTexture( this.video as HTMLVideoElement );\r\n const geometry = new PlaneGeometry(options.videoWidth || this.video?.videoWidth, options.videoHeight || this.video?.videoHeight); //矩形平面\r\n const material = new MeshPhongMaterial({\r\n map: texture, // 设置纹理贴图\r\n side: DoubleSide,\r\n transparent: true,\r\n depthTest: false\r\n }); //材质对象Material\r\n const mesh = new Mesh(geometry, material); //网格模型对象Mesh\r\n mesh.renderOrder = 3;\r\n mesh.rotation.y = Math.PI;\r\n mesh.name = 'video';\r\n this.videoMesh = mesh;\r\n this.object.add(mesh);\r\n this.setVideoTranslate(options.videoTranslate);\r\n this.setPosition(options.position);\r\n this.setRotation(options.rotation);\r\n this.setScale(options.scale);\r\n this.setAltitude(options.altitude)\r\n this.layer?.add(this.object);\r\n this.videoAnimate();\r\n this.addBgCanvas(options.canvas)\r\n this.setAngle(options.angle);\r\n this.setOpacity(options.opacity);\r\n this.setzIndex(options.zIndex || 0);\r\n this.bindAlwaysFront(options.alwaysFront);\r\n resolve()\r\n })\r\n\r\n }\r\n\r\n bindAlwaysFront(alwaysFront?: boolean){\r\n if(alwaysFront){\r\n const map = this.layer?.getMap();\r\n this.rotateFun = bind(this._changeMapRotate, this)\r\n map.on('rotatechange', this.rotateFun)\r\n }\r\n }\r\n\r\n unBindAlwaysFront(){\r\n if(this.rotateFun){\r\n const map = this.layer?.getMap();\r\n if(map){\r\n map.off('rotatechange', this.rotateFun)\r\n }\r\n }\r\n }\r\n\r\n _changeMapRotate(){\r\n const map = this.layer?.getMap();\r\n const rotate = map.getRotation();\r\n this.setAngle(rotate);\r\n }\r\n\r\n addBgCanvas(canvas: HTMLCanvasElement){\r\n if(!canvas){\r\n return\r\n }\r\n const texture = new CanvasTexture( canvas );\r\n const geometry = new PlaneGeometry(canvas.width, canvas.height); //矩形平面\r\n const material = new MeshPhongMaterial({\r\n map: texture, // 设置纹理贴图\r\n side: DoubleSide,\r\n transparent: true,\r\n depthTest: false\r\n }); //材质对象Material\r\n const mesh = new Mesh(geometry, material); //网格模型对象Mesh\r\n mesh.name = 'bg';\r\n mesh.renderOrder = 1;\r\n this.object.add(mesh);\r\n this.canvasTexture = texture;\r\n this.bgMesh = mesh;\r\n }\r\n\r\n videoAnimate(){\r\n this.videoFrame = requestAnimationFrame(() => {\r\n this.videoAnimate();\r\n })\r\n if(this.canvasTexture){\r\n this.canvasTexture.needsUpdate = true;\r\n }\r\n this.refresh()\r\n }\r\n\r\n cancelCanvasTextureAnimate(){\r\n if(this.videoFrame > 0) {\r\n cancelAnimationFrame(this.videoFrame);\r\n }\r\n }\r\n\r\n setScale(scale: number | number[]) {\r\n let scaleArray: number[];\r\n if (typeof scale === 'number') {\r\n scaleArray = [scale, scale, scale];\r\n } else {\r\n scaleArray = scale;\r\n }\r\n this.object.scale.set(...scaleArray);\r\n }\r\n\r\n setPosition(position) {\r\n const positionConvert = this.layer?.convertLngLat(position);\r\n this.object.position.setX(positionConvert[0]);\r\n this.object.position.setY(positionConvert[1]);\r\n this.refresh();\r\n }\r\n\r\n setRotation(rotation: Vec | undefined) {\r\n if (rotation) {\r\n const x = Math.PI / 180 * (rotation.x || 0);\r\n const y = Math.PI / 180 * (rotation.y || 0);\r\n const z = Math.PI / 180 * (rotation.z || 0);\r\n this.object.rotation.set(x, y, z);\r\n this.refresh();\r\n }\r\n }\r\n setVideoTranslate(translate: Vec) {\r\n if (translate) {\r\n this.videoMesh.translateX(translate.x)\r\n this.videoMesh.translateY(translate.y)\r\n this.videoMesh.translateZ(translate.z)\r\n this.refresh();\r\n }\r\n }\r\n\r\n setAltitude(altitude) {\r\n if (altitude !== undefined) {\r\n this.object.position.setZ(altitude);\r\n this.refresh();\r\n }\r\n }\r\n\r\n setAngle(angle?: number) {\r\n if(angle !== undefined){\r\n const x = this.object.rotation.x;\r\n const z = this.object.rotation.z;\r\n const y = Math.PI / 180 * angle;\r\n this.object.rotation.set(x, y, z);\r\n this.refresh();\r\n }\r\n }\r\n\r\n setOpacity(opacity: number){\r\n this.videoMesh.material.opacity = opacity;\r\n if(this.bgMesh){\r\n this.bgMesh.material.opacity = opacity;\r\n }\r\n this.refresh();\r\n }\r\n\r\n setzIndex(zIndex: number) {\r\n this.object.renderOrder = zIndex;\r\n }\r\n\r\n refresh() {\r\n this.layer?.update();\r\n }\r\n\r\n show() {\r\n this.object.visible = true;\r\n this.refresh();\r\n }\r\n\r\n hide() {\r\n this.object.visible = false;\r\n this.refresh();\r\n }\r\n\r\n start() {\r\n this.video?.play()\r\n }\r\n\r\n pause() {\r\n this.video?.pause()\r\n }\r\n\r\n remove(){\r\n if (this.object) {\r\n this.layer?.remove(this.object)\r\n this.unBindAlwaysFront()\r\n }\r\n }\r\n\r\n destroy() {\r\n this.cancelCanvasTextureAnimate();\r\n this.unBindAlwaysFront();\r\n if (this.object) {\r\n this.object.$vue = null;\r\n clearGroup(this.object);\r\n this.video = undefined;\r\n this.videoMesh = undefined;\r\n this.bgMesh = undefined;\r\n this.canvasTexture = undefined;\r\n this.rotateFun = undefined;\r\n this.object = null;\r\n this.layer = undefined;\r\n }\r\n }\r\n}\r\n\r\nexport default ThreeVideo\r\n"],"names":[],"mappings":"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"}