@anov/3d-ability 0.0.114 → 0.0.116

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.
Files changed (42) hide show
  1. package/dist/business/HeatMap/HeatMap.js +1 -1
  2. package/dist/business/HeatMap/HeatMap.js.map +1 -1
  3. package/dist/business/Mark/index.js +1 -1
  4. package/dist/business/Mark/index.js.map +1 -1
  5. package/dist/business/MaterialSwitch/MaterialSwitchSystem.d.ts +2 -1
  6. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +81 -49
  7. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  8. package/dist/business/MaterialSwitch/inject.d.ts +17 -6
  9. package/dist/business/MaterialSwitch/inject.js +160 -114
  10. package/dist/business/MaterialSwitch/inject.js.map +1 -1
  11. package/dist/business/Poi/link/Pyramid.d.ts +1 -0
  12. package/dist/business/Poi/link/Pyramid.js +16 -18
  13. package/dist/business/Poi/link/Pyramid.js.map +1 -1
  14. package/dist/business/Poi/particle/DoubleCircle.js +1 -1
  15. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  16. package/dist/business/Poi/particle/DynamicCircle.js +1 -1
  17. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  18. package/dist/business/Poi/particle/SingleCircle.js +1 -1
  19. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  20. package/dist/business/Poi/shader/circle.js +1 -1
  21. package/dist/business/Poi/shader/circle.js.map +1 -1
  22. package/dist/business/Poi/shader/doubleCircle.js +1 -1
  23. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  24. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +10 -1
  25. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  26. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +1 -1
  27. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  28. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.d.ts +1 -1
  29. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -1
  30. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  31. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +1 -1
  32. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  33. package/dist/core/Material/SurfaceMaterial/index.d.ts +7 -7
  34. package/dist/core/Material/SurfaceMaterial/index.js +16 -14
  35. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  36. package/dist/core/WeatherSystem/objects/rain/plane.js +7 -2
  37. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  38. package/dist/utils/index.js.map +1 -0
  39. package/package.json +3 -3
  40. package/dist/core/Utils/index.js.map +0 -1
  41. /package/dist/{core/Utils → utils}/index.d.ts +0 -0
  42. /package/dist/{core/Utils → utils}/index.js +0 -0
@@ -9,44 +9,78 @@ import { frag, frag_pre, ver, ver_pre } from "./shader/realFade";
9
9
  import { frag as fragFinal, ver as verFinal } from "./shader/finalFade";
10
10
  import { ground } from "./shader/ground";
11
11
  import { SwitchType } from "./MaterialSwitchSystem";
12
- export var frameMaterialCache = [];
13
- export var realMaterialCache = [];
14
- export var pureMaterialCache = [];
15
- export var fresnelMaterialCache = [];
16
- export var groundMaterialCache = [];
17
- var 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; // \u5F52\u4E00\u5316\u9AD8\u5EA6 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 ";
18
- export var disposeMaterial = function disposeMaterial(material) {
19
- if (material.map) material.map.dispose();
20
- if (material.lightMap) material.lightMap.dispose();
21
- if (material.bumpMap) material.bumpMap.dispose();
22
- if (material.normalMap) material.normalMap.dispose();
23
- if (material.specularMap) material.specularMap.dispose();
24
- if (material.envMap) material.envMap.dispose();
25
- if (material.emissiveMap) material.emissiveMap.dispose();
26
- material.dispose();
12
+ var finirColor = new Color('#2A78D9');
13
+ var lowFinirColor = new Color('#15407A'); // 矮楼finir
14
+
15
+ var 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; // \u5F52\u4E00\u5316\u9AD8\u5EA6 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 ";
16
+ var injectBaseFinir = function injectBaseFinir(shader) {
17
+ var power = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.7;
18
+ var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : finirColor;
19
+ var fragmentShader = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
20
+ shader.uniforms.rimColor = {
21
+ value: color
22
+ };
23
+ shader.uniforms.rimPower = {
24
+ value: power
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 ");
27
+ };
28
+ var modifyTheMaterial = function modifyTheMaterial(material, baseOption, shaderOption) {
29
+ var transparent = baseOption.transparent,
30
+ depthTest = baseOption.depthTest,
31
+ depthWrite = baseOption.depthWrite,
32
+ polygonOffset = baseOption.polygonOffset,
33
+ polygonOffsetFactor = baseOption.polygonOffsetFactor,
34
+ polygonOffsetUnits = baseOption.polygonOffsetUnits,
35
+ _baseOption$alphaTest = baseOption.alphaTest,
36
+ alphaTest = _baseOption$alphaTest === void 0 ? 0.05 : _baseOption$alphaTest,
37
+ blending = baseOption.blending;
38
+ var uniforms = shaderOption.uniforms,
39
+ vertexShader = shaderOption.vertexShader,
40
+ fragmentShader = shaderOption.fragmentShader,
41
+ preVertexShader = shaderOption.preVertexShader,
42
+ preFragmentShader = shaderOption.preFragmentShader,
43
+ callback = shaderOption.callback;
44
+ material.transparent = transparent;
45
+ material.depthTest = depthTest;
46
+ material.depthWrite = depthWrite;
47
+ material.polygonOffset = polygonOffset;
48
+ material.polygonOffsetFactor = polygonOffsetFactor;
49
+ material.polygonOffsetUnits = polygonOffsetUnits;
50
+ material.alphaTest = alphaTest;
51
+ blending && (material.blending = blending);
52
+ material.onBeforeCompile = function (shader) {
53
+ shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), uniforms);
54
+ shader.vertexShader = preVertexShader + shader.vertexShader;
55
+ shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', vertexShader);
56
+ shader.fragmentShader = preFragmentShader + shader.fragmentShader;
57
+ shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', fragmentShader);
58
+ callback && callback(shader);
59
+ };
60
+ material.needsUpdate = true;
27
61
  };
