@anov/3d 0.0.319 → 0.0.321
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.
- package/dist/__mocks__/ability-mock.js +124 -0
- package/dist/__mocks__/ability-mock.js.map +1 -0
- package/dist/__mocks__/geo-3d-mock.js +10 -0
- package/dist/__mocks__/geo-3d-mock.js.map +1 -0
- package/dist/anov3d.js +67 -11
- package/dist/anov3d.js.map +1 -1
- package/dist/applicationApi.js +59 -22
- package/dist/applicationApi.js.map +1 -1
- package/dist/hooksManager.js +22 -17
- package/dist/hooksManager.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/module/animation/motion/index.js +2 -4
- package/dist/module/animation/motion/index.js.map +1 -1
- package/dist/module/camera/index.js +1 -1
- package/dist/module/camera/index.js.map +1 -1
- package/dist/module/entity/area/index.js +3 -3
- package/dist/module/entity/area/index.js.map +1 -1
- package/dist/module/entity/baseEntity.js +13 -4
- package/dist/module/entity/baseEntity.js.map +1 -1
- package/dist/module/entity/batch/index.js +12 -10
- package/dist/module/entity/batch/index.js.map +1 -1
- package/dist/module/entity/flyline/index.js +3 -3
- package/dist/module/entity/flyline/index.js.map +1 -1
- package/dist/module/entity/group/index.js +18 -4
- package/dist/module/entity/group/index.js.map +1 -1
- package/dist/module/entity/heatmap/index.js +16 -4
- package/dist/module/entity/heatmap/index.js.map +1 -1
- package/dist/module/entity/index.js +47 -44
- package/dist/module/entity/index.js.map +1 -1
- package/dist/module/entity/infoPanel/index.js +2 -2
- package/dist/module/entity/infoPanel/index.js.map +1 -1
- package/dist/module/entity/light/pointLight/index.js +2 -2
- package/dist/module/entity/light/pointLight/index.js.map +1 -1
- package/dist/module/entity/mark/index.js +11 -14
- package/dist/module/entity/mark/index.js.map +1 -1
- package/dist/module/entity/model/index.js +29 -12
- package/dist/module/entity/model/index.js.map +1 -1
- package/dist/module/entity/model/load/loadFbx.js +2 -2
- package/dist/module/entity/model/load/loadFbx.js.map +1 -1
- package/dist/module/entity/model/load/loadGlb.js +7 -7
- package/dist/module/entity/model/load/loadGlb.js.map +1 -1
- package/dist/module/entity/poi/index.js +3 -3
- package/dist/module/entity/poi/index.js.map +1 -1
- package/dist/module/entity/shape/index.js +16 -14
- package/dist/module/entity/shape/index.js.map +1 -1
- package/dist/module/entity/spline/index.js +4 -4
- package/dist/module/entity/spline/index.js.map +1 -1
- package/dist/module/entity/strategy.js.map +1 -1
- package/dist/module/entity/traffic/realismTraffic/index.js +17 -5
- package/dist/module/entity/traffic/realismTraffic/index.js.map +1 -1
- package/dist/module/entity/traffic/streamerTraffic/index.js +16 -4
- package/dist/module/entity/traffic/streamerTraffic/index.js.map +1 -1
- package/dist/module/entity/videoPanel/index.js +3 -3
- package/dist/module/entity/videoPanel/index.js.map +1 -1
- package/dist/module/environment/index.js +3 -4
- package/dist/module/environment/index.js.map +1 -1
- package/dist/module/environment/season/index.js +1 -1
- package/dist/module/environment/season/index.js.map +1 -1
- package/dist/module/eventBus/index.js +1 -5
- package/dist/module/eventBus/index.js.map +1 -1
- package/dist/module/material/index.js +5 -6
- package/dist/module/material/index.js.map +1 -1
- package/dist/module/scene/fileParse.js +22 -17
- package/dist/module/scene/fileParse.js.map +1 -1
- package/dist/module/scene/index.js +10 -11
- package/dist/module/scene/index.js.map +1 -1
- package/dist/sdkEntry.js +25 -32
- package/dist/sdkEntry.js.map +1 -1
- package/dist/utils/debugTools.js +364 -0
- package/dist/utils/debugTools.js.map +1 -0
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/messageFn.js +20 -6
- package/dist/utils/messageFn.js.map +1 -1
- package/dist/utils/messageTracer.js +369 -0
- package/dist/utils/messageTracer.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DoubleSide","MeshPhysicalMaterial","RepeatWrapping","SRGBColorSpace","TextureLoader","use","SeasonEnum","PresetValue","Spring","treeSize","landSnowSize","noGran","treeColor1","targetColor","changeColor","Summer","Autumn","Winter","Snow","Season","app","_classCallCheck","_defineProperty","init","_createClass","key","value","path","caseInstance","usePath","textureLoader","textureLeaf","load","concat","colorSpace","textureNoise","textureBole","uniforms","time","texture1","texture2","wrapS","wrapT","setSeason","type","_this","duration","arguments","length","undefined","haveSetMaterial","setLeafMaterial","setLandMaterial","setMassifMaterial","useframe","Object","keys","forEach","_this2","leafMaterial","map","alphaTest","roughness","metalness","emissive","side","transparent","depthWrite","onBeforeCompile","shader","renderer","vertexShader","replace","fragmentShader","treesMesh","object","material","_this3","landMaterial","envMapIntensity","textureLand","grasslandMesh","_this4","massifMaterial","textureMassif","massifMesh"],"sources":["../../../../src/module/environment/season/index.ts"],"sourcesContent":["import type { Material, Texture } from '@anov/3d-core'\nimport { DoubleSide, MeshPhysicalMaterial, RepeatWrapping, SRGBColorSpace, TextureLoader, use } from '@anov/3d-core'\nimport type Anov3D from '../../../sdkEntry'\n\nenum SeasonEnum {\n Spring = 'Spring', // 春\n Summer = 'Summer', // 夏\n Autumn = 'Autumn', // 秋\n Winter = 'Winter', // 冬\n}\n\nconst PresetValue = {\n Spring: {\n treeSize: 1.0, landSnowSize: 0.0, noGran: 0.9, treeColor1: [0, 1, 0.1647], targetColor: [0.0, 0.58, 0.0], changeColor: [0.7059, 0.9686, 0.5294],\n },\n Summer: {\n treeSize: 0.2, landSnowSize: 0.0, noGran: 0.9, treeColor1: [0.4314, 0.8588, 0.0], targetColor: [0.0, 0.58, 0.0], changeColor: [0.4314, 0.8588, 0.0],\n },\n Autumn: {\n treeSize: 0.1, landSnowSize: 0.0, noGran: 0.9, treeColor1: [0.8784, 0.5255, 0.1216], targetColor: [0.0, 0.58, 0.0], changeColor: [0.8667, 0.8784, 0.0],\n },\n Winter: {\n treeSize: 4.0, landSnowSize: 4.0, noGran: 0.9, treeColor1: [0.8784, 0.5255, 0.1216], targetColor: [0.0, 0.58, 0.0], changeColor: [0.996, 0.960, 0.764],\n },\n Snow: {\n treeSize: 1.3, landSnowSize: 8.8, noGran: 0.9, treeColor1: [0.8784, 0.5255, 0.1216], targetColor: [0.0, 0.58, 0.0], changeColor: [0.996, 0.960, 0.764],\n },\n}\n\nclass Season {\n app: Anov3D\n textureLeaf: Texture\n textureBole: Texture\n textureLand: Texture\n textureMassif: Texture\n textureNoise: Texture\n uniforms: any\n leafMaterial: Material\n landMaterial: Material\n massifMaterial: Material\n haveSetMaterial = false\n\n constructor(app: Anov3D) {\n this.app = app\n this.init()\n }\n\n init() {\n const path = this.app.caseInstance.usePath\n const textureLoader = new TextureLoader()\n this.textureLeaf = textureLoader.load(`${path}season/Image_tree2.png`)\n this.textureLeaf.colorSpace = SRGBColorSpace\n this.textureNoise = textureLoader.load(`${path}season/T_TileNoise.png`)\n this.textureNoise.colorSpace = SRGBColorSpace\n this.textureBole = textureLoader.load(`${path}season/Image_tree3.png`)\n this.textureBole.colorSpace = SRGBColorSpace\n\n this.uniforms = {\n time: { value: 1.0 },\n treeSize: { value: 0.3 },\n noGran: { value: 0.9 },\n landSnowSize: { value: 0.0 },\n treeColor1: { value: [0.0, 0.58, 0.0] },\n targetColor: { value: [0.0, 0.58, 0.0] },\n changeColor: { value: [0.5, 0.58, 0.5] },\n texture1: { value: this.textureLeaf },\n texture2: { value: this.textureNoise },\n }\n this.uniforms.texture1.value.wrapS = this.uniforms.texture1.value.wrapT = RepeatWrapping\n this.uniforms.texture2.value.wrapS = this.uniforms.texture2.value.wrapT = RepeatWrapping\n }\n\n setSeason(type, duration = 2.0) {\n if (!this.haveSetMaterial) {\n this.haveSetMaterial = true\n this.setLeafMaterial()\n this.setLandMaterial()\n this.setMassifMaterial()\n\n use.useframe(() => {\n this.uniforms.time.value += 0.2\n })\n }\n\n PresetValue[type] && Object.keys(PresetValue[type]).forEach((key) => {\n this.uniforms[key].value = PresetValue[type][key]\n })\n }\n\n setLeafMaterial() {\n this.leafMaterial = new MeshPhysicalMaterial(\n {\n map: this.textureBole,\n alphaTest: 0.2,\n roughness: 1,\n metalness: 0,\n emissive: 0,\n side: DoubleSide,\n transparent: true,\n depthWrite: true,\n })\n this.leafMaterial.onBeforeCompile = (shader, renderer) => {\n shader.vertexShader = `\n \n uniform float time;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n \n float hash( vec2 p ) {\n return fract( sin( dot( p, vec2( 127.1, 311.7 ) ) ) * 43758.5453123 );\n }\n \n float noise( vec2 p ) {\n vec2 i = floor( p );\n vec2 f = fract( p );\n vec2 u = f * f * ( 3.0 - 2.0 * f );\n \n return mix( mix( hash( i + vec2( 0.0, 0.0 ) ), \n hash( i + vec2( 1.0, 0.0 ) ), u.x),\n mix( hash( i + vec2( 0.0, 1.0 ) ), \n hash( i + vec2( 1.0, 1.0 ) ), u.x), u.y);\n }\n \n ${shader.vertexShader}`\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `#include <begin_vertex>\n vUv = uv;\n vNormal = normalize(normal);\n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n \n vec3 wind = vec3(\n noise(position.xy * 0.5 + time * 0.1),\n noise(position.yz * 0.5 + time * 0.1),\n noise(position.zx * 0.5 + time * 0.1)\n );\n float strength = 0.5; // Adjust the strength of the wind effect\n vec3 displacedPosition = position + wind * strength;\n transformed = displacedPosition;\n `,\n )\n shader.fragmentShader = `\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform float treeSize;\n uniform vec3 treeColor1;\n uniform float landSnowSize;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n \n vec4 T3dPoi (sampler2D T,vec3 Position,vec3 normal, float loop){\n vec2 xy = vec2(Position.x,Position.y);\n vec2 xz = vec2(Position.x,Position.z);\n vec2 yz = vec2(Position.y,Position.z);\n float ix =clamp((abs(normal.x)-0.4)*2.,0.,1.);\n float iy =clamp((abs(normal.y)-0.4)*2.,0.,1.);\n return mix((mix(texture2D( T, xy*loop),texture2D( T, yz*loop),ix)),texture2D( T, xz*loop),iy);\n }\n ${shader.fragmentShader}\n `\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n ` \n #include <map_fragment> \n vec4 T1 = texture2D(texture1, vUv)*vec4(treeColor1,1.);\n vec4 nT = texture2D(texture2, vUv);\n \n vec4 noiseT=T3dPoi(texture2,vWorldPosition,vNormal,0.02);\n \n diffuseColor = mix(diffuseColor, T1,pow(nT.r,treeSize) ); // 叠加效果,调整混合方式\n float Si= clamp(pow(noiseT.r,(10.-landSnowSize))*landSnowSize*0.1,0.,1.);\n diffuseColor = mix(diffuseColor,vec4(1.,1.,1.,diffuseColor.a), Si);\n \n \n // diffuseColor =vec4(Si,Si,Si,1.) ;\n \n `,\n )\n\n shader.uniforms.time = this.uniforms.time\n shader.uniforms.texture1 = { value: this.textureLeaf }\n shader.uniforms.texture2 = { value: this.textureNoise }\n shader.uniforms.treeSize = this.uniforms.treeSize\n shader.uniforms.treeColor1 = this.uniforms.treeColor1\n shader.uniforms.landSnowSize = this.uniforms.landSnowSize\n\n // material.userData.shader = shader;\n }\n this.app.caseInstance.treesMesh.forEach((object) => {\n object.material = this.leafMaterial\n })\n }\n\n setLandMaterial() {\n this.landMaterial = new MeshPhysicalMaterial(\n {\n // alphaTest: 0.2,\n roughness: 1,\n metalness: 0,\n emissive: 0,\n envMapIntensity: 0.2,\n side: DoubleSide,\n // transparent: true,\n depthWrite: false,\n })\n this.landMaterial.onBeforeCompile = (shader, renderer) => {\n shader.vertexShader = ` \n varying vec3 vWorldPosition;\n varying vec2 vUv;\n ${shader.vertexShader}`\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `#include <begin_vertex>\n vUv = uv;\n vNormal = normalize(normal);\n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n `,\n )\n shader.fragmentShader = `\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform float treeSize;\n uniform float noGran;\n uniform vec3 treeColor1;\n uniform vec3 targetColor;\n uniform vec3 changeColor;\n uniform float landSnowSize;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n //varying vec2 vUv;\n vec4 T3dPoi (sampler2D T,vec3 Position,vec3 normal, float loop){\n vec2 xy = vec2(Position.x,Position.y);\n vec2 xz = vec2(Position.x,Position.z);\n vec2 yz = vec2(Position.y,Position.z);\n float ix =clamp((abs(normal.x)-0.4)*2.,0.,1.);\n float iy =clamp((abs(normal.y)-0.4)*2.,0.,1.);\n return mix((mix(texture2D( T, xy*loop),texture2D( T, yz*loop),ix)),texture2D( T, xz*loop),iy);\n }\n \n ${shader.fragmentShader}\n `\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n ` \n #include <map_fragment> \n vec4 T1 = texture2D(texture1, vUv);\n \n float d = distance(T1.rgb, targetColor);\n float factor = smoothstep(0.4, 0.6, d);\n // T1.rgb = mix(treeColor1, T1.rgb, factor);\n \n float gray = dot(T1.rgb, vec3(0.299, 0.587, 0.114));\n vec4 T1_gray =vec4(vec3(gray)*changeColor,1.);\n \n T1.rgb = mix(T1_gray.rgb, T1.rgb, factor);\n \n \n vec4 nT = texture2D(texture2, vUv);\n \n vec4 noiseT2d=pow(texture2D(texture2, vWorldPosition.xz*0.002),vec4(10.-landSnowSize));\n \n diffuseColor = mix(diffuseColor, T1,pow(nT.r,treeSize) ); // 叠加效果,调整混合方式\n diffuseColor=T1;\n \n vec3 upDirection = vec3(0.0, 1.0, 0.0);\n float dotProduct = dot(vNormal, upDirection);\n float snowAmount = smoothstep(0.5, 1.0, dotProduct);\n diffuseColor = mix(diffuseColor, vec4(1.0, 1., 1.,1.), snowAmount*landSnowSize*noiseT2d*0.1);\n \n \n `,\n )\n\n shader.uniforms.time = this.uniforms.time\n // shader.uniforms.texture1 = { value: matLandT0 };\n shader.uniforms.texture1 = { value: this.textureLand }\n shader.uniforms.texture2 = { value: this.textureNoise }\n shader.uniforms.treeSize = this.uniforms.treeSize\n shader.uniforms.noGran = this.uniforms.noGran\n shader.uniforms.treeColor1 = this.uniforms.treeColor1\n shader.uniforms.targetColor = this.uniforms.targetColor\n shader.uniforms.changeColor = this.uniforms.changeColor\n shader.uniforms.landSnowSize = this.uniforms.landSnowSize\n }\n this.app.caseInstance.grasslandMesh.forEach((object) => {\n this.textureLand = object.material.map\n object.material = this.landMaterial\n })\n }\n\n setMassifMaterial() {\n this.massifMaterial = new MeshPhysicalMaterial(\n {\n alphaTest: 0.2,\n roughness: 1,\n metalness: 0,\n emissive: 0,\n envMapIntensity: 0.2,\n side: DoubleSide,\n transparent: true,\n depthWrite: false,\n })\n\n this.massifMaterial.onBeforeCompile = (shader, renderer) => {\n // console.log(shader.vertexShader);\n shader.vertexShader = ` \n varying vec3 vWorldPosition;\n varying vec2 vUv;\n ${shader.vertexShader}`\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `#include <begin_vertex>\n vUv = uv;\n \n vNormal = normalize(normal);\n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n `,\n )\n shader.fragmentShader = `\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform float treeSize;\n uniform float noGran;\n uniform vec3 treeColor1;\n uniform vec3 targetColor;\n uniform vec3 changeColor;\n uniform float landSnowSize;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n \n vec4 T3dPoi (sampler2D T,vec3 Position,vec3 normal, float loop){\n vec2 xy = vec2(Position.x,Position.y);\n vec2 xz = vec2(Position.x,Position.z);\n vec2 yz = vec2(Position.y,Position.z);\n float ix =clamp((abs(normal.x)-0.4)*2.,0.,1.);\n float iy =clamp((abs(normal.y)-0.4)*2.,0.,1.);\n return mix((mix(texture2D( T, xy*loop),texture2D( T, yz*loop),ix)),texture2D( T, xz*loop),iy);\n }\n \n ${shader.fragmentShader}\n `\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n ` \n #include <map_fragment> \n vec4 T1 = texture2D(texture1, vUv);\n \n float d = distance(T1.rgb, targetColor);\n float factor = smoothstep(0.4, 0.6, d);\n // T1.rgb = mix(treeColor1, T1.rgb, factor);\n \n float gray = dot(T1.rgb, vec3(0.299, 0.587, 0.114));\n vec4 T1_gray =vec4(vec3(gray)*changeColor,1.);\n \n T1.rgb = mix(T1_gray.rgb, T1.rgb, factor);\n \n diffuseColor=T1;\n vec4 nT = texture2D(texture2, vUv);\n \n float noiseT=pow( clamp(texture2D(texture2, vWorldPosition.xz*0.002).r,0.,1.),(10.0-landSnowSize));\n vec4 noiseT2d=pow(texture2D(texture2, vWorldPosition.xz*0.002),vec4(10.0-landSnowSize));\n \n //diffuseColor = mix(diffuseColor, T1,pow(nT.r,1.) ); // 叠加效果,调整混合方式\n \n \n vec3 upDirection = vec3(0.0, 1.0, 0.0);\n float dotProduct = dot(vNormal, upDirection);\n float snowAmount = smoothstep(0.5, 1.0, dotProduct);\n diffuseColor = mix(diffuseColor, vec4(5.0, 5., 5.,5.),snowAmount* noiseT*0.5*landSnowSize);\n //diffuseColor=nT;\n \n `,\n )\n\n shader.uniforms.time = this.uniforms.time\n // shader.uniforms.texture1 = { value: matLandT0 };\n shader.uniforms.texture1 = { value: this.textureMassif }\n shader.uniforms.texture2 = { value: this.textureNoise }\n shader.uniforms.treeSize = this.uniforms.treeSize\n shader.uniforms.noGran = this.uniforms.noGran\n shader.uniforms.treeColor1 = this.uniforms.treeColor1\n shader.uniforms.targetColor = this.uniforms.targetColor\n shader.uniforms.changeColor = this.uniforms.changeColor\n shader.uniforms.landSnowSize = this.uniforms.landSnowSize\n\n // material.userData.shader = shader;\n }\n\n this.app.caseInstance.massifMesh.forEach((object) => {\n this.textureMassif = object.material.map\n object.material = this.massifMaterial\n })\n }\n}\n\nexport default Season"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["DoubleSide","MeshPhysicalMaterial","RepeatWrapping","SRGBColorSpace","TextureLoader","use","SeasonEnum","PresetValue","Spring","treeSize","landSnowSize","noGran","treeColor1","targetColor","changeColor","Summer","Autumn","Winter","Snow","Season","app","_classCallCheck","_defineProperty","init","_createClass","key","value","path","caseInstance","usePath","textureLoader","textureLeaf","load","concat","colorSpace","textureNoise","textureBole","uniforms","time","texture1","texture2","wrapS","wrapT","setSeason","type","_this","duration","arguments","length","undefined","haveSetMaterial","setLeafMaterial","setLandMaterial","setMassifMaterial","useframe","sceneControl","Object","keys","forEach","_this2","leafMaterial","map","alphaTest","roughness","metalness","emissive","side","transparent","depthWrite","onBeforeCompile","shader","renderer","vertexShader","replace","fragmentShader","treesMesh","object","material","_this3","landMaterial","envMapIntensity","textureLand","grasslandMesh","_this4","massifMaterial","textureMassif","massifMesh"],"sources":["../../../../src/module/environment/season/index.ts"],"sourcesContent":["import type { Material, Texture } from '@anov/3d-core'\nimport { DoubleSide, MeshPhysicalMaterial, RepeatWrapping, SRGBColorSpace, TextureLoader, use } from '@anov/3d-core'\nimport type Anov3D from '../../../sdkEntry'\n\nenum SeasonEnum {\n Spring = 'Spring', // 春\n Summer = 'Summer', // 夏\n Autumn = 'Autumn', // 秋\n Winter = 'Winter', // 冬\n}\n\nconst PresetValue = {\n Spring: {\n treeSize: 1.0, landSnowSize: 0.0, noGran: 0.9, treeColor1: [0, 1, 0.1647], targetColor: [0.0, 0.58, 0.0], changeColor: [0.7059, 0.9686, 0.5294],\n },\n Summer: {\n treeSize: 0.2, landSnowSize: 0.0, noGran: 0.9, treeColor1: [0.4314, 0.8588, 0.0], targetColor: [0.0, 0.58, 0.0], changeColor: [0.4314, 0.8588, 0.0],\n },\n Autumn: {\n treeSize: 0.1, landSnowSize: 0.0, noGran: 0.9, treeColor1: [0.8784, 0.5255, 0.1216], targetColor: [0.0, 0.58, 0.0], changeColor: [0.8667, 0.8784, 0.0],\n },\n Winter: {\n treeSize: 4.0, landSnowSize: 4.0, noGran: 0.9, treeColor1: [0.8784, 0.5255, 0.1216], targetColor: [0.0, 0.58, 0.0], changeColor: [0.996, 0.960, 0.764],\n },\n Snow: {\n treeSize: 1.3, landSnowSize: 8.8, noGran: 0.9, treeColor1: [0.8784, 0.5255, 0.1216], targetColor: [0.0, 0.58, 0.0], changeColor: [0.996, 0.960, 0.764],\n },\n}\n\nclass Season {\n app: Anov3D\n textureLeaf: Texture\n textureBole: Texture\n textureLand: Texture\n textureMassif: Texture\n textureNoise: Texture\n uniforms: any\n leafMaterial: Material\n landMaterial: Material\n massifMaterial: Material\n haveSetMaterial = false\n\n constructor(app: Anov3D) {\n this.app = app\n this.init()\n }\n\n init() {\n const path = this.app.caseInstance.usePath\n const textureLoader = new TextureLoader()\n this.textureLeaf = textureLoader.load(`${path}season/Image_tree2.png`)\n this.textureLeaf.colorSpace = SRGBColorSpace\n this.textureNoise = textureLoader.load(`${path}season/T_TileNoise.png`)\n this.textureNoise.colorSpace = SRGBColorSpace\n this.textureBole = textureLoader.load(`${path}season/Image_tree3.png`)\n this.textureBole.colorSpace = SRGBColorSpace\n\n this.uniforms = {\n time: { value: 1.0 },\n treeSize: { value: 0.3 },\n noGran: { value: 0.9 },\n landSnowSize: { value: 0.0 },\n treeColor1: { value: [0.0, 0.58, 0.0] },\n targetColor: { value: [0.0, 0.58, 0.0] },\n changeColor: { value: [0.5, 0.58, 0.5] },\n texture1: { value: this.textureLeaf },\n texture2: { value: this.textureNoise },\n }\n this.uniforms.texture1.value.wrapS = this.uniforms.texture1.value.wrapT = RepeatWrapping\n this.uniforms.texture2.value.wrapS = this.uniforms.texture2.value.wrapT = RepeatWrapping\n }\n\n setSeason(type, duration = 2.0) {\n if (!this.haveSetMaterial) {\n this.haveSetMaterial = true\n this.setLeafMaterial()\n this.setLandMaterial()\n this.setMassifMaterial()\n\n use.useframe(this.app.sceneControl, () => {\n this.uniforms.time.value += 0.2\n })\n }\n\n PresetValue[type] && Object.keys(PresetValue[type]).forEach((key) => {\n this.uniforms[key].value = PresetValue[type][key]\n })\n }\n\n setLeafMaterial() {\n this.leafMaterial = new MeshPhysicalMaterial(\n {\n map: this.textureBole,\n alphaTest: 0.2,\n roughness: 1,\n metalness: 0,\n emissive: 0,\n side: DoubleSide,\n transparent: true,\n depthWrite: true,\n })\n this.leafMaterial.onBeforeCompile = (shader, renderer) => {\n shader.vertexShader = `\n \n uniform float time;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n \n float hash( vec2 p ) {\n return fract( sin( dot( p, vec2( 127.1, 311.7 ) ) ) * 43758.5453123 );\n }\n \n float noise( vec2 p ) {\n vec2 i = floor( p );\n vec2 f = fract( p );\n vec2 u = f * f * ( 3.0 - 2.0 * f );\n \n return mix( mix( hash( i + vec2( 0.0, 0.0 ) ), \n hash( i + vec2( 1.0, 0.0 ) ), u.x),\n mix( hash( i + vec2( 0.0, 1.0 ) ), \n hash( i + vec2( 1.0, 1.0 ) ), u.x), u.y);\n }\n \n ${shader.vertexShader}`\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `#include <begin_vertex>\n vUv = uv;\n vNormal = normalize(normal);\n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n \n vec3 wind = vec3(\n noise(position.xy * 0.5 + time * 0.1),\n noise(position.yz * 0.5 + time * 0.1),\n noise(position.zx * 0.5 + time * 0.1)\n );\n float strength = 0.5; // Adjust the strength of the wind effect\n vec3 displacedPosition = position + wind * strength;\n transformed = displacedPosition;\n `,\n )\n shader.fragmentShader = `\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform float treeSize;\n uniform vec3 treeColor1;\n uniform float landSnowSize;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n \n vec4 T3dPoi (sampler2D T,vec3 Position,vec3 normal, float loop){\n vec2 xy = vec2(Position.x,Position.y);\n vec2 xz = vec2(Position.x,Position.z);\n vec2 yz = vec2(Position.y,Position.z);\n float ix =clamp((abs(normal.x)-0.4)*2.,0.,1.);\n float iy =clamp((abs(normal.y)-0.4)*2.,0.,1.);\n return mix((mix(texture2D( T, xy*loop),texture2D( T, yz*loop),ix)),texture2D( T, xz*loop),iy);\n }\n ${shader.fragmentShader}\n `\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n ` \n #include <map_fragment> \n vec4 T1 = texture2D(texture1, vUv)*vec4(treeColor1,1.);\n vec4 nT = texture2D(texture2, vUv);\n \n vec4 noiseT=T3dPoi(texture2,vWorldPosition,vNormal,0.02);\n \n diffuseColor = mix(diffuseColor, T1,pow(nT.r,treeSize) ); // 叠加效果,调整混合方式\n float Si= clamp(pow(noiseT.r,(10.-landSnowSize))*landSnowSize*0.1,0.,1.);\n diffuseColor = mix(diffuseColor,vec4(1.,1.,1.,diffuseColor.a), Si);\n \n \n // diffuseColor =vec4(Si,Si,Si,1.) ;\n \n `,\n )\n\n shader.uniforms.time = this.uniforms.time\n shader.uniforms.texture1 = { value: this.textureLeaf }\n shader.uniforms.texture2 = { value: this.textureNoise }\n shader.uniforms.treeSize = this.uniforms.treeSize\n shader.uniforms.treeColor1 = this.uniforms.treeColor1\n shader.uniforms.landSnowSize = this.uniforms.landSnowSize\n\n // material.userData.shader = shader;\n }\n this.app.caseInstance.treesMesh.forEach((object) => {\n object.material = this.leafMaterial\n })\n }\n\n setLandMaterial() {\n this.landMaterial = new MeshPhysicalMaterial(\n {\n // alphaTest: 0.2,\n roughness: 1,\n metalness: 0,\n emissive: 0,\n envMapIntensity: 0.2,\n side: DoubleSide,\n // transparent: true,\n depthWrite: false,\n })\n this.landMaterial.onBeforeCompile = (shader, renderer) => {\n shader.vertexShader = ` \n varying vec3 vWorldPosition;\n varying vec2 vUv;\n ${shader.vertexShader}`\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `#include <begin_vertex>\n vUv = uv;\n vNormal = normalize(normal);\n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n `,\n )\n shader.fragmentShader = `\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform float treeSize;\n uniform float noGran;\n uniform vec3 treeColor1;\n uniform vec3 targetColor;\n uniform vec3 changeColor;\n uniform float landSnowSize;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n //varying vec2 vUv;\n vec4 T3dPoi (sampler2D T,vec3 Position,vec3 normal, float loop){\n vec2 xy = vec2(Position.x,Position.y);\n vec2 xz = vec2(Position.x,Position.z);\n vec2 yz = vec2(Position.y,Position.z);\n float ix =clamp((abs(normal.x)-0.4)*2.,0.,1.);\n float iy =clamp((abs(normal.y)-0.4)*2.,0.,1.);\n return mix((mix(texture2D( T, xy*loop),texture2D( T, yz*loop),ix)),texture2D( T, xz*loop),iy);\n }\n \n ${shader.fragmentShader}\n `\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n ` \n #include <map_fragment> \n vec4 T1 = texture2D(texture1, vUv);\n \n float d = distance(T1.rgb, targetColor);\n float factor = smoothstep(0.4, 0.6, d);\n // T1.rgb = mix(treeColor1, T1.rgb, factor);\n \n float gray = dot(T1.rgb, vec3(0.299, 0.587, 0.114));\n vec4 T1_gray =vec4(vec3(gray)*changeColor,1.);\n \n T1.rgb = mix(T1_gray.rgb, T1.rgb, factor);\n \n \n vec4 nT = texture2D(texture2, vUv);\n \n vec4 noiseT2d=pow(texture2D(texture2, vWorldPosition.xz*0.002),vec4(10.-landSnowSize));\n \n diffuseColor = mix(diffuseColor, T1,pow(nT.r,treeSize) ); // 叠加效果,调整混合方式\n diffuseColor=T1;\n \n vec3 upDirection = vec3(0.0, 1.0, 0.0);\n float dotProduct = dot(vNormal, upDirection);\n float snowAmount = smoothstep(0.5, 1.0, dotProduct);\n diffuseColor = mix(diffuseColor, vec4(1.0, 1., 1.,1.), snowAmount*landSnowSize*noiseT2d*0.1);\n \n \n `,\n )\n\n shader.uniforms.time = this.uniforms.time\n // shader.uniforms.texture1 = { value: matLandT0 };\n shader.uniforms.texture1 = { value: this.textureLand }\n shader.uniforms.texture2 = { value: this.textureNoise }\n shader.uniforms.treeSize = this.uniforms.treeSize\n shader.uniforms.noGran = this.uniforms.noGran\n shader.uniforms.treeColor1 = this.uniforms.treeColor1\n shader.uniforms.targetColor = this.uniforms.targetColor\n shader.uniforms.changeColor = this.uniforms.changeColor\n shader.uniforms.landSnowSize = this.uniforms.landSnowSize\n }\n this.app.caseInstance.grasslandMesh.forEach((object) => {\n this.textureLand = object.material.map\n object.material = this.landMaterial\n })\n }\n\n setMassifMaterial() {\n this.massifMaterial = new MeshPhysicalMaterial(\n {\n alphaTest: 0.2,\n roughness: 1,\n metalness: 0,\n emissive: 0,\n envMapIntensity: 0.2,\n side: DoubleSide,\n transparent: true,\n depthWrite: false,\n })\n\n this.massifMaterial.onBeforeCompile = (shader, renderer) => {\n // console.log(shader.vertexShader);\n shader.vertexShader = ` \n varying vec3 vWorldPosition;\n varying vec2 vUv;\n ${shader.vertexShader}`\n\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>',\n `#include <begin_vertex>\n vUv = uv;\n \n vNormal = normalize(normal);\n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;\n `,\n )\n shader.fragmentShader = `\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n uniform float treeSize;\n uniform float noGran;\n uniform vec3 treeColor1;\n uniform vec3 targetColor;\n uniform vec3 changeColor;\n uniform float landSnowSize;\n varying vec3 vWorldPosition;\n varying vec2 vUv;\n \n vec4 T3dPoi (sampler2D T,vec3 Position,vec3 normal, float loop){\n vec2 xy = vec2(Position.x,Position.y);\n vec2 xz = vec2(Position.x,Position.z);\n vec2 yz = vec2(Position.y,Position.z);\n float ix =clamp((abs(normal.x)-0.4)*2.,0.,1.);\n float iy =clamp((abs(normal.y)-0.4)*2.,0.,1.);\n return mix((mix(texture2D( T, xy*loop),texture2D( T, yz*loop),ix)),texture2D( T, xz*loop),iy);\n }\n \n ${shader.fragmentShader}\n `\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>',\n ` \n #include <map_fragment> \n vec4 T1 = texture2D(texture1, vUv);\n \n float d = distance(T1.rgb, targetColor);\n float factor = smoothstep(0.4, 0.6, d);\n // T1.rgb = mix(treeColor1, T1.rgb, factor);\n \n float gray = dot(T1.rgb, vec3(0.299, 0.587, 0.114));\n vec4 T1_gray =vec4(vec3(gray)*changeColor,1.);\n \n T1.rgb = mix(T1_gray.rgb, T1.rgb, factor);\n \n diffuseColor=T1;\n vec4 nT = texture2D(texture2, vUv);\n \n float noiseT=pow( clamp(texture2D(texture2, vWorldPosition.xz*0.002).r,0.,1.),(10.0-landSnowSize));\n vec4 noiseT2d=pow(texture2D(texture2, vWorldPosition.xz*0.002),vec4(10.0-landSnowSize));\n \n //diffuseColor = mix(diffuseColor, T1,pow(nT.r,1.) ); // 叠加效果,调整混合方式\n \n \n vec3 upDirection = vec3(0.0, 1.0, 0.0);\n float dotProduct = dot(vNormal, upDirection);\n float snowAmount = smoothstep(0.5, 1.0, dotProduct);\n diffuseColor = mix(diffuseColor, vec4(5.0, 5., 5.,5.),snowAmount* noiseT*0.5*landSnowSize);\n //diffuseColor=nT;\n \n `,\n )\n\n shader.uniforms.time = this.uniforms.time\n // shader.uniforms.texture1 = { value: matLandT0 };\n shader.uniforms.texture1 = { value: this.textureMassif }\n shader.uniforms.texture2 = { value: this.textureNoise }\n shader.uniforms.treeSize = this.uniforms.treeSize\n shader.uniforms.noGran = this.uniforms.noGran\n shader.uniforms.treeColor1 = this.uniforms.treeColor1\n shader.uniforms.targetColor = this.uniforms.targetColor\n shader.uniforms.changeColor = this.uniforms.changeColor\n shader.uniforms.landSnowSize = this.uniforms.landSnowSize\n\n // material.userData.shader = shader;\n }\n\n this.app.caseInstance.massifMesh.forEach((object) => {\n this.textureMassif = object.material.map\n object.material = this.massifMaterial\n })\n }\n}\n\nexport default Season"],"mappings":"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"}
|
|
@@ -5,10 +5,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
7
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
import { utils } from '@anov/3d-core';
|
|
9
8
|
import { hybridList } from "../entity";
|
|
10
9
|
import { entityEvents } from "./entityEvents";
|
|
11
|
-
var emitter = utils.emitter;
|
|
12
10
|
|
|
13
11
|
/**
|
|
14
12
|
* notes: 区别于前端概念,3端统一API特定
|
|
@@ -21,9 +19,7 @@ var EventBus = /*#__PURE__*/function () {
|
|
|
21
19
|
_defineProperty(this, "eventTimesMap", new Map());
|
|
22
20
|
_defineProperty(this, "app", void 0);
|
|
23
21
|
this.app = app;
|
|
24
|
-
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
emitter.on('onEntityLoaded', function (_ref) {
|
|
22
|
+
this.app.sceneControl.context.emitter.on('onEntityLoaded', function (_ref) {
|
|
27
23
|
var id = _ref.id;
|
|
28
24
|
_this.handleUseOnAfter(id);
|
|
29
25
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["hybridList","entityEvents","EventBus","app","_this","_classCallCheck","_defineProperty","Map","sceneControl","context","emitter","on","_ref","id","handleUseOnAfter","_createClass","key","value","entityId","_this2","eventMap","forEach","includes","toLowerCase","entity","unregisterEvents","eventName","registerEvents","handleUseOnBefore","_this3","map","size","_entity$value$userDat","userData","entityParams","interactable","params","set","concat","off"],"sources":["../../../src/module/eventBus/index.ts"],"sourcesContent":["import type { BaseModule } from '../../utils/abstract'\nimport type Anov3D from '../../sdkEntry'\nimport type Entity from '../entity'\nimport { hybridList } from '../entity'\nimport { entityEvents } from './entityEvents'\n\n/**\n * notes: 区别于前端概念,3端统一API特定\n */\n\nclass EventBus implements BaseModule {\n eventMap: Map<string, boolean> = new Map()\n eventTimesMap: Map<string, number> = new Map()\n app: Anov3D & { entity: Entity }\n\n constructor(app: Anov3D & { entity: Entity }) {\n this.app = app\n\n this.app.sceneControl.context.emitter.on('onEntityLoaded', ({ id }) => {\n this.handleUseOnAfter(id)\n })\n }\n\n /**\n * handle entity event, but only handle the last one use on event\n * @param entityId\n */\n private handleUseOnAfter(entityId: string) {\n this.eventMap.forEach((value, key) => {\n if (value && entityEvents.includes(key.toLowerCase())) {\n this.app.entity.unregisterEvents({\n eventName: key,\n entityId,\n })\n\n this.app.entity.registerEvents({\n eventName: key,\n entityId,\n })\n }\n })\n }\n\n /**\n * handle entity event\n * @param eventName\n */\n private handleUseOnBefore(eventName: string) {\n if (hybridList.map.size > 0) {\n hybridList.map.forEach((entity, key: string) => {\n if (entity.value.userData?.entityParams?.interactable) {\n this.app.entity.unregisterEvents({\n eventName,\n entityId: key,\n })\n\n this.app.entity.registerEvents({\n eventName,\n entityId: key,\n })\n }\n })\n }\n }\n\n /**\n * open event\n * @param params\n */\n on(params: { eventName: string; id?: string }) {\n // 单实体事件注册\n if (params.id) {\n // @ts-ignore\n this.app.entity.registerEvents({\n eventName: params.eventName,\n entityId: params.id,\n })\n return {\n eventName: params.eventName,\n id: params.id,\n }\n }\n // 全局事件注册\n else {\n this.eventMap.set(`${params.eventName}`, true)\n\n if (entityEvents.includes(params.eventName.toLowerCase()))\n this.handleUseOnBefore(params.eventName)\n\n return {\n eventName: params.eventName,\n }\n }\n }\n\n off(params: { eventName: string; entityId?: string }) {\n if (params.entityId) {\n // @ts-ignore\n this.app.entity.unregisterEvents({\n eventName: params.eventName,\n entityId: params.entityId,\n })\n }\n else {\n this.eventMap.set(`${params.eventName}`, false)\n }\n\n return {\n eventName: params.eventName,\n }\n }\n}\n\nexport default EventBus"],"mappings":"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"}
|
|
@@ -15,9 +15,8 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
15
15
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
16
16
|
import { SurfaceMaterial } from '@anov/3d-ability';
|
|
17
17
|
import * as ANOV from '@anov/3d-core';
|
|
18
|
-
import { DoubleSide
|
|
18
|
+
import { DoubleSide } from '@anov/3d-core';
|
|
19
19
|
import { hybridList } from "../entity";
|
|
20
|
-
var emitter = utils.emitter;
|
|
21
20
|
var MaterialManager = /*#__PURE__*/function () {
|
|
22
21
|
// 记录初始材质信息
|
|
23
22
|
|
|
@@ -107,7 +106,7 @@ var MaterialManager = /*#__PURE__*/function () {
|
|
|
107
106
|
var materialMap = _this2.originalMaterial.get(id);
|
|
108
107
|
if (!materialMap) return;
|
|
109
108
|
if (materials) _this2.restoreMaterials(object, materials, materialMap);else _this2.restoreAllMaterials(object, materialMap);
|
|
110
|
-
emitter.emit('onMaterialChanged', {
|
|
109
|
+
_this2.app.sceneControl.context.emitter.emit('onMaterialChanged', {
|
|
111
110
|
target: object
|
|
112
111
|
});
|
|
113
112
|
};
|
|
@@ -233,7 +232,7 @@ var MaterialManager = /*#__PURE__*/function () {
|
|
|
233
232
|
_iterator.f();
|
|
234
233
|
return _context4.finish(18);
|
|
235
234
|
case 21:
|
|
236
|
-
emitter.emit('onMaterialChanged', {
|
|
235
|
+
this.app.sceneControl.context.emitter.emit('onMaterialChanged', {
|
|
237
236
|
target: target
|
|
238
237
|
});
|
|
239
238
|
return _context4.abrupt("return", target);
|
|
@@ -241,7 +240,7 @@ var MaterialManager = /*#__PURE__*/function () {
|
|
|
241
240
|
case "end":
|
|
242
241
|
return _context4.stop();
|
|
243
242
|
}
|
|
244
|
-
}, _callee3,
|
|
243
|
+
}, _callee3, this, [[4, 15, 18, 21]]);
|
|
245
244
|
}));
|
|
246
245
|
function applyMaterials(_x3, _x4, _x5, _x6) {
|
|
247
246
|
return _applyMaterials.apply(this, arguments);
|
|
@@ -276,7 +275,7 @@ var MaterialManager = /*#__PURE__*/function () {
|
|
|
276
275
|
this.traverseMeshes(target, undefined, undefined, function (mesh) {
|
|
277
276
|
mesh.material = material;
|
|
278
277
|
});
|
|
279
|
-
emitter.emit('onMaterialChanged', {
|
|
278
|
+
this.app.sceneControl.context.emitter.emit('onMaterialChanged', {
|
|
280
279
|
target: target
|
|
281
280
|
});
|
|
282
281
|
case 12:
|
|
@@ -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","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","SurfaceMaterial","ANOV","DoubleSide","utils","hybridList","emitter","MaterialManager","app","Map","change","json","_this","processChange","data","id","object","get","console","concat","changeByObject","Array","isArray","batch","_changeByObject","_callee","materials","_json$properties","properties","materialMap","_callee$","_context","originalMaterial","set","applyMaterials","applySingleMaterial","_x","_x2","restore","_this2","processRestore","restoreMaterials","restoreAllMaterials","emit","_applyMaterials","_callee3","rootProperties","_this3","results","_iterator","_step","_loop","_callee3$","_context4","all","map","_ref2","_callee2","_ref","meshIndex","primitiveIndex","materialId","_ref$properties","template","meshes","_callee2$","_context2","traverseMeshes","mesh","has","uuid","material","clone","getMaterial","opacity","depthWrite","applyMaterialOptions","_objectSpread","_x7","_createForOfIteratorHelper","result","_loop$","_context3","t0","t1","_x3","_x4","_x5","_x6","_applySingleMaterial","_callee4","_args5","_callee4$","_context5","side","_x8","_x9","loadTexture","loader","url","option","_this4","load","texture","applyTextureTransform","_applyMaterialOptions","_callee5","color","roughness","metalness","diffuseMap","normalMap","glossinessMap","reflectionMap","metalnessMap","roughnessMap","offset","repeat","rotation","textureLoader","_callee5$","_context6","Color","TextureLoader","needsUpdate","_x10","_x11","_ref3","x","Math","PI","wrapS","RepeatWrapping","wrapT","_this5","_ref4","callback","traverse","_object$userData","userData","_object$userData$mesh","currentMeshIndex","_object$userData$prim","currentPrimitiveIndex"],"sources":["../../../src/module/material/index.ts"],"sourcesContent":["import { SurfaceMaterial } from '@anov/3d-ability'\nimport * as ANOV from '@anov/3d-core'\nimport type { Mesh, Object3D } from '@anov/3d-core'\nimport { Color, DoubleSide, RepeatWrapping, utils } from '@anov/3d-core'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\nimport { hybridList } from '../entity'\n\nconst { emitter } = utils\n\nclass MaterialManager implements BaseModule {\n app: Anov3D\n originalMaterial = new Map() // 记录初始材质信息\n\n constructor(app: Anov3D) {\n this.app = app\n }\n\n /**\n * Change material for target objects\n * @param json Material change configuration\n */\n change(json: any) {\n const processChange = (data: any) => {\n const { target: id } = data\n const object = hybridList.get(id)\n\n if (!object) {\n console.error(`Target with id ${id} not found`)\n return\n }\n this.changeByObject(object, data)\n }\n if (Array.isArray(json.batch)) // 支持多对象批量替换\n json.batch.forEach(processChange)\n else\n processChange(json)\n }\n\n async changeByObject(object: Object3D, json: any) {\n const { target: id, materials, properties = {} } = json\n\n if (!object) {\n console.error(`Target with id ${id} not found`)\n return\n }\n\n let materialMap = this.originalMaterial.get(id)\n if (!materialMap) {\n materialMap = new Map()\n this.originalMaterial.set(id, materialMap)\n }\n\n if (Array.isArray(materials))\n return this.applyMaterials(object, materials, properties, materialMap)\n else\n return this.applySingleMaterial(object, materials, properties, materialMap)\n }\n\n /**\n * Restore material for target objects\n * @param json Material restoration configuration\n */\n restore(json: any) {\n const processRestore = (data: any) => {\n const { target: id, materials } = data\n const object = hybridList.get(id)\n\n if (!object) {\n console.error(`Target with id ${id} not found`)\n return\n }\n\n const materialMap = this.originalMaterial.get(id)\n if (!materialMap)\n return\n\n if (materials)\n this.restoreMaterials(object, materials, materialMap)\n else\n this.restoreAllMaterials(object, materialMap)\n\n emitter.emit('onMaterialChanged', { target: object })\n }\n\n if (Array.isArray(json.batch))\n json.batch.forEach(processRestore)\n else\n processRestore(json)\n }\n\n private async applyMaterials(\n target: ANOV.Object3D,\n materials: any[],\n rootProperties: Record<string, any>,\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n // 阶段一:并行加载所有材质和纹理,但不替换\n const results = await Promise.all(\n materials.map(async ({ meshIndex, primitiveIndex, materialId, properties = {} }) => {\n this.traverseMeshes(target, meshIndex, primitiveIndex, (mesh) => {\n if (!materialMap.has(mesh.uuid))\n materialMap.set(mesh.uuid, (mesh.material as ANOV.Material).clone())\n })\n\n if (materialId) {\n const template = await SurfaceMaterial.getMaterial(materialId)\n if (!template)\n return null\n if (materialId === 'Glass')\n template.opacity = 0.8\n template.depthWrite = true\n await this.applyMaterialOptions(template, { ...rootProperties, ...properties })\n return { meshIndex, primitiveIndex, template }\n }\n else {\n const meshes: Mesh[] = []\n this.traverseMeshes(target, meshIndex, primitiveIndex, mesh => meshes.push(mesh))\n await Promise.all(\n meshes.map(mesh => this.applyMaterialOptions(mesh.material, { ...rootProperties, ...properties })),\n )\n return null\n }\n }),\n )\n // 阶段二:所有加载完毕,统一同步替换,一帧内完成\n for (const result of results) {\n if (!result)\n continue\n const { meshIndex, primitiveIndex, template } = result\n this.traverseMeshes(target, meshIndex, primitiveIndex, (mesh) => {\n mesh.material = template\n })\n }\n\n emitter.emit('onMaterialChanged', { target })\n return target\n }\n\n private async applySingleMaterial(\n target: ANOV.Object3D,\n materialId,\n properties: Record<string, any> = {},\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n this.traverseMeshes(target, undefined, undefined, (mesh) => {\n if (!materialMap.has(mesh.uuid))\n materialMap.set(mesh.uuid, (mesh.material as ANOV.Material).clone())\n })\n\n const material = await SurfaceMaterial.getMaterial(materialId)\n material.depthWrite = true\n material.side = DoubleSide\n await this.applyMaterialOptions(material, properties)\n this.traverseMeshes(target, undefined, undefined, (mesh) => {\n mesh.material = material\n })\n\n emitter.emit('onMaterialChanged', { target })\n }\n\n private loadTexture(loader: ANOV.TextureLoader, url: string, option: any): Promise<ANOV.Texture> {\n return new Promise((resolve) => {\n loader.load(url, (texture) => {\n this.applyTextureTransform(texture, option)\n resolve(texture)\n })\n })\n }\n\n private async applyMaterialOptions(material, option) {\n const {\n color,\n roughness,\n metalness,\n diffuseMap,\n normalMap,\n glossinessMap,\n reflectionMap,\n metalnessMap,\n roughnessMap,\n offset,\n repeat,\n rotation,\n } = option\n\n // 设置颜色\n if (color)\n material.color = new ANOV.Color(color)\n\n // 设置粗糙度\n if (roughness !== undefined)\n material.roughness = roughness\n\n // 设置金属度\n if (metalness !== undefined)\n material.metalness = metalness\n\n // 纹理加载器\n const textureLoader = new ANOV.TextureLoader()\n\n // 应用漫反射贴图 (diffuse/albedo map)\n if (diffuseMap)\n material.map = await this.loadTexture(textureLoader, diffuseMap, option)\n\n // 应用法线贴图\n if (normalMap)\n material.normalMap = await this.loadTexture(textureLoader, normalMap, option)\n\n // 应用粗糙度贴图\n if (roughnessMap)\n material.roughnessMap = await this.loadTexture(textureLoader, roughnessMap, option)\n\n // 应用金属度贴图\n if (metalnessMap)\n material.metalnessMap = await this.loadTexture(textureLoader, metalnessMap, option)\n\n else if (reflectionMap)\n material.metalnessMap = await this.loadTexture(textureLoader, reflectionMap, option)\n\n material.needsUpdate = true\n\n // 应用位移贴图 (displacement map)\n // if (displaceMap) {\n // material.displacementMap = textureLoader.load(displaceMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.displacementScale = 0.1 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n\n // 应用光泽度贴图 (通常对应 roughnessMap 的反向)\n // if (glossinessMap && !roughnessMap) {\n // // 只有在没有专门的 roughnessMap 时才使用 glossinessMap\n // material.roughnessMap = textureLoader.load(glossinessMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.needsUpdate = true\n // })\n // }\n\n // 应用高度贴图 (displacement map 或 bump map)\n // if (heightMap) {\n // // 优先使用 displacementMap,如果不支持则使用 bumpMap\n // if (material.displacementMap !== undefined) {\n // material.displacementMap = textureLoader.load(heightMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.displacementScale = 0.1 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n // else if (material.bumpMap !== undefined) {\n // material.bumpMap = textureLoader.load(heightMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.bumpScale = 0.1 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n // }\n\n // 应用反射贴图 (environment map)\n // if (reflectionMap) {\n // // 如果是环境贴图\n // if (material.envMap !== undefined) {\n // // 这里假设是立方体贴图,实际使用时可能需要 CubeTextureLoader\n // material.envMap = textureLoader.load(reflectionMap, (texture) => {\n // material.envMapIntensity = 1.0 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n // // 或者作为金属度贴图\n // else if (material.metalnessMap !== undefined) {\n // material.metalnessMap = textureLoader.load(reflectionMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.needsUpdate = true\n // })\n // }\n // }\n }\n\n // 辅助方法:应用纹理变换\n private applyTextureTransform(texture, { offset, repeat, rotation }) {\n if (!texture)\n return\n\n // 设置纹理偏移\n if (offset) {\n texture.offset.set(\n offset.x !== undefined ? offset.x : 0, // 假设传入的是百分比\n offset.y !== undefined ? offset.y : 0,\n )\n }\n\n // 设置纹理重复\n if (repeat) {\n texture.repeat.set(\n repeat.x !== undefined ? repeat.x : 1,\n repeat.y !== undefined ? repeat.y : 1,\n )\n }\n\n // 设置纹理旋转\n if (rotation !== undefined)\n texture.rotation = rotation * Math.PI / 180 // 转换为弧度\n\n // 设置纹理包裹模式\n texture.wrapS = ANOV.RepeatWrapping\n texture.wrapT = ANOV.RepeatWrapping\n }\n\n private restoreMaterials(\n target: ANOV.Object3D,\n materials: any[],\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n materials.forEach(({ meshIndex, primitiveIndex }) => {\n this.traverseMeshes(target, meshIndex, primitiveIndex, (mesh) => {\n if (materialMap.has(mesh.uuid))\n mesh.material = materialMap.get(mesh.uuid) as ANOV.Material\n })\n })\n }\n\n private restoreAllMaterials(\n target: ANOV.Object3D,\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n this.traverseMeshes(target, undefined, undefined, (mesh) => {\n if (materialMap.has(mesh.uuid))\n mesh.material = materialMap.get(mesh.uuid) as ANOV.Material\n })\n }\n\n private traverseMeshes(\n target: ANOV.Object3D,\n meshIndex?: number,\n primitiveIndex?: number,\n callback?: (mesh: Mesh) => void,\n ) {\n target.traverse((object) => {\n if (object.type === 'Mesh') {\n const { meshIndex: currentMeshIndex = 0, primitiveIndex: currentPrimitiveIndex = 0 } = object.userData\n if (\n (meshIndex === undefined || meshIndex === currentMeshIndex)\n && (primitiveIndex === undefined || primitiveIndex === currentPrimitiveIndex)\n )\n callback?.(object as Mesh)\n }\n })\n }\n}\n\nexport default MaterialManager\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","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","SurfaceMaterial","ANOV","DoubleSide","hybridList","MaterialManager","app","Map","change","json","_this","processChange","data","id","object","get","console","concat","changeByObject","Array","isArray","batch","_changeByObject","_callee","materials","_json$properties","properties","materialMap","_callee$","_context","originalMaterial","set","applyMaterials","applySingleMaterial","_x","_x2","restore","_this2","processRestore","restoreMaterials","restoreAllMaterials","sceneControl","context","emitter","emit","_applyMaterials","_callee3","rootProperties","_this3","results","_iterator","_step","_loop","_callee3$","_context4","all","map","_ref2","_callee2","_ref","meshIndex","primitiveIndex","materialId","_ref$properties","template","meshes","_callee2$","_context2","traverseMeshes","mesh","has","uuid","material","clone","getMaterial","opacity","depthWrite","applyMaterialOptions","_objectSpread","_x7","_createForOfIteratorHelper","result","_loop$","_context3","t0","t1","_x3","_x4","_x5","_x6","_applySingleMaterial","_callee4","_args5","_callee4$","_context5","side","_x8","_x9","loadTexture","loader","url","option","_this4","load","texture","applyTextureTransform","_applyMaterialOptions","_callee5","color","roughness","metalness","diffuseMap","normalMap","glossinessMap","reflectionMap","metalnessMap","roughnessMap","offset","repeat","rotation","textureLoader","_callee5$","_context6","Color","TextureLoader","needsUpdate","_x10","_x11","_ref3","x","Math","PI","wrapS","RepeatWrapping","wrapT","_this5","_ref4","callback","traverse","_object$userData","userData","_object$userData$mesh","currentMeshIndex","_object$userData$prim","currentPrimitiveIndex"],"sources":["../../../src/module/material/index.ts"],"sourcesContent":["import { SurfaceMaterial } from '@anov/3d-ability'\nimport * as ANOV from '@anov/3d-core'\nimport type { Mesh, Object3D } from '@anov/3d-core'\nimport { DoubleSide } from '@anov/3d-core'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\nimport { hybridList } from '../entity'\n\nclass MaterialManager implements BaseModule {\n app: Anov3D\n originalMaterial = new Map() // 记录初始材质信息\n\n constructor(app: Anov3D) {\n this.app = app\n }\n\n /**\n * Change material for target objects\n * @param json Material change configuration\n */\n change(json: any) {\n const processChange = (data: any) => {\n const { target: id } = data\n const object = hybridList.get(id)\n\n if (!object) {\n console.error(`Target with id ${id} not found`)\n return\n }\n this.changeByObject(object, data)\n }\n if (Array.isArray(json.batch)) // 支持多对象批量替换\n json.batch.forEach(processChange)\n else\n processChange(json)\n }\n\n async changeByObject(object: Object3D, json: any) {\n const { target: id, materials, properties = {} } = json\n\n if (!object) {\n console.error(`Target with id ${id} not found`)\n return\n }\n\n let materialMap = this.originalMaterial.get(id)\n if (!materialMap) {\n materialMap = new Map()\n this.originalMaterial.set(id, materialMap)\n }\n\n if (Array.isArray(materials))\n return this.applyMaterials(object, materials, properties, materialMap)\n else\n return this.applySingleMaterial(object, materials, properties, materialMap)\n }\n\n /**\n * Restore material for target objects\n * @param json Material restoration configuration\n */\n restore(json: any) {\n const processRestore = (data: any) => {\n const { target: id, materials } = data\n const object = hybridList.get(id)\n\n if (!object) {\n console.error(`Target with id ${id} not found`)\n return\n }\n\n const materialMap = this.originalMaterial.get(id)\n if (!materialMap)\n return\n\n if (materials)\n this.restoreMaterials(object, materials, materialMap)\n else\n this.restoreAllMaterials(object, materialMap)\n\n this.app.sceneControl.context.emitter.emit('onMaterialChanged', { target: object })\n }\n\n if (Array.isArray(json.batch))\n json.batch.forEach(processRestore)\n else\n processRestore(json)\n }\n\n private async applyMaterials(\n target: ANOV.Object3D,\n materials: any[],\n rootProperties: Record<string, any>,\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n // 阶段一:并行加载所有材质和纹理,但不替换\n const results = await Promise.all(\n materials.map(async ({ meshIndex, primitiveIndex, materialId, properties = {} }) => {\n this.traverseMeshes(target, meshIndex, primitiveIndex, (mesh) => {\n if (!materialMap.has(mesh.uuid))\n materialMap.set(mesh.uuid, (mesh.material as ANOV.Material).clone())\n })\n\n if (materialId) {\n const template = await SurfaceMaterial.getMaterial(materialId)\n if (!template)\n return null\n if (materialId === 'Glass')\n template.opacity = 0.8\n template.depthWrite = true\n await this.applyMaterialOptions(template, { ...rootProperties, ...properties })\n return { meshIndex, primitiveIndex, template }\n }\n else {\n const meshes: Mesh[] = []\n this.traverseMeshes(target, meshIndex, primitiveIndex, mesh => meshes.push(mesh))\n await Promise.all(\n meshes.map(mesh => this.applyMaterialOptions(mesh.material, { ...rootProperties, ...properties })),\n )\n return null\n }\n }),\n )\n // 阶段二:所有加载完毕,统一同步替换,一帧内完成\n for (const result of results) {\n if (!result)\n continue\n const { meshIndex, primitiveIndex, template } = result\n this.traverseMeshes(target, meshIndex, primitiveIndex, (mesh) => {\n mesh.material = template\n })\n }\n\n this.app.sceneControl.context.emitter.emit('onMaterialChanged', { target })\n return target\n }\n\n private async applySingleMaterial(\n target: ANOV.Object3D,\n materialId,\n properties: Record<string, any> = {},\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n this.traverseMeshes(target, undefined, undefined, (mesh) => {\n if (!materialMap.has(mesh.uuid))\n materialMap.set(mesh.uuid, (mesh.material as ANOV.Material).clone())\n })\n\n const material = await SurfaceMaterial.getMaterial(materialId)\n material.depthWrite = true\n material.side = DoubleSide\n await this.applyMaterialOptions(material, properties)\n this.traverseMeshes(target, undefined, undefined, (mesh) => {\n mesh.material = material\n })\n\n this.app.sceneControl.context.emitter.emit('onMaterialChanged', { target })\n }\n\n private loadTexture(loader: ANOV.TextureLoader, url: string, option: any): Promise<ANOV.Texture> {\n return new Promise((resolve) => {\n loader.load(url, (texture) => {\n this.applyTextureTransform(texture, option)\n resolve(texture)\n })\n })\n }\n\n private async applyMaterialOptions(material, option) {\n const {\n color,\n roughness,\n metalness,\n diffuseMap,\n normalMap,\n glossinessMap,\n reflectionMap,\n metalnessMap,\n roughnessMap,\n offset,\n repeat,\n rotation,\n } = option\n\n // 设置颜色\n if (color)\n material.color = new ANOV.Color(color)\n\n // 设置粗糙度\n if (roughness !== undefined)\n material.roughness = roughness\n\n // 设置金属度\n if (metalness !== undefined)\n material.metalness = metalness\n\n // 纹理加载器\n const textureLoader = new ANOV.TextureLoader()\n\n // 应用漫反射贴图 (diffuse/albedo map)\n if (diffuseMap)\n material.map = await this.loadTexture(textureLoader, diffuseMap, option)\n\n // 应用法线贴图\n if (normalMap)\n material.normalMap = await this.loadTexture(textureLoader, normalMap, option)\n\n // 应用粗糙度贴图\n if (roughnessMap)\n material.roughnessMap = await this.loadTexture(textureLoader, roughnessMap, option)\n\n // 应用金属度贴图\n if (metalnessMap)\n material.metalnessMap = await this.loadTexture(textureLoader, metalnessMap, option)\n\n else if (reflectionMap)\n material.metalnessMap = await this.loadTexture(textureLoader, reflectionMap, option)\n\n material.needsUpdate = true\n\n // 应用位移贴图 (displacement map)\n // if (displaceMap) {\n // material.displacementMap = textureLoader.load(displaceMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.displacementScale = 0.1 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n\n // 应用光泽度贴图 (通常对应 roughnessMap 的反向)\n // if (glossinessMap && !roughnessMap) {\n // // 只有在没有专门的 roughnessMap 时才使用 glossinessMap\n // material.roughnessMap = textureLoader.load(glossinessMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.needsUpdate = true\n // })\n // }\n\n // 应用高度贴图 (displacement map 或 bump map)\n // if (heightMap) {\n // // 优先使用 displacementMap,如果不支持则使用 bumpMap\n // if (material.displacementMap !== undefined) {\n // material.displacementMap = textureLoader.load(heightMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.displacementScale = 0.1 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n // else if (material.bumpMap !== undefined) {\n // material.bumpMap = textureLoader.load(heightMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.bumpScale = 0.1 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n // }\n\n // 应用反射贴图 (environment map)\n // if (reflectionMap) {\n // // 如果是环境贴图\n // if (material.envMap !== undefined) {\n // // 这里假设是立方体贴图,实际使用时可能需要 CubeTextureLoader\n // material.envMap = textureLoader.load(reflectionMap, (texture) => {\n // material.envMapIntensity = 1.0 // 可以根据需要调整\n // material.needsUpdate = true\n // })\n // }\n // // 或者作为金属度贴图\n // else if (material.metalnessMap !== undefined) {\n // material.metalnessMap = textureLoader.load(reflectionMap, (texture) => {\n // this.applyTextureTransform(texture, { offset, repeat, rotation })\n // material.needsUpdate = true\n // })\n // }\n // }\n }\n\n // 辅助方法:应用纹理变换\n private applyTextureTransform(texture, { offset, repeat, rotation }) {\n if (!texture)\n return\n\n // 设置纹理偏移\n if (offset) {\n texture.offset.set(\n offset.x !== undefined ? offset.x : 0, // 假设传入的是百分比\n offset.y !== undefined ? offset.y : 0,\n )\n }\n\n // 设置纹理重复\n if (repeat) {\n texture.repeat.set(\n repeat.x !== undefined ? repeat.x : 1,\n repeat.y !== undefined ? repeat.y : 1,\n )\n }\n\n // 设置纹理旋转\n if (rotation !== undefined)\n texture.rotation = rotation * Math.PI / 180 // 转换为弧度\n\n // 设置纹理包裹模式\n texture.wrapS = ANOV.RepeatWrapping\n texture.wrapT = ANOV.RepeatWrapping\n }\n\n private restoreMaterials(\n target: ANOV.Object3D,\n materials: any[],\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n materials.forEach(({ meshIndex, primitiveIndex }) => {\n this.traverseMeshes(target, meshIndex, primitiveIndex, (mesh) => {\n if (materialMap.has(mesh.uuid))\n mesh.material = materialMap.get(mesh.uuid) as ANOV.Material\n })\n })\n }\n\n private restoreAllMaterials(\n target: ANOV.Object3D,\n materialMap: Map<string, ANOV.Material | ANOV.Material[]>,\n ) {\n this.traverseMeshes(target, undefined, undefined, (mesh) => {\n if (materialMap.has(mesh.uuid))\n mesh.material = materialMap.get(mesh.uuid) as ANOV.Material\n })\n }\n\n private traverseMeshes(\n target: ANOV.Object3D,\n meshIndex?: number,\n primitiveIndex?: number,\n callback?: (mesh: Mesh) => void,\n ) {\n target.traverse((object) => {\n if (object.type === 'Mesh') {\n const { meshIndex: currentMeshIndex = 0, primitiveIndex: currentPrimitiveIndex = 0 } = object.userData\n if (\n (meshIndex === undefined || meshIndex === currentMeshIndex)\n && (primitiveIndex === undefined || primitiveIndex === currentPrimitiveIndex)\n )\n callback?.(object as Mesh)\n }\n })\n }\n}\n\nexport default MaterialManager\n"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
24
24
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
25
25
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
26
|
import _ from 'lodash';
|
|
27
|
-
import { FogExp2, Vector3
|
|
27
|
+
import { FogExp2, Vector3 } from '@anov/3d-core';
|
|
28
28
|
import * as Geo3D from '@anov/geo-3d';
|
|
29
29
|
import { Water } from '@anov/3d-ability';
|
|
30
30
|
import { MessageType, sendToMessage } from "../../utils/messageFn";
|
|
@@ -49,7 +49,7 @@ export var StaticType = /*#__PURE__*/function (StaticType) {
|
|
|
49
49
|
StaticType["none"] = "none";
|
|
50
50
|
return StaticType;
|
|
51
51
|
}({});
|
|
52
|
-
|
|
52
|
+
// const { emitter } = utils
|
|
53
53
|
var FileParse = /*#__PURE__*/function () {
|
|
54
54
|
function FileParse(app) {
|
|
55
55
|
_classCallCheck(this, FileParse);
|
|
@@ -74,7 +74,7 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
74
74
|
case 0:
|
|
75
75
|
this.json = json;
|
|
76
76
|
this.action = action;
|
|
77
|
-
emitter.off('model-loading-progress');
|
|
77
|
+
this.app.sceneControl.context.emitter.off('model-loading-progress');
|
|
78
78
|
this.modelProgress.clear();
|
|
79
79
|
_ref = json || {}, _ref$scene = _ref.scene, index = _ref$scene === void 0 ? 0 : _ref$scene, scenes = _ref.scenes, nodes = _ref.nodes, layers = _ref.layers;
|
|
80
80
|
sceneNode = scenes && scenes[index];
|
|
@@ -180,9 +180,9 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
180
180
|
time = params.time,
|
|
181
181
|
weather = params.weather;
|
|
182
182
|
var environmentManage = this.app[EObjectType.environment];
|
|
183
|
+
var hour = 12;
|
|
183
184
|
if (mode === WeatherMode.dynamic) {
|
|
184
185
|
// 动态天空
|
|
185
|
-
var hour = 12;
|
|
186
186
|
var currentTime = (time === null || time === void 0 ? void 0 : time.value) || (time === null || time === void 0 ? void 0 : time.time);
|
|
187
187
|
if (currentTime) {
|
|
188
188
|
environmentManage.setTime({
|
|
@@ -214,10 +214,15 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
214
214
|
break;
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
|
|
217
|
+
if (weather !== null && weather !== void 0 && weather.weather)
|
|
218
|
+
// @ts-ignore
|
|
219
|
+
environmentManage.setWeather({
|
|
220
|
+
weather: weather.weather,
|
|
221
|
+
time: hour
|
|
222
|
+
});
|
|
223
|
+
var exposure = this.scene.exposure;
|
|
218
224
|
if (exposure !== undefined) {
|
|
219
|
-
var
|
|
220
|
-
renderer = _use$useScene.renderer;
|
|
225
|
+
var renderer = this.app.sceneControl.context.renderer;
|
|
221
226
|
renderer.toneMappingExposure = exposure;
|
|
222
227
|
}
|
|
223
228
|
}
|
|
@@ -226,12 +231,12 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
226
231
|
value: function () {
|
|
227
232
|
var _addLayers = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
228
233
|
var _this3 = this;
|
|
229
|
-
var _this$scene, layers, layerIndex,
|
|
234
|
+
var _this$scene, layers, layerIndex, _this$app$sceneContro, scene, camera, renderer, orbitControls;
|
|
230
235
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
231
236
|
while (1) switch (_context4.prev = _context4.next) {
|
|
232
237
|
case 0:
|
|
233
238
|
_this$scene = this.scene, layers = _this$scene.layers, layerIndex = _this$scene.layerIndex;
|
|
234
|
-
|
|
239
|
+
_this$app$sceneContro = this.app.sceneControl.context, scene = _this$app$sceneContro.scene, camera = _this$app$sceneContro.camera, renderer = _this$app$sceneContro.renderer, orbitControls = _this$app$sceneContro.orbitControls;
|
|
235
240
|
layerIndex && layerIndex.forEach( /*#__PURE__*/function () {
|
|
236
241
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(index) {
|
|
237
242
|
var type, sccData, _sccData, panelAttribute, sceneNode, offsetPosition, _Geo3D$CoordUtil$thre, lon, lat, alt, map, water, _layers$index, color, density;
|
|
@@ -278,11 +283,11 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
278
283
|
case 12:
|
|
279
284
|
map = _context3.sent;
|
|
280
285
|
map === null || map === void 0 || map.addEventListener(Geo3D.MapEventType.onProgress, function (v) {
|
|
281
|
-
emitter.emit('city-loaded-progress', v);
|
|
286
|
+
_this3.app.sceneControl.context.emitter.emit('city-loaded-progress', v);
|
|
282
287
|
});
|
|
283
288
|
return _context3.abrupt("break", 22);
|
|
284
289
|
case 15:
|
|
285
|
-
water = new Water(layers[index]);
|
|
290
|
+
water = new Water(layers[index], _this3.app.sceneControl);
|
|
286
291
|
water.update();
|
|
287
292
|
scene.add(water);
|
|
288
293
|
return _context3.abrupt("break", 22);
|
|
@@ -381,7 +386,7 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
381
386
|
return total;
|
|
382
387
|
};
|
|
383
388
|
var sendProgress = function sendProgress(total) {
|
|
384
|
-
sendToMessage({
|
|
389
|
+
sendToMessage(_this5.app, {
|
|
385
390
|
messageType: MessageType.Event,
|
|
386
391
|
messageName: 'onProgress',
|
|
387
392
|
status: EMessageStatus.Success,
|
|
@@ -390,10 +395,10 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
390
395
|
progress: total,
|
|
391
396
|
state: _this5.action
|
|
392
397
|
});
|
|
393
|
-
if (total >= 1) emitter.emit('scene-loaded');
|
|
398
|
+
if (total >= 1) _this5.app.sceneControl.context.emitter.emit('scene-loaded');
|
|
394
399
|
};
|
|
395
400
|
if (this.scene.modelCount > 0) {
|
|
396
|
-
emitter.on('model-loading-progress', function (data) {
|
|
401
|
+
this.app.sceneControl.context.emitter.on('model-loading-progress', function (data) {
|
|
397
402
|
var id = data.id,
|
|
398
403
|
progress = data.progress;
|
|
399
404
|
if (!_this5.modelProgress.has(id)) return;
|
|
@@ -408,13 +413,13 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
408
413
|
});
|
|
409
414
|
}
|
|
410
415
|
if (this.loadCity) {
|
|
411
|
-
emitter.on('city-loaded-progress', function (data) {
|
|
416
|
+
this.app.sceneControl.context.emitter.on('city-loaded-progress', function (data) {
|
|
412
417
|
cityProgress = data.progress;
|
|
413
418
|
total < 1 && sendProgress(calcTotalProgress());
|
|
414
419
|
});
|
|
415
420
|
}
|
|
416
421
|
} else {
|
|
417
|
-
sendToMessage({
|
|
422
|
+
sendToMessage(this.app, {
|
|
418
423
|
messageType: MessageType.Event,
|
|
419
424
|
messageName: 'onProgress',
|
|
420
425
|
status: EMessageStatus.Success,
|
|
@@ -423,7 +428,7 @@ var FileParse = /*#__PURE__*/function () {
|
|
|
423
428
|
progress: 1,
|
|
424
429
|
state: this.action
|
|
425
430
|
});
|
|
426
|
-
emitter.emit('scene-loaded');
|
|
431
|
+
this.app.sceneControl.context.emitter.emit('scene-loaded');
|
|
427
432
|
}
|
|
428
433
|
}
|
|
429
434
|
|