easy-three-utils 0.0.31 → 0.0.33
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/package.json +1 -1
- package/src/common/useLoader.ts +11 -11
- package/src/common/useWeather.ts +3 -3
- 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/README.md +0 -32
- package/src/draco/draco_decoder.js +0 -34
- package/src/draco/draco_decoder.wasm +0 -0
- package/src/draco/draco_encoder.js +0 -33
- package/src/draco/draco_wasm_wrapper.js +0 -117
- package/src/draco/gltf/draco_decoder.js +0 -33
- package/src/draco/gltf/draco_decoder.wasm +0 -0
- package/src/draco/gltf/draco_encoder.js +0 -33
- package/src/draco/gltf/draco_wasm_wrapper.js +0 -116
- /package/src/{shader → assets/shader}/snow.ts +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/package.json
CHANGED
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 {
|
|
@@ -29,7 +29,7 @@ const threeLoaders: IThreeLoaders = {
|
|
|
29
29
|
TextureLoader: null
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
const useLoader = () => {
|
|
32
|
+
const useLoader = (decoderPath: string) => {
|
|
33
33
|
const useTextureLoader = (url: string, callback?: (texture: THREE.Texture) => void) => {
|
|
34
34
|
threeLoaders.TextureLoader = new THREE.TextureLoader()
|
|
35
35
|
const texture = threeLoaders.TextureLoader.load(url, (texture) => {
|
|
@@ -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(
|
|
71
|
+
threeLoaders.DRACOLoader.setDecoderPath(decoderPath)
|
|
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() {
|
package/src/common/useWeather.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as THREE from 'three'
|
|
2
|
-
import { snowVertexShader, snowFragmentShader } from '../shader/snow'
|
|
2
|
+
import { snowVertexShader, snowFragmentShader } from '../assets/shader/snow'
|
|
3
3
|
|
|
4
4
|
enum EWeatherType {
|
|
5
5
|
NORMAL = 'normal',
|
|
@@ -52,10 +52,10 @@ const useWeather = () => {
|
|
|
52
52
|
|
|
53
53
|
switch (type) {
|
|
54
54
|
case EWeatherType.NORMAL:
|
|
55
|
-
config.scene
|
|
55
|
+
config.scene!.remove(snowGroup)
|
|
56
56
|
break;
|
|
57
57
|
case EWeatherType.SNOW:
|
|
58
|
-
config.scene
|
|
58
|
+
config.scene!.add(snowGroup)
|
|
59
59
|
break;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -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: string) => {
|
|
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
package/src/draco/README.md
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Draco 3D Data Compression
|
|
2
|
-
|
|
3
|
-
Draco is an open-source library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.
|
|
4
|
-
|
|
5
|
-
[Website](https://google.github.io/draco/) | [GitHub](https://github.com/google/draco)
|
|
6
|
-
|
|
7
|
-
## Contents
|
|
8
|
-
|
|
9
|
-
This folder contains three utilities:
|
|
10
|
-
|
|
11
|
-
* `draco_decoder.js` — Emscripten-compiled decoder, compatible with any modern browser.
|
|
12
|
-
* `draco_decoder.wasm` — WebAssembly decoder, compatible with newer browsers and devices.
|
|
13
|
-
* `draco_wasm_wrapper.js` — JavaScript wrapper for the WASM decoder.
|
|
14
|
-
|
|
15
|
-
Each file is provided in two variations:
|
|
16
|
-
|
|
17
|
-
* **Default:** Latest stable builds, tracking the project's [master branch](https://github.com/google/draco).
|
|
18
|
-
* **glTF:** Builds targeted by the [glTF mesh compression extension](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression), tracking the [corresponding Draco branch](https://github.com/google/draco/tree/gltf_2.0_draco_extension).
|
|
19
|
-
|
|
20
|
-
Either variation may be used with `DRACOLoader`:
|
|
21
|
-
|
|
22
|
-
```js
|
|
23
|
-
var dracoLoader = new DRACOLoader();
|
|
24
|
-
dracoLoader.setDecoderPath('path/to/decoders/');
|
|
25
|
-
dracoLoader.setDecoderConfig({type: 'js'}); // (Optional) Override detection of WASM support.
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Further [documentation on GitHub](https://github.com/google/draco/tree/master/javascript/example#static-loading-javascript-decoder).
|
|
29
|
-
|
|
30
|
-
## License
|
|
31
|
-
|
|
32
|
-
[Apache License 2.0](https://github.com/google/draco/blob/master/LICENSE)
|