28
62
  var conversionRealFade = function conversionRealFade(material, type, uniforms) {
29
63
  var newMaterial = material.clone();
30
- newMaterial.transparent = true;
31
- newMaterial.depthTest = true;
32
- newMaterial.depthWrite = true;
33
- newMaterial.polygonOffset = true;
34
- newMaterial.polygonOffsetFactor = 1;
35
- newMaterial.polygonOffsetUnits = 1;
36
- newMaterial.alphaTest = 0.05;
37
- newMaterial.onBeforeCompile = function (shader) {
38
- shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
64
+ modifyTheMaterial(newMaterial, {
65
+ transparent: true,
66
+ depthTest: true,
67
+ depthWrite: true,
68
+ polygonOffset: true,
69
+ polygonOffsetFactor: 1,
70
+ polygonOffsetUnits: 1,
71
+ alphaTest: 0.05
72
+ }, {
73
+ uniforms: {
39
74
  progress: uniforms.progress,
40
75
  objSize: uniforms.maxSize,
41
76
  center: uniforms.center,
42
77
  isFadeIn: uniforms["is".concat(type, "FadeIn")]
43
- });
44
- shader.vertexShader = ver_pre + shader.vertexShader;
45
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
46
- shader.fragmentShader = frag_pre + shader.fragmentShader;
47
- shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
48
- };
49
- newMaterial.needsUpdate = true;
78
+ },
79
+ vertexShader: ver,
80
+ fragmentShader: frag,
81
+ preVertexShader: ver_pre,
82
+ preFragmentShader: frag_pre
83
+ });
50
84
  return newMaterial;
51
85
  };
52
86
 
@@ -84,7 +118,6 @@ export var injectToFrameFade = function injectToFrameFade(object, uniforms) {
84
118
  shader.fragmentShader = fragFinal;
85
119
  };
86
120
  child.material.needsUpdate = true;
87
- frameMaterialCache.push(child.material);
88
121
  }
89
122
  });
90
123
  };
@@ -97,32 +130,29 @@ export var injectToFrameFade = function injectToFrameFade(object, uniforms) {
97
130
  export var injectToRealFade = function injectToRealFade(object, uniforms) {
98
131
  object.traverse(function (child) {
99
132
  if (child.isMesh) {
133
+ child.userData.originalMaterial = child.material;
100
134
  var newMaterial = child.material.clone();
101
- newMaterial.transparent = true;
102
- newMaterial.depthTest = true;
103
- newMaterial.depthWrite = true;
104
- newMaterial.polygonOffset = true;
105
- newMaterial.polygonOffsetFactor = 1;
106
- newMaterial.polygonOffsetUnits = 1;
107
- newMaterial.alphaTest = 0.05;
108
- newMaterial.onBeforeCompile = function (shader) {
109
- shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
135
+ modifyTheMaterial(newMaterial, {
136
+ transparent: true,
137
+ depthTest: true,
138
+ depthWrite: true,
139
+ polygonOffset: true,
140
+ polygonOffsetFactor: 1,
141
+ polygonOffsetUnits: 1,
142
+ alphaTest: 0.05
143
+ }, {
144
+ uniforms: {
110
145
  progress: uniforms.progress,
111
146
  objSize: uniforms.maxSize,
112
147
  isFadeIn: uniforms.isRealFadeIn,
113
148
  center: uniforms.center
114
- });
115
- shader.vertexShader = ver_pre + shader.vertexShader;
116
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
117
- shader.fragmentShader = frag_pre + shader.fragmentShader;
118
- shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
119
- };
120
- newMaterial.needsUpdate = true;
121
- newMaterial.customProgramCacheKey = function () {
122
- return "".concat(ver, "-").concat(frag);
123
- };
149
+ },
150
+ vertexShader: ver,
151
+ fragmentShader: frag,
152
+ preVertexShader: ver_pre,
153
+ preFragmentShader: frag_pre
154
+ });
124
155
  child.material = newMaterial;
125
- realMaterialCache.push(newMaterial);
126
156
  }
127
157
  });
128
158
  };
@@ -140,38 +170,30 @@ export var injectToBaseWrite = function injectToBaseWrite(object, uniforms) {
140
170
  newMaterial = new MeshStandardMaterial({
141
171
  color: new Color('#fff')
142
172
  });
143
- newMaterial.transparent = true;
144
- newMaterial.depthTest = true;
145
- newMaterial.depthWrite = true;
146
- newMaterial.polygonOffset = true;
147
- newMaterial.polygonOffsetFactor = 2;
148
- newMaterial.polygonOffsetUnits = 2;
149
- newMaterial.alphaTest = 0.05;
150
- newMaterial.onBeforeCompile = function (shader) {
151
- shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
173
+ modifyTheMaterial(newMaterial, {
174
+ transparent: true,
175
+ depthTest: true,
176
+ depthWrite: true,
177
+ polygonOffset: true,
178
+ polygonOffsetFactor: 2,
179
+ polygonOffsetUnits: 2,
180
+ alphaTest: 0.05
181
+ }, {
182
+ uniforms: {
152
183
  progress: uniforms.progress,
153
184
  objSize: uniforms.maxSize,
154
185
  isFadeIn: uniforms.isPureFadeIn,
155
186
  center: uniforms.center
156
- });
157
- shader.vertexShader = ver_pre + shader.vertexShader;
158
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
159
- shader.fragmentShader = frag_pre + shader.fragmentShader;
160
- shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
161
- shader.uniforms.rimColor = {
162
- value: new Color('#fff')
163
- };
164
- shader.uniforms.rimPower = {
165
- value: 0.3
166
- };
167
- shader.fragmentShader = /* glsl */"\n uniform vec3 rimColor;\n uniform float rimPower;\n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', '#include <dithering_fragment>\n\t' + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n\t' + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;'), "\n ");
168
- };
169
- newMaterial.needsUpdate = true;
170
- newMaterial.customProgramCacheKey = function () {
171
- return "".concat(ver, "-").concat(frag);
172
- };
187
+ },
188
+ vertexShader: ver,
189
+ fragmentShader: frag,
190
+ preVertexShader: ver_pre,
191
+ preFragmentShader: frag_pre,
192
+ callback: function callback(shader) {
193
+ injectBaseFinir(shader, 0.3, new Color('#fff'));
194
+ }
195
+ });
173
196
  child.material = newMaterial;
