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.
- package/index.ts +5 -1
- package/package.json +2 -2
- package/src/assets/shader/snow.ts +48 -0
- package/src/common/useLoader.ts +10 -10
- package/src/common/useWeather.ts +71 -0
- package/src/core/basic/control.ts +2 -1
- package/src/core/main.ts +30 -4
- package/src/utils/index.ts +5 -0
- package/src/utils/useZip.ts +66 -0
- package/tsconfig.json +1 -1
- /package/src/{draco → assets/draco}/README.md +0 -0
- /package/src/{draco → assets/draco}/draco_decoder.js +0 -0
- /package/src/{draco → assets/draco}/draco_decoder.wasm +0 -0
- /package/src/{draco → assets/draco}/draco_encoder.js +0 -0
- /package/src/{draco → assets/draco}/draco_wasm_wrapper.js +0 -0
- /package/src/{draco → assets/draco}/gltf/draco_decoder.js +0 -0
- /package/src/{draco → assets/draco}/gltf/draco_decoder.wasm +0 -0
- /package/src/{draco → assets/draco}/gltf/draco_encoder.js +0 -0
- /package/src/{draco → assets/draco}/gltf/draco_wasm_wrapper.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/Tile.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/TileBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/TileInternal.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/TilesRendererBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/TilesRendererBase.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/Tileset.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/constants.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/constants.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/B3DMLoaderBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/B3DMLoaderBase.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/CMPTLoaderBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/CMPTLoaderBase.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/I3DMLoaderBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/I3DMLoaderBase.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/LoaderBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/LoaderBase.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/PNTSLoaderBase.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/loaders/PNTSLoaderBase.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/plugins/ImplicitTilingPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/base/traverseFunctions.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/gltf.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/index.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/index.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/README.md +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/base/ImplicitTilingPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/base/ImplicitTilingPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/base/SUBTREELoader.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/index.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/index.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/CesiumIonAuthPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/CesiumIonAuthPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/DebugTilesPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/DebugTilesPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GLTFExtensionsPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GLTFExtensionsPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleAttributionsManager.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleCloudAuthPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleCloudAuthPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/ReorientationPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/ReorientationPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/TileCompressionPlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/TileCompressionPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/UpdateOnChangePlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/UpdateOnChangePlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/fade/FadeManager.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/fade/TilesFadePlugin.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/fade/TilesFadePlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFCesiumRTCExtension.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFCesiumRTCExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFMeshFeaturesExtension.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFMeshFeaturesExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFStructuralMetadataExtension.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFStructuralMetadataExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/ClassProperty.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/MeshFeatures.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertyAttributeAccessor.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertySetAccessor.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertyTableAccessor.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/PropertyTextureAccessor.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/classes/StructuralMetadata.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/math/Matrix2.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/utilities/ClassPropertyHelpers.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/utilities/TexCoordUtilities.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/utilities/TextureReadUtility.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/objects/EllipsoidRegionHelper.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/plugins/three/objects/SphereHelper.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/README.md +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CameraControls.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CameraTransition.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CanvasDOMOverlay.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/CompassGizmo.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/TilesAttributionOverlay.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/components/TilesRenderer.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/index.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/utilities/useForceUpdate.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/utilities/useObjectDep.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/r3f/utilities/useOptions.jsx +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/DebugTilesRenderer.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/DebugTilesRenderer.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/TilesGroup.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/TilesGroup.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/TilesRenderer.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/TilesRenderer.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/controls/CameraTransitionManager.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/controls/EnvironmentControls.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/controls/GlobeControls.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/controls/PivotPointMesh.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/controls/PointerTracker.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/controls/utils.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/B3DMLoader.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/B3DMLoader.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/CMPTLoader.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/CMPTLoader.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/GLTFExtensionLoader.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/GLTFExtensionLoader.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/I3DMLoader.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/I3DMLoader.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/PNTSLoader.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/PNTSLoader.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFCesiumRTCExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFMeshFeaturesExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFStructuralMetadataExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/Ellipsoid.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/Ellipsoid.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/EllipsoidRegion.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/EllipsoidRegion.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/ExtendedFrustum.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoConstants.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoConstants.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoUtils.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/GeoUtils.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/OBB.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/math/TileBoundingVolume.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/plugins/CesiumIonAuthPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/plugins/DebugTilesPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/plugins/GoogleCloudAuthPlugin.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/raycastTraverse.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/CesiumIonTilesRenderer.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/CesiumIonTilesRenderer.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/GoogleTilesRenderer.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/renderers/GoogleTilesRenderer.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/three/utilities.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/BatchTable.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/BatchTable.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/BatchTableHierarchyExtension.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/FeatureTable.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/FeatureTable.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/LRUCache.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/LRUCache.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/PriorityQueue.d.ts +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/PriorityQueue.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/arrayToString.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/readMagicBytes.js +0 -0
- /package/src/{tileRenderer → assets/tileRenderer}/utilities/rgb565torgb.js +0 -0
- /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
|
+
"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
|
+
}
|
package/src/common/useLoader.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
130
|
-
|
|
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$/,
|
|
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 =
|
|
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
|
-
*
|
|
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
|
-
|
|
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,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
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/GoogleAttributionsManager.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFCesiumRTCExtension.d.ts
RENAMED
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFCesiumRTCExtension.js
RENAMED
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFMeshFeaturesExtension.d.ts
RENAMED
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/GLTFMeshFeaturesExtension.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/gltf/metadata/math/Matrix2.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/plugins/three/objects/EllipsoidRegionHelper.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/r3f/components/TilesAttributionOverlay.jsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFCesiumRTCExtension.js
RENAMED
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/three/loaders/gltf/GLTFMeshFeaturesExtension.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{tileRenderer → assets/tileRenderer}/three/renderers/CesiumIonTilesRenderer.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|