@anov/3d-ability 0.0.118 → 0.0.119

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -492,12 +492,15 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
492
492
  }, {
493
493
  key: "removeFromParent",
494
494
  value: function removeFromParent() {
495
- var _this$_attachmentMesh;
496
495
  _get(_getPrototypeOf(HeatMap.prototype), "removeFromParent", this).call(this);
497
- use.useScene().domElement.parentElement.removeChild(this._canvasBox);
496
+ // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系
497
+ if (this.parent) {
498
+ var _this$_attachmentMesh;
499
+ use.useScene().domElement.parentElement.removeChild(this._canvasBox);
498
500
 
499
- // @ts-ignore
500
- (_this$_attachmentMesh = this._attachmentMesh) === null || _this$_attachmentMesh === void 0 || _this$_attachmentMesh.material.dispose();
501
+ // @ts-ignore
502
+ (_this$_attachmentMesh = this._attachmentMesh) === null || _this$_attachmentMesh === void 0 || _this$_attachmentMesh.material.dispose();
503
+ }
501
504
  return this;
502
505
  }
503
506
  }]);
@@ -1 +1 @@
1
- {"version":3,"names":["CanvasTexture","DoubleSide","Mesh","NearestFilter","Object3D","PlaneGeometry","ShaderMaterial","Vector2","use","h","Supercluster","heightFragmentShader","heightVertexShader","defaultGradient","HeatMap","_Object3D","_inherits","_super","_createSuper","options","_options$radius","_options$height","_options$isPixel","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_colorMap","colorMap","_radius","radius","_height","height","_isPixel","isPixel","_range","range","_createClass","key","get","Math","max","apply","_toConsumableArray","data","map","item","value","_url","initSupercluster","_supercluster","minZoom","maxZoom","setSuperclusterData","featuresPoints","type","properties","geometry","coordinates","x","z","console","log","length","load","getZoomLevel","camera","minHeight","maxHeight","min","position","y","getSuperclusterData","_this$calDataMaxMin","calDataMaxMin","zoom","useScene","clusters","getClusters","_this2","maxX","minX","maxZ","minZ","abs","ceil","maxRadius","_item$radius","concat","width","realShowWidth","realShowHeight","realShowMax","generateAsitePoints","_this3","_item$radius2","boundaryPoints","isBoundary","_this$calDataMaxMin2","coordinate3DTransformation","_this4","_this$newOrigin","newOrigin","_item$radius3","_objectSpread","coordinateTransformation","_this5","hanldeData","_this$calDataMaxMin3","resolutionScale","calResolutionScale","result","_item$radius4","floor","createHeatmapTool","heatmap","create","container","_canvasBox","gradient","maxOpacity","minOpacity","createCanvas","canvasBox","document","createElement","style","top","right","domElement","parentElement","appendChild","_this$calDataMaxMin4","maxY","scale","createAttachmentMesh","_attachmentMesh","remove","_this$calDataMaxMin5","canvas","_heatmap","_renderer","texture","minFilter","magFilter","toDataURL","threshold","shaderMaterial","uniforms","granularity","uOpacity","uHeight","uRange","vertexShader","fragmentShader","transparent","side","depthTest","mesh","_this$newOrigin2","rotation","PI","set","renderOrder","add","setData","_this$_range$max","_this$_range","_this$_range$min","_this$_range2","_this$generateAsitePo","heatmapData","removeChild","filter","defaultMax","removeFromParent","_this$_attachmentMesh","_get","_getPrototypeOf","prototype","material","dispose"],"sources":["../../../src/business/HeatMap/HeatMap.ts"],"sourcesContent":["import type { PerspectiveCamera } from '@anov/3d-core'\nimport { CanvasTexture, DoubleSide, Mesh, NearestFilter, Object3D, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport h from 'anov-heat-map'\nimport type { AnyProps } from 'supercluster'\nimport Supercluster from 'supercluster'\nimport { heightFragmentShader, heightVertexShader } from './shader'\nimport type { HeatMapData, HeatMapnterface } from './index'\n\ntype RangeType = {\n min: number\n max: number\n}\n\ntype HeatMapOptions = {\n colorMap?: {\n [key: number]: string\n }\n max?: number\n radius?: number\n height?: number\n isPixel?: boolean\n range?: RangeType\n}\n\nconst defaultGradient = { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' }\n\n/**\n * 区域热力图\n */\n\nclass HeatMap extends Object3D implements HeatMapnterface {\n public data: HeatMapData[] = []\n\n private _height: number\n private _radius: number\n private _heatmap: any\n private _url: string\n private _colorMap: {\n [key: number]: string\n }\n\n private _isPixel: boolean\n private _canvasBox: HTMLDivElement | undefined\n private _attachmentMesh: Mesh | undefined\n private _supercluster: Supercluster\n private _range: RangeType | undefined\n\n private get defaultMax() {\n return Math.max(...this.data.map(item => item.value))\n }\n\n public get url() {\n return this._url\n }\n\n constructor(options: HeatMapOptions) {\n super()\n\n this._colorMap = options.colorMap || defaultGradient\n this._radius = options.radius ?? 40\n this._height = options.height ?? 70\n this._isPixel = options.isPixel ?? false\n this._range = options.range\n\n // this.initSupercluster()\n }\n\n private initSupercluster() {\n this._supercluster = new Supercluster({\n radius: 40,\n minZoom: 1,\n maxZoom: 16,\n })\n }\n\n /**\n * set supercluster data\n */\n private setSuperclusterData() {\n const featuresPoints = this.data.map((item) => {\n return {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: [item.x, item.z],\n },\n }\n })\n\n console.log('正在加载点数据到supercluster:', featuresPoints.length)\n this._supercluster.load(featuresPoints as Supercluster.PointFeature<AnyProps>[])\n }\n\n /**\n * get zoom level\n * @param camera\n * @returns\n */\n private getZoomLevel(camera: PerspectiveCamera) {\n const minZoom = 10\n const maxZoom = 16\n const minHeight = 10\n const maxHeight = 1000\n\n return Math.max(minZoom, Math.min(maxZoom,\n ((maxHeight - camera.position.y) / (maxHeight - minHeight)) * (maxZoom - minZoom) + minZoom,\n ))\n }\n\n /**\n * get supercluster data\n * @returns\n */\n private getSuperclusterData() {\n const { max } = this.calDataMaxMin()\n const zoom = this.getZoomLevel(use.useScene().camera)\n const clusters = this._supercluster.getClusters([-max, -max, max, max], zoom)\n\n console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length)\n\n return clusters\n }\n\n /**\n * calculate data max and min\n * @returns\n */\n private calDataMaxMin() {\n const maxX = Math.max(...this.data.map(item => item.x))\n const minX = Math.min(...this.data.map(item => item.x))\n const maxZ = Math.max(...this.data.map(item => item.z))\n const minZ = Math.min(...this.data.map(item => item.z))\n\n const max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60)\n const maxRadius = Math.max(...this.data.map(item => item.radius ?? this._radius), this._radius)\n\n const width = max * 2\n const height = max * 2\n\n const realShowWidth = maxX - minX\n const realShowHeight = maxZ - minZ\n\n const realShowMax = Math.max(Math.ceil(realShowWidth), Math.ceil(realShowHeight), 60)\n\n return { width, height, max, minX, minZ, maxX, maxZ, realShowMax, realShowWidth, realShowHeight, maxRadius }\n }\n\n /**\n * generateAsitePoints\n * @param data\n */\n private generateAsitePoints(data: HeatMapData[]) {\n const maxX = Math.max(...data.map(item => item.x))\n const minX = Math.min(...data.map(item => item.x))\n const maxZ = Math.max(...data.map(item => item.z))\n const minZ = Math.min(...data.map(item => item.z))\n\n const maxRadius = 2 * Math.max(...data.map(item => item.radius ?? this._radius), this._radius)\n\n const boundaryPoints = [\n { x: minX - maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: minX - maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n ]\n\n return { boundaryPoints, maxRadius }\n }\n\n /**\n * generate new origin\n * @returns\n */\n private get newOrigin() {\n // need to consider one point and multiple points\n const { minX, minZ, maxX, maxZ } = this.calDataMaxMin()\n\n return {\n x: (maxX + minX) / 2,\n z: (maxZ + minZ) / 2,\n }\n }\n\n /**\n * coordinate 3D transformation\n * @param data\n * @returns\n */\n private coordinate3DTransformation(data: HeatMapData[]) {\n const { x, z } = this.newOrigin\n return data.map(item => ({\n ...item,\n x: item.x - x,\n z: item.z - z,\n radius: item.radius ?? this._radius,\n }))\n }\n\n /**\n * coordinate transformation, to canvas coordinate\n * @param data\n * @returns\n */\n private coordinateTransformation(data: HeatMapData[]) {\n const hanldeData = this.coordinate3DTransformation(data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const resolutionScale = this.calResolutionScale()\n\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width) * resolutionScale,\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height) * resolutionScale,\n value: item.value,\n radius: (item.radius ?? this._radius) * resolutionScale * 2,\n // @ts-ignore\n isBoundary: item?.isBoundary,\n }))\n\n // console.log('原始', data, realShowWidth, realShowHeight)\n // console.log('newOrigin', this.newOrigin)\n // console.log('hanldeData', hanldeData)\n // console.log('结果', result)\n // console.log('resolutionScale', resolutionScale, realShowWidth, realShowHeight, realShowWidth * resolutionScale, realShowHeight * resolutionScale)\n\n return result\n }\n\n /**\n * generate heatmap texture\n * @param canvasBox\n * @returns\n */\n private createHeatmapTool() {\n const heatmap = h.create({\n container: this._canvasBox,\n radius: this._radius,\n gradient: this._colorMap,\n maxOpacity: 1,\n minOpacity: 0,\n })\n\n return heatmap\n }\n\n /**\n * create heatmap container canvas\n * @returns\n */\n private createCanvas(width: number, height: number) {\n const canvasBox = document.createElement('div')\n\n canvasBox.style.width = `${width}px`\n canvasBox.style.height = `${height}px`\n canvasBox.style.top = '0'\n canvasBox.style.right = '0'\n\n use.useScene().domElement.parentElement.appendChild(canvasBox)\n\n return canvasBox\n }\n\n /**\n * calculate resolution scale\n * @param width\n * @returns\n */\n private calResolutionScale() {\n const hanldeData = this.coordinate3DTransformation(this.data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width),\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height),\n value: item.value,\n radius: item.radius * 2,\n }))\n\n const maxRadius = Math.max(...result.map(item => item.radius))\n const maxX = Math.max(...result.map(item => item.x))\n const maxY = Math.max(...result.map(item => item.y))\n const max = Math.max(maxX, maxY)\n\n if (max <= 1000) {\n const scale = (1000 - max) / 1000 * 15 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n if (max <= 5000) {\n const scale = (5000 - max) / 5000 * 5 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n return 1\n }\n\n /**\n * create attachment mesh\n */\n private createAttachmentMesh() {\n if (this._attachmentMesh)\n this.remove(this._attachmentMesh)\n\n const { realShowMax, max, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const canvas = this._heatmap._renderer.canvas\n const texture = new CanvasTexture(canvas)\n\n texture.minFilter = NearestFilter\n texture.magFilter = NearestFilter\n\n this._url = canvas.toDataURL('image/png')\n\n const threshold = (0.3 / 1000 * realShowMax)\n const shaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: texture },\n granularity: { value: realShowMax / 3 < 300 ? 300 : realShowMax / 3 },\n threshold: { value: threshold > 0.6 ? 0.6 : threshold < 0.25 ? 0.25 : threshold },\n uOpacity: { value: 2.0 },\n uHeight: { value: this._height },\n isPixel: { value: this._isPixel },\n uRange: { value: new Vector2(-max, max) },\n\n },\n vertexShader: heightVertexShader,\n fragmentShader: heightFragmentShader,\n transparent: true,\n side: DoubleSide,\n depthTest: false,\n })\n\n const mesh = new Mesh(new PlaneGeometry(realShowWidth, realShowHeight, 500, 500), shaderMaterial)\n const { x, z } = this.newOrigin\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(x, 0, z)\n mesh.renderOrder = 1000\n\n this._attachmentMesh = mesh\n this.add(mesh)\n }\n\n /**\n * set heatmap data\n * @param data\n */\n public setData(data: HeatMapData[]) {\n const { boundaryPoints } = this.generateAsitePoints(data)\n this.data = [...boundaryPoints, ...data]\n\n const heatmapData = this.coordinateTransformation(this.data)\n this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n this._canvasBox = this.createCanvas(Math.max(...heatmapData.map(item => item.x)), Math.max(...heatmapData.map(item => item.y)))\n this._heatmap = this.createHeatmapTool()\n\n this._heatmap.setData({\n data: heatmapData.filter(item => !item.isBoundary),\n max: this._range?.max ?? this.defaultMax,\n min: this._range?.min ?? 0,\n })\n\n this.createAttachmentMesh()\n\n // 聚类暂时不实现\n // this.setSuperclusterData()\n // use.useScene().orbitControls.addEventListener('change', () => {\n // const clusters = this.getSuperclusterData()\n // console.log(clusters)\n // })\n }\n\n override removeFromParent(): this {\n super.removeFromParent()\n use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n\n // @ts-ignore\n this._attachmentMesh?.material.dispose()\n\n return this\n }\n}\n\nexport default HeatMap"],"mappings":"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"}
1
+ {"version":3,"names":["CanvasTexture","DoubleSide","Mesh","NearestFilter","Object3D","PlaneGeometry","ShaderMaterial","Vector2","use","h","Supercluster","heightFragmentShader","heightVertexShader","defaultGradient","HeatMap","_Object3D","_inherits","_super","_createSuper","options","_options$radius","_options$height","_options$isPixel","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_colorMap","colorMap","_radius","radius","_height","height","_isPixel","isPixel","_range","range","_createClass","key","get","Math","max","apply","_toConsumableArray","data","map","item","value","_url","initSupercluster","_supercluster","minZoom","maxZoom","setSuperclusterData","featuresPoints","type","properties","geometry","coordinates","x","z","console","log","length","load","getZoomLevel","camera","minHeight","maxHeight","min","position","y","getSuperclusterData","_this$calDataMaxMin","calDataMaxMin","zoom","useScene","clusters","getClusters","_this2","maxX","minX","maxZ","minZ","abs","ceil","maxRadius","_item$radius","concat","width","realShowWidth","realShowHeight","realShowMax","generateAsitePoints","_this3","_item$radius2","boundaryPoints","isBoundary","_this$calDataMaxMin2","coordinate3DTransformation","_this4","_this$newOrigin","newOrigin","_item$radius3","_objectSpread","coordinateTransformation","_this5","hanldeData","_this$calDataMaxMin3","resolutionScale","calResolutionScale","result","_item$radius4","floor","createHeatmapTool","heatmap","create","container","_canvasBox","gradient","maxOpacity","minOpacity","createCanvas","canvasBox","document","createElement","style","top","right","domElement","parentElement","appendChild","_this$calDataMaxMin4","maxY","scale","createAttachmentMesh","_attachmentMesh","remove","_this$calDataMaxMin5","canvas","_heatmap","_renderer","texture","minFilter","magFilter","toDataURL","threshold","shaderMaterial","uniforms","granularity","uOpacity","uHeight","uRange","vertexShader","fragmentShader","transparent","side","depthTest","mesh","_this$newOrigin2","rotation","PI","set","renderOrder","add","setData","_this$_range$max","_this$_range","_this$_range$min","_this$_range2","_this$generateAsitePo","heatmapData","removeChild","filter","defaultMax","removeFromParent","_get","_getPrototypeOf","prototype","parent","_this$_attachmentMesh","material","dispose"],"sources":["../../../src/business/HeatMap/HeatMap.ts"],"sourcesContent":["import type { PerspectiveCamera } from '@anov/3d-core'\nimport { CanvasTexture, DoubleSide, Mesh, NearestFilter, Object3D, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport h from 'anov-heat-map'\nimport type { AnyProps } from 'supercluster'\nimport Supercluster from 'supercluster'\nimport { heightFragmentShader, heightVertexShader } from './shader'\nimport type { HeatMapData, HeatMapnterface } from './index'\n\ntype RangeType = {\n min: number\n max: number\n}\n\ntype HeatMapOptions = {\n colorMap?: {\n [key: number]: string\n }\n max?: number\n radius?: number\n height?: number\n isPixel?: boolean\n range?: RangeType\n}\n\nconst defaultGradient = { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' }\n\n/**\n * 区域热力图\n */\n\nclass HeatMap extends Object3D implements HeatMapnterface {\n public data: HeatMapData[] = []\n\n private _height: number\n private _radius: number\n private _heatmap: any\n private _url: string\n private _colorMap: {\n [key: number]: string\n }\n\n private _isPixel: boolean\n private _canvasBox: HTMLDivElement | undefined\n private _attachmentMesh: Mesh | undefined\n private _supercluster: Supercluster\n private _range: RangeType | undefined\n\n private get defaultMax() {\n return Math.max(...this.data.map(item => item.value))\n }\n\n public get url() {\n return this._url\n }\n\n constructor(options: HeatMapOptions) {\n super()\n\n this._colorMap = options.colorMap || defaultGradient\n this._radius = options.radius ?? 40\n this._height = options.height ?? 70\n this._isPixel = options.isPixel ?? false\n this._range = options.range\n\n // this.initSupercluster()\n }\n\n private initSupercluster() {\n this._supercluster = new Supercluster({\n radius: 40,\n minZoom: 1,\n maxZoom: 16,\n })\n }\n\n /**\n * set supercluster data\n */\n private setSuperclusterData() {\n const featuresPoints = this.data.map((item) => {\n return {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: [item.x, item.z],\n },\n }\n })\n\n console.log('正在加载点数据到supercluster:', featuresPoints.length)\n this._supercluster.load(featuresPoints as Supercluster.PointFeature<AnyProps>[])\n }\n\n /**\n * get zoom level\n * @param camera\n * @returns\n */\n private getZoomLevel(camera: PerspectiveCamera) {\n const minZoom = 10\n const maxZoom = 16\n const minHeight = 10\n const maxHeight = 1000\n\n return Math.max(minZoom, Math.min(maxZoom,\n ((maxHeight - camera.position.y) / (maxHeight - minHeight)) * (maxZoom - minZoom) + minZoom,\n ))\n }\n\n /**\n * get supercluster data\n * @returns\n */\n private getSuperclusterData() {\n const { max } = this.calDataMaxMin()\n const zoom = this.getZoomLevel(use.useScene().camera)\n const clusters = this._supercluster.getClusters([-max, -max, max, max], zoom)\n\n console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length)\n\n return clusters\n }\n\n /**\n * calculate data max and min\n * @returns\n */\n private calDataMaxMin() {\n const maxX = Math.max(...this.data.map(item => item.x))\n const minX = Math.min(...this.data.map(item => item.x))\n const maxZ = Math.max(...this.data.map(item => item.z))\n const minZ = Math.min(...this.data.map(item => item.z))\n\n const max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60)\n const maxRadius = Math.max(...this.data.map(item => item.radius ?? this._radius), this._radius)\n\n const width = max * 2\n const height = max * 2\n\n const realShowWidth = maxX - minX\n const realShowHeight = maxZ - minZ\n\n const realShowMax = Math.max(Math.ceil(realShowWidth), Math.ceil(realShowHeight), 60)\n\n return { width, height, max, minX, minZ, maxX, maxZ, realShowMax, realShowWidth, realShowHeight, maxRadius }\n }\n\n /**\n * generateAsitePoints\n * @param data\n */\n private generateAsitePoints(data: HeatMapData[]) {\n const maxX = Math.max(...data.map(item => item.x))\n const minX = Math.min(...data.map(item => item.x))\n const maxZ = Math.max(...data.map(item => item.z))\n const minZ = Math.min(...data.map(item => item.z))\n\n const maxRadius = 2 * Math.max(...data.map(item => item.radius ?? this._radius), this._radius)\n\n const boundaryPoints = [\n { x: minX - maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: minX - maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n ]\n\n return { boundaryPoints, maxRadius }\n }\n\n /**\n * generate new origin\n * @returns\n */\n private get newOrigin() {\n // need to consider one point and multiple points\n const { minX, minZ, maxX, maxZ } = this.calDataMaxMin()\n\n return {\n x: (maxX + minX) / 2,\n z: (maxZ + minZ) / 2,\n }\n }\n\n /**\n * coordinate 3D transformation\n * @param data\n * @returns\n */\n private coordinate3DTransformation(data: HeatMapData[]) {\n const { x, z } = this.newOrigin\n return data.map(item => ({\n ...item,\n x: item.x - x,\n z: item.z - z,\n radius: item.radius ?? this._radius,\n }))\n }\n\n /**\n * coordinate transformation, to canvas coordinate\n * @param data\n * @returns\n */\n private coordinateTransformation(data: HeatMapData[]) {\n const hanldeData = this.coordinate3DTransformation(data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const resolutionScale = this.calResolutionScale()\n\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width) * resolutionScale,\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height) * resolutionScale,\n value: item.value,\n radius: (item.radius ?? this._radius) * resolutionScale * 2,\n // @ts-ignore\n isBoundary: item?.isBoundary,\n }))\n\n // console.log('原始', data, realShowWidth, realShowHeight)\n // console.log('newOrigin', this.newOrigin)\n // console.log('hanldeData', hanldeData)\n // console.log('结果', result)\n // console.log('resolutionScale', resolutionScale, realShowWidth, realShowHeight, realShowWidth * resolutionScale, realShowHeight * resolutionScale)\n\n return result\n }\n\n /**\n * generate heatmap texture\n * @param canvasBox\n * @returns\n */\n private createHeatmapTool() {\n const heatmap = h.create({\n container: this._canvasBox,\n radius: this._radius,\n gradient: this._colorMap,\n maxOpacity: 1,\n minOpacity: 0,\n })\n\n return heatmap\n }\n\n /**\n * create heatmap container canvas\n * @returns\n */\n private createCanvas(width: number, height: number) {\n const canvasBox = document.createElement('div')\n\n canvasBox.style.width = `${width}px`\n canvasBox.style.height = `${height}px`\n canvasBox.style.top = '0'\n canvasBox.style.right = '0'\n\n use.useScene().domElement.parentElement.appendChild(canvasBox)\n\n return canvasBox\n }\n\n /**\n * calculate resolution scale\n * @param width\n * @returns\n */\n private calResolutionScale() {\n const hanldeData = this.coordinate3DTransformation(this.data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width),\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height),\n value: item.value,\n radius: item.radius * 2,\n }))\n\n const maxRadius = Math.max(...result.map(item => item.radius))\n const maxX = Math.max(...result.map(item => item.x))\n const maxY = Math.max(...result.map(item => item.y))\n const max = Math.max(maxX, maxY)\n\n if (max <= 1000) {\n const scale = (1000 - max) / 1000 * 15 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n if (max <= 5000) {\n const scale = (5000 - max) / 5000 * 5 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n return 1\n }\n\n /**\n * create attachment mesh\n */\n private createAttachmentMesh() {\n if (this._attachmentMesh)\n this.remove(this._attachmentMesh)\n\n const { realShowMax, max, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const canvas = this._heatmap._renderer.canvas\n const texture = new CanvasTexture(canvas)\n\n texture.minFilter = NearestFilter\n texture.magFilter = NearestFilter\n\n this._url = canvas.toDataURL('image/png')\n\n const threshold = (0.3 / 1000 * realShowMax)\n const shaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: texture },\n granularity: { value: realShowMax / 3 < 300 ? 300 : realShowMax / 3 },\n threshold: { value: threshold > 0.6 ? 0.6 : threshold < 0.25 ? 0.25 : threshold },\n uOpacity: { value: 2.0 },\n uHeight: { value: this._height },\n isPixel: { value: this._isPixel },\n uRange: { value: new Vector2(-max, max) },\n\n },\n vertexShader: heightVertexShader,\n fragmentShader: heightFragmentShader,\n transparent: true,\n side: DoubleSide,\n depthTest: false,\n })\n\n const mesh = new Mesh(new PlaneGeometry(realShowWidth, realShowHeight, 500, 500), shaderMaterial)\n const { x, z } = this.newOrigin\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(x, 0, z)\n mesh.renderOrder = 1000\n\n this._attachmentMesh = mesh\n this.add(mesh)\n }\n\n /**\n * set heatmap data\n * @param data\n */\n public setData(data: HeatMapData[]) {\n const { boundaryPoints } = this.generateAsitePoints(data)\n this.data = [...boundaryPoints, ...data]\n\n const heatmapData = this.coordinateTransformation(this.data)\n this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n this._canvasBox = this.createCanvas(Math.max(...heatmapData.map(item => item.x)), Math.max(...heatmapData.map(item => item.y)))\n this._heatmap = this.createHeatmapTool()\n\n this._heatmap.setData({\n data: heatmapData.filter(item => !item.isBoundary),\n max: this._range?.max ?? this.defaultMax,\n min: this._range?.min ?? 0,\n })\n\n this.createAttachmentMesh()\n\n // 聚类暂时不实现\n // this.setSuperclusterData()\n // use.useScene().orbitControls.addEventListener('change', () => {\n // const clusters = this.getSuperclusterData()\n // console.log(clusters)\n // })\n }\n\n override removeFromParent(): this {\n super.removeFromParent()\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n if (this.parent) {\n use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n\n // @ts-ignore\n this._attachmentMesh?.material.dispose()\n }\n\n return this\n }\n}\n\nexport default HeatMap"],"mappings":"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"}
@@ -23,7 +23,7 @@ var injectBaseFinir = function injectBaseFinir(shader) {
23
23
  shader.uniforms.rimPower = {
24
24
  value: power
25
25
  };
26
- shader.fragmentShader = /* glsl */"\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', "\n #include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor; \n ".concat(fragmentShader)), "\n ");
26
+ shader.fragmentShader = /* glsl */"\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n varying vec3 vViewDirection;\n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', "\n #include <dithering_fragment>\n vec3 viewDir = normalize(vViewDirection);\n float dotNV = 1.0-saturate( dot( normal, viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor; \n ".concat(fragmentShader)), "\n ");
27
27
  };