174
- pureMaterialCache.push(newMaterial);
175
197
  }
176
198
  });
177
199
  };
@@ -189,35 +211,30 @@ export var injectToFinirMaterial = function injectToFinirMaterial(object, unifor
189
211
  newMaterial = new MeshStandardMaterial({
190
212
  color: new Color('#000')
191
213
  });
192
- newMaterial.transparent = true;
193
- newMaterial.depthTest = true;
194
- newMaterial.depthWrite = true;
195
- newMaterial.polygonOffset = true;
196
- newMaterial.polygonOffsetFactor = 3;
197
- newMaterial.polygonOffsetUnits = 3;
198
- newMaterial.alphaTest = 0.05;
199
- newMaterial.onBeforeCompile = function (shader) {
200
- shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
214
+ modifyTheMaterial(newMaterial, {
215
+ transparent: true,
216
+ depthTest: true,
217
+ depthWrite: true,
218
+ polygonOffset: true,
219
+ polygonOffsetFactor: 3,
220
+ polygonOffsetUnits: 3,
221
+ alphaTest: 0.05
222
+ }, {
223
+ uniforms: {
201
224
  progress: uniforms.progress,
202
225
  objSize: uniforms.maxSize,
203
226
  isFadeIn: uniforms.isFresnelFadeIn,
204
227
  center: uniforms.center
205
- });
206
- shader.vertexShader = ver_pre + shader.vertexShader;
207
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
208
- shader.fragmentShader = frag_pre + shader.fragmentShader;
209
- shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
210
- shader.uniforms.rimColor = {
211
- value: new Color('#2364B7')
212
- };
213
- shader.uniforms.rimPower = {
214
- value: 0.7
215
- };
216
- shader.fragmentShader = /* glsl */"\n uniform vec3 rimColor;\n uniform float rimPower;\n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', '#include <dithering_fragment>\n\t' + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n\t' + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;'), "\n ");
217
- };
218
- newMaterial.needsUpdate = true;
228
+ },
229
+ vertexShader: ver,
230
+ fragmentShader: frag,
231
+ preVertexShader: ver_pre,
232
+ preFragmentShader: frag_pre,
233
+ callback: function callback(shader) {
234
+ injectBaseFinir(shader);
235
+ }
236
+ });
219
237
  child.material = newMaterial;
220
- fresnelMaterialCache.push(newMaterial);
221
238
  }
222
239
  });
223
240
  };
@@ -243,7 +260,6 @@ export var injectToGround = function injectToGround(object, type, uniforms) {
243
260
  alphaTest: 0.05
244
261
  });
245
262
  object.material.needsUpdate = true;
246
- groundMaterialCache.push(object.material);
247
263
  };
248
264
  export var inject = function inject(material, type, uniforms) {
249
265
  var isSweepAway = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -272,9 +288,6 @@ export var inject = function inject(material, type, uniforms) {
272
288
  shader.fragmentShader = /* glsl */"\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', '#include <dithering_fragment>\n\t' + "".concat(isSweepAway ? heightTransitionEffect : '')), "\n ");
273
289
  };
274
290
  material.needsUpdate = true;
275
- material.customProgramCacheKey = function () {
276
- return "".concat(ver, "-").concat(frag, "-").concat(type);
277
- };
278
291
  return material;
279
292
  };
280
293
  export var finirheightTransitionEffect = function finirheightTransitionEffect(material, uniforms) {
@@ -309,16 +322,49 @@ export var finirheightTransitionEffect = function finirheightTransitionEffect(ma
309
322
  shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
310
323
  shader.fragmentShader = frag_pre + shader.fragmentShader;
311
324
  shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
312
- shader.uniforms.rimColor = {
313
- value: new Color('#2364B7')
314
- };
315
- shader.uniforms.rimPower = {
316
- value: 0.7
317
- };
318
325
  shader.uniforms.u_height = uniforms.height;
319
- 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>', '#include <dithering_fragment>\n\t' + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n\t' + 'gl_FragColor.rgb += rimPower*dotNV*rimColor; ' + "".concat(heightTransitionEffect)), "\n ");
326
+ injectBaseFinir(shader, 0.7, finirColor, heightTransitionEffect);
320
327
  };
321
328
  newMaterial.needsUpdate = true;
322
329
  return newMaterial;
323
330
  };
