easy-three-utils 0.0.3 → 0.0.32

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 (154) hide show
  1. package/index.ts +5 -1
  2. package/package.json +2 -2
  3. package/src/assets/shader/snow.ts +48 -0
  4. package/src/common/useLoader.ts +10 -10
  5. package/src/common/useWeather.ts +71 -0
  6. package/src/core/basic/control.ts +2 -1
  7. package/src/core/main.ts +30 -4
  8. package/src/utils/index.ts +5 -0
  9. package/src/utils/useZip.ts +66 -0
  10. package/tsconfig.json +1 -1
  11. /package/src/{draco → assets/draco}/README.md +0 -0
  12. /package/src/{draco → assets/draco}/draco_decoder.js +0 -0
  13. /package/src/{draco → assets/draco}/draco_decoder.wasm +0 -0
  14. /package/src/{draco → assets/draco}/draco_encoder.js +0 -0
  15. /package/src/{draco → assets/draco}/draco_wasm_wrapper.js +0 -0
  16. /package/src/{draco → assets/draco}/gltf/draco_decoder.js +0 -0
  17. /package/src/{draco → assets/draco}/gltf/draco_decoder.wasm +0 -0
  18. /package/src/{draco → assets/draco}/gltf/draco_encoder.js +0 -0
  19. /package/src/{draco → assets/draco}/gltf/draco_wasm_wrapper.js +0 -0
  20. /package/src/{tileRenderer → assets/tileRenderer}/base/Tile.d.ts +0 -0
  21. /package/src/{tileRenderer → assets/tileRenderer}/base/TileBase.d.ts +0 -0
  22. /package/src/{tileRenderer → assets/tileRenderer}/base/TileInternal.d.ts +0 -0
  23. /package/src/{tileRenderer → assets/tileRenderer}/base/TilesRendererBase.d.ts +0 -0
  24. /package/src/{tileRenderer → assets/tileRenderer}/base/TilesRendererBase.js +0 -0
  25. /package/src/{tileRenderer → assets/tileRenderer}/base/Tileset.d.ts +0 -0
  26. /package/src/{tileRenderer → assets/tileRenderer}/base/constants.d.ts +0 -0
  27. /package/src/{tileRenderer → assets/tileRenderer}/base/constants.js +0 -0
  28. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/B3DMLoaderBase.d.ts +0 -0
  29. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/B3DMLoaderBase.js +0 -0
  30. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/CMPTLoaderBase.d.ts +0 -0
  31. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/CMPTLoaderBase.js +0 -0
  32. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/I3DMLoaderBase.d.ts +0 -0
  33. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/I3DMLoaderBase.js +0 -0
  34. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/LoaderBase.d.ts +0 -0
  35. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/LoaderBase.js +0 -0
  36. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/PNTSLoaderBase.d.ts +0 -0
  37. /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/PNTSLoaderBase.js +0 -0
  38. /package/src/{tileRenderer → assets/tileRenderer}/base/plugins/ImplicitTilingPlugin.js +0 -0
  39. /package/src/{tileRenderer → assets/tileRenderer}/base/traverseFunctions.js +0 -0
  40. /package/src/{tileRenderer → assets/tileRenderer}/gltf.js +0 -0
  41. /package/src/{tileRenderer → assets/tileRenderer}/index.d.ts +0 -0
  42. /package/src/{tileRenderer → assets/tileRenderer}/index.js +0 -0
  43. /package/src/{tileRenderer → assets/tileRenderer}/plugins/README.md +0 -0
  44. /package/src/{tileRenderer → assets/tileRenderer}/plugins/base/ImplicitTilingPlugin.d.ts +0 -0
  45. /package/src/{tileRenderer → assets/tileRenderer}/plugins/base/ImplicitTilingPlugin.js +0 -0
  46. /package/src/{tileRenderer → assets/tileRenderer}/plugins/base/SUBTREELoader.js +0 -0
  47. /package/src/{tileRenderer → assets/tileRenderer}/plugins/index.d.ts +0 -0
  48. /package/src/{tileRenderer → assets/tileRenderer}/plugins/index.js +0 -0
  49. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/CesiumIonAuthPlugin.d.ts +0 -0
  50. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/CesiumIonAuthPlugin.js +0 -0
  51. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/DebugTilesPlugin.d.ts +0 -0
  52. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/DebugTilesPlugin.js +0 -0
  53. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GLTFExtensionsPlugin.d.ts +0 -0
  54. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GLTFExtensionsPlugin.js +0 -0
  55. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleAttributionsManager.js +0 -0
  56. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleCloudAuthPlugin.d.ts +0 -0
  57. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleCloudAuthPlugin.js +0 -0
  58. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/ReorientationPlugin.d.ts +0 -0
  59. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/ReorientationPlugin.js +0 -0
  60. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/TileCompressionPlugin.d.ts +0 -0
  61. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/TileCompressionPlugin.js +0 -0
  62. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/UpdateOnChangePlugin.d.ts +0 -0
  63. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/UpdateOnChangePlugin.js +0 -0
  64. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/fade/FadeManager.js +0 -0
  65. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/fade/TilesFadePlugin.d.ts +0 -0
  66. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/fade/TilesFadePlugin.js +0 -0
  67. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFCesiumRTCExtension.d.ts +0 -0
  68. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFCesiumRTCExtension.js +0 -0
  69. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFMeshFeaturesExtension.d.ts +0 -0
  70. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFMeshFeaturesExtension.js +0 -0
  71. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFStructuralMetadataExtension.d.ts +0 -0
  72. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFStructuralMetadataExtension.js +0 -0
  73. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/ClassProperty.js +0 -0
  74. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/MeshFeatures.js +0 -0
  75. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertyAttributeAccessor.js +0 -0
  76. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertySetAccessor.js +0 -0
  77. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertyTableAccessor.js +0 -0
  78. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertyTextureAccessor.js +0 -0
  79. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/StructuralMetadata.js +0 -0
  80. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/math/Matrix2.js +0 -0
  81. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/utilities/ClassPropertyHelpers.js +0 -0
  82. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/utilities/TexCoordUtilities.js +0 -0
  83. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/utilities/TextureReadUtility.js +0 -0
  84. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/objects/EllipsoidRegionHelper.js +0 -0
  85. /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/objects/SphereHelper.js +0 -0
  86. /package/src/{tileRenderer → assets/tileRenderer}/r3f/README.md +0 -0
  87. /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CameraControls.jsx +0 -0
  88. /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CameraTransition.jsx +0 -0
  89. /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CanvasDOMOverlay.jsx +0 -0
  90. /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CompassGizmo.jsx +0 -0
  91. /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/TilesAttributionOverlay.jsx +0 -0
  92. /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/TilesRenderer.jsx +0 -0
  93. /package/src/{tileRenderer → assets/tileRenderer}/r3f/index.jsx +0 -0
  94. /package/src/{tileRenderer → assets/tileRenderer}/r3f/utilities/useForceUpdate.jsx +0 -0
  95. /package/src/{tileRenderer → assets/tileRenderer}/r3f/utilities/useObjectDep.jsx +0 -0
  96. /package/src/{tileRenderer → assets/tileRenderer}/r3f/utilities/useOptions.jsx +0 -0
  97. /package/src/{tileRenderer → assets/tileRenderer}/three/DebugTilesRenderer.d.ts +0 -0
  98. /package/src/{tileRenderer → assets/tileRenderer}/three/DebugTilesRenderer.js +0 -0
  99. /package/src/{tileRenderer → assets/tileRenderer}/three/TilesGroup.d.ts +0 -0
  100. /package/src/{tileRenderer → assets/tileRenderer}/three/TilesGroup.js +0 -0
  101. /package/src/{tileRenderer → assets/tileRenderer}/three/TilesRenderer.d.ts +0 -0
  102. /package/src/{tileRenderer → assets/tileRenderer}/three/TilesRenderer.js +0 -0
  103. /package/src/{tileRenderer → assets/tileRenderer}/three/controls/CameraTransitionManager.js +0 -0
  104. /package/src/{tileRenderer → assets/tileRenderer}/three/controls/EnvironmentControls.js +0 -0
  105. /package/src/{tileRenderer → assets/tileRenderer}/three/controls/GlobeControls.js +0 -0
  106. /package/src/{tileRenderer → assets/tileRenderer}/three/controls/PivotPointMesh.js +0 -0
  107. /package/src/{tileRenderer → assets/tileRenderer}/three/controls/PointerTracker.js +0 -0
  108. /package/src/{tileRenderer → assets/tileRenderer}/three/controls/utils.js +0 -0
  109. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/B3DMLoader.d.ts +0 -0
  110. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/B3DMLoader.js +0 -0
  111. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/CMPTLoader.d.ts +0 -0
  112. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/CMPTLoader.js +0 -0
  113. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/GLTFExtensionLoader.d.ts +0 -0
  114. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/GLTFExtensionLoader.js +0 -0
  115. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/I3DMLoader.d.ts +0 -0
  116. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/I3DMLoader.js +0 -0
  117. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/PNTSLoader.d.ts +0 -0
  118. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/PNTSLoader.js +0 -0
  119. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFCesiumRTCExtension.js +0 -0
  120. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFMeshFeaturesExtension.js +0 -0
  121. /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFStructuralMetadataExtension.js +0 -0
  122. /package/src/{tileRenderer → assets/tileRenderer}/three/math/Ellipsoid.d.ts +0 -0
  123. /package/src/{tileRenderer → assets/tileRenderer}/three/math/Ellipsoid.js +0 -0
  124. /package/src/{tileRenderer → assets/tileRenderer}/three/math/EllipsoidRegion.d.ts +0 -0
  125. /package/src/{tileRenderer → assets/tileRenderer}/three/math/EllipsoidRegion.js +0 -0
  126. /package/src/{tileRenderer → assets/tileRenderer}/three/math/ExtendedFrustum.js +0 -0
  127. /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoConstants.d.ts +0 -0
  128. /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoConstants.js +0 -0
  129. /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoUtils.d.ts +0 -0
  130. /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoUtils.js +0 -0
  131. /package/src/{tileRenderer → assets/tileRenderer}/three/math/OBB.js +0 -0
  132. /package/src/{tileRenderer → assets/tileRenderer}/three/math/TileBoundingVolume.js +0 -0
  133. /package/src/{tileRenderer → assets/tileRenderer}/three/plugins/CesiumIonAuthPlugin.js +0 -0
  134. /package/src/{tileRenderer → assets/tileRenderer}/three/plugins/DebugTilesPlugin.js +0 -0
  135. /package/src/{tileRenderer → assets/tileRenderer}/three/plugins/GoogleCloudAuthPlugin.js +0 -0
  136. /package/src/{tileRenderer → assets/tileRenderer}/three/raycastTraverse.js +0 -0
  137. /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/CesiumIonTilesRenderer.d.ts +0 -0
  138. /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/CesiumIonTilesRenderer.js +0 -0
  139. /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/GoogleTilesRenderer.d.ts +0 -0
  140. /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/GoogleTilesRenderer.js +0 -0
  141. /package/src/{tileRenderer → assets/tileRenderer}/three/utilities.js +0 -0
  142. /package/src/{tileRenderer → assets/tileRenderer}/utilities/BatchTable.d.ts +0 -0
  143. /package/src/{tileRenderer → assets/tileRenderer}/utilities/BatchTable.js +0 -0
  144. /package/src/{tileRenderer → assets/tileRenderer}/utilities/BatchTableHierarchyExtension.js +0 -0
  145. /package/src/{tileRenderer → assets/tileRenderer}/utilities/FeatureTable.d.ts +0 -0
  146. /package/src/{tileRenderer → assets/tileRenderer}/utilities/FeatureTable.js +0 -0
  147. /package/src/{tileRenderer → assets/tileRenderer}/utilities/LRUCache.d.ts +0 -0
  148. /package/src/{tileRenderer → assets/tileRenderer}/utilities/LRUCache.js +0 -0
  149. /package/src/{tileRenderer → assets/tileRenderer}/utilities/PriorityQueue.d.ts +0 -0
  150. /package/src/{tileRenderer → assets/tileRenderer}/utilities/PriorityQueue.js +0 -0
  151. /package/src/{tileRenderer → assets/tileRenderer}/utilities/arrayToString.js +0 -0
  152. /package/src/{tileRenderer → assets/tileRenderer}/utilities/readMagicBytes.js +0 -0
  153. /package/src/{tileRenderer → assets/tileRenderer}/utilities/rgb565torgb.js +0 -0
  154. /package/src/{tileRenderer → assets/tileRenderer}/utilities/urlExtension.js +0 -0