28
28
  var modifyTheMaterial = function modifyTheMaterial(material, baseOption, shaderOption) {
29
29
  var transparent = baseOption.transparent,
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","SwitchType","finirColor","lowFinirColor","heightTransitionEffect","injectBaseFinir","shader","power","arguments","length","undefined","color","fragmentShader","uniforms","rimColor","value","rimPower","concat","replace","modifyTheMaterial","material","baseOption","shaderOption","transparent","depthTest","depthWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","_baseOption$alphaTest","alphaTest","blending","vertexShader","preVertexShader","preFragmentShader","callback","onBeforeCompile","_objectSpread","needsUpdate","conversionRealFade","type","newMaterial","clone","progress","objSize","maxSize","center","isFadeIn","injectToFrameFade","object","traverse","child","isMesh","userData","originalMaterial","Frame","side","addOpacity","isFrameFadeIn","injectToRealFade","isRealFadeIn","injectToBaseWrite","Pure","isPureFadeIn","injectToFinirMaterial","Fresnel","isFresnelFadeIn","injectToGround","time","isApi","inject","isSweepAway","u_interval","u_slice_height","u_height","height","finirheightTransitionEffect","u_time","u_speed","finirlowEffect"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial, use } from '@anov/3d-core'\nimport type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './shader/realFade'\nimport { frag as fragFinal, ver as verFinal } from './shader/finalFade'\nimport { ground } from './shader/ground'\nimport { SwitchType } from './MaterialSwitchSystem'\n\nconst finirColor = new Color('#2A78D9')\nconst lowFinirColor = new Color('#15407A') // 矮楼finir\n\nconst heightTransitionEffect = /* glsl */`\n float normalDotY = abs(dot(normal, vec3(0.0, 1.0, 0.0)));\n\n if (normalDotY < 0.8) {\n float interval = u_interval;\n float slice_height = u_slice_height;\n float y_pos = vWorldPosition.y + u_height;\n float section = floor(y_pos / interval);\n float section_start = section * interval;\n\n if (y_pos >= section_start && y_pos < section_start + slice_height) {\n float heightDelta = (y_pos - section_start) / slice_height; // 归一化高度 0-1\n vec4 sliceColor = vec4(0.0, 0.2, 0.5, 1.0);\n float mixFactor = smoothstep(0.0, 1.0, heightDelta);\n gl_FragColor = mix(sliceColor, gl_FragColor, mixFactor);\n }\n }\n `\n\nconst injectBaseFinir = (shader, power = 0.7, color = finirColor, fragmentShader = '') => {\n shader.uniforms.rimColor = { value: color }\n shader.uniforms.rimPower = { value: power }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor; \n ${fragmentShader}`,\n )}\n `\n}\n\ntype BaseOption = {\n transparent: boolean\n depthTest: boolean\n depthWrite: boolean\n polygonOffset: boolean\n polygonOffsetFactor: number\n polygonOffsetUnits: number\n alphaTest: number\n blending?: number\n}\n\ntype ShaderOption = {\n uniforms: Record<string, { value: any }>\n vertexShader: string\n fragmentShader: string\n preVertexShader: string\n preFragmentShader: string\n callback?: (shader: ShaderMaterial) => void\n}\n\nconst modifyTheMaterial = (material, baseOption: BaseOption, shaderOption: ShaderOption) => {\n const { transparent, depthTest, depthWrite, polygonOffset, polygonOffsetFactor, polygonOffsetUnits, alphaTest = 0.05, blending } = baseOption\n const { uniforms, vertexShader, fragmentShader, preVertexShader, preFragmentShader, callback } = shaderOption\n\n material.transparent = transparent\n material.depthTest = depthTest\n material.depthWrite = depthWrite\n material.polygonOffset = polygonOffset\n material.polygonOffsetFactor = polygonOffsetFactor\n material.polygonOffsetUnits = polygonOffsetUnits\n material.alphaTest = alphaTest\n blending && (material.blending = blending)\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ...uniforms,\n }\n\n shader.vertexShader = preVertexShader + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', vertexShader,\n )\n shader.fragmentShader = preFragmentShader + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', fragmentShader,\n )\n\n callback && callback(shader)\n }\n\n material.needsUpdate = true\n}\n\nconst conversionRealFade = (material: Material, type: 'Fresnel' | 'Frame' | 'Pure', uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n center: uniforms.center,\n isFadeIn: uniforms[`is${type}FadeIn`],\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n })\n\n return newMaterial\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Frame, uniforms as any)\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = true\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n child.material.alphaTest = 0.35\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n center: uniforms.center,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n\n child.material.needsUpdate = true\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n (child as Mesh).userData.originalMaterial = child.material\n const newMaterial = child.material.clone()\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n })\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Pure, uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 2,\n polygonOffsetUnits: 2,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n center: uniforms.center,\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n callback: (shader) => {\n injectBaseFinir(shader, 0.3, new Color('#fff'))\n },\n })\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Fresnel, uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 3,\n polygonOffsetUnits: 3,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n callback: (shader) => {\n injectBaseFinir(shader)\n },\n })\n\n child.material = newMaterial\n }\n })\n}\n\nexport const injectToGround = (\n object: Mesh,\n type: 'Real' | 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; time: { value: number }; isApi: { value: boolean } },\n) => {\n object.material = new ShaderMaterial({\n uniforms: {\n ...ground.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n time: uniforms.time,\n isApi: uniforms.isApi,\n },\n vertexShader: ground.vertexShader,\n fragmentShader: ground.fragmentShader,\n transparent: true,\n side: 2,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: 5,\n polygonOffsetUnits: 5,\n alphaTest: 0.05,\n })\n\n object.material.needsUpdate = true\n}\n\nexport const inject = (\n material: Material,\n type: 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; height: { value: number } },\n isSweepAway = false,\n) => {\n material.transparent = true\n material.depthTest = true\n material.depthWrite = true\n material.alphaTest = 0.05\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + `${isSweepAway ? heightTransitionEffect : ''}`,\n )}\n `\n }\n\n material.needsUpdate = true\n\n return material\n}\n\nexport const finirheightTransitionEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n injectBaseFinir(shader, 0.7, finirColor, heightTransitionEffect)\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n\nexport const finirlowEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 3,\n polygonOffsetUnits: 3,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n callback: (shader) => {\n injectBaseFinir(shader, 0.7, lowFinirColor)\n },\n })\n\n return newMaterial\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","SwitchType","finirColor","lowFinirColor","heightTransitionEffect","injectBaseFinir","shader","power","arguments","length","undefined","color","fragmentShader","uniforms","rimColor","value","rimPower","concat","replace","modifyTheMaterial","material","baseOption","shaderOption","transparent","depthTest","depthWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","_baseOption$alphaTest","alphaTest","blending","vertexShader","preVertexShader","preFragmentShader","callback","onBeforeCompile","_objectSpread","needsUpdate","conversionRealFade","type","newMaterial","clone","progress","objSize","maxSize","center","isFadeIn","injectToFrameFade","object","traverse","child","isMesh","userData","originalMaterial","Frame","side","addOpacity","isFrameFadeIn","injectToRealFade","isRealFadeIn","injectToBaseWrite","Pure","isPureFadeIn","injectToFinirMaterial","Fresnel","isFresnelFadeIn","injectToGround","time","isApi","inject","isSweepAway","u_interval","u_slice_height","u_height","height","finirheightTransitionEffect","u_time","u_speed","finirlowEffect"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial, use } from '@anov/3d-core'\nimport type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './shader/realFade'\nimport { frag as fragFinal, ver as verFinal } from './shader/finalFade'\nimport { ground } from './shader/ground'\nimport { SwitchType } from './MaterialSwitchSystem'\n\nconst finirColor = new Color('#2A78D9')\nconst lowFinirColor = new Color('#15407A') // 矮楼finir\n\nconst heightTransitionEffect = /* glsl */`\n float normalDotY = abs(dot(normal, vec3(0.0, 1.0, 0.0)));\n\n if (normalDotY < 0.8) {\n float interval = u_interval;\n float slice_height = u_slice_height;\n float y_pos = vWorldPosition.y + u_height;\n float section = floor(y_pos / interval);\n float section_start = section * interval;\n\n if (y_pos >= section_start && y_pos < section_start + slice_height) {\n float heightDelta = (y_pos - section_start) / slice_height; // 归一化高度 0-1\n vec4 sliceColor = vec4(0.0, 0.2, 0.5, 1.0);\n float mixFactor = smoothstep(0.0, 1.0, heightDelta);\n gl_FragColor = mix(sliceColor, gl_FragColor, mixFactor);\n }\n }\n `\n\nconst injectBaseFinir = (shader, power = 0.7, color = finirColor, fragmentShader = '') => {\n shader.uniforms.rimColor = { value: color }\n shader.uniforms.rimPower = { value: power }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n varying vec3 vViewDirection;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n vec3 viewDir = normalize(vViewDirection);\n float dotNV = 1.0-saturate( dot( normal, viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor; \n ${fragmentShader}`,\n )}\n `\n}\n\ntype BaseOption = {\n transparent: boolean\n depthTest: boolean\n depthWrite: boolean\n polygonOffset: boolean\n polygonOffsetFactor: number\n polygonOffsetUnits: number\n alphaTest: number\n blending?: number\n}\n\ntype ShaderOption = {\n uniforms: Record<string, { value: any }>\n vertexShader: string\n fragmentShader: string\n preVertexShader: string\n preFragmentShader: string\n callback?: (shader: ShaderMaterial) => void\n}\n\nconst modifyTheMaterial = (material, baseOption: BaseOption, shaderOption: ShaderOption) => {\n const { transparent, depthTest, depthWrite, polygonOffset, polygonOffsetFactor, polygonOffsetUnits, alphaTest = 0.05, blending } = baseOption\n const { uniforms, vertexShader, fragmentShader, preVertexShader, preFragmentShader, callback } = shaderOption\n\n material.transparent = transparent\n material.depthTest = depthTest\n material.depthWrite = depthWrite\n material.polygonOffset = polygonOffset\n material.polygonOffsetFactor = polygonOffsetFactor\n material.polygonOffsetUnits = polygonOffsetUnits\n material.alphaTest = alphaTest\n blending && (material.blending = blending)\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ...uniforms,\n }\n\n shader.vertexShader = preVertexShader + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', vertexShader,\n )\n shader.fragmentShader = preFragmentShader + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', fragmentShader,\n )\n\n callback && callback(shader)\n }\n\n material.needsUpdate = true\n}\n\nconst conversionRealFade = (material: Material, type: 'Fresnel' | 'Frame' | 'Pure', uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n center: uniforms.center,\n isFadeIn: uniforms[`is${type}FadeIn`],\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n })\n\n return newMaterial\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Frame, uniforms as any)\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = true\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n child.material.alphaTest = 0.35\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n center: uniforms.center,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n\n child.material.needsUpdate = true\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n (child as Mesh).userData.originalMaterial = child.material\n const newMaterial = child.material.clone()\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: 1,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n })\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Pure, uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 2,\n polygonOffsetUnits: 2,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n center: uniforms.center,\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n callback: (shader) => {\n injectBaseFinir(shader, 0.3, new Color('#fff'))\n },\n })\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Fresnel, uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 3,\n polygonOffsetUnits: 3,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n callback: (shader) => {\n injectBaseFinir(shader)\n },\n })\n\n child.material = newMaterial\n }\n })\n}\n\nexport const injectToGround = (\n object: Mesh,\n type: 'Real' | 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; time: { value: number }; isApi: { value: boolean } },\n) => {\n object.material = new ShaderMaterial({\n uniforms: {\n ...ground.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n time: uniforms.time,\n isApi: uniforms.isApi,\n },\n vertexShader: ground.vertexShader,\n fragmentShader: ground.fragmentShader,\n transparent: true,\n side: 2,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: 5,\n polygonOffsetUnits: 5,\n alphaTest: 0.05,\n })\n\n object.material.needsUpdate = true\n}\n\nexport const inject = (\n material: Material,\n type: 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; height: { value: number } },\n isSweepAway = false,\n) => {\n material.transparent = true\n material.depthTest = true\n material.depthWrite = true\n material.alphaTest = 0.05\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + `${isSweepAway ? heightTransitionEffect : ''}`,\n )}\n `\n }\n\n material.needsUpdate = true\n\n return material\n}\n\nexport const finirheightTransitionEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n injectBaseFinir(shader, 0.7, finirColor, heightTransitionEffect)\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n\nexport const finirlowEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n\n modifyTheMaterial(newMaterial,\n {\n transparent: true,\n depthTest: true,\n depthWrite: true,\n polygonOffset: true,\n polygonOffsetFactor: 3,\n polygonOffsetUnits: 3,\n alphaTest: 0.05,\n },\n {\n uniforms: {\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n },\n vertexShader: ver,\n fragmentShader: frag,\n preVertexShader: ver_pre,\n preFragmentShader: frag_pre,\n callback: (shader) => {\n injectBaseFinir(shader, 0.7, lowFinirColor)\n },\n })\n\n return newMaterial\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export declare const ver_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n";
2
- export declare const ver = "\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n";
1
+ export declare const ver_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nvarying vec3 vViewDirection;\n";
2
+ export declare const ver = "\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n // \u8BA1\u7B97\u89C6\u7EBF\u65B9\u5411\uFF08\u4ECE\u9876\u70B9\u6307\u5411\u76F8\u673A\uFF09\nvViewDirection = normalize(cameraPosition - worldPosition1.xyz);\n";
3
3
  export declare const frag_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n";