331
+ export var finirlowEffect = function finirlowEffect(material, uniforms) {
332
+ var newMaterial = material.clone();
333
+ modifyTheMaterial(newMaterial, {
334
+ transparent: true,
335
+ depthTest: true,
336
+ depthWrite: true,
337
+ polygonOffset: true,
338
+ polygonOffsetFactor: 3,
339
+ polygonOffsetUnits: 3,
340
+ alphaTest: 0.05
341
+ }, {
342
+ uniforms: {
343
+ progress: uniforms.progress,
344
+ objSize: uniforms.maxSize,
345
+ isFadeIn: uniforms.isFresnelFadeIn,
346
+ center: uniforms.center,
347
+ u_interval: {
348
+ value: 100.0
349
+ },
350
+ u_slice_height: {
351
+ value: 80.0
352
+ },
353
+ u_time: {
354
+ value: 0
355
+ },
356
+ u_speed: {
357
+ value: 0.5
358
+ }
359
+ },
360
+ vertexShader: ver,
361
+ fragmentShader: frag,
362
+ preVertexShader: ver_pre,
363
+ preFragmentShader: frag_pre,
364
+ callback: function callback(shader) {
365
+ injectBaseFinir(shader, 0.7, lowFinirColor);
366
+ }
367
+ });
368
+ return newMaterial;
369
+ };
324
370
  //# sourceMappingURL=inject.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","SwitchType","frameMaterialCache","realMaterialCache","pureMaterialCache","fresnelMaterialCache","groundMaterialCache","heightTransitionEffect","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","conversionRealFade","type","uniforms","newMaterial","clone","transparent","depthTest","depthWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","alphaTest","onBeforeCompile","shader","_objectSpread","progress","objSize","maxSize","center","isFadeIn","concat","vertexShader","replace","fragmentShader","needsUpdate","injectToFrameFade","object","traverse","child","isMesh","userData","originalMaterial","Frame","side","blending","addOpacity","value","isFrameFadeIn","push","injectToRealFade","isRealFadeIn","customProgramCacheKey","injectToBaseWrite","Pure","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","Fresnel","isFresnelFadeIn","injectToGround","time","isApi","inject","isSweepAway","arguments","length","undefined","u_interval","u_slice_height","u_height","height","finirheightTransitionEffect","u_time","u_speed"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial } 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\nexport const frameMaterialCache = []\nexport const realMaterialCache = []\nexport const pureMaterialCache = []\nexport const fresnelMaterialCache = []\nexport const groundMaterialCache = []\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\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\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 newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\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 center: uniforms.center,\n isFadeIn: uniforms[`is${type}FadeIn`],\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\n newMaterial.needsUpdate = true\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 frameMaterialCache.push(child.material)\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 const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\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\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n realMaterialCache.push(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 newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\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.isPureFadeIn,\n center: uniforms.center,\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.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.3 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n pureMaterialCache.push(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 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 }\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.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n child.material = newMaterial\n fresnelMaterialCache.push(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 groundMaterialCache.push(object.material)\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 material.customProgramCacheKey = () => `${ver}-${frag}-${type}`\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.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n shader.uniforms.u_height = uniforms.height\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 '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor; '\n + `${heightTransitionEffect}`,\n )}\n `\n }\n\n newMaterial.needsUpdate = true\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 ${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":";;;;;;AAAA,SAASA,gBAAgB,EAAEC,KAAK,EAAEC,oBAAoB,EAAEC,cAAc,QAAa,eAAe;AAElG,SAASC,IAAI,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,OAAO;AACrC,SAASH,IAAI,IAAII,SAAS,EAAEF,GAAG,IAAIG,QAAQ;AAC3C,SAASC,MAAM;AACf,SAASC,UAAU;AAEnB,IAAMC,UAAU,GAAG,IAAIX,KAAK,CAAC,SAAS,CAAC;AACvC,IAAMY,aAAa,GAAG,IAAIZ,KAAK,CAAC,SAAS,CAAC,EAAC;;AAE3C,IAAMa,sBAAsB,GAAG,4yBAiBtB;AAET,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,MAAM,EAA2D;EAAA,IAAzDC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAAA,IAAEG,KAAK,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGN,UAAU;EAAA,IAAEU,cAAc,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EACnFF,MAAM,CAACO,QAAQ,CAACC,QAAQ,GAAG;IAAEC,KAAK,EAAEJ;EAAM,CAAC;EAC3CL,MAAM,CAACO,QAAQ,CAACG,QAAQ,GAAG;IAAED,KAAK,EAAER;EAAM,CAAC;EAE3CD,MAAM,CAACM,cAAc,GAAG,2NAAAK,MAAA,CAMZX,MAAM,CAACM,cAAc,CAACM,OAAO,CACvC,+BAA+B,qKAAAD,MAAA,CAK7BL,cAAc,CAClB,CAAC,iBACQ;AACX,CAAC;AAsBD,IAAMO,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,QAAQ,EAAEC,UAAsB,EAAEC,YAA0B,EAAK;EAC1F,IAAQC,WAAW,GAAgHF,UAAU,CAArIE,WAAW;IAAEC,SAAS,GAAqGH,UAAU,CAAxHG,SAAS;IAAEC,UAAU,GAAyFJ,UAAU,CAA7GI,UAAU;IAAEC,aAAa,GAA0EL,UAAU,CAAjGK,aAAa;IAAEC,mBAAmB,GAAqDN,UAAU,CAAlFM,mBAAmB;IAAEC,kBAAkB,GAAiCP,UAAU,CAA7DO,kBAAkB;IAAAC,qBAAA,GAAiCR,UAAU,CAAzCS,SAAS;IAATA,SAAS,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAEE,QAAQ,GAAKV,UAAU,CAAvBU,QAAQ;EAC9H,IAAQlB,QAAQ,GAAiFS,YAAY,CAArGT,QAAQ;IAAEmB,YAAY,GAAmEV,YAAY,CAA3FU,YAAY;IAAEpB,cAAc,GAAmDU,YAAY,CAA7EV,cAAc;IAAEqB,eAAe,GAAkCX,YAAY,CAA7DW,eAAe;IAAEC,iBAAiB,GAAeZ,YAAY,CAA5CY,iBAAiB;IAAEC,QAAQ,GAAKb,YAAY,CAAzBa,QAAQ;EAE5Ff,QAAQ,CAACG,WAAW,GAAGA,WAAW;EAClCH,QAAQ,CAACI,SAAS,GAAGA,SAAS;EAC9BJ,QAAQ,CAACK,UAAU,GAAGA,UAAU;EAChCL,QAAQ,CAACM,aAAa,GAAGA,aAAa;EACtCN,QAAQ,CAACO,mBAAmB,GAAGA,mBAAmB;EAClDP,QAAQ,CAACQ,kBAAkB,GAAGA,kBAAkB;EAChDR,QAAQ,CAACU,SAAS,GAAGA,SAAS;EAC9BC,QAAQ,KAAKX,QAAQ,CAACW,QAAQ,GAAGA,QAAQ,CAAC;EAE1CX,QAAQ,CAACgB,eAAe,GAAG,UAAC9B,MAAM,EAAK;IACrCA,MAAM,CAACO,QAAQ,GAAAwB,aAAA,CAAAA,aAAA,KACV/B,MAAM,CAACO,QAAQ,GACfA,QAAQ,CACZ;IAEDP,MAAM,CAAC0B,YAAY,GAAGC,eAAe,GAAG3B,MAAM,CAAC0B,YAAY;IAC3D1B,MAAM,CAAC0B,YAAY,GAAG1B,MAAM,CAAC0B,YAAY,CAACd,OAAO,CAC/C,yBAAyB,EAAEc,YAC7B,CAAC;IACD1B,MAAM,CAACM,cAAc,GAAGsB,iBAAiB,GAAG5B,MAAM,CAACM,cAAc;IACjEN,MAAM,CAACM,cAAc,GAAGN,MAAM,CAACM,cAAc,CAACM,OAAO,CACnD,yBAAyB,EAAEN,cAC7B,CAAC;IAEDuB,QAAQ,IAAIA,QAAQ,CAAC7B,MAAM,CAAC;EAC9B,CAAC;EAEDc,QAAQ,CAACkB,WAAW,GAAG,IAAI;AAC7B,CAAC;AAED,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAInB,QAAkB,EAAEoB,IAAkC,EAAE3B,QAAmI,EAAK;EAC1N,IAAM4B,WAAW,GAAGrB,QAAQ,CAACsB,KAAK,CAAC,CAAC;EAEpCvB,iBAAiB,CAACsB,WAAW,EAC3B;IACElB,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE,IAAI;IACfC,UAAU,EAAE,IAAI;IAChBC,aAAa,EAAE,IAAI;IACnBC,mBAAmB,EAAE,CAAC;IACtBC,kBAAkB,EAAE,CAAC;IACrBE,SAAS,EAAE;EACb,CAAC,EACD;IACEjB,QAAQ,EAAE;MACR8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;MAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;MACzBC,MAAM,EAAEjC,QAAQ,CAACiC,MAAM;MACvBC,QAAQ,EAAElC,QAAQ,MAAAI,MAAA,CAAMuB,IAAI;IAC9B,CAAC;IACDR,YAAY,EAAEpC,GAAG;IACjBgB,cAAc,EAAElB,IAAI;IACpBuC,eAAe,EAAEpC,OAAO;IACxBqC,iBAAiB,EAAEvC;EACrB,CAAC,CAAC;EAEJ,OAAO8C,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,MAAgB,EAAEpC,QAAoI,EAAK;EAC3LoC,MAAM,CAACC,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChBD,KAAK,CAAC/B,QAAQ,GAAG+B,KAAK,CAAC/B,QAAQ,CAACsB,KAAK,CAAC,CAAC;MACtCS,KAAK,CAAUE,QAAQ,CAACC,gBAAgB,GAAGf,kBAAkB,CAACY,KAAK,CAAC/B,QAAQ,EAAEnB,UAAU,CAACsD,KAAK,EAAE1C,QAAe,CAAC;MACjHsC,KAAK,CAAC/B,QAAQ,CAACoC,IAAI,GAAG,CAAC;MACvBL,KAAK,CAAC/B,QAAQ,CAACG,WAAW,GAAG,IAAI;MACjC4B,KAAK,CAAC/B,QAAQ,CAACI,SAAS,GAAG,IAAI;MAC/B2B,KAAK,CAAC/B,QAAQ,CAACK,UAAU,GAAG,IAAI;MAChC0B,KAAK,CAAC/B,QAAQ,CAACW,QAAQ,GAAGzC,gBAAgB;MAC1C6D,KAAK,CAAC/B,QAAQ,CAACM,aAAa,GAAG,IAAI;MACnCyB,KAAK,CAAC/B,QAAQ,CAACO,mBAAmB,GAAG,CAAC;MACtCwB,KAAK,CAAC/B,QAAQ,CAACQ,kBAAkB,GAAG,CAAC;MACrCuB,KAAK,CAAC/B,QAAQ,CAACU,SAAS,GAAG,IAAI;MAE/BqB,KAAK,CAAC/B,QAAQ,CAACgB,eAAe,GAAG,UAAC9B,MAAM,EAAK;QAC3CA,MAAM,CAACO,QAAQ,GAAAwB,aAAA,CAAAA,aAAA,KACV/B,MAAM,CAACO,QAAQ;UAClB8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;UAC3BG,MAAM,EAAEjC,QAAQ,CAACiC,MAAM;UACvBW,UAAU,EAAE;YAAE1C,KAAK,EAAE;UAAI,CAAC;UAC1B6B,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;UACzBE,QAAQ,EAAElC,QAAQ,CAAC6C;QAAa,EACjC;QACDpD,MAAM,CAAC0B,YAAY,GAAGjC,QAAQ;QAC9BO,MAAM,CAACM,cAAc,GAAGd,SAAS;MACnC,CAAC;MAEDqD,KAAK,CAAC/B,QAAQ,CAACkB,WAAW,GAAG,IAAI;IACnC;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMqB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIV,MAAgB,EAAEpC,QAAmI,EAAK;EACzLoC,MAAM,CAACC,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MACfD,KAAK,CAAUE,QAAQ,CAACC,gBAAgB,GAAGH,KAAK,CAAC/B,QAAQ;MAC1D,IAAMqB,WAAW,GAAGU,KAAK,CAAC/B,QAAQ,CAACsB,KAAK,CAAC,CAAC;MAE1CvB,iBAAiB,CAACsB,WAAW,EAC3B;QACElB,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE,IAAI;QACfC,UAAU,EAAE,IAAI;QAChBC,aAAa,EAAE,IAAI;QACnBC,mBAAmB,EAAE,CAAC;QACtBC,kBAAkB,EAAE,CAAC;QACrBE,SAAS,EAAE;MACb,CAAC,EACD;QACEjB,QAAQ,EAAE;UACR8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;UAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;UACzBE,QAAQ,EAAElC,QAAQ,CAAC+C,YAAY;UAC/Bd,MAAM,EAAEjC,QAAQ,CAACiC;QACnB,CAAC;QACDd,YAAY,EAAEpC,GAAG;QACjBgB,cAAc,EAAElB,IAAI;QACpBuC,eAAe,EAAEpC,OAAO;QACxBqC,iBAAiB,EAAEvC;MACrB,CAAC,CAAC;MAEJwD,KAAK,CAAC/B,QAAQ,GAAGqB,WAAW;IAC9B;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMoB,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIZ,MAAgB,EAAEpC,QAAmI,EAAK;EAC1LoC,MAAM,CAACC,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChB,IAAIX,WAAW,GAAGU,KAAK,CAAC/B,QAAQ,CAACsB,KAAK,CAAC,CAAC;MACvCS,KAAK,CAAUE,QAAQ,CAACC,gBAAgB,GAAGf,kBAAkB,CAACY,KAAK,CAAC/B,QAAQ,EAAEnB,UAAU,CAAC6D,IAAI,EAAEjD,QAAe,CAAC;MAChH4B,WAAW,GAAG,IAAIjD,oBAAoB,CAAC;QAAEmB,KAAK,EAAE,IAAIpB,KAAK,CAAC,MAAM;MAAE,CAAC,CAAC;MAEpE4B,iBAAiB,CAACsB,WAAW,EAC3B;QACElB,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE,IAAI;QACfC,UAAU,EAAE,IAAI;QAChBC,aAAa,EAAE,IAAI;QACnBC,mBAAmB,EAAE,CAAC;QACtBC,kBAAkB,EAAE,CAAC;QACrBE,SAAS,EAAE;MACb,CAAC,EACD;QACEjB,QAAQ,EAAE;UACR8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;UAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;UACzBE,QAAQ,EAAElC,QAAQ,CAACkD,YAAY;UAC/BjB,MAAM,EAAEjC,QAAQ,CAACiC;QACnB,CAAC;QACDd,YAAY,EAAEpC,GAAG;QACjBgB,cAAc,EAAElB,IAAI;QACpBuC,eAAe,EAAEpC,OAAO;QACxBqC,iBAAiB,EAAEvC,QAAQ;QAC3BwC,QAAQ,EAAE,SAAAA,SAAC7B,MAAM,EAAK;UACpBD,eAAe,CAACC,MAAM,EAAE,GAAG,EAAE,IAAIf,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD;MACF,CAAC,CAAC;MAEJ4D,KAAK,CAAC/B,QAAQ,GAAGqB,WAAW;IAC9B;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMuB,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIf,MAAgB,EAAEpC,QAAsI,EAAK;EACjMoC,MAAM,CAACC,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChB,IAAIX,WAAW,GAAGU,KAAK,CAAC/B,QAAQ,CAACsB,KAAK,CAAC,CAAC;MACvCS,KAAK,CAAUE,QAAQ,CAACC,gBAAgB,GAAGf,kBAAkB,CAACY,KAAK,CAAC/B,QAAQ,EAAEnB,UAAU,CAACgE,OAAO,EAAEpD,QAAe,CAAC;MACnH4B,WAAW,GAAG,IAAIjD,oBAAoB,CAAC;QAAEmB,KAAK,EAAE,IAAIpB,KAAK,CAAC,MAAM;MAAE,CAAC,CAAC;MAEpE4B,iBAAiB,CAACsB,WAAW,EAC3B;QACElB,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE,IAAI;QACfC,UAAU,EAAE,IAAI;QAChBC,aAAa,EAAE,IAAI;QACnBC,mBAAmB,EAAE,CAAC;QACtBC,kBAAkB,EAAE,CAAC;QACrBE,SAAS,EAAE;MACb,CAAC,EACD;QACEjB,QAAQ,EAAE;UACR8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;UAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;UACzBE,QAAQ,EAAElC,QAAQ,CAACqD,eAAe;UAClCpB,MAAM,EAAEjC,QAAQ,CAACiC;QACnB,CAAC;QACDd,YAAY,EAAEpC,GAAG;QACjBgB,cAAc,EAAElB,IAAI;QACpBuC,eAAe,EAAEpC,OAAO;QACxBqC,iBAAiB,EAAEvC,QAAQ;QAC3BwC,QAAQ,EAAE,SAAAA,SAAC7B,MAAM,EAAK;UACpBD,eAAe,CAACC,MAAM,CAAC;QACzB;MACF,CAAC,CAAC;MAEJ6C,KAAK,CAAC/B,QAAQ,GAAGqB,WAAW;IAC9B;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,IAAM0B,cAAc,GAAG,SAAjBA,cAAcA,CACzBlB,MAAY,EACZT,IAA2C,EAC3C3B,QAAqJ,EAClJ;EACHoC,MAAM,CAAC7B,QAAQ,GAAG,IAAI3B,cAAc,CAAC;IACnCoB,QAAQ,EAAAwB,aAAA,CAAAA,aAAA,KACHrC,MAAM,CAACa,QAAQ;MAClB8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;MAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;MACzBE,QAAQ,EAAElC,QAAQ,MAAAI,MAAA,CAAMuB,IAAI,YAAS;MACrCM,MAAM,EAAEjC,QAAQ,CAACiC,MAAM;MACvBsB,IAAI,EAAEvD,QAAQ,CAACuD,IAAI;MACnBC,KAAK,EAAExD,QAAQ,CAACwD;IAAK,EACtB;IACDrC,YAAY,EAAEhC,MAAM,CAACgC,YAAY;IACjCpB,cAAc,EAAEZ,MAAM,CAACY,cAAc;IACrCW,WAAW,EAAE,IAAI;IACjBiC,IAAI,EAAE,CAAC;IACPhC,SAAS,EAAE,IAAI;IACfC,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE,IAAI;IACnBC,mBAAmB,EAAE,CAAC;IACtBC,kBAAkB,EAAE,CAAC;IACrBE,SAAS,EAAE;EACb,CAAC,CAAC;EAEFmB,MAAM,CAAC7B,QAAQ,CAACkB,WAAW,GAAG,IAAI;AACpC,CAAC;AAED,OAAO,IAAMgC,MAAM,GAAG,SAATA,MAAMA,CACjBlD,QAAkB,EAClBoB,IAAkC,EAClC3B,QAA4H,EAEzH;EAAA,IADH0D,WAAW,GAAA/D,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAEnBY,QAAQ,CAACG,WAAW,GAAG,IAAI;EAC3BH,QAAQ,CAACI,SAAS,GAAG,IAAI;EACzBJ,QAAQ,CAACK,UAAU,GAAG,IAAI;EAC1BL,QAAQ,CAACU,SAAS,GAAG,IAAI;EAEzBV,QAAQ,CAACgB,eAAe,GAAG,UAAC9B,MAAM,EAAK;IACrCA,MAAM,CAACO,QAAQ,GAAAwB,aAAA,CAAAA,aAAA,KACV/B,MAAM,CAACO,QAAQ;MAClB8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;MAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;MACzBE,QAAQ,EAAElC,QAAQ,MAAAI,MAAA,CAAMuB,IAAI,YAAS;MACrCM,MAAM,EAAEjC,QAAQ,CAACiC,MAAM;MACvB0B,UAAU,EAAE;QAAEzD,KAAK,EAAE;MAAM,CAAC;MAC5B0D,cAAc,EAAE;QAAE1D,KAAK,EAAE;MAAK;IAAC,EAChC;IAEDT,MAAM,CAAC0B,YAAY,GAAGnC,OAAO,GAAGS,MAAM,CAAC0B,YAAY;IACnD1B,MAAM,CAAC0B,YAAY,GAAG1B,MAAM,CAAC0B,YAAY,CAACd,OAAO,CAC/C,yBAAyB,EAAEtB,GAC7B,CAAC;IACDU,MAAM,CAACM,cAAc,GAAGjB,QAAQ,GAAGW,MAAM,CAACM,cAAc;IACxDN,MAAM,CAACM,cAAc,GAAGN,MAAM,CAACM,cAAc,CAACM,OAAO,CACnD,yBAAyB,EAAExB,IAC7B,CAAC;IAEDY,MAAM,CAACO,QAAQ,CAAC6D,QAAQ,GAAG7D,QAAQ,CAAC8D,MAAM;IAE1CrE,MAAM,CAACM,cAAc,GAAG,gKAAAK,MAAA,CAKdX,MAAM,CAACM,cAAc,CAACM,OAAO,CACrC,+BAA+B,EAC/B,mCAAmC,MAAAD,MAAA,CAC9BsD,WAAW,GAAGnE,sBAAsB,GAAG,EAAE,CAChD,CAAC,iBACM;EACT,CAAC;EAEDgB,QAAQ,CAACkB,WAAW,GAAG,IAAI;EAE3B,OAAOlB,QAAQ;AACjB,CAAC;AAED,OAAO,IAAMwD,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAAIxD,QAAkB,EAAEP,QAAiK,EAAK;EACpO,IAAM4B,WAAW,GAAGrB,QAAQ,CAACsB,KAAK,CAAC,CAAC;EACpCD,WAAW,CAAClB,WAAW,GAAG,IAAI;EAC9BkB,WAAW,CAACjB,SAAS,GAAG,IAAI;EAC5BiB,WAAW,CAAChB,UAAU,GAAG,IAAI;EAC7BgB,WAAW,CAACf,aAAa,GAAG,IAAI;EAChCe,WAAW,CAACd,mBAAmB,GAAG,CAAC;EACnCc,WAAW,CAACb,kBAAkB,GAAG,CAAC;EAClCa,WAAW,CAACX,SAAS,GAAG,IAAI;EAE5BW,WAAW,CAACL,eAAe,GAAG,UAAC9B,MAAM,EAAK;IACxCA,MAAM,CAACO,QAAQ,GAAAwB,aAAA,CAAAA,aAAA,KACV/B,MAAM,CAACO,QAAQ;MAClB8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;MAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;MACzBE,QAAQ,EAAElC,QAAQ,CAACqD,eAAe;MAClCpB,MAAM,EAAEjC,QAAQ,CAACiC,MAAM;MACvB0B,UAAU,EAAE;QAAEzD,KAAK,EAAE;MAAM,CAAC;MAC5B0D,cAAc,EAAE;QAAE1D,KAAK,EAAE;MAAK,CAAC;MAC/B8D,MAAM,EAAE;QAAE9D,KAAK,EAAE;MAAE,CAAC;MACpB+D,OAAO,EAAE;QAAE/D,KAAK,EAAE;MAAI;IAAC,EACxB;IAEDT,MAAM,CAAC0B,YAAY,GAAGnC,OAAO,GAAGS,MAAM,CAAC0B,YAAY;IACnD1B,MAAM,CAAC0B,YAAY,GAAG1B,MAAM,CAAC0B,YAAY,CAACd,OAAO,CAC/C,yBAAyB,EAAEtB,GAC7B,CAAC;IACDU,MAAM,CAACM,cAAc,GAAGjB,QAAQ,GAAGW,MAAM,CAACM,cAAc;IACxDN,MAAM,CAACM,cAAc,GAAGN,MAAM,CAACM,cAAc,CAACM,OAAO,CACnD,yBAAyB,EAAExB,IAC7B,CAAC;IAEDY,MAAM,CAACO,QAAQ,CAAC6D,QAAQ,GAAG7D,QAAQ,CAAC8D,MAAM;IAE1CtE,eAAe,CAACC,MAAM,EAAE,GAAG,EAAEJ,UAAU,EAAEE,sBAAsB,CAAC;EAClE,CAAC;EAEDqC,WAAW,CAACH,WAAW,GAAG,IAAI;EAE9B,OAAOG,WAAW;AACpB,CAAC;AAED,OAAO,IAAMsC,cAAc,GAAG,SAAjBA,cAAcA,CAAI3D,QAAkB,EAAEP,QAAiK,EAAK;EACvN,IAAM4B,WAAW,GAAGrB,QAAQ,CAACsB,KAAK,CAAC,CAAC;EAEpCvB,iBAAiB,CAACsB,WAAW,EAC3B;IACElB,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE,IAAI;IACfC,UAAU,EAAE,IAAI;IAChBC,aAAa,EAAE,IAAI;IACnBC,mBAAmB,EAAE,CAAC;IACtBC,kBAAkB,EAAE,CAAC;IACrBE,SAAS,EAAE;EACb,CAAC,EACD;IACEjB,QAAQ,EAAE;MACR8B,QAAQ,EAAE9B,QAAQ,CAAC8B,QAAQ;MAC3BC,OAAO,EAAE/B,QAAQ,CAACgC,OAAO;MACzBE,QAAQ,EAAElC,QAAQ,CAACqD,eAAe;MAClCpB,MAAM,EAAEjC,QAAQ,CAACiC,MAAM;MACvB0B,UAAU,EAAE;QAAEzD,KAAK,EAAE;MAAM,CAAC;MAC5B0D,cAAc,EAAE;QAAE1D,KAAK,EAAE;MAAK,CAAC;MAC/B8D,MAAM,EAAE;QAAE9D,KAAK,EAAE;MAAE,CAAC;MACpB+D,OAAO,EAAE;QAAE/D,KAAK,EAAE;MAAI;IACxB,CAAC;IACDiB,YAAY,EAAEpC,GAAG;IACjBgB,cAAc,EAAElB,IAAI;IACpBuC,eAAe,EAAEpC,OAAO;IACxBqC,iBAAiB,EAAEvC,QAAQ;IAC3BwC,QAAQ,EAAE,SAAAA,SAAC7B,MAAM,EAAK;MACpBD,eAAe,CAACC,MAAM,EAAE,GAAG,EAAEH,aAAa,CAAC;IAC7C;EACF,CAAC,CAAC;EAEJ,OAAOsC,WAAW;AACpB,CAAC"}