package/index.ts CHANGED
@@ -3,6 +3,7 @@ import { useMark, EMarkDefaultStyle } from './src/common/useMark'
3
3
  import { useLine2 } from './src/common/useLine2'
4
4
  import { useLocationCalculator } from './src/common/useLocationCalculator'
5
5
  import { Animation } from './src/common/useTween'
6
+ import { useWeather, EWeatherType } from './src/common/useWeather'
6
7
  import { useThree } from './src/core/main'
7
8
 
8
9
  import type { IPathItem } from './src/common/useTween'
@@ -17,7 +18,10 @@ export {
17
18
 
18
19
  useLocationCalculator,
19
20
 
20
- Animation
21
+ Animation,
22
+
23
+ useWeather,
24
+ EWeatherType
21
25
  }
22
26
 
23
27
  export type {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-three-utils",
3
- "version": "0.0.3",
3
+ "version": "0.0.32",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -9,4 +9,4 @@
9
9
  "license": "ISC",
10
10
  "types": "./index.d.ts",
11
11
  "description": ""
12
- }
12
+ }
@@ -0,0 +1,48 @@
1
+ const snowVertexShader = `
2
+ varying vec2 vUv;
3
+ void main() {
4
+ vUv = uv;
5
+ vec4 viewPosition = modelViewMatrix * vec4(position, 1.0);
6
+ gl_Position = projectionMatrix * viewPosition;
7
+ }`
8
+
9
+ const snowFragmentShader = `
10
+ varying vec2 vUv;
11
+ uniform vec3 iResolution;
12
+ uniform float iTime;
13
+ void main()
14
+ {
15
+ float snow = 0.0;
16
+ float gradient = (1.0-float(gl_FragCoord.y / iResolution.x))*0.4;
17
+ float random = fract(sin(dot(gl_FragCoord.xy,vec2(12.9898,78.233)))* 43758.5453);
18
+ for(int k=0;k<6;k++){
19
+ for(int i=0;i<12;i++){
20
+ float cellSize = 2.0 + (float(i)*3.0);
21
+ float downSpeed = 0.3+(sin(iTime*0.4+float(k+i*20))+1.0)*0.00008;
22
+ vec2 uv = (gl_FragCoord.xy / iResolution.x)+vec2(0.01*sin((iTime+float(k*6185))*0.6+float(i))*(5.0/float(i)),downSpeed*(iTime+float(k*1352))*(1.0/float(i)));
23
+ vec2 uvStep = (ceil((uv)*cellSize-vec2(0.5,0.5))/cellSize);
24
+ float x = fract(sin(dot(uvStep.xy,vec2(12.9898+float(k)*12.0,78.233+float(k)*315.156)))* 43758.5453+float(k)*12.0)-0.5;
25
+ float y = fract(sin(dot(uvStep.xy,vec2(62.2364+float(k)*23.0,94.674+float(k)*95.0)))* 62159.8432+float(k)*12.0)-0.5;
26
+
27
+ float randomMagnitude1 = sin(iTime*2.5)*0.7/cellSize;
28
+ float randomMagnitude2 = cos(iTime*2.5)*0.7/cellSize;
29
+
30
+ float d = 5.0*distance((uvStep.xy + vec2(x*sin(y),y)*randomMagnitude1 + vec2(y,x)*randomMagnitude2),uv.xy);
31
+
32
+ float omiVal = fract(sin(dot(uvStep.xy,vec2(32.4691,94.615)))* 31572.1684);
33
+ if(omiVal<0.08?true:false){
34
+ float newd = (x+1.0)*0.4*clamp(1.9-d*(15.0+(x*6.3))*(cellSize/1.4),0.0,1.0);
35
+ /*snow += d<(0.08+(x*0.3))/(cellSize/1.4)?
36
+ newd
37
+ :newd;*/
38
+ snow += newd;
39
+ }
40
+ }
41
+ }
42
+ gl_FragColor = vec4(snow)+gradient*vec4(0.4,0.8,1.0,0.0) + random*0.01;
43
+ }`
44
+
45
+ export {
46
+ snowVertexShader,
47
+ snowFragmentShader
48
+ }
@@ -5,8 +5,8 @@ import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js"
5
5
  import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader.js'