4
4
  export declare const frag = "\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (progress == 0.0) {\n diffuseColor.w = 0.0;\n} else if (progress == 1.0) {\n \n} else{\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n}\n\n";
5
5
  declare const RealFadeObjS: {
@@ -1,5 +1,5 @@
1
- export var ver_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n";
2
- export var ver = /* glsl */"\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n";
1
+ export var ver_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nvarying vec3 vViewDirection;\n";
2
+ export var ver = /* glsl */"\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n // \u8BA1\u7B97\u89C6\u7EBF\u65B9\u5411\uFF08\u4ECE\u9876\u70B9\u6307\u5411\u76F8\u673A\uFF09\nvViewDirection = normalize(cameraPosition - worldPosition1.xyz);\n";
3
3
  export var frag_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n";
4
4
  export var frag = /* glsl */"\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (progress == 0.0) {\n diffuseColor.w = 0.0;\n} else if (progress == 1.0) {\n \n} else{\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n}\n\n";
5
5
  var RealFadeObjS = {
@@ -1 +1 @@
1
- {"version":3,"names":["ver_pre","ver","frag_pre","frag","RealFadeObjS"],"sources":["../../../../src/business/MaterialSwitch/shader/realFade.ts"],"sourcesContent":["export const ver_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n`\n\nexport const ver = /* glsl */ `\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n`\n\nexport const frag_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n`\n\nexport const frag = /* glsl */ `\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (progress == 0.0) {\n diffuseColor.w = 0.0;\n} else if (progress == 1.0) {\n \n} else{\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n}\n\n`\n\nconst RealFadeObjS = { ver_pre, ver, frag_pre, frag }\n\nexport default RealFadeObjS"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,qEAGtB;AAED,OAAO,IAAMC,GAAG,GAAG,yIAKlB;AAED,OAAO,IAAMC,QAAQ,GAAG,oKAOvB;AAED,OAAO,IAAMC,IAAI,GAAG,6lBAqBnB;AAED,IAAMC,YAAY,GAAG;EAAEJ,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAEC,QAAQ,EAARA,QAAQ;EAAEC,IAAI,EAAJA;AAAK,CAAC;AAErD,eAAeC,YAAY"}
1
+ {"version":3,"names":["ver_pre","ver","frag_pre","frag","RealFadeObjS"],"sources":["../../../../src/business/MaterialSwitch/shader/realFade.ts"],"sourcesContent":["export const ver_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nvarying vec3 vViewDirection;\n`\n\nexport const ver = /* glsl */ `\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n // 计算视线方向(从顶点指向相机)\nvViewDirection = normalize(cameraPosition - worldPosition1.xyz);\n`\n\nexport const frag_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n`\n\nexport const frag = /* glsl */ `\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (progress == 0.0) {\n diffuseColor.w = 0.0;\n} else if (progress == 1.0) {\n \n} else{\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n}\n\n`\n\nconst RealFadeObjS = { ver_pre, ver, frag_pre, frag }\n\nexport default RealFadeObjS"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,mGAItB;AAED,OAAO,IAAMC,GAAG,GAAG,8SAOlB;AAED,OAAO,IAAMC,QAAQ,GAAG,oKAOvB;AAED,OAAO,IAAMC,IAAI,GAAG,6lBAqBnB;AAED,IAAMC,YAAY,GAAG;EAAEJ,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAEC,QAAQ,EAARA,QAAQ;EAAEC,IAAI,EAAJA;AAAK,CAAC;AAErD,eAAeC,YAAY"}
@@ -20,7 +20,7 @@ export default class TitleMesh extends ObjectLayer {
20
20
  private _debouncedUpdate;
21
21
  constructor(option: TextOption);
22
22
  get ready(): Promise<boolean>;
23
- get mesh(): Group | Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]>;
23
+ get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]> | Group;
24
24
  get value(): string;
25
25
  set value(newValue: string);
26
26
  get fontSize(): number;
@@ -21,7 +21,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
21
21
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
22
22
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
23
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
24
- import { DoubleSide, Group, Mesh, MeshBasicMaterial, PlaneGeometry, TextureLoader, sRGBEncoding } from '@anov/3d-core';
24
+ import { DoubleSide, Group, Mesh, MeshBasicMaterial, NearestFilter, PlaneGeometry, SRGBColorSpace, TextureLoader } from '@anov/3d-core';
25
25
  import debounce from 'lodash/debounce';
26
26
  import { createTextCanvas } from "../tools";
27
27
  import ObjectLayer from "../../Base/ObjectLayer";
@@ -236,7 +236,7 @@ var TitleMesh = /*#__PURE__*/function (_ObjectLayer) {
236
236
  width: canvasW / 100,
237
237
  height: canvasH / 100,
238
238
  source: texture,
239
- offset: [0, 0, 0],
239
+ offset: [0, 0, 0.001],
240
240
  color: this._color
241
241
  });
242
242
  this.add(group);
@@ -280,16 +280,24 @@ var TitleMesh = /*#__PURE__*/function (_ObjectLayer) {
280
280
  color = _ref.color,
281
281
  offset = _ref.offset;
282
282
  var texture = typeof source == 'string' ? new TextureLoader().load(source) : source;
283
- texture.encoding = sRGBEncoding;
283
+ texture.colorSpace = SRGBColorSpace;
284
+ texture.magFilter = NearestFilter; // 或 LinearFilter
285
+ texture.minFilter = NearestFilter; // 避免mipmap混合
286
+ texture.generateMipmaps = false; // 禁用mipmap生成
287
+
284
288
  var meshBasicMaterial = new MeshBasicMaterial({
285
289
  map: texture,
286
290
  transparent: true,
291
+ alphaTest: 0.5,
287
292
  side: DoubleSide,
288
- color: color
293
+ color: color,
294
+ depthWrite: true,
295
+ depthTest: true,
296
+ polygonOffset: true,
297
+ // 解决深度冲突
298
+ polygonOffsetFactor: -1,
299
+ polygonOffsetUnits: -1
289
300
  });
290
- // meshBasicMaterial.depthWrite = false
291
- // meshBasicMaterial.depthTest = false
292
-
293
301
  var mesh = new Mesh(new PlaneGeometry(width, height), meshBasicMaterial);
294
302
  // mesh.renderOrder = 1000
295
303
 
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","DoubleSide","Group","Mesh","MeshBasicMaterial","PlaneGeometry","TextureLoader","sRGBEncoding","debounce","createTextCanvas","ObjectLayer","StrategyManage","border","_border","_callee","_callee$","_context","default","ellipse","_ellipse","_callee2","_callee2$","_context2","MIN_WIDTH","TitleMesh","_ObjectLayer","_inherits","_super","_createSuper","option","_this","_classCallCheck","_defineProperty","_assertThisInitialized","Set","fontSize","color","fontWeight","offset","bgUrl","uri","_value","_fontSize","_color","_fontWeight","_offset","_bgUrl","_uri","_debouncedUpdate","performUpdate","bind","_createClass","get","_readyPromise","_mesh","set","newValue","update","addReloadListener","callback","_listeners","add","removeReloadListener","delete","setupAnimation","destroy","cancel","clear","remove","removeFromParent","init","_createTextCanvas","canvasW","width","canvasH","height","texture","Math","max","_padding","group","initBackground","source","initText","cb","mesh","createPanel","_ref","load","encoding","meshBasicMaterial","map","transparent","side","position","fromArray","concat","_toConsumableArray"],"sources":["../../../../src/business/Poi/title/index.ts"],"sourcesContent":["import { DoubleSide, Group, Mesh, MeshBasicMaterial, MeshPhysicalMaterial, MeshStandardMaterial, PlaneGeometry, TextureLoader, sRGBEncoding } from '@anov/3d-core'\nimport debounce from 'lodash/debounce'\nimport type { TextOption } from '../types'\nimport { createTextCanvas } from '../tools'\nimport ObjectLayer from '../../Base/ObjectLayer'\n\nexport const StrategyManage = {\n border: async () => (await import('./Border')).default,\n ellipse: async () => (await import('./Ellipse')).default,\n}\n\nconst MIN_WIDTH = 1.2\nexport default class TitleMesh extends ObjectLayer {\n private _readyPromise: Promise<boolean>\n private _mesh: Group | Mesh\n private _listeners = new Set()\n\n _padding: [number, number]\n _bgUrl: string\n private _value: string\n private _fontSize: number\n private _color: string\n private _fontWeight: string\n private _offset: [number, number]\n private _uri: string\n private _debouncedUpdate: Function & { cancel: Function }\n\n constructor(option: TextOption) {\n super()\n const { value, fontSize, color, fontWeight, offset, bgUrl, uri } = option\n this._value = value\n this._fontSize = fontSize\n this._color = color\n this._fontWeight = fontWeight\n this._offset = offset\n if (bgUrl)\n this._bgUrl = bgUrl\n this._uri = uri\n this._debouncedUpdate = debounce(this.performUpdate.bind(this), 300)\n }\n\n public get ready() {\n return this._readyPromise\n }\n\n public get mesh() {\n return this._mesh\n }\n\n public get value(): string {\n return this._value\n }\n\n public set value(newValue: string) {\n if (this._value === newValue)\n return\n this._value = newValue\n this.update()\n }\n\n public get fontSize(): number {\n return this._fontSize\n }\n\n public set fontSize(newValue: number) {\n if (this._fontSize === newValue)\n return\n this._fontSize = newValue\n this.update()\n }\n\n public get color(): string {\n return this._color\n }\n\n public set color(newValue: string) {\n if (this._color === newValue)\n return\n this._color = newValue\n this.update()\n }\n\n public get fontWeight(): string {\n return this._fontWeight\n }\n\n public set fontWeight(newValue: string) {\n if (this._fontWeight === newValue)\n return\n this._fontWeight = newValue\n this.update()\n }\n\n public get offset(): [number, number] {\n return this._offset\n }\n\n public set offset(newValue: [number, number]) {\n this._offset = newValue\n this.update()\n }\n\n public get bgUrl(): string {\n return this._bgUrl\n }\n\n public set bgUrl(newValue: string) {\n if (this._bgUrl === newValue)\n return\n this._bgUrl = newValue\n this.update()\n }\n\n public get uri(): string {\n return this._uri\n }\n\n public set uri(newValue: string) {\n if (this._uri === newValue)\n return\n this._uri = newValue\n this.update()\n }\n\n // 注册监听\n public addReloadListener(callback) {\n this._listeners.add(callback)\n }\n\n // 移除监听\n public removeReloadListener(callback) {\n this._listeners.delete(callback)\n }\n\n public setupAnimation() {}\n\n // 销毁\n public destroy() {\n this._debouncedUpdate.cancel()\n this._listeners.clear()\n this._mesh.remove()\n this._mesh.removeFromParent()\n }\n\n init() {\n const { width: canvasW, height: canvasH, texture } = createTextCanvas({\n fontSize: this._fontSize,\n color: this._color,\n fontWeight: this._fontWeight,\n value: this._value,\n })\n // 转化为场景中的尺寸,并增加左右上下边距\n const width = Math.max(canvasW / 100 + this._padding[1] * 2, MIN_WIDTH)\n const height = canvasH / 100 + this._padding[0] * 2\n\n const group = new Group()\n this.initBackground(group, { width, height, source: this._bgUrl, offset: [0, 0, 0] })\n this.initText(group, { width: canvasW / 100, height: canvasH / 100, source: texture, offset: [0, 0, 0], color: this._color })\n this.add(group)\n this._mesh = group\n }\n\n // Update method with debounce\n private update(): void {\n this._debouncedUpdate()\n }\n\n private performUpdate(): void {\n this._mesh.remove()\n this._mesh.removeFromParent()\n this.init()\n this._listeners.forEach((cb: Function) => {\n cb()\n })\n }\n\n private initBackground(group: Group, option) {\n const mesh = this.createPanel(option)\n group.add(mesh)\n }\n\n private initText(group: Group, option) {\n const mesh = this.createPanel(option)\n group.add(mesh)\n }\n\n private createPanel({ width, height, source, color, offset }) {\n const texture = (typeof source == 'string') ? new TextureLoader().load(source) : source\n texture.encoding = sRGBEncoding\n\n const meshBasicMaterial = new MeshBasicMaterial({ map: texture, transparent: true, side: DoubleSide, color })\n // meshBasicMaterial.depthWrite = false\n // meshBasicMaterial.depthTest = false\n\n const mesh = new Mesh(\n new PlaneGeometry(width, height),\n meshBasicMaterial,\n )\n // mesh.renderOrder = 1000\n\n // this._scale && mesh.scale.fromArray(scale)\n offset && mesh.position.fromArray([...offset, 0])\n return mesh\n }\n}"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","DoubleSide","Group","Mesh","MeshBasicMaterial","NearestFilter","PlaneGeometry","SRGBColorSpace","TextureLoader","debounce","createTextCanvas","ObjectLayer","StrategyManage","border","_border","_callee","_callee$","_context","default","ellipse","_ellipse","_callee2","_callee2$","_context2","MIN_WIDTH","TitleMesh","_ObjectLayer","_inherits","_super","_createSuper","option","_this","_classCallCheck","_defineProperty","_assertThisInitialized","Set","fontSize","color","fontWeight","offset","bgUrl","uri","_value","_fontSize","_color","_fontWeight","_offset","_bgUrl","_uri","_debouncedUpdate","performUpdate","bind","_createClass","get","_readyPromise","_mesh","set","newValue","update","addReloadListener","callback","_listeners","add","removeReloadListener","delete","setupAnimation","destroy","cancel","clear","remove","removeFromParent","init","_createTextCanvas","canvasW","width","canvasH","height","texture","Math","max","_padding","group","initBackground","source","initText","cb","mesh","createPanel","_ref","load","colorSpace","magFilter","minFilter","generateMipmaps","meshBasicMaterial","map","transparent","alphaTest","side","depthWrite","depthTest","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","position","fromArray","concat","_toConsumableArray"],"sources":["../../../../src/business/Poi/title/index.ts"],"sourcesContent":["import { DoubleSide, Group, Mesh, MeshBasicMaterial, NearestFilter, PlaneGeometry, SRGBColorSpace, TextureLoader } from '@anov/3d-core'\nimport debounce from 'lodash/debounce'\nimport type { TextOption } from '../types'\nimport { createTextCanvas } from '../tools'\nimport ObjectLayer from '../../Base/ObjectLayer'\n\nexport const StrategyManage = {\n border: async () => (await import('./Border')).default,\n ellipse: async () => (await import('./Ellipse')).default,\n}\n\nconst MIN_WIDTH = 1.2\nexport default class TitleMesh extends ObjectLayer {\n private _readyPromise: Promise<boolean>\n private _mesh: Group | Mesh\n private _listeners = new Set()\n\n _padding: [number, number]\n _bgUrl: string\n private _value: string\n private _fontSize: number\n private _color: string\n private _fontWeight: string\n private _offset: [number, number]\n private _uri: string\n private _debouncedUpdate: Function & { cancel: Function }\n\n constructor(option: TextOption) {\n super()\n const { value, fontSize, color, fontWeight, offset, bgUrl, uri } = option\n this._value = value\n this._fontSize = fontSize\n this._color = color\n this._fontWeight = fontWeight\n this._offset = offset\n if (bgUrl)\n this._bgUrl = bgUrl\n this._uri = uri\n this._debouncedUpdate = debounce(this.performUpdate.bind(this), 300)\n }\n\n public get ready() {\n return this._readyPromise\n }\n\n public get mesh() {\n return this._mesh\n }\n\n public get value(): string {\n return this._value\n }\n\n public set value(newValue: string) {\n if (this._value === newValue)\n return\n this._value = newValue\n this.update()\n }\n\n public get fontSize(): number {\n return this._fontSize\n }\n\n public set fontSize(newValue: number) {\n if (this._fontSize === newValue)\n return\n this._fontSize = newValue\n this.update()\n }\n\n public get color(): string {\n return this._color\n }\n\n public set color(newValue: string) {\n if (this._color === newValue)\n return\n this._color = newValue\n this.update()\n }\n\n public get fontWeight(): string {\n return this._fontWeight\n }\n\n public set fontWeight(newValue: string) {\n if (this._fontWeight === newValue)\n return\n this._fontWeight = newValue\n this.update()\n }\n\n public get offset(): [number, number] {\n return this._offset\n }\n\n public set offset(newValue: [number, number]) {\n this._offset = newValue\n this.update()\n }\n\n public get bgUrl(): string {\n return this._bgUrl\n }\n\n public set bgUrl(newValue: string) {\n if (this._bgUrl === newValue)\n return\n this._bgUrl = newValue\n this.update()\n }\n\n public get uri(): string {\n return this._uri\n }\n\n public set uri(newValue: string) {\n if (this._uri === newValue)\n return\n this._uri = newValue\n this.update()\n }\n\n // 注册监听\n public addReloadListener(callback) {\n this._listeners.add(callback)\n }\n\n // 移除监听\n public removeReloadListener(callback) {\n this._listeners.delete(callback)\n }\n\n public setupAnimation() {}\n\n // 销毁\n public destroy() {\n this._debouncedUpdate.cancel()\n this._listeners.clear()\n this._mesh.remove()\n this._mesh.removeFromParent()\n }\n\n init() {\n const { width: canvasW, height: canvasH, texture } = createTextCanvas({\n fontSize: this._fontSize,\n color: this._color,\n fontWeight: this._fontWeight,\n value: this._value,\n })\n // 转化为场景中的尺寸,并增加左右上下边距\n const width = Math.max(canvasW / 100 + this._padding[1] * 2, MIN_WIDTH)\n const height = canvasH / 100 + this._padding[0] * 2\n\n const group = new Group()\n this.initBackground(group, { width, height, source: this._bgUrl, offset: [0, 0, 0] })\n this.initText(group, { width: canvasW / 100, height: canvasH / 100, source: texture, offset: [0, 0, 0.001], color: this._color })\n this.add(group)\n this._mesh = group\n }\n\n // Update method with debounce\n private update(): void {\n this._debouncedUpdate()\n }\n\n private performUpdate(): void {\n this._mesh.remove()\n this._mesh.removeFromParent()\n this.init()\n this._listeners.forEach((cb: Function) => {\n cb()\n })\n }\n\n private initBackground(group: Group, option) {\n const mesh = this.createPanel(option)\n group.add(mesh)\n }\n\n private initText(group: Group, option) {\n const mesh = this.createPanel(option)\n group.add(mesh)\n }\n\n private createPanel({ width, height, source, color, offset }) {\n const texture = (typeof source == 'string') ? new TextureLoader().load(source) : source\n texture.colorSpace = SRGBColorSpace\n texture.magFilter = NearestFilter // 或 LinearFilter\n texture.minFilter = NearestFilter // 避免mipmap混合\n texture.generateMipmaps = false // 禁用mipmap生成\n\n const meshBasicMaterial = new MeshBasicMaterial({\n map: texture,\n transparent: true,\n alphaTest: 0.5,\n side: DoubleSide,\n color,\n depthWrite: true,\n depthTest: true,\n polygonOffset: true, // 解决深度冲突\n polygonOffsetFactor: -1,\n polygonOffsetUnits: -1,\n })\n\n const mesh = new Mesh(\n new PlaneGeometry(width, height),\n meshBasicMaterial,\n )\n // mesh.renderOrder = 1000\n\n // this._scale && mesh.scale.fromArray(scale)\n offset && mesh.position.fromArray([...offset, 0])\n return mesh\n }\n}"],"mappings":"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"}
@@ -324,7 +324,8 @@ export var RealismTraffic = (_class = /*#__PURE__*/function (_BaseTraffic) {
324
324
  }, {
325
325
  key: "removeFromParent",
326
326
  value: function removeFromParent() {
327
- this._control.forEach(function (control) {
327
+ // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系
328
+ this.parent && this._control.forEach(function (control) {
328
329
  control.remove();
329
330
  });
330
331
  return _get(_getPrototypeOf(RealismTraffic.prototype), "removeFromParent", this).call(this);
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","LoaderModule","utils","BaseTraffic","moveWithLine","loaderModule","overrideVisible","target","propertyKey","getter","_visible","setter","newValue","_target$_control","_control","forEach","control","stop","_target$_control2","continue","Object","defineProperty","get","set","enumerable","configurable","RealismTraffic","_class","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_initializerDefineProperty","_descriptor","path","_params$width","width","_params$divide","divide","resource","_params$totalNum","totalNum","_params$baseTime","baseTime","_params$control","_params$corner","corner","_path","_width","_divide","_resource","_totalNum","_baseTime","_lanelineControl","_corner","console","error","Error","generateLaneLines","loadBenchmarkModel","handleVisibilityChange","_createClass","key","w","num","value","_this2","_benchmarkVehicles","length","promises","map","_ref","_utils$storeManagemen","url","loadGLTF","draco","dracoPath","storeManagement","Promise","allSettled","then","res","modelRes","status","push","normalizedVehicleSize","scene","randomPool","generateRandomPool","generateInitPosition","getMaxVehicleLength","maxLength","reduce","max","vehicle","box","setFromObject","currentLength","z","min","_this3","lineLengths","lanelines","line","getLength","part","Math","floor","capacity","pre","next","buildRandomPool","pool","i","j","t","_this4","document","addEventListener","hidden","index","random","current","currentLaneline","point","getPointAt","_startingPoints","_startingLookatPoints","_startingProgressPoints","_startinglanelinePoints","splice","placeVehicle","_this5","_vehicles","removeFromParent","remove","randomModelIndex","currentVehicle","clone","position","copy","lookAt","add","run","dispatchEvent","type","laneline","model","progress","laneIndex","lc","find","log","duration","direction","setProgress","currentWidth","x","scalingFactor","scale","_get","_getPrototypeOf","prototype","_applyDecoratedDescriptor","writable","initializer"],"sources":["../../../../src/business/TrafficComponents/RealismTraffic/RealismTraffic.ts"],"sourcesContent":["/* eslint-disable max-statements-per-line */\nimport type { CurvePath, Group, Object3D, Vector3 } from '@anov/3d-core'\nimport { Box3, LoaderModule, utils } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport type { RealismTrafficInterface } from '.'\n\nconst { moveWithLine } = utils\n\ntype ResourceParams = {\n url: string\n}\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype RealismTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n resource: ResourceParams[]\n baseTime?: number\n totalNum?: number\n control?: LanelineControl[]\n corner?: number\n}\n\nconst loaderModule = new LoaderModule()\n\nconst overrideVisible = (target: any, propertyKey: string | symbol) => {\n const getter = () => {\n return target._visible\n }\n\n const setter = (newValue: any) => {\n target._visible = newValue\n\n if (newValue === false) {\n target._control ?? [].forEach((control) => {\n control.stop()\n })\n }\n else {\n target._control ?? [].forEach((control) => {\n control.continue()\n })\n }\n }\n\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true,\n })\n}\n\n/**\n * 写实风格车辆交通组件\n */\nexport class RealismTraffic extends BaseTraffic implements RealismTrafficInterface {\n /** 车辆模型池 */\n private _resource: ResourceParams[]\n\n /** 基准时间 */\n private _baseTime: number\n\n /** 车辆数量 */\n private _totalNum = 5\n\n private _startingPoints: Vector3[] = []\n\n private _startingLookatPoints: Vector3[] = []\n\n private _startingProgressPoints: number[] = []\n\n private _startinglanelinePoints: number[] = []\n\n private _visible = true\n\n private _control: ReturnType<typeof moveWithLine>[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n /** 基准载具池 */\n private _benchmarkVehicles: Group[] = []\n\n /** 实际载具 */\n private _vehicles: Group[] = []\n\n /** 车道线 */\n public lanelines: CurvePath<Vector3>[] = []\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n @overrideVisible\n override visible = true\n\n public get baseTime(): number {\n return this._baseTime\n }\n\n constructor(params: RealismTrafficParams) {\n super(params)\n\n const { path, width = 2, divide = 1, resource, totalNum = 5, baseTime = 10, control = [], corner = 10 } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._resource = resource\n this._totalNum = totalNum\n this._baseTime = baseTime\n this._lanelineControl = control\n this._corner = corner\n\n if (width === 0 || divide === 0) {\n console.error('宽度或车道数不能为0')\n throw new Error('宽度或车道数不能为0')\n }\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n this.handleVisibilityChange()\n }\n\n /**\n * load benchmark model\n */\n private loadBenchmarkModel() {\n this._benchmarkVehicles = []\n\n if (!this._resource.length)\n return\n\n const promises = this._resource.map(({ url }) => {\n return loaderModule.loadGLTF({\n url,\n draco: true,\n // todo sdk 接口支持 decoderPath\n dracoPath: utils.storeManagement.get('decoderPath') ?? '/draco/',\n })\n })\n\n Promise.allSettled(promises).then((res) => {\n res.forEach((modelRes) => {\n if (modelRes.status === 'fulfilled')\n this._benchmarkVehicles.push(this.normalizedVehicleSize(modelRes.value.scene as Group))\n })\n\n const randomPool = this.generateRandomPool()\n this.generateInitPosition(randomPool)\n })\n }\n\n /**\n * get max vehicle length\n */\n private getMaxVehicleLength() {\n const maxLength = this._benchmarkVehicles.reduce((max, vehicle) => {\n const box = new Box3().setFromObject(vehicle)\n const currentLength = box.max.z - box.min.z\n\n return currentLength > max ? currentLength : max\n }, 0)\n\n return maxLength\n }\n\n /**\n * check reasonable location\n */\n private generateRandomPool() {\n const lineLengths = this.lanelines.map(line => line.getLength())\n const part = lineLengths.map(length => Math.floor(length / this.getMaxVehicleLength()))\n const capacity = part.reduce((pre, next) => { return pre + next }, 0)\n\n if (capacity < this._totalNum)\n throw new Error('载具数量不合理')\n\n return this.buildRandomPool(part)\n }\n\n /**\n * build random pool\n */\n private buildRandomPool(part: number[]) {\n const pool = []\n\n part.forEach((part, i) => {\n for (let j = 0; j < part; j++) {\n pool.push({\n t: 1 / part * j,\n line: i,\n })\n }\n })\n\n return pool\n }\n\n /**\n * handle requestAnimationFrame pause\n */\n private handleVisibilityChange() {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this._control.forEach((control) => {\n control.stop()\n })\n }\n else {\n this._control.forEach((control) => {\n control.continue()\n })\n }\n })\n }\n\n /**\n * generate random movement starting point\n */\n private generateInitPosition(randomPool) {\n for (let i = 0; i < this._totalNum; i++) {\n const index = Math.floor(Math.random() * randomPool.length)\n const current = randomPool[index]\n const currentLaneline = this.lanelines[current.line]\n const point = currentLaneline.getPointAt(current.t)\n\n this._startingPoints.push(point)\n this._startingLookatPoints.push(currentLaneline.getPointAt((current.t + 0.01) % 1))\n this._startingProgressPoints.push(current.t)\n this._startinglanelinePoints.push(current.line)\n\n randomPool.splice(index, 1)\n }\n\n this.placeVehicle()\n }\n\n /**\n * place vehicle\n */\n private placeVehicle() {\n this._vehicles.forEach((vehicle, i) => {\n vehicle.removeFromParent()\n this._control[i].remove()\n })\n\n this._vehicles = []\n this._control = []\n\n for (let i = 0; i < this._startingPoints.length; i++) {\n const randomModelIndex = Math.floor(Math.random() * this._benchmarkVehicles.length)\n const currentVehicle = this._benchmarkVehicles[randomModelIndex].clone()\n\n currentVehicle.position.copy(this._startingPoints[i])\n currentVehicle.lookAt(this._startingLookatPoints[i])\n\n this._vehicles.push(currentVehicle)\n this.add(currentVehicle)\n this.run(this.lanelines[this._startinglanelinePoints[i]], currentVehicle, this._startingProgressPoints[i], this._startinglanelinePoints[i])\n }\n\n this.dispatchEvent({\n type: 'realismTraffic-loaded',\n })\n }\n\n /**\n * run\n * @param laneline\n * @param model\n * @param progress\n * @param laneIndex\n */\n private run(laneline: CurvePath<Vector3>, model: Object3D, progress: number, laneIndex: number) {\n const lc = this._lanelineControl.find(lc => lc.index === laneIndex)\n\n if (this.baseTime === 0) {\n console.log('baseTime is 0')\n return\n }\n\n const control = moveWithLine(model, laneline, {\n duration: this.baseTime,\n direction: (lc && lc?.direction === 0) ? -1 : 1,\n })\n\n this._control.push(control)\n control.setProgress(progress)\n }\n\n /**\n * normalized vehicle size\n */\n private normalizedVehicleSize(model: Group) {\n const box = new Box3().setFromObject(model)\n const currentWidth = box.max.x - box.min.x\n const scalingFactor = (this._width / (this._divide + 1)) / currentWidth * 0.7\n\n model.scale.set(scalingFactor, scalingFactor, scalingFactor)\n\n return model\n }\n\n override removeFromParent(): this {\n this._control.forEach((control) => {\n control.remove()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
1
+ {"version":3,"names":["Box3","LoaderModule","utils","BaseTraffic","moveWithLine","loaderModule","overrideVisible","target","propertyKey","getter","_visible","setter","newValue","_target$_control","_control","forEach","control","stop","_target$_control2","continue","Object","defineProperty","get","set","enumerable","configurable","RealismTraffic","_class","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_initializerDefineProperty","_descriptor","path","_params$width","width","_params$divide","divide","resource","_params$totalNum","totalNum","_params$baseTime","baseTime","_params$control","_params$corner","corner","_path","_width","_divide","_resource","_totalNum","_baseTime","_lanelineControl","_corner","console","error","Error","generateLaneLines","loadBenchmarkModel","handleVisibilityChange","_createClass","key","w","num","value","_this2","_benchmarkVehicles","length","promises","map","_ref","_utils$storeManagemen","url","loadGLTF","draco","dracoPath","storeManagement","Promise","allSettled","then","res","modelRes","status","push","normalizedVehicleSize","scene","randomPool","generateRandomPool","generateInitPosition","getMaxVehicleLength","maxLength","reduce","max","vehicle","box","setFromObject","currentLength","z","min","_this3","lineLengths","lanelines","line","getLength","part","Math","floor","capacity","pre","next","buildRandomPool","pool","i","j","t","_this4","document","addEventListener","hidden","index","random","current","currentLaneline","point","getPointAt","_startingPoints","_startingLookatPoints","_startingProgressPoints","_startinglanelinePoints","splice","placeVehicle","_this5","_vehicles","removeFromParent","remove","randomModelIndex","currentVehicle","clone","position","copy","lookAt","add","run","dispatchEvent","type","laneline","model","progress","laneIndex","lc","find","log","duration","direction","setProgress","currentWidth","x","scalingFactor","scale","parent","_get","_getPrototypeOf","prototype","_applyDecoratedDescriptor","writable","initializer"],"sources":["../../../../src/business/TrafficComponents/RealismTraffic/RealismTraffic.ts"],"sourcesContent":["/* eslint-disable max-statements-per-line */\nimport type { CurvePath, Group, Object3D, Vector3 } from '@anov/3d-core'\nimport { Box3, LoaderModule, utils } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport type { RealismTrafficInterface } from '.'\n\nconst { moveWithLine } = utils\n\ntype ResourceParams = {\n url: string\n}\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype RealismTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n resource: ResourceParams[]\n baseTime?: number\n totalNum?: number\n control?: LanelineControl[]\n corner?: number\n}\n\nconst loaderModule = new LoaderModule()\n\nconst overrideVisible = (target: any, propertyKey: string | symbol) => {\n const getter = () => {\n return target._visible\n }\n\n const setter = (newValue: any) => {\n target._visible = newValue\n\n if (newValue === false) {\n target._control ?? [].forEach((control) => {\n control.stop()\n })\n }\n else {\n target._control ?? [].forEach((control) => {\n control.continue()\n })\n }\n }\n\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true,\n })\n}\n\n/**\n * 写实风格车辆交通组件\n */\nexport class RealismTraffic extends BaseTraffic implements RealismTrafficInterface {\n /** 车辆模型池 */\n private _resource: ResourceParams[]\n\n /** 基准时间 */\n private _baseTime: number\n\n /** 车辆数量 */\n private _totalNum = 5\n\n private _startingPoints: Vector3[] = []\n\n private _startingLookatPoints: Vector3[] = []\n\n private _startingProgressPoints: number[] = []\n\n private _startinglanelinePoints: number[] = []\n\n private _visible = true\n\n private _control: ReturnType<typeof moveWithLine>[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n /** 基准载具池 */\n private _benchmarkVehicles: Group[] = []\n\n /** 实际载具 */\n private _vehicles: Group[] = []\n\n /** 车道线 */\n public lanelines: CurvePath<Vector3>[] = []\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n @overrideVisible\n override visible = true\n\n public get baseTime(): number {\n return this._baseTime\n }\n\n constructor(params: RealismTrafficParams) {\n super(params)\n\n const { path, width = 2, divide = 1, resource, totalNum = 5, baseTime = 10, control = [], corner = 10 } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._resource = resource\n this._totalNum = totalNum\n this._baseTime = baseTime\n this._lanelineControl = control\n this._corner = corner\n\n if (width === 0 || divide === 0) {\n console.error('宽度或车道数不能为0')\n throw new Error('宽度或车道数不能为0')\n }\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n this.handleVisibilityChange()\n }\n\n /**\n * load benchmark model\n */\n private loadBenchmarkModel() {\n this._benchmarkVehicles = []\n\n if (!this._resource.length)\n return\n\n const promises = this._resource.map(({ url }) => {\n return loaderModule.loadGLTF({\n url,\n draco: true,\n // todo sdk 接口支持 decoderPath\n dracoPath: utils.storeManagement.get('decoderPath') ?? '/draco/',\n })\n })\n\n Promise.allSettled(promises).then((res) => {\n res.forEach((modelRes) => {\n if (modelRes.status === 'fulfilled')\n this._benchmarkVehicles.push(this.normalizedVehicleSize(modelRes.value.scene as Group))\n })\n\n const randomPool = this.generateRandomPool()\n this.generateInitPosition(randomPool)\n })\n }\n\n /**\n * get max vehicle length\n */\n private getMaxVehicleLength() {\n const maxLength = this._benchmarkVehicles.reduce((max, vehicle) => {\n const box = new Box3().setFromObject(vehicle)\n const currentLength = box.max.z - box.min.z\n\n return currentLength > max ? currentLength : max\n }, 0)\n\n return maxLength\n }\n\n /**\n * check reasonable location\n */\n private generateRandomPool() {\n const lineLengths = this.lanelines.map(line => line.getLength())\n const part = lineLengths.map(length => Math.floor(length / this.getMaxVehicleLength()))\n const capacity = part.reduce((pre, next) => { return pre + next }, 0)\n\n if (capacity < this._totalNum)\n throw new Error('载具数量不合理')\n\n return this.buildRandomPool(part)\n }\n\n /**\n * build random pool\n */\n private buildRandomPool(part: number[]) {\n const pool = []\n\n part.forEach((part, i) => {\n for (let j = 0; j < part; j++) {\n pool.push({\n t: 1 / part * j,\n line: i,\n })\n }\n })\n\n return pool\n }\n\n /**\n * handle requestAnimationFrame pause\n */\n private handleVisibilityChange() {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this._control.forEach((control) => {\n control.stop()\n })\n }\n else {\n this._control.forEach((control) => {\n control.continue()\n })\n }\n })\n }\n\n /**\n * generate random movement starting point\n */\n private generateInitPosition(randomPool) {\n for (let i = 0; i < this._totalNum; i++) {\n const index = Math.floor(Math.random() * randomPool.length)\n const current = randomPool[index]\n const currentLaneline = this.lanelines[current.line]\n const point = currentLaneline.getPointAt(current.t)\n\n this._startingPoints.push(point)\n this._startingLookatPoints.push(currentLaneline.getPointAt((current.t + 0.01) % 1))\n this._startingProgressPoints.push(current.t)\n this._startinglanelinePoints.push(current.line)\n\n randomPool.splice(index, 1)\n }\n\n this.placeVehicle()\n }\n\n /**\n * place vehicle\n */\n private placeVehicle() {\n this._vehicles.forEach((vehicle, i) => {\n vehicle.removeFromParent()\n this._control[i].remove()\n })\n\n this._vehicles = []\n this._control = []\n\n for (let i = 0; i < this._startingPoints.length; i++) {\n const randomModelIndex = Math.floor(Math.random() * this._benchmarkVehicles.length)\n const currentVehicle = this._benchmarkVehicles[randomModelIndex].clone()\n\n currentVehicle.position.copy(this._startingPoints[i])\n currentVehicle.lookAt(this._startingLookatPoints[i])\n\n this._vehicles.push(currentVehicle)\n this.add(currentVehicle)\n this.run(this.lanelines[this._startinglanelinePoints[i]], currentVehicle, this._startingProgressPoints[i], this._startinglanelinePoints[i])\n }\n\n this.dispatchEvent({\n type: 'realismTraffic-loaded',\n })\n }\n\n /**\n * run\n * @param laneline\n * @param model\n * @param progress\n * @param laneIndex\n */\n private run(laneline: CurvePath<Vector3>, model: Object3D, progress: number, laneIndex: number) {\n const lc = this._lanelineControl.find(lc => lc.index === laneIndex)\n\n if (this.baseTime === 0) {\n console.log('baseTime is 0')\n return\n }\n\n const control = moveWithLine(model, laneline, {\n duration: this.baseTime,\n direction: (lc && lc?.direction === 0) ? -1 : 1,\n })\n\n this._control.push(control)\n control.setProgress(progress)\n }\n\n /**\n * normalized vehicle size\n */\n private normalizedVehicleSize(model: Group) {\n const box = new Box3().setFromObject(model)\n const currentWidth = box.max.x - box.min.x\n const scalingFactor = (this._width / (this._divide + 1)) / currentWidth * 0.7\n\n model.scale.set(scalingFactor, scalingFactor, scalingFactor)\n\n return model\n }\n\n override removeFromParent(): this {\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n this.parent && this._control.forEach((control) => {\n control.remove()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
@@ -188,7 +188,8 @@ export var StreamerTraffic = /*#__PURE__*/function (_BaseTraffic) {
188
188
  }, {
189
189
  key: "removeFromParent",
190
190
  value: function removeFromParent() {
191
- this._control.forEach(function (control) {
191
+ // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系
192
+ this.parent && this._control.forEach(function (control) {
192
193
  control();
193
194
  });
194
195
  return _get(_getPrototypeOf(StreamerTraffic.prototype), "removeFromParent", this).call(this);
@@ -1 +1 @@
1
- {"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? 1.0 },\n },\n vertexShader,\n fragmentShader,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
1
+ {"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","parent","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? 1.0 },\n },\n vertexShader,\n fragmentShader,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n this.parent && this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
@@ -44,8 +44,9 @@ export var FinirMaterial = (_class = /*#__PURE__*/function (_MeshStandardMateria
44
44
  shader.uniforms.rimPower = {
45
45
  value: rimPower
46
46
  };
47
- shader.fragmentShader = shader.fragmentShader.replace('void main() {', ['uniform vec3 rimColor;', 'uniform float rimPower;', 'void main() {'].join('\n'));
48
- shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', "#include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;");
47
+ shader.vertexShader = shader.vertexShader.replace('void main() {', ['varying vec3 vViewDirection;', 'void main() {', 'vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);', 'vViewDirection = normalize(cameraPosition - worldPosition1.xyz);'].join('\n'));
48
+ shader.fragmentShader = shader.fragmentShader.replace('void main() {', ['uniform vec3 rimColor;', 'uniform float rimPower;', 'varying vec3 vViewDirection;', 'void main() {'].join('\n'));
49
+ shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', "#include <dithering_fragment>\n vec3 viewDir = normalize(vViewDirection);\n float dotNV = 1.0-saturate( dot( normal, viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;");
49
50
  };
50
51
  return _this;
51
52
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Color","MeshStandardMaterial","addUpdateTag","FinirMaterial","_class","_MeshStandardMaterial","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","opacity","transparent","depthWrite","_defineProperty","_assertThisInitialized","_ref","_ref$rimColor","rimColor","_rimColor","_ref$rimPower","rimPower","_rimPower","onBeforeCompile","shader","uniforms","value","fragmentShader","replace","join","_createClass","key","get","set","clone","constructor","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor"],"sources":["../../../../src/core/Material/FinirMaterial/FinirMaterial.ts"],"sourcesContent":["import { Color, MeshStandardMaterial } from '@anov/3d-core'\nimport { addUpdateTag } from '../decorators'\nimport type { FinirMaterialInterface } from '.'\n\ntype FinirMaterialOption = {\n rimColor?: Color\n rimPower?: number\n}\n\n/**\n * 菲尼尔材质\n */\nexport class FinirMaterial extends MeshStandardMaterial implements FinirMaterialInterface {\n private _rimColor = new Color(0x00FFFF)\n private _rimPower = 0.9\n\n public get rimColor() {\n return this._rimColor\n }\n\n @addUpdateTag\n public set rimColor(value: Color) {\n this._rimColor = value\n }\n\n public get rimPower() {\n return this._rimPower\n }\n\n @addUpdateTag\n public set rimPower(value: number) {\n this._rimPower = value\n }\n\n constructor(options?: FinirMaterialOption) {\n super({\n opacity: 0.0,\n transparent: true,\n depthWrite: false,\n })\n\n const { rimColor = this._rimColor, rimPower = this._rimPower } = options || {}\n\n this.onBeforeCompile = (shader) => {\n shader.uniforms.rimColor = { value: rimColor }\n shader.uniforms.rimPower = { value: rimPower }\n shader.fragmentShader = shader.fragmentShader.replace(\n 'void main() {',\n [\n 'uniform vec3 rimColor;',\n 'uniform float rimPower;',\n 'void main() {',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n `#include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;`,\n )\n }\n }\n\n override clone(): this {\n return new (this.constructor as any)({\n rimColor: this._rimColor,\n rimPower: this._rimPower,\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,SAASA,KAAK,EAAEC,oBAAoB,QAAQ,eAAe;AAC3D,SAASC,YAAY;AAQrB;AACA;AACA;AACA,WAAaC,aAAa,IAAAC,MAAA,0BAAAC,qBAAA;EAAAC,SAAA,CAAAH,aAAA,EAAAE,qBAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAL,aAAA;EAsBxB,SAAAA,cAAYM,OAA6B,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAR,aAAA;IACzCO,KAAA,GAAAH,MAAA,CAAAK,IAAA,OAAM;MACJC,OAAO,EAAE,GAAG;MACZC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE;IACd,CAAC;IAACC,eAAA,CAAAC,sBAAA,CAAAP,KAAA,gBA1BgB,IAAIV,KAAK,CAAC,QAAQ,CAAC;IAAAgB,eAAA,CAAAC,sBAAA,CAAAP,KAAA,gBACnB,GAAG;IA2BrB,IAAAQ,IAAA,GAAiET,OAAO,IAAI,CAAC,CAAC;MAAAU,aAAA,GAAAD,IAAA,CAAtEE,QAAQ;MAARA,QAAQ,GAAAD,aAAA,cAAGT,KAAA,CAAKW,SAAS,GAAAF,aAAA;MAAAG,aAAA,GAAAJ,IAAA,CAAEK,QAAQ;MAARA,QAAQ,GAAAD,aAAA,cAAGZ,KAAA,CAAKc,SAAS,GAAAF,aAAA;IAE5DZ,KAAA,CAAKe,eAAe,GAAG,UAACC,MAAM,EAAK;MACjCA,MAAM,CAACC,QAAQ,CAACP,QAAQ,GAAG;QAAEQ,KAAK,EAAER;MAAS,CAAC;MAC9CM,MAAM,CAACC,QAAQ,CAACJ,QAAQ,GAAG;QAAEK,KAAK,EAAEL;MAAS,CAAC;MAC9CG,MAAM,CAACG,cAAc,GAAGH,MAAM,CAACG,cAAc,CAACC,OAAO,CACnD,eAAe,EACf,CACE,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,CAChB,CAACC,IAAI,CAAC,IAAI,CACb,CAAC;MACDL,MAAM,CAACG,cAAc,GAAGH,MAAM,CAACG,cAAc,CAACC,OAAO,CACnD,+BAA+B,yRAMjC,CAAC;IACH,CAAC;IAAA,OAAApB,KAAA;EACH;EAACsB,YAAA,CAAA7B,aAAA;IAAA8B,GAAA;IAAAC,GAAA,EA/CD,SAAAA,IAAA,EAAsB;MACpB,OAAO,IAAI,CAACb,SAAS;IACvB,CAAC;IAAAc,GAAA,EAED,SAAAA,IACoBP,KAAY,EAAE;MAChC,IAAI,CAACP,SAAS,GAAGO,KAAK;IACxB;EAAC;IAAAK,GAAA;IAAAC,GAAA,EAED,SAAAA,IAAA,EAAsB;MACpB,OAAO,IAAI,CAACV,SAAS;IACvB,CAAC;IAAAW,GAAA,EAED,SAAAA,IACoBP,KAAa,EAAE;MACjC,IAAI,CAACJ,SAAS,GAAGI,KAAK;IACxB;EAAC;IAAAK,GAAA;IAAAL,KAAA,EAiCD,SAAAQ,MAAA,EAAuB;MACrB,OAAO,IAAK,IAAI,CAACC,WAAW,CAAS;QACnCjB,QAAQ,EAAE,IAAI,CAACC,SAAS;QACxBE,QAAQ,EAAE,IAAI,CAACC;MACjB,CAAC,CAAC;IACJ;EAAC;EAAA,OAAArB,aAAA;AAAA,EA1DgCF,oBAAoB,IAAAqC,yBAAA,CAAAlC,MAAA,CAAAmC,SAAA,eAQpDrC,YAAY,GAAAsC,MAAA,CAAAC,wBAAA,CAAArC,MAAA,CAAAmC,SAAA,eAAAnC,MAAA,CAAAmC,SAAA,GAAAD,yBAAA,CAAAlC,MAAA,CAAAmC,SAAA,eASZrC,YAAY,GAAAsC,MAAA,CAAAC,wBAAA,CAAArC,MAAA,CAAAmC,SAAA,eAAAnC,MAAA,CAAAmC,SAAA,IAAAnC,MAAA"}
1
+ {"version":3,"names":["Color","MeshStandardMaterial","addUpdateTag","FinirMaterial","_class","_MeshStandardMaterial","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","opacity","transparent","depthWrite","_defineProperty","_assertThisInitialized","_ref","_ref$rimColor","rimColor","_rimColor","_ref$rimPower","rimPower","_rimPower","onBeforeCompile","shader","uniforms","value","vertexShader","replace","join","fragmentShader","_createClass","key","get","set","clone","constructor","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor"],"sources":["../../../../src/core/Material/FinirMaterial/FinirMaterial.ts"],"sourcesContent":["import { Color, MeshStandardMaterial } from '@anov/3d-core'\nimport { addUpdateTag } from '../decorators'\nimport type { FinirMaterialInterface } from '.'\n\ntype FinirMaterialOption = {\n rimColor?: Color\n rimPower?: number\n}\n\n/**\n * 菲尼尔材质\n */\nexport class FinirMaterial extends MeshStandardMaterial implements FinirMaterialInterface {\n private _rimColor = new Color(0x00FFFF)\n private _rimPower = 0.9\n\n public get rimColor() {\n return this._rimColor\n }\n\n @addUpdateTag\n public set rimColor(value: Color) {\n this._rimColor = value\n }\n\n public get rimPower() {\n return this._rimPower\n }\n\n @addUpdateTag\n public set rimPower(value: number) {\n this._rimPower = value\n }\n\n constructor(options?: FinirMaterialOption) {\n super({\n opacity: 0.0,\n transparent: true,\n depthWrite: false,\n })\n\n const { rimColor = this._rimColor, rimPower = this._rimPower } = options || {}\n\n this.onBeforeCompile = (shader) => {\n shader.uniforms.rimColor = { value: rimColor }\n shader.uniforms.rimPower = { value: rimPower }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec3 vViewDirection;',\n 'void main() {',\n 'vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n 'vViewDirection = normalize(cameraPosition - worldPosition1.xyz);',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n 'void main() {',\n [\n 'uniform vec3 rimColor;',\n 'uniform float rimPower;',\n 'varying vec3 vViewDirection;',\n 'void main() {',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n `#include <dithering_fragment>\n vec3 viewDir = normalize(vViewDirection);\n float dotNV = 1.0-saturate( dot( normal, viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;`,\n )\n }\n }\n\n override clone(): this {\n return new (this.constructor as any)({\n rimColor: this._rimColor,\n rimPower: this._rimPower,\n })\n }\n}\n"],"mappings":"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"}
@@ -53,7 +53,8 @@ var OutlineMesh = /*#__PURE__*/function (_Mesh) {
53
53
  fragmentShader: skyShader.fragmentShader,
54
54
  side: 2,
55
55
  transparent: true,
56
- depthWrite: false
56
+ depthWrite: false,
57
+ toneMapped: false // 添加这行
57
58
  });
58
59
 
59
60
  // this.position.y = -500
@@ -1 +1 @@
1
- {"version":3,"names":["BufferAttribute","Mesh","ShaderMaterial","SphereGeometry","skyShader","OutlineMesh","_Mesh","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","skyTime","value","skyOpacity","geometry","Math","PI","positions","attributes","position","array","uvs","Float32Array","length","i","x","z","u","v","setAttribute","material","uniforms","vertexShader","fragmentShader","side","transparent","depthWrite","renderOrder","_createClass","key","setTime","time","toFixed"],"sources":["../../../../../src/core/WeatherSystem/objects/sky/outline.ts"],"sourcesContent":["import { BufferAttribute, Mesh, ShaderMaterial, SphereGeometry } from '@anov/3d-core'\nimport skyShader from '../../shaders/sky'\n\nclass OutlineMesh extends Mesh {\n mesh!: Mesh\n uniforms: any = {\n skyTime: { value: 12.0 },\n skyOpacity: { value: 0.8 },\n }\n\n constructor() {\n super()\n\n this.geometry = new SphereGeometry(1, 32, 32, 0, Math.PI * 2, 0, Math.PI)\n\n const positions = this.geometry.attributes.position.array\n const uvs = new Float32Array(positions.length / 3 * 2) // 创建新的 UV 数组\n\n // 重新计算 UV 坐标\n for (let i = 0; i < positions.length / 3; i++) {\n const x = positions[i * 3]\n const z = positions[i * 3 + 2]\n\n const u = (x * 0.8 + 1) / 2 // 将 x 坐标映射到 [0, 1]\n const v = (z * 0.8 + 1) / 2 // 将 z 坐标映射到 [0, 1]\n\n uvs[i * 2] = u\n uvs[i * 2 + 1] = v\n }\n\n // 将新的 UV 坐标添加到几何体\n this.geometry.setAttribute('uv', new BufferAttribute(uvs, 2))\n\n this.material = new ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: skyShader.vertexShader,\n fragmentShader: skyShader.fragmentShader,\n side: 2,\n transparent: true,\n depthWrite: false,\n })\n\n // this.position.y = -500\n // this.scale.set(19990, 8000, 19990)\n this.renderOrder = -1\n }\n\n setTime(time: number) {\n this.uniforms.skyTime = { value: time.toFixed(1) }\n }\n}\n\nexport default OutlineMesh"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,cAAc,EAAEC,cAAc,QAAQ,eAAe;AACrF,OAAOC,SAAS;AAAyB,IAEnCC,WAAW,0BAAAC,KAAA;EAAAC,SAAA,CAAAF,WAAA,EAAAC,KAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,WAAA;EAOf,SAAAA,YAAA,EAAc;IAAA,IAAAK,KAAA;IAAAC,eAAA,OAAAN,WAAA;IACZK,KAAA,GAAAF,MAAA,CAAAI,IAAA;IAAOC,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,eANO;MACdK,OAAO,EAAE;QAAEC,KAAK,EAAE;MAAK,CAAC;MACxBC,UAAU,EAAE;QAAED,KAAK,EAAE;MAAI;IAC3B,CAAC;IAKCN,KAAA,CAAKQ,QAAQ,GAAG,IAAIf,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEgB,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAED,IAAI,CAACC,EAAE,CAAC;IAEzE,IAAMC,SAAS,GAAGX,KAAA,CAAKQ,QAAQ,CAACI,UAAU,CAACC,QAAQ,CAACC,KAAK;IACzD,IAAMC,GAAG,GAAG,IAAIC,YAAY,CAACL,SAAS,CAACM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAC;;IAEvD;IACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,SAAS,CAACM,MAAM,GAAG,CAAC,EAAEC,CAAC,EAAE,EAAE;MAC7C,IAAMC,CAAC,GAAGR,SAAS,CAACO,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAME,CAAC,GAAGT,SAAS,CAACO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MAE9B,IAAMG,CAAC,GAAG,CAACF,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAC;MAC5B,IAAMG,CAAC,GAAG,CAACF,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAC;;MAE5BL,GAAG,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGG,CAAC;MACdN,GAAG,CAACG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGI,CAAC;IACpB;;IAEA;IACAtB,KAAA,CAAKQ,QAAQ,CAACe,YAAY,CAAC,IAAI,EAAE,IAAIjC,eAAe,CAACyB,GAAG,EAAE,CAAC,CAAC,CAAC;IAE7Df,KAAA,CAAKwB,QAAQ,GAAG,IAAIhC,cAAc,CAAC;MACjCiC,QAAQ,EAAEzB,KAAA,CAAKyB,QAAQ;MACvBC,YAAY,EAAEhC,SAAS,CAACgC,YAAY;MACpCC,cAAc,EAAEjC,SAAS,CAACiC,cAAc;MACxCC,IAAI,EAAE,CAAC;MACPC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE;IACd,CAAC,CAAC;;IAEF;IACA;IACA9B,KAAA,CAAK+B,WAAW,GAAG,CAAC,CAAC;IAAA,OAAA/B,KAAA;EACvB;EAACgC,YAAA,CAAArC,WAAA;IAAAsC,GAAA;IAAA3B,KAAA,EAED,SAAA4B,QAAQC,IAAY,EAAE;MACpB,IAAI,CAACV,QAAQ,CAACpB,OAAO,GAAG;QAAEC,KAAK,EAAE6B,IAAI,CAACC,OAAO,CAAC,CAAC;MAAE,CAAC;IACpD;EAAC;EAAA,OAAAzC,WAAA;AAAA,EA9CuBJ,IAAI;AAiD9B,eAAeI,WAAW"}
1
+ {"version":3,"names":["BufferAttribute","Mesh","ShaderMaterial","SphereGeometry","skyShader","OutlineMesh","_Mesh","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","skyTime","value","skyOpacity","geometry","Math","PI","positions","attributes","position","array","uvs","Float32Array","length","i","x","z","u","v","setAttribute","material","uniforms","vertexShader","fragmentShader","side","transparent","depthWrite","toneMapped","renderOrder","_createClass","key","setTime","time","toFixed"],"sources":["../../../../../src/core/WeatherSystem/objects/sky/outline.ts"],"sourcesContent":["import { BufferAttribute, Mesh, ShaderMaterial, SphereGeometry } from '@anov/3d-core'\nimport skyShader from '../../shaders/sky'\n\nclass OutlineMesh extends Mesh {\n mesh!: Mesh\n uniforms: any = {\n skyTime: { value: 12.0 },\n skyOpacity: { value: 0.8 },\n }\n\n constructor() {\n super()\n\n this.geometry = new SphereGeometry(1, 32, 32, 0, Math.PI * 2, 0, Math.PI)\n\n const positions = this.geometry.attributes.position.array\n const uvs = new Float32Array(positions.length / 3 * 2) // 创建新的 UV 数组\n\n // 重新计算 UV 坐标\n for (let i = 0; i < positions.length / 3; i++) {\n const x = positions[i * 3]\n const z = positions[i * 3 + 2]\n\n const u = (x * 0.8 + 1) / 2 // 将 x 坐标映射到 [0, 1]\n const v = (z * 0.8 + 1) / 2 // 将 z 坐标映射到 [0, 1]\n\n uvs[i * 2] = u\n uvs[i * 2 + 1] = v\n }\n\n // 将新的 UV 坐标添加到几何体\n this.geometry.setAttribute('uv', new BufferAttribute(uvs, 2))\n\n this.material = new ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: skyShader.vertexShader,\n fragmentShader: skyShader.fragmentShader,\n side: 2,\n transparent: true,\n depthWrite: false,\n toneMapped: false, // 添加这行\n })\n\n // this.position.y = -500\n // this.scale.set(19990, 8000, 19990)\n this.renderOrder = -1\n }\n\n setTime(time: number) {\n this.uniforms.skyTime = { value: time.toFixed(1) }\n }\n}\n\nexport default OutlineMesh"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,eAAe,EAAEC,IAAI,EAAEC,cAAc,EAAEC,cAAc,QAAQ,eAAe;AACrF,OAAOC,SAAS;AAAyB,IAEnCC,WAAW,0BAAAC,KAAA;EAAAC,SAAA,CAAAF,WAAA,EAAAC,KAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,WAAA;EAOf,SAAAA,YAAA,EAAc;IAAA,IAAAK,KAAA;IAAAC,eAAA,OAAAN,WAAA;IACZK,KAAA,GAAAF,MAAA,CAAAI,IAAA;IAAOC,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,eANO;MACdK,OAAO,EAAE;QAAEC,KAAK,EAAE;MAAK,CAAC;MACxBC,UAAU,EAAE;QAAED,KAAK,EAAE;MAAI;IAC3B,CAAC;IAKCN,KAAA,CAAKQ,QAAQ,GAAG,IAAIf,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEgB,IAAI,CAACC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAED,IAAI,CAACC,EAAE,CAAC;IAEzE,IAAMC,SAAS,GAAGX,KAAA,CAAKQ,QAAQ,CAACI,UAAU,CAACC,QAAQ,CAACC,KAAK;IACzD,IAAMC,GAAG,GAAG,IAAIC,YAAY,CAACL,SAAS,CAACM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAC;;IAEvD;IACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,SAAS,CAACM,MAAM,GAAG,CAAC,EAAEC,CAAC,EAAE,EAAE;MAC7C,IAAMC,CAAC,GAAGR,SAAS,CAACO,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAME,CAAC,GAAGT,SAAS,CAACO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MAE9B,IAAMG,CAAC,GAAG,CAACF,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAC;MAC5B,IAAMG,CAAC,GAAG,CAACF,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAC;;MAE5BL,GAAG,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGG,CAAC;MACdN,GAAG,CAACG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGI,CAAC;IACpB;;IAEA;IACAtB,KAAA,CAAKQ,QAAQ,CAACe,YAAY,CAAC,IAAI,EAAE,IAAIjC,eAAe,CAACyB,GAAG,EAAE,CAAC,CAAC,CAAC;IAE7Df,KAAA,CAAKwB,QAAQ,GAAG,IAAIhC,cAAc,CAAC;MACjCiC,QAAQ,EAAEzB,KAAA,CAAKyB,QAAQ;MACvBC,YAAY,EAAEhC,SAAS,CAACgC,YAAY;MACpCC,cAAc,EAAEjC,SAAS,CAACiC,cAAc;MACxCC,IAAI,EAAE,CAAC;MACPC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE,KAAK;MACjBC,UAAU,EAAE,KAAK,CAAE;IACrB,CAAC,CAAC;;IAEF;IACA;IACA/B,KAAA,CAAKgC,WAAW,GAAG,CAAC,CAAC;IAAA,OAAAhC,KAAA;EACvB;EAACiC,YAAA,CAAAtC,WAAA;IAAAuC,GAAA;IAAA5B,KAAA,EAED,SAAA6B,QAAQC,IAAY,EAAE;MACpB,IAAI,CAACX,QAAQ,CAACpB,OAAO,GAAG;QAAEC,KAAK,EAAE8B,IAAI,CAACC,OAAO,CAAC,CAAC;MAAE,CAAC;IACpD;EAAC;EAAA,OAAA1C,WAAA;AAAA,EA/CuBJ,IAAI;AAkD9B,eAAeI,WAAW"}
@@ -35,7 +35,7 @@ var CloudShader = {
35
35
  }
36
36
  },
37
37
  vertexShader: "varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
38
- fragmentShader: "\n uniform float iTime;\n uniform float cloudDensity;\n uniform float cloudDensity2;\n uniform float cloudalpha;\n uniform float cloudscale;\n uniform float speed;\n uniform float flash;\n uniform float skyTime;\n uniform vec3 color;\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform sampler2D BackTex1;\n \n varying highp vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r * 0.1, color.g * 0.1, color.b * 0.1);//0.00392\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n float Zsin(float x) {\n float y = abs(fract(x * 0.3) - 0.5) * 2.;\n return y;\n }\n\n vec4 morningColor = vec4(0.5, 0.7, 1.0, 0.2); // \u6E05\u6668\u989C\u8272\n vec4 dayColor = vec4(0.3, 0.6, 1.0, 1.0); // \u767D\u5929\u989C\u8272\n vec4 eveningColor = vec4(0.8, 0.4, 0.6, 1.0); // \u508D\u665A\u989C\u8272\n vec4 nightColor = vec4(0.1, 0.1, 0.3, 0.2); // \u591C\u665A\u989C\u8272\n\n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 6.0) {\n timeColor = mix(nightColor, morningColor, time / 6.0);\n } else if (time < 12.0) {\n timeColor = mix(morningColor, dayColor, (time - 6.0) / 6.0);\n } else if (time < 18.0) {\n timeColor = mix(dayColor, eveningColor, (time - 12.0) / 6.0);\n } else {\n timeColor = mix(eveningColor, nightColor, (time - 18.0) / 6.0);\n }\n return timeColor;\n} \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n uv -= vec2(.5);\n vec2 uvR = mat2(cos(iTime * speed), -sin(iTime * speed), sin(iTime * speed), cos(iTime * speed)) * uv; \n vec2 uvR_m = mat2(cos(iTime * 0.8 * speed), -sin(iTime * 0.8 * speed), sin(iTime * 0.8 * speed), cos(iTime * 0.8 * speed)) * uv;///\u65CB\u8F6C\u77E9\u9635\n uvR *= (sin(iTime) * 0.2 + 1.);\n vec3 T1 = texture(texture1, uvR_m * cloudscale).rgb;\n vec3 T2 = texture(texture2, uvR * cloudscale * 0.2).rgb;\n vec3 T1base = vec3(pow(T1.x, cloudDensity) * 10.);\n vec3 T2noise = vec3(pow(T2.x, cloudDensity));\n vec3 T2noiseS = vec3(pow(T2.x, 5.)) * vec3(0.1, 0.5, 0.8) * clamp((Zsin(iTime * 5.) * 100. - 99.), 0., 1.) * flash; \n float sphere = pow(distanceTo(vec2(0.5, 0.5), vUv), 9.) * 5000.;\n fragColor = vec4(T1base * T2noise * colorfix(color) + T2noiseS, pow(T1.x, cloudalpha) * cloudDensity2 * pow(T2.x, cloudalpha)*(1.-sphere)*(getSkyColor(skyTime).a));\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }"
38
+ fragmentShader: "\n uniform float iTime;\n uniform float cloudDensity;\n uniform float cloudDensity2;\n uniform float cloudalpha;\n uniform float cloudscale;\n uniform float speed;\n uniform float flash;\n uniform float skyTime;\n uniform vec3 color;\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform sampler2D BackTex1;\n \n varying highp vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r * 0.1, color.g * 0.1, color.b * 0.1);//0.00392\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n float Zsin(float x) {\n float y = abs(fract(x * 0.3) - 0.5) * 2.;\n return y;\n }\n\n vec4 morningColor = vec4(0.5, 0.7, 1.0, 0.2); // \u6E05\u6668\u989C\u8272\n vec4 dayColor = vec4(0.3, 0.6, 1.0, 1.0); // \u767D\u5929\u989C\u8272\n vec4 eveningColor = vec4(0.8, 0.4, 0.6, 1.0); // \u508D\u665A\u989C\u8272\n vec4 nightColor = vec4(0.1, 0.1, 0.3, 0.2); // \u591C\u665A\u989C\u8272\n\n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 6.0) {\n timeColor = mix(nightColor, morningColor, time / 6.0);\n } else if (time < 12.0) {\n timeColor = mix(morningColor, dayColor, (time - 6.0) / 6.0);\n } else if (time < 18.0) {\n timeColor = mix(dayColor, eveningColor, (time - 12.0) / 6.0);\n } else {\n timeColor = mix(eveningColor, nightColor, (time - 18.0) / 6.0);\n }\n return timeColor;\n} \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n uv -= vec2(.5);\n vec2 uvR = mat2(cos(iTime * speed), -sin(iTime * speed), sin(iTime * speed), cos(iTime * speed)) * uv; \n vec2 uvR_m = mat2(cos(iTime * 0.8 * speed), -sin(iTime * 0.8 * speed), sin(iTime * 0.8 * speed), cos(iTime * 0.8 * speed)) * uv;///\u65CB\u8F6C\u77E9\u9635\n uvR *= (sin(iTime) * 0.01 + 1.);\n vec3 T1 = texture(texture1, uvR_m * cloudscale).rgb;\n vec3 T2 = texture(texture2, uvR * cloudscale * 0.2).rgb;\n vec3 T1base = vec3(pow(T1.x, cloudDensity) * 10.);\n vec3 T2noise = vec3(pow(T2.x, cloudDensity));\n vec3 T2noiseS = vec3(pow(T2.x, 5.)) * vec3(0.1, 0.5, 0.8) * clamp((Zsin(iTime * 5.) * 100. - 99.), 0., 1.) * flash; \n float sphere = pow(distanceTo(vec2(0.5, 0.5), vUv), 9.) * 5000.;\n fragColor = vec4(T1base * T2noise * colorfix(color) + T2noiseS, pow(T1.x, cloudalpha) * cloudDensity2 * pow(T2.x, cloudalpha)*(1.-sphere)*(getSkyColor(skyTime).a));\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }"
39
39
  };
40
40
  export default CloudShader;
41
41
  //# sourceMappingURL=cloud.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CloudShader","uniforms","texture1","value","texture2","iTime","cloudDensity","cloudDensity2","cloudalpha","cloudscale","speed","color","flash","skyTime","vertexShader","fragmentShader"],"sources":["../../../../src/core/WeatherSystem/shaders/cloud.ts"],"sourcesContent":["const CloudShader = {\n uniforms: {\n texture1: { value: null },\n texture2: { value: null },\n iTime: { value: 0 },\n\n cloudDensity: { value: 0.01 },\n cloudDensity2: { value: 1 },\n cloudalpha: { value: 1 },\n cloudscale: { value: 8.0 },\n speed: { value: 0.3 },\n color: { value: [0.9, 0.9, 0.9] },\n flash: { value: 0.0 },\n skyTime: { value: 7.0 },\n },\n vertexShader:\n `varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader:\n `\n uniform float iTime;\n uniform float cloudDensity;\n uniform float cloudDensity2;\n uniform float cloudalpha;\n uniform float cloudscale;\n uniform float speed;\n uniform float flash;\n uniform float skyTime;\n uniform vec3 color;\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform sampler2D BackTex1;\n \n varying highp vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r * 0.1, color.g * 0.1, color.b * 0.1);//0.00392\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n float Zsin(float x) {\n float y = abs(fract(x * 0.3) - 0.5) * 2.;\n return y;\n }\n\n vec4 morningColor = vec4(0.5, 0.7, 1.0, 0.2); // 清晨颜色\n vec4 dayColor = vec4(0.3, 0.6, 1.0, 1.0); // 白天颜色\n vec4 eveningColor = vec4(0.8, 0.4, 0.6, 1.0); // 傍晚颜色\n vec4 nightColor = vec4(0.1, 0.1, 0.3, 0.2); // 夜晚颜色\n\n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 6.0) {\n timeColor = mix(nightColor, morningColor, time / 6.0);\n } else if (time < 12.0) {\n timeColor = mix(morningColor, dayColor, (time - 6.0) / 6.0);\n } else if (time < 18.0) {\n timeColor = mix(dayColor, eveningColor, (time - 12.0) / 6.0);\n } else {\n timeColor = mix(eveningColor, nightColor, (time - 18.0) / 6.0);\n }\n return timeColor;\n} \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n uv -= vec2(.5);\n vec2 uvR = mat2(cos(iTime * speed), -sin(iTime * speed), sin(iTime * speed), cos(iTime * speed)) * uv; \n vec2 uvR_m = mat2(cos(iTime * 0.8 * speed), -sin(iTime * 0.8 * speed), sin(iTime * 0.8 * speed), cos(iTime * 0.8 * speed)) * uv;///旋转矩阵\n uvR *= (sin(iTime) * 0.2 + 1.);\n vec3 T1 = texture(texture1, uvR_m * cloudscale).rgb;\n vec3 T2 = texture(texture2, uvR * cloudscale * 0.2).rgb;\n vec3 T1base = vec3(pow(T1.x, cloudDensity) * 10.);\n vec3 T2noise = vec3(pow(T2.x, cloudDensity));\n vec3 T2noiseS = vec3(pow(T2.x, 5.)) * vec3(0.1, 0.5, 0.8) * clamp((Zsin(iTime * 5.) * 100. - 99.), 0., 1.) * flash; \n float sphere = pow(distanceTo(vec2(0.5, 0.5), vUv), 9.) * 5000.;\n fragColor = vec4(T1base * T2noise * colorfix(color) + T2noiseS, pow(T1.x, cloudalpha) * cloudDensity2 * pow(T2.x, cloudalpha)*(1.-sphere)*(getSkyColor(skyTime).a));\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }`,\n}\n\nexport default CloudShader"],"mappings":"AAAA,IAAMA,WAAW,GAAG;EAClBC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IACzBC,QAAQ,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IACzBE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAE,CAAC;IAEnBG,YAAY,EAAE;MAAEH,KAAK,EAAE;IAAK,CAAC;IAC7BI,aAAa,EAAE;MAAEJ,KAAK,EAAE;IAAE,CAAC;IAC3BK,UAAU,EAAE;MAAEL,KAAK,EAAE;IAAE,CAAC;IACxBM,UAAU,EAAE;MAAEN,KAAK,EAAE;IAAI,CAAC;IAC1BO,KAAK,EAAE;MAAEP,KAAK,EAAE;IAAI,CAAC;IACrBQ,KAAK,EAAE;MAAER,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC;IACjCS,KAAK,EAAE;MAAET,KAAK,EAAE;IAAI,CAAC;IACrBU,OAAO,EAAE;MAAEV,KAAK,EAAE;IAAI;EACxB,CAAC;EACDW,YAAY,yJAKR;EACJC,cAAc;AAqEhB,CAAC;AAED,eAAef,WAAW"}
1
+ {"version":3,"names":["CloudShader","uniforms","texture1","value","texture2","iTime","cloudDensity","cloudDensity2","cloudalpha","cloudscale","speed","color","flash","skyTime","vertexShader","fragmentShader"],"sources":["../../../../src/core/WeatherSystem/shaders/cloud.ts"],"sourcesContent":["const CloudShader = {\n uniforms: {\n texture1: { value: null },\n texture2: { value: null },\n iTime: { value: 0 },\n\n cloudDensity: { value: 0.01 },\n cloudDensity2: { value: 1 },\n cloudalpha: { value: 1 },\n cloudscale: { value: 8.0 },\n speed: { value: 0.3 },\n color: { value: [0.9, 0.9, 0.9] },\n flash: { value: 0.0 },\n skyTime: { value: 7.0 },\n },\n vertexShader:\n `varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader:\n `\n uniform float iTime;\n uniform float cloudDensity;\n uniform float cloudDensity2;\n uniform float cloudalpha;\n uniform float cloudscale;\n uniform float speed;\n uniform float flash;\n uniform float skyTime;\n uniform vec3 color;\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform sampler2D BackTex1;\n \n varying highp vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r * 0.1, color.g * 0.1, color.b * 0.1);//0.00392\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n float Zsin(float x) {\n float y = abs(fract(x * 0.3) - 0.5) * 2.;\n return y;\n }\n\n vec4 morningColor = vec4(0.5, 0.7, 1.0, 0.2); // 清晨颜色\n vec4 dayColor = vec4(0.3, 0.6, 1.0, 1.0); // 白天颜色\n vec4 eveningColor = vec4(0.8, 0.4, 0.6, 1.0); // 傍晚颜色\n vec4 nightColor = vec4(0.1, 0.1, 0.3, 0.2); // 夜晚颜色\n\n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 6.0) {\n timeColor = mix(nightColor, morningColor, time / 6.0);\n } else if (time < 12.0) {\n timeColor = mix(morningColor, dayColor, (time - 6.0) / 6.0);\n } else if (time < 18.0) {\n timeColor = mix(dayColor, eveningColor, (time - 12.0) / 6.0);\n } else {\n timeColor = mix(eveningColor, nightColor, (time - 18.0) / 6.0);\n }\n return timeColor;\n} \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n uv -= vec2(.5);\n vec2 uvR = mat2(cos(iTime * speed), -sin(iTime * speed), sin(iTime * speed), cos(iTime * speed)) * uv; \n vec2 uvR_m = mat2(cos(iTime * 0.8 * speed), -sin(iTime * 0.8 * speed), sin(iTime * 0.8 * speed), cos(iTime * 0.8 * speed)) * uv;///旋转矩阵\n uvR *= (sin(iTime) * 0.01 + 1.);\n vec3 T1 = texture(texture1, uvR_m * cloudscale).rgb;\n vec3 T2 = texture(texture2, uvR * cloudscale * 0.2).rgb;\n vec3 T1base = vec3(pow(T1.x, cloudDensity) * 10.);\n vec3 T2noise = vec3(pow(T2.x, cloudDensity));\n vec3 T2noiseS = vec3(pow(T2.x, 5.)) * vec3(0.1, 0.5, 0.8) * clamp((Zsin(iTime * 5.) * 100. - 99.), 0., 1.) * flash; \n float sphere = pow(distanceTo(vec2(0.5, 0.5), vUv), 9.) * 5000.;\n fragColor = vec4(T1base * T2noise * colorfix(color) + T2noiseS, pow(T1.x, cloudalpha) * cloudDensity2 * pow(T2.x, cloudalpha)*(1.-sphere)*(getSkyColor(skyTime).a));\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }`,\n}\n\nexport default CloudShader"],"mappings":"AAAA,IAAMA,WAAW,GAAG;EAClBC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IACzBC,QAAQ,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IACzBE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAE,CAAC;IAEnBG,YAAY,EAAE;MAAEH,KAAK,EAAE;IAAK,CAAC;IAC7BI,aAAa,EAAE;MAAEJ,KAAK,EAAE;IAAE,CAAC;IAC3BK,UAAU,EAAE;MAAEL,KAAK,EAAE;IAAE,CAAC;IACxBM,UAAU,EAAE;MAAEN,KAAK,EAAE;IAAI,CAAC;IAC1BO,KAAK,EAAE;MAAEP,KAAK,EAAE;IAAI,CAAC;IACrBQ,KAAK,EAAE;MAAER,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC;IACjCS,KAAK,EAAE;MAAET,KAAK,EAAE;IAAI,CAAC;IACrBU,OAAO,EAAE;MAAEV,KAAK,EAAE;IAAI;EACxB,CAAC;EACDW,YAAY,yJAKR;EACJC,cAAc;AAqEhB,CAAC;AAED,eAAef,WAAW"}
@@ -8,7 +8,7 @@ var SkyShader = {
8
8
  }
9
9
  },
10
10
  vertexShader: "varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
11
- fragmentShader: "\n uniform float skyTime;\n uniform float skyOpacity;\n\n varying vec2 vUv;\n \n vec4 midnightColor = vec4(0.0602, 0.0919, 0.2500, 0.6); // \u5348\u591C0.05, 0.05, 0.15\n vec4 dawnColor = vec4(0.4005, 0.5432, 0.8510, 0.8); // \u51CC\u66680.3, 0.4, 0.6\n vec4 morningColor = vec4(0.4416, 0.7050, 1.0000, 0.7); // \u65E9\u66680.5, 0.7, 1.0\n vec4 noonColor = vec4(0.5842, 0.7033, 1.0000, 0.6); // \u4E2D\u53480.3, 0.6, 1.0\n vec4 afternoonColor = vec4(0.3844, 0.6402, 1.0000, 0.6); // \u4E0B\u5348\n vec4 duskColor = vec4(0.7050, 0.4721, 0.5914, 0.6); // \u9EC4\u660F\n vec4 eveningColor = vec4(0.5983, 0.3761, 0.4871, 0.7); // \u508D\u665A\n vec4 nightColor = vec4(0.0947, 0.0947, 0.1500, 0.6); // \u591C\u665A\n \n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 3.0) {\n // \u5348\u591C\u5230\u51CC\u6668\n timeColor = mix(midnightColor, dawnColor, time / 3.0);\n } else if (time < 6.0) {\n // \u51CC\u6668\u5230\u65E9\u6668\n timeColor = mix(dawnColor, morningColor, (time - 3.0) / 3.0);\n } else if (time < 9.0) {\n // \u65E9\u6668\u5230\u4E2D\u5348\n timeColor = mix(morningColor, noonColor, (time - 6.0) / 3.0);\n } else if (time < 15.0) {\n // \u4E2D\u5348\u5230\u4E0B\u5348\n timeColor = mix(noonColor, afternoonColor, (time - 9.0) / 6.0);\n } else if (time < 18.0) {\n // \u4E0B\u5348\u5230\u9EC4\u660F\n timeColor = mix(afternoonColor, duskColor, (time - 15.0) / 3.0);\n } else if (time < 19.5) {\n // \u9EC4\u660F\u5230\u508D\u665A\n timeColor = mix(duskColor, eveningColor, (time - 18.0) / 1.5);\n } else if (time < 21.0) {\n // \u508D\u665A\u5230\u591C\u665A\n timeColor = mix(eveningColor, nightColor, (time - 19.5) / 1.5);\n } else {\n // \u591C\u665A\u5230\u5348\u591C\n timeColor = mix(nightColor, midnightColor, (time - 21.0) / 3.0);\n }\n return timeColor;\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n // vec4 skyColor1 = vec4(.086, .298, .458, 1.);///2d5a7c,.176,.352,.486,,164c75\n // vec4 skyColor2 = vec4(.711, .849, .903, 1.);///9cbfcd,.611,.749,.803\n vec4 skyColor1 = vec4(0., 0., 0., 1.);///2d5a7c,.176,.352,.486,,164c75\n vec4 skyColor2 = vec4(.95, .95, .95, 1.);///9cbfcd,.611,.749,.803\n \n float sphere1 = pow(distanceTo(vec2(0.5, 0.5), vUv), 1.02) * 1.8;\n \n fragColor = skyColor1;\n vec4 timeColor = getSkyColor(skyTime);\n // vec4 color = mix(skyColor1, skyColor2, sphere1)*timeColor;\n float sphere1_clamp = clamp(sphere1, 0.0, 1.0);\n vec3 color = vec3(sphere1)*timeColor.rgb;\n\n // fragColor=vec4(color,timeColor.a) ;\n fragColor=vec4(color,0.97) ;\n \n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }"
11
+ fragmentShader: "\n uniform float skyTime;\n uniform float skyOpacity;\n\n varying vec2 vUv;\n \n vec4 midnightColor = vec4(0.0602, 0.0919, 0.2500, 0.6); // \u5348\u591C0.05, 0.05, 0.15\n vec4 dawnColor = vec4(0.4005, 0.5432, 0.8510, 0.8); // \u51CC\u66680.3, 0.4, 0.6\n vec4 morningColor = vec4(0.4416, 0.7050, 1.0000, 0.7); // \u65E9\u66680.5, 0.7, 1.0\n vec4 noonColor = vec4(0.5842, 0.7033, 1.0000, 0.6); // \u4E2D\u53480.3, 0.6, 1.0\n vec4 afternoonColor = vec4(0.3844, 0.6402, 1.0000, 0.6); // \u4E0B\u5348\n vec4 duskColor = vec4(0.7050, 0.4721, 0.5914, 0.6); // \u9EC4\u660F\n vec4 eveningColor = vec4(0.5983, 0.3761, 0.4871, 0.7); // \u508D\u665A\n vec4 nightColor = vec4(0.0947, 0.0947, 0.1500, 0.6); // \u591C\u665A\n \n // sRGB\u5230\u7EBF\u6027\u7A7A\u95F4\u7684\u8F6C\u6362\u51FD\u6570\n vec3 sRGBToLinear(vec3 srgb) {\n return pow(srgb, vec3(2.2));\n }\n\n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 3.0) {\n // \u5348\u591C\u5230\u51CC\u6668\n timeColor = mix(midnightColor, dawnColor, time / 3.0);\n } else if (time < 6.0) {\n // \u51CC\u6668\u5230\u65E9\u6668\n timeColor = mix(dawnColor, morningColor, (time - 3.0) / 3.0);\n } else if (time < 9.0) {\n // \u65E9\u6668\u5230\u4E2D\u5348\n timeColor = mix(morningColor, noonColor, (time - 6.0) / 3.0);\n } else if (time < 15.0) {\n // \u4E2D\u5348\u5230\u4E0B\u5348\n timeColor = mix(noonColor, afternoonColor, (time - 9.0) / 6.0);\n } else if (time < 18.0) {\n // \u4E0B\u5348\u5230\u9EC4\u660F\n timeColor = mix(afternoonColor, duskColor, (time - 15.0) / 3.0);\n } else if (time < 19.5) {\n // \u9EC4\u660F\u5230\u508D\u665A\n timeColor = mix(duskColor, eveningColor, (time - 18.0) / 1.5);\n } else if (time < 21.0) {\n // \u508D\u665A\u5230\u591C\u665A\n timeColor = mix(eveningColor, nightColor, (time - 19.5) / 1.5);\n } else {\n // \u591C\u665A\u5230\u5348\u591C\n timeColor = mix(nightColor, midnightColor, (time - 21.0) / 3.0);\n }\n return timeColor;\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n // vec4 skyColor1 = vec4(.086, .298, .458, 1.);///2d5a7c,.176,.352,.486,,164c75\n // vec4 skyColor2 = vec4(.711, .849, .903, 1.);///9cbfcd,.611,.749,.803\n vec4 skyColor1 = vec4(0., 0., 0., 1.);///2d5a7c,.176,.352,.486,,164c75\n vec4 skyColor2 = vec4(.95, .95, .95, 1.);///9cbfcd,.611,.749,.803\n \n float sphere1 = (pow(distanceTo(vec2(0.5, 0.5), vUv), 2.8)+0.2) * 2.8;\n \n fragColor = skyColor1;\n vec4 timeColor = getSkyColor(skyTime);\n // vec4 color = mix(skyColor1, skyColor2, sphere1)*timeColor;\n float sphere1_clamp = clamp(sphere1, 0.0, 1.0);\n vec3 color = vec3(sphere1)*timeColor.rgb;\n\n // fragColor=vec4(color,timeColor.a) ;\n // \u5C06\u989C\u8272\u8F6C\u6362\u5230\u7EBF\u6027\u7A7A\u95F4\u4EE5\u8865\u507FOutputPass\u7684sRGB\u8F6C\u6362\n color = sRGBToLinear(color);\n fragColor=vec4((color+vec3(0.05))*1.2,0.97) ;\n \n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }"
12
12
  };
13
13
  export default SkyShader;
14
14
  //# sourceMappingURL=sky.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SkyShader","uniforms","skyTime","value","skyOpacity","vertexShader","fragmentShader"],"sources":["../../../../src/core/WeatherSystem/shaders/sky.ts"],"sourcesContent":["const SkyShader = {\n uniforms: {\n skyTime: { value: 7.0 },\n skyOpacity: { value: 1.0 },\n },\n vertexShader: `varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform float skyTime;\n uniform float skyOpacity;\n\n varying vec2 vUv;\n \n vec4 midnightColor = vec4(0.0602, 0.0919, 0.2500, 0.6); // 午夜0.05, 0.05, 0.15\n vec4 dawnColor = vec4(0.4005, 0.5432, 0.8510, 0.8); // 凌晨0.3, 0.4, 0.6\n vec4 morningColor = vec4(0.4416, 0.7050, 1.0000, 0.7); // 早晨0.5, 0.7, 1.0\n vec4 noonColor = vec4(0.5842, 0.7033, 1.0000, 0.6); // 中午0.3, 0.6, 1.0\n vec4 afternoonColor = vec4(0.3844, 0.6402, 1.0000, 0.6); // 下午\n vec4 duskColor = vec4(0.7050, 0.4721, 0.5914, 0.6); // 黄昏\n vec4 eveningColor = vec4(0.5983, 0.3761, 0.4871, 0.7); // 傍晚\n vec4 nightColor = vec4(0.0947, 0.0947, 0.1500, 0.6); // 夜晚\n \n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 3.0) {\n // 午夜到凌晨\n timeColor = mix(midnightColor, dawnColor, time / 3.0);\n } else if (time < 6.0) {\n // 凌晨到早晨\n timeColor = mix(dawnColor, morningColor, (time - 3.0) / 3.0);\n } else if (time < 9.0) {\n // 早晨到中午\n timeColor = mix(morningColor, noonColor, (time - 6.0) / 3.0);\n } else if (time < 15.0) {\n // 中午到下午\n timeColor = mix(noonColor, afternoonColor, (time - 9.0) / 6.0);\n } else if (time < 18.0) {\n // 下午到黄昏\n timeColor = mix(afternoonColor, duskColor, (time - 15.0) / 3.0);\n } else if (time < 19.5) {\n // 黄昏到傍晚\n timeColor = mix(duskColor, eveningColor, (time - 18.0) / 1.5);\n } else if (time < 21.0) {\n // 傍晚到夜晚\n timeColor = mix(eveningColor, nightColor, (time - 19.5) / 1.5);\n } else {\n // 夜晚到午夜\n timeColor = mix(nightColor, midnightColor, (time - 21.0) / 3.0);\n }\n return timeColor;\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n // vec4 skyColor1 = vec4(.086, .298, .458, 1.);///2d5a7c,.176,.352,.486,,164c75\n // vec4 skyColor2 = vec4(.711, .849, .903, 1.);///9cbfcd,.611,.749,.803\n vec4 skyColor1 = vec4(0., 0., 0., 1.);///2d5a7c,.176,.352,.486,,164c75\n vec4 skyColor2 = vec4(.95, .95, .95, 1.);///9cbfcd,.611,.749,.803\n \n float sphere1 = pow(distanceTo(vec2(0.5, 0.5), vUv), 1.02) * 1.8;\n \n fragColor = skyColor1;\n vec4 timeColor = getSkyColor(skyTime);\n // vec4 color = mix(skyColor1, skyColor2, sphere1)*timeColor;\n float sphere1_clamp = clamp(sphere1, 0.0, 1.0);\n vec3 color = vec3(sphere1)*timeColor.rgb;\n\n // fragColor=vec4(color,timeColor.a) ;\n fragColor=vec4(color,0.97) ;\n \n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }`,\n}\n\nexport default SkyShader"],"mappings":"AAAA,IAAMA,SAAS,GAAG;EAChBC,QAAQ,EAAE;IACRC,OAAO,EAAE;MAAEC,KAAK,EAAE;IAAI,CAAC;IACvBC,UAAU,EAAE;MAAED,KAAK,EAAE;IAAI;EAC3B,CAAC;EACDE,YAAY,iJAIV;EACFC,cAAc;AA0EhB,CAAC;AAED,eAAeN,SAAS"}
1
+ {"version":3,"names":["SkyShader","uniforms","skyTime","value","skyOpacity","vertexShader","fragmentShader"],"sources":["../../../../src/core/WeatherSystem/shaders/sky.ts"],"sourcesContent":["const SkyShader = {\n uniforms: {\n skyTime: { value: 7.0 },\n skyOpacity: { value: 1.0 },\n },\n vertexShader: `varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform float skyTime;\n uniform float skyOpacity;\n\n varying vec2 vUv;\n \n vec4 midnightColor = vec4(0.0602, 0.0919, 0.2500, 0.6); // 午夜0.05, 0.05, 0.15\n vec4 dawnColor = vec4(0.4005, 0.5432, 0.8510, 0.8); // 凌晨0.3, 0.4, 0.6\n vec4 morningColor = vec4(0.4416, 0.7050, 1.0000, 0.7); // 早晨0.5, 0.7, 1.0\n vec4 noonColor = vec4(0.5842, 0.7033, 1.0000, 0.6); // 中午0.3, 0.6, 1.0\n vec4 afternoonColor = vec4(0.3844, 0.6402, 1.0000, 0.6); // 下午\n vec4 duskColor = vec4(0.7050, 0.4721, 0.5914, 0.6); // 黄昏\n vec4 eveningColor = vec4(0.5983, 0.3761, 0.4871, 0.7); // 傍晚\n vec4 nightColor = vec4(0.0947, 0.0947, 0.1500, 0.6); // 夜晚\n \n // sRGB到线性空间的转换函数\n vec3 sRGBToLinear(vec3 srgb) {\n return pow(srgb, vec3(2.2));\n }\n\n vec4 getSkyColor(float time) {\n vec4 timeColor;\n if (time < 3.0) {\n // 午夜到凌晨\n timeColor = mix(midnightColor, dawnColor, time / 3.0);\n } else if (time < 6.0) {\n // 凌晨到早晨\n timeColor = mix(dawnColor, morningColor, (time - 3.0) / 3.0);\n } else if (time < 9.0) {\n // 早晨到中午\n timeColor = mix(morningColor, noonColor, (time - 6.0) / 3.0);\n } else if (time < 15.0) {\n // 中午到下午\n timeColor = mix(noonColor, afternoonColor, (time - 9.0) / 6.0);\n } else if (time < 18.0) {\n // 下午到黄昏\n timeColor = mix(afternoonColor, duskColor, (time - 15.0) / 3.0);\n } else if (time < 19.5) {\n // 黄昏到傍晚\n timeColor = mix(duskColor, eveningColor, (time - 18.0) / 1.5);\n } else if (time < 21.0) {\n // 傍晚到夜晚\n timeColor = mix(eveningColor, nightColor, (time - 19.5) / 1.5);\n } else {\n // 夜晚到午夜\n timeColor = mix(nightColor, midnightColor, (time - 21.0) / 3.0);\n }\n return timeColor;\n }\n\n float distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n }\n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n // vec4 skyColor1 = vec4(.086, .298, .458, 1.);///2d5a7c,.176,.352,.486,,164c75\n // vec4 skyColor2 = vec4(.711, .849, .903, 1.);///9cbfcd,.611,.749,.803\n vec4 skyColor1 = vec4(0., 0., 0., 1.);///2d5a7c,.176,.352,.486,,164c75\n vec4 skyColor2 = vec4(.95, .95, .95, 1.);///9cbfcd,.611,.749,.803\n \n float sphere1 = (pow(distanceTo(vec2(0.5, 0.5), vUv), 2.8)+0.2) * 2.8;\n \n fragColor = skyColor1;\n vec4 timeColor = getSkyColor(skyTime);\n // vec4 color = mix(skyColor1, skyColor2, sphere1)*timeColor;\n float sphere1_clamp = clamp(sphere1, 0.0, 1.0);\n vec3 color = vec3(sphere1)*timeColor.rgb;\n\n // fragColor=vec4(color,timeColor.a) ;\n // 将颜色转换到线性空间以补偿OutputPass的sRGB转换\n color = sRGBToLinear(color);\n fragColor=vec4((color+vec3(0.05))*1.2,0.97) ;\n \n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }`,\n}\n\nexport default SkyShader"],"mappings":"AAAA,IAAMA,SAAS,GAAG;EAChBC,QAAQ,EAAE;IACRC,OAAO,EAAE;MAAEC,KAAK,EAAE;IAAI,CAAC;IACvBC,UAAU,EAAE;MAAED,KAAK,EAAE;IAAI;EAC3B,CAAC;EACDE,YAAY,iJAIV;EACFC,cAAc;AAiFhB,CAAC;AAED,eAAeN,SAAS"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.118",
3
+ "version": "0.0.119",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -25,7 +25,7 @@
25
25
  "gsap": "^3.12.5",
26
26
  "javascript-state-machine": "^3.1.0",
27
27
  "lodash": "^4.17.21",
28
- "postprocessing": "^6.33.3",
28
+ "postprocessing": "^6.37.3",
29
29
  "rxjs": "7.8.1",
30
30
  "suncalc": "^1.9.0",
31
31
  "supercluster": "^8.0.1",