@@ -4,6 +4,7 @@ declare class PyramidMesh extends LinkMesh {
4
4
  private _color;
5
5
  private _animationFrameId?;
6
6
  private _disposeCallbacks;
7
+ private _animationController;
7
8
  get color(): string;
8
9
  set color(newValue: string);
9
10
  constructor(option: LinkOption);
@@ -15,8 +15,9 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
15
15
  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; }
16
16
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
17
17
  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); }
18
- import { Box3, LoaderModule, utils } from '@anov/3d-core';
18
+ import { Clock, LoaderModule, utils } from '@anov/3d-core';
19
19
  import { SOURCE_BASE_PATH } from "../../Utils/constant";
20
+ import { EMarkAnimationType, KeyframeAnimation } from "../../Mark/KeyframeAnimation";
20
21
  import LinkMesh from '.';
21
22
  var MODEL_URI = "".concat(SOURCE_BASE_PATH, "/models/pyramid_1.glb");
22
23
  var load = new LoaderModule();
@@ -30,6 +31,8 @@ var PyramidMesh = /*#__PURE__*/function (_LinkMesh) {
30
31
  _defineProperty(_assertThisInitialized(_this), "_color", void 0);
31
32
  _defineProperty(_assertThisInitialized(_this), "_animationFrameId", void 0);
32
33
  _defineProperty(_assertThisInitialized(_this), "_disposeCallbacks", []);
34
+ // 动画相关参数
35
+ _defineProperty(_assertThisInitialized(_this), "_animationController", void 0);
33
36
  _this._vspace = [0.4, 0];
34
37
  var color = option.color;
35
38
  _this._color = color;
@@ -66,8 +69,14 @@ var PyramidMesh = /*#__PURE__*/function (_LinkMesh) {
66
69
  case 2:
67
70
  this._mesh = _context.sent;
68
71
  this.add(this._mesh);
72
+ this._animationController = new KeyframeAnimation(this._mesh, {
73
+ enable: true,
74
+ type: [EMarkAnimationType.Rotate, EMarkAnimationType.Bounce],
75
+ duration: 4
76
+ });
77
+ this._animationController.play();
69
78
  return _context.abrupt("return", true);
70
- case 5:
79
+ case 7:
71
80
  case "end":
72
81
  return _context.stop();
73
82
  }
@@ -106,35 +115,24 @@ var PyramidMesh = /*#__PURE__*/function (_LinkMesh) {
106
115
  value: function () {
107
116
  var _setupAnimation = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
108
117
  var _this2 = this;
109
- var box, modelHeight, originalY, totalFrames, frame, animate;
118
+ var clock, animate;
110
119
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
111
120
  while (1) switch (_context2.prev = _context2.next) {
112
121
  case 0:
113
122
  _context2.next = 2;
114
123
  return this.ready;
115
124
  case 2:
116
- box = new Box3().setFromObject(this._mesh);
117
- modelHeight = box.max.y - box.min.y;
118
- originalY = this._mesh.position.y; // 动画参数
119
- totalFrames = 280; // 总帧数
120
- frame = 0; // 当前帧数
125
+ clock = new Clock();
121
126
  animate = function animate() {
122
- var progress = frame / totalFrames;
123
-
124
- // Y轴浮动动画
125
- var yOffset = modelHeight * 0.5 * Math.sin(progress * Math.PI);
126
- _this2._mesh.position.y = originalY + yOffset;
127
-
128
- // 旋转动画
129
- _this2._mesh.rotation.y = progress * Math.PI * 2;
130
- frame = (frame + 1) % totalFrames;
127
+ var _this2$_animationCont;
128
+ (_this2$_animationCont = _this2._animationController) === null || _this2$_animationCont === void 0 || _this2$_animationCont.update(clock.getDelta());
131
129
  _this2._animationFrameId = requestAnimationFrame(animate);
132
130
  };
133
131
  this._disposeCallbacks.push(function () {
134
132
  cancelAnimationFrame(_this2._animationFrameId);
135
133
  });
136
134
  animate();
137
- case 10:
135
+ case 6:
138
136
  case "end":
139
137
  return _context2.stop();
140
138
  }