6
6
  import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js'
7
7
  import { TGALoader } from 'three/examples/jsm/loaders/TGALoader.js'
8
- import { TilesRenderer } from '../tileRenderer'
9
- import { GoogleCloudAuthPlugin } from '../tileRenderer/plugins';
8
+ import { TilesRenderer } from '../assets/tileRenderer'
9
+ import { GoogleCloudAuthPlugin } from '../assets/tileRenderer/plugins';
10
10
  import { enableDefaultEvent, EDefaultEvent } from '../../index'
11
11
 
12
12
  interface IThreeLoaders {
@@ -44,7 +44,9 @@ const useLoader = () => {
44
44
  }
45
45
 
46
46
  const useFBXLoader = (url: string, callback: (object: THREE.Group & Record<'mixer', THREE.AnimationMixer>) => void, xhrCallback?: (xhr: ProgressEvent<EventTarget>) => void) => {
47
- setFBXLoader()
47
+ if (!threeLoaders.FBXLoader) {
48
+ setFBXLoader()
49
+ }
48
50
 
49
51
  threeLoaders.FBXLoader!.load(url, (object) => {
50
52
  object.traverse((child) => {
@@ -66,7 +68,7 @@ const useLoader = () => {
66
68
 
67
69
  const setGLTFLoader = () => {
68
70
  threeLoaders.DRACOLoader = new DRACOLoader()
69
- threeLoaders.DRACOLoader.setDecoderPath('/draco/gltf/');
71
+ threeLoaders.DRACOLoader.setDecoderPath('../assets/draco/gltf/');
70
72
  threeLoaders.DRACOLoader.preload()
71
73
 
72
74
  threeLoaders.GLTFLoader = new GLTFLoader()
@@ -126,13 +128,11 @@ const useLoader = () => {
126
128
  tilesRenderer.registerPlugin(new GoogleCloudAuthPlugin({ url: config.url }));
127
129
  tilesRenderer.setLatLonToYUp(config.lat * THREE.MathUtils.DEG2RAD, config.lon * THREE.MathUtils.DEG2RAD);
128
130
 
129
- const dracoLoader = new DRACOLoader();
130
- dracoLoader.setDecoderPath('../draco/gltf/');
131
-
132
- const loader = new GLTFLoader(tilesRenderer.manager);
133
- loader.setDRACOLoader(dracoLoader);
131
+ if (!threeLoaders.GLTFLoader) {
132
+ setGLTFLoader()
133
+ }
134
134
 
135
- tilesRenderer.manager.addHandler(/\.gltf$/, loader);
135
+ tilesRenderer.manager.addHandler(/\.gltf$/, threeLoaders.GLTFLoader!);
136
136
 
137
137
  enableDefaultEvent(EDefaultEvent.INSERTANIMATIONS, {
138
138
  cb() {
@@ -0,0 +1,71 @@
1
+ import * as THREE from 'three'
2
+ import { snowVertexShader, snowFragmentShader } from '../assets/shader/snow'
3
+
4
+ enum EWeatherType {
5
+ NORMAL = 'normal',
6
+ SNOW = 'snow'
7
+ }
8
+
9
+ const useWeather = () => {
10
+ const snowGroup = new THREE.Group()
11
+ snowGroup.name = 'weather_' + 'snow_' + new Date().getTime()
12
+ let globalConfig: ITHREEConfiguration | null = null
13
+
14
+ const initSnow = (config: ITHREEConfiguration) => {
15
+ const { width, height } = config.renderer!.getDrawingBufferSize(
16
+ new THREE.Vector2()
17
+ );
18
+
19
+ const shader = new THREE.ShaderMaterial({
20
+ vertexShader: snowVertexShader,
21
+ fragmentShader: snowFragmentShader,
22
+ uniforms: {
23
+ iResolution: { value: new THREE.Vector2(width, height) },
24
+ iTime: { value: 0 }
25
+ },
26
+ });
27
+
28
+ const plane = new THREE.Mesh(new THREE.PlaneGeometry(1000, 1000), shader);
29
+ plane.name = 'snowPlane'
30
+ plane.material.transparent = true
31
+ plane.onBeforeRender = () => {
32
+ shader.uniforms.iTime.value += 0.01;
33
+ };
34
+
35
+ config.control?.addEventListener('change', () => {
36
+ const plane = config.scene?.getObjectByName('snowPlane')
37
+ if (plane) {
38
+ plane.position.copy(config.camera!.position);
39
+ plane.rotation.copy(config.camera!.rotation);
40
+ plane.translateZ(-10);
41
+ }
42
+ })
43
+
44
+ snowGroup.add(plane)
45
+ }
46
+
47
+ const updateWeatherEffect = (type: EWeatherType, config: ITHREEConfiguration) => {
48
+ if (!globalConfig) {
49
+ globalConfig = config
50
+ initSnow(config)
51
+ }
52
+
53
+ switch (type) {
54
+ case EWeatherType.NORMAL:
55
+ config.scene!.remove(snowGroup)
56
+ break;
57
+ case EWeatherType.SNOW:
58
+ config.scene!.add(snowGroup)
59
+ break;
60
+ }
61
+ }
62
+
63
+ return {
64
+ updateWeatherEffect
65
+ }
66
+ }
67
+
68
+ export {
69
+ useWeather,
70
+ EWeatherType
71
+ }
@@ -11,6 +11,7 @@ export type TControl = {
11
11
  },
12
12
  minDistance: number;
13
13
  maxDistance: number;
14
+ enableDamping: boolean;
14
15
  minPolarAngle?: number;
15
16
  maxPolarAngle?: number;
16
17
  }
@@ -20,7 +21,7 @@ const createControl = (options: TControl) => {
20
21
  control.target.set(options.pos.x, options.pos.y, options.pos.z)
21
22
  control.minDistance = options.minDistance
22
23
  control.maxDistance = options.maxDistance
23
- control.enableDamping = true
24
+ control.enableDamping = options.enableDamping
24
25
  control.maxPolarAngle = options.maxPolarAngle ? options.maxPolarAngle : 3 * Math.PI / 8
25
26
  control.minPolarAngle = options.minPolarAngle ? options.minPolarAngle : 0
26
27
 
package/src/core/main.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import * as THREE from 'three'
2
2
  // import { AxesHelper, GridHelper, Line } from 'three'
3
- // import { TransformControlsGizmo, TransformControlsPlane } from 'three/examples/jsm/controls/TransformControls'
4
3
  import {
5
4
  createScene,
6
5
  createCamera,
@@ -36,6 +35,15 @@ interface ITHREEOptions {
36
35
  light: ILight;
37
36
  renderer: Omit<TRenderer, 'element'>;
38
37
  camera: TCamera;
38
+ optimization: {
39
+ motionBlur: {
40
+ enabled: Boolean;
41
+ value: number;
42
+ };
43
+ mouseMoveEvent: {
44
+ enabled: boolean;
45
+ };
46
+ }
39
47
  }
40
48
 
41
49
  interface ITHREEAction {
@@ -54,7 +62,7 @@ type TNeedlessParamskeys<T> = {
54
62
  * todo
55
63
  * 1.雾气设置
56
64
  * 2.设置是否开启动画
57
- * 3.提高帧数(移动时释放部分模型细节,切片加载,着色器)
65
+ * *3.提高帧数(已完成)
58
66
  * 4.是否加载hepler
59
67
  * 5.设置帧数(30帧)
60
68
  * 6.图层优化
@@ -87,6 +95,8 @@ const useThree = () => {
87
95
  }
88
96
  }
89
97
 
98
+ let mouseMoveEventEnabled = false
99
+
90
100
  const loadThree = (options: ITHREEOptions, succeededCallback: (config: ITHREEConfiguration) => void) => {
91
101
  threeConfiguration.scene = createScene()
92
102
  threeConfiguration.camera = createCamera(Object.assign({}, options.camera, {
@@ -109,9 +119,21 @@ const useThree = () => {
109
119
  threeConfiguration.light.ambient = createAmbientLight(options.light.ambientLight)
110
120
  threeConfiguration.light.directional = createDirectionalLight(options.light.directionalLight)
111
121
 
122
+ mouseMoveEventEnabled = options.optimization.mouseMoveEvent.enabled
123
+
112
124
  setScene(options)
113
125
  render()
114
126
 
127
+ if (options.optimization.motionBlur.enabled) {
128
+ options.element.addEventListener('mousedown', () => {
129
+ threeConfiguration.renderer!.setPixelRatio(window.devicePixelRatio * options.optimization.motionBlur.value)
130
+ })
131
+
132
+ options.element.addEventListener('mouseup', () => {
133
+ threeConfiguration.renderer!.setPixelRatio(window.devicePixelRatio)
134
+ })
135
+ }
136
+
115
137
  window.onresize = () => {
116
138
  threeConfiguration.camera!.aspect = window.innerWidth / window.innerHeight
117
139
  threeConfiguration.camera!.updateProjectionMatrix()
@@ -127,7 +149,7 @@ const useThree = () => {
127
149
  threeConfiguration.scene?.add(threeConfiguration.light.directional.light!)
128
150
  // threeConfiguration.scene?.add(threeConfiguration.light.directional.directionalLightHelper!)
129
151
  // if (options.showShadowCameraHelper) {
130
-
152
+ //todo
131
153
  // }
132
154
  }
133
155
 
@@ -275,7 +297,9 @@ const useThree = () => {
275
297
 
276
298
  const moveHandler = (e: MouseEvent) => {
277
299
  e.stopPropagation()
278
- mouseEvent(e, threeAction.movementHandler!)
300
+ if (mouseMoveEventEnabled) {
301
+ mouseEvent(e, threeAction.movementHandler!)
302
+ }
279
303
  }
280
304
 
281
305
  const mousedownHandler = (e: MouseEvent) => {
@@ -367,6 +391,8 @@ const useThree = () => {
367
391
  threeConfiguration.stats = null;
368
392
  window.removeEventListener('click', clickHandler, false)
369
393
  window.removeEventListener('mousemove', moveHandler, false)
394
+ window.removeEventListener('mousedown', mousedownHandler, false);
395
+ window.removeEventListener('mouseup', mouseupHandler, false);
370
396
  threeAction.animation = null
371
397
  threeAction.clickHandler = null
372
398
  threeAction.movementHandler = null
@@ -0,0 +1,5 @@
1
+ import { useZip } from './useZip'
2
+
3
+ export {
4
+ useZip
5
+ }
@@ -0,0 +1,66 @@
1
+ import JSZip from 'jszip';
2
+ import crypto from 'crypto-js';
3
+
4
+ const useZip = () => {
5
+ const dataURLtoBlob = (url: string) => {
6
+ let arr = url.split(','),
7
+ mime = arr[0].match(/:(.*?);/)![1],
8
+ bstr = atob(arr[1]),
9
+ n = bstr.length,
10
+ u8arr = new Uint8Array(n);
11
+ while (n--) {
12
+ u8arr[n] = bstr.charCodeAt(n);
13
+ }
14
+ return new Blob([u8arr], { type: mime });
15
+ }
16
+
17
+ const encryptByDES = (data: string, key: string) => {
18
+ const keyHex = crypto.enc.Utf8.parse(key);
19
+ const encrypted = crypto.AES.encrypt(data, keyHex, {
20
+ mode: crypto.mode.ECB,
21
+ padding: crypto.pad.Pkcs7
22
+ });
23
+ return encrypted.toString();
24
+ }
25
+
26
+ const decryptByDES = (data: string, key: string) => {
27
+ const keyHex = crypto.enc.Utf8.parse(key);
28
+ const decrypted = crypto.AES.decrypt({
29
+ ciphertext: crypto.enc.Base64.parse(data)
30
+ }, keyHex, {
31
+ mode: crypto.mode.ECB,
32
+ padding: crypto.pad.Pkcs7
33
+ });
34
+ return decrypted.toString(crypto.enc.Utf8);
35
+ }
36
+
37
+ const encrypt = (blob: Blob, id: string, cb: (blob: Blob) => void) => {
38
+ const reader = new FileReader()
39
+ reader.readAsDataURL(blob)
40
+ reader.onload = () => {
41
+ const encrypted = encryptByDES((reader.result as string), id)
42
+ cb(new Blob([encrypted]))
43
+ }
44
+ }
45
+
46
+ const decrypt = async (blob: Blob, id: string, cb: (url: string) => void) => {
47
+ const zip = new JSZip();
48
+ const file = await zip.loadAsync(blob)
49
+ for (let key in file.files) {
50
+ zip.file(key)!.async('text').then(content => {
51
+ const data = decryptByDES(content, id)
52
+ const url = URL.createObjectURL(dataURLtoBlob(data))
53
+ cb(url)
54
+ })
55
+ }
56
+ }
57
+
58
+ return {
59
+ decrypt,
60
+ encrypt
61
+ }
62
+ }
63
+
64
+ export {
65
+ useZip
66
+ }
package/tsconfig.json CHANGED
@@ -33,7 +33,7 @@
33
33
  "src/**/*.vue",
34
34
  "src/*.d.ts",
35
35
  "typings/*.d.ts"
36
- ],
36
+ , "../useIndexedDB.ts" ],
37
37
  "references": [
38
38
  {
39
39
  "path": "./tsconfig.node.json"
File without changes
File without changes
File without changes
File without changes