three-base 2.0.65 → 2.0.67

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 (83) hide show
  1. package/ApngTexture.d.ts +13 -13
  2. package/ApngTexture.js +61 -61
  3. package/ApngTextureManage.d.ts +18 -18
  4. package/ApngTextureManage.js +87 -87
  5. package/EventMesh.d.ts +18 -18
  6. package/EventMesh.js +59 -59
  7. package/ExtrudeMesh.d.ts +111 -111
  8. package/ExtrudeMesh.js +363 -363
  9. package/FPScontrol.d.ts +45 -45
  10. package/FPScontrol.js +171 -171
  11. package/Fire/Fire.d.ts +28 -28
  12. package/Fire/Fire.js +79 -79
  13. package/Fire/FireGromtry.d.ts +9 -9
  14. package/Fire/FireGromtry.js +40 -40
  15. package/Fire/FireMaterial.d.ts +28 -28
  16. package/Fire/FireMaterial.js +32 -32
  17. package/InstancedMeshBase.d.ts +24 -24
  18. package/InstancedMeshBase.js +190 -190
  19. package/KeyFrameAnimation.d.ts +25 -25
  20. package/KeyFrameAnimation.js +78 -78
  21. package/MeshBase.d.ts +32 -32
  22. package/MeshBase.js +172 -172
  23. package/Mirror.d.ts +25 -25
  24. package/Mirror.js +139 -139
  25. package/PlaneModal1/PlaneModal1.d.ts +31 -31
  26. package/PlaneModal1/PlaneModal1.js +105 -105
  27. package/PlaneModal1/index.d.ts +1 -1
  28. package/PlaneModal1/index.js +1 -1
  29. package/PlaneText.d.ts +44 -44
  30. package/PlaneText.js +30 -30
  31. package/PlaneWithHtml.d.ts +11 -11
  32. package/PlaneWithHtml.js +68 -68
  33. package/PointLight/PointLight.d.ts +13 -13
  34. package/PointLight/PointLight.js +64 -64
  35. package/PointLight/index.d.ts +1 -1
  36. package/PointLight/index.js +1 -1
  37. package/Sky/Sky.d.ts +13 -13
  38. package/Sky/Sky.js +28 -28
  39. package/Sky/index.d.ts +1 -1
  40. package/Sky/index.js +1 -1
  41. package/SpriteModal1/SpriteModal1.d.ts +30 -30
  42. package/SpriteModal1/SpriteModal1.js +110 -110
  43. package/SpriteModal1/index.d.ts +1 -1
  44. package/SpriteModal1/index.js +1 -1
  45. package/SpriteText.d.ts +45 -45
  46. package/SpriteText.js +163 -163
  47. package/SpriteText2.d.ts +47 -47
  48. package/SpriteText2.js +198 -198
  49. package/SpriteWithHtml.d.ts +7 -7
  50. package/SpriteWithHtml.js +49 -49
  51. package/Text3D/Text3D.d.ts +20 -20
  52. package/Text3D/Text3D.js +62 -62
  53. package/Text3D/fontController.d.ts +59 -59
  54. package/Text3D/fontController.js +200 -200
  55. package/Text3D/index.d.ts +1 -1
  56. package/Text3D/index.js +1 -1
  57. package/ThreeBase.d.ts +91 -91
  58. package/ThreeBase.js +611 -611
  59. package/ThreeBase.ts +2 -2
  60. package/ThreeMouse.d.ts +39 -39
  61. package/ThreeMouse.js +359 -359
  62. package/Transition.d.ts +40 -40
  63. package/Transition.js +207 -207
  64. package/index.d.ts +1 -1
  65. package/index.js +2 -2
  66. package/keyContorls.d.ts +25 -25
  67. package/keyContorls.js +98 -98
  68. package/package.json +1 -1
  69. package/pass/FullScreenQuad.d.ts +7 -7
  70. package/pass/FullScreenQuad.js +25 -25
  71. package/pass/glow_pass.d.ts +2 -2
  72. package/pass/glow_pass.js +236 -236
  73. package/pass/stroke_pass.d.ts +2 -2
  74. package/pass/stroke_pass.js +202 -202
  75. package/shaders/FXAAShaderMaterial.d.ts +3 -3
  76. package/shaders/FXAAShaderMaterial.js +21 -21
  77. package/shaders.d.ts +17 -17
  78. package/shaders.js +99 -99
  79. package/threeLoader.d.ts +26 -26
  80. package/threeLoader.js +189 -174
  81. package/threeLoader.ts +17 -1
  82. package/threeUtils.d.ts +47 -47
  83. package/threeUtils.js +266 -266
package/threeLoader.js CHANGED
@@ -1,174 +1,189 @@
1
- /*
2
- * @Author: xiaosihan
3
- * @Date: 2022-04-07 16:42:26
4
- * @Last Modified by: xiaosihan
5
- * @Last Modified time: 2023-02-07 11:11:48
6
- */
7
- import { CanvasTexture, DefaultLoadingManager, EventDispatcher, Object3D, RepeatWrapping, TextureLoader, VideoTexture } from "three";
8
- import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
9
- import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
10
- import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader";
11
- import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader";
12
- import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
13
- import { STLLoader } from "three/examples/jsm/loaders/STLLoader";
14
- import { USDZLoader } from "three/examples/jsm/loaders/USDZLoader";
15
- // 引入静态资源
16
- //@ts-ignore
17
- import dracoWasmWrapperJS from "./lib/draco/draco_wasm_wrapper.js?url";
18
- //@ts-ignore
19
- import dracoDecoderJS from "./lib/draco/draco_decoder.js?url";
20
- //@ts-ignore
21
- import dracoDecoderWASM from "./lib/draco/draco_decoder.wasm?url";
22
- import { get } from "lodash";
23
- // 加载器
24
- class ThreeLoader extends EventDispatcher {
25
- constructor() {
26
- super();
27
- DefaultLoadingManager.onStart = () => {
28
- this.onload = false;
29
- };
30
- // 有资源加载完成时通知渲染器
31
- DefaultLoadingManager.onProgress = (url, loaded, total) => {
32
- if (loaded < total) {
33
- this.dispatchEvent({ type: "loadding" });
34
- }
35
- else if (loaded === total) {
36
- this.dispatchEvent({ type: "onLoad" });
37
- }
38
- };
39
- DefaultLoadingManager.onLoad = () => {
40
- this.onload = true;
41
- };
42
- }
43
- // 各向异性
44
- anisotropy = 16;
45
- // 设置各向异性 由渲染器来调用并设置
46
- setAnisotropy(v) {
47
- this.anisotropy = v;
48
- }
49
- ;
50
- // 纹理对向缓存
51
- textureMap = new Map();
52
- // 纹理加载器
53
- textureLoader = new TextureLoader();
54
- // 获取地址对应的单例纹理对象
55
- getTexture(src) {
56
- if (src instanceof HTMLCanvasElement) {
57
- const canvasTexture = new CanvasTexture(src);
58
- canvasTexture.wrapS = canvasTexture.wrapT = RepeatWrapping;
59
- canvasTexture.anisotropy = this.anisotropy;
60
- // canvasTexture.colorSpace = SRGBColorSpace;
61
- return canvasTexture;
62
- }
63
- let texture = this.textureMap.get(src);
64
- if (!texture) {
65
- if (/\.(mp4|mov)$/i.test(src)) {
66
- const videoDom = document.createElement("video");
67
- videoDom.autoplay = true;
68
- videoDom.loop = true;
69
- videoDom.muted = true;
70
- videoDom.preload = "auto";
71
- videoDom.playsInline = true;
72
- videoDom.src = src;
73
- document.addEventListener("pointerup", () => {
74
- videoDom.pause();
75
- videoDom.play();
76
- });
77
- texture = new VideoTexture(videoDom);
78
- }
79
- else {
80
- texture = this.textureLoader.load(src, tex => {
81
- tex.image.crossOrigin = "anonymous";
82
- });
83
- }
84
- this.textureMap.set(src, texture);
85
- }
86
- texture.wrapS = texture.wrapT = RepeatWrapping;
87
- texture.anisotropy = this.anisotropy;
88
- // texture.colorSpace = SRGBColorSpace;
89
- return texture;
90
- }
91
- ;
92
- // fbx模型加载器
93
- fbxLoader = new FBXLoader();
94
- //obj 加载器
95
- objLoader = new OBJLoader();
96
- // stl 加载器
97
- stlLoader = new STLLoader();
98
- // 材质加载器
99
- mtlLoader = new MTLLoader();
100
- // gltf 加载器
101
- gltfLoader = (() => {
102
- const loader = new GLTFLoader();
103
- const dracoLoader = new class ThreeBaseDRACOLoader extends DRACOLoader {
104
- _loadLibrary(url, responseType) {
105
- //@ts-ignore
106
- let urlConf = (process.env.NODE_ENV === "development") ? {
107
- "draco_decoder.js": "draco_decoder.js",
108
- "draco_wasm_wrapper.js": "draco_wasm_wrapper.js",
109
- "draco_decoder.wasm": "draco_decoder.wasm"
110
- } : {
111
- "draco_decoder.js": dracoWasmWrapperJS,
112
- "draco_wasm_wrapper.js": dracoDecoderJS,
113
- "draco_decoder.wasm": dracoDecoderWASM
114
- };
115
- //@ts-ignore
116
- return super._loadLibrary(urlConf[url], responseType);
117
- }
118
- }();
119
- //@ts-ignore
120
- dracoLoader.setDecoderPath((process.env.NODE_ENV === "development") ? '/node_modules/three/examples/jsm/libs/draco/' : '');
121
- loader.setDRACOLoader(dracoLoader);
122
- return loader;
123
- })();
124
- //usdz加载器
125
- usdzLoader = new USDZLoader();
126
- /** 加载模型支持glb,fbx,stl,obj */
127
- async loadModel(url, filename = "") {
128
- // 获取后缀
129
- const suffix = (get((filename || url).match(/\.([^\.]+)$/), [1]) || "").toLowerCase();
130
- let Object3d = new Object3D();
131
- if (["fbx"].includes(suffix)) {
132
- await threeLoader.fbxLoader.loadAsync(url).then(res => {
133
- Object3d = res;
134
- }).catch(() => {
135
- console.error(`${url},加载失败`);
136
- });
137
- }
138
- else if (["gltf", "glb"].includes(suffix)) {
139
- await threeLoader.gltfLoader.loadAsync(url).then(res => {
140
- Object3d = res.scene;
141
- Object3d.animations = res.animations;
142
- }).catch(() => {
143
- console.error(`${url},加载失败`);
144
- });
145
- }
146
- else if (["usdz"].includes(suffix)) {
147
- await threeLoader.usdzLoader.loadAsync(url).then(res => {
148
- Object3d = res; // usdz 目前还不支持骨骼动画
149
- Object3d.animations = res.animations;
150
- Object3d.traverse(obj => {
151
- const mesh = obj;
152
- if (mesh.isMesh) {
153
- mesh.material.transparent = true;
154
- }
155
- });
156
- }).catch(() => {
157
- console.error(`${url},加载失败`);
158
- });
159
- }
160
- else {
161
- if (suffix) {
162
- console.error(`${suffix},不支持的格式`);
163
- }
164
- else {
165
- console.error(`${url},不支持的格式,请尝试使用 suffix 参数来指定一下格式`);
166
- }
167
- }
168
- return Object3d;
169
- }
170
- // 是否加载完成
171
- onload = true;
172
- }
173
- const threeLoader = new ThreeLoader();
174
- export default threeLoader;
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2022-04-07 16:42:26
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-02-07 11:11:48
6
+ */
7
+ import { CanvasTexture, DefaultLoadingManager, EventDispatcher, Mesh, MeshStandardMaterial, Object3D, RepeatWrapping, TextureLoader, VideoTexture } from "three";
8
+ import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
9
+ import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
10
+ import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader";
11
+ import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader";
12
+ import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
13
+ import { STLLoader } from "three/examples/jsm/loaders/STLLoader";
14
+ import { USDZLoader } from "three/examples/jsm/loaders/USDZLoader";
15
+ // import { IFCLoader } from 'web-ifc-three/dist/IFCLoader';
16
+ // import { IFCLoader } from 'web-ifc-three';
17
+ // import { IFCSPACE } from 'web-ifc';
18
+ // 引入静态资源
19
+ //@ts-ignore
20
+ import dracoWasmWrapperJS from "./lib/draco/draco_wasm_wrapper.js?url";
21
+ //@ts-ignore
22
+ import dracoDecoderJS from "./lib/draco/draco_decoder.js?url";
23
+ //@ts-ignore
24
+ import dracoDecoderWASM from "./lib/draco/draco_decoder.wasm?url";
25
+ import { get } from "lodash";
26
+ // 加载器
27
+ class ThreeLoader extends EventDispatcher {
28
+ constructor() {
29
+ super();
30
+ DefaultLoadingManager.onStart = () => {
31
+ this.onload = false;
32
+ };
33
+ // 有资源加载完成时通知渲染器
34
+ DefaultLoadingManager.onProgress = (url, loaded, total) => {
35
+ if (loaded < total) {
36
+ this.dispatchEvent({ type: "loadding" });
37
+ }
38
+ else if (loaded === total) {
39
+ this.dispatchEvent({ type: "onLoad" });
40
+ }
41
+ };
42
+ DefaultLoadingManager.onLoad = () => {
43
+ this.onload = true;
44
+ };
45
+ }
46
+ // 各向异性
47
+ anisotropy = 16;
48
+ // 设置各向异性 由渲染器来调用并设置
49
+ setAnisotropy(v) {
50
+ this.anisotropy = v;
51
+ }
52
+ ;
53
+ // 纹理对向缓存
54
+ textureMap = new Map();
55
+ // 纹理加载器
56
+ textureLoader = new TextureLoader();
57
+ // 获取地址对应的单例纹理对象
58
+ getTexture(src) {
59
+ if (src instanceof HTMLCanvasElement) {
60
+ const canvasTexture = new CanvasTexture(src);
61
+ canvasTexture.wrapS = canvasTexture.wrapT = RepeatWrapping;
62
+ canvasTexture.anisotropy = this.anisotropy;
63
+ // canvasTexture.colorSpace = SRGBColorSpace;
64
+ return canvasTexture;
65
+ }
66
+ let texture = this.textureMap.get(src);
67
+ if (!texture) {
68
+ if (/\.(mp4|mov)$/i.test(src)) {
69
+ const videoDom = document.createElement("video");
70
+ videoDom.autoplay = true;
71
+ videoDom.loop = true;
72
+ videoDom.muted = true;
73
+ videoDom.preload = "auto";
74
+ videoDom.playsInline = true;
75
+ videoDom.src = src;
76
+ document.addEventListener("pointerup", () => {
77
+ videoDom.pause();
78
+ videoDom.play();
79
+ });
80
+ texture = new VideoTexture(videoDom);
81
+ }
82
+ else {
83
+ texture = this.textureLoader.load(src, tex => {
84
+ tex.image.crossOrigin = "anonymous";
85
+ });
86
+ }
87
+ this.textureMap.set(src, texture);
88
+ }
89
+ texture.wrapS = texture.wrapT = RepeatWrapping;
90
+ texture.anisotropy = this.anisotropy;
91
+ // texture.colorSpace = SRGBColorSpace;
92
+ return texture;
93
+ }
94
+ ;
95
+ // fbx模型加载器
96
+ fbxLoader = new FBXLoader();
97
+ //obj 加载器
98
+ objLoader = new OBJLoader();
99
+ // stl 加载器
100
+ stlLoader = new STLLoader();
101
+ // 材质加载器
102
+ mtlLoader = new MTLLoader();
103
+ // gltf 加载器
104
+ gltfLoader = (() => {
105
+ const loader = new GLTFLoader();
106
+ const dracoLoader = new class ThreeBaseDRACOLoader extends DRACOLoader {
107
+ _loadLibrary(url, responseType) {
108
+ //@ts-ignore
109
+ let urlConf = (process.env.NODE_ENV === "development") ? {
110
+ "draco_decoder.js": "draco_decoder.js",
111
+ "draco_wasm_wrapper.js": "draco_wasm_wrapper.js",
112
+ "draco_decoder.wasm": "draco_decoder.wasm"
113
+ } : {
114
+ "draco_decoder.js": dracoWasmWrapperJS,
115
+ "draco_wasm_wrapper.js": dracoDecoderJS,
116
+ "draco_decoder.wasm": dracoDecoderWASM
117
+ };
118
+ //@ts-ignore
119
+ return super._loadLibrary(urlConf[url], responseType);
120
+ }
121
+ }();
122
+ //@ts-ignore
123
+ dracoLoader.setDecoderPath((process.env.NODE_ENV === "development") ? '/node_modules/three/examples/jsm/libs/draco/' : '');
124
+ loader.setDRACOLoader(dracoLoader);
125
+ return loader;
126
+ })();
127
+ //usdz加载器
128
+ usdzLoader = new USDZLoader();
129
+ /** 加载模型支持glb,fbx,stl,obj */
130
+ async loadModel(url, filename = "") {
131
+ // 获取后缀
132
+ const suffix = (get((filename || url).match(/\.([^\.]+)$/), [1]) || "").toLowerCase();
133
+ let Object3d = new Object3D();
134
+ if (["fbx"].includes(suffix)) {
135
+ await threeLoader.fbxLoader.loadAsync(url).then(res => {
136
+ Object3d = res;
137
+ }).catch(() => {
138
+ console.error(`${url},加载失败`);
139
+ });
140
+ }
141
+ else if (["gltf", "glb"].includes(suffix)) {
142
+ await threeLoader.gltfLoader.loadAsync(url).then(res => {
143
+ Object3d = res.scene;
144
+ Object3d.animations = res.animations;
145
+ }).catch(() => {
146
+ console.error(`${url},加载失败`);
147
+ });
148
+ }
149
+ else if (["stl"].includes(suffix)) {
150
+ await threeLoader.stlLoader.loadAsync(url).then(geometry => {
151
+ Object3d = new Mesh(geometry, new MeshStandardMaterial({
152
+ color: "#f1fbff",
153
+ metalness: 0.79,
154
+ roughness: 0.56,
155
+ envMapIntensity: 0.4
156
+ }));
157
+ }).catch(() => {
158
+ console.error(`${url},加载失败`);
159
+ });
160
+ }
161
+ else if (["usdz"].includes(suffix)) {
162
+ await threeLoader.usdzLoader.loadAsync(url).then(res => {
163
+ Object3d = res; // usdz 目前还不支持骨骼动画
164
+ Object3d.animations = res.animations;
165
+ Object3d.traverse(obj => {
166
+ const mesh = obj;
167
+ if (mesh.isMesh) {
168
+ mesh.material.transparent = true;
169
+ }
170
+ });
171
+ }).catch(() => {
172
+ console.error(`${url},加载失败`);
173
+ });
174
+ }
175
+ else {
176
+ if (suffix) {
177
+ console.error(`${suffix},不支持的格式`);
178
+ }
179
+ else {
180
+ console.error(`${url},不支持的格式,请尝试使用 suffix 参数来指定一下格式`);
181
+ }
182
+ }
183
+ return Object3d;
184
+ }
185
+ // 是否加载完成
186
+ onload = true;
187
+ }
188
+ const threeLoader = new ThreeLoader();
189
+ export default threeLoader;
package/threeLoader.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * @Last Modified time: 2023-02-07 11:11:48
6
6
  */
7
7
 
8
- import { CanvasTexture, DefaultLoadingManager, EventDispatcher, Material, Mesh, MeshLambertMaterial, Object3D, RepeatWrapping, SRGBColorSpace, Texture, TextureLoader, VideoTexture } from "three";
8
+ import { BoxGeometry, CanvasTexture, DefaultLoadingManager, EventDispatcher, Material, Mesh, MeshLambertMaterial, MeshStandardMaterial, Object3D, RepeatWrapping, SRGBColorSpace, Texture, TextureLoader, VideoTexture } from "three";
9
9
  import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
10
10
  import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
11
11
  import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader";
@@ -14,6 +14,10 @@ import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
14
14
  import { STLLoader } from "three/examples/jsm/loaders/STLLoader";
15
15
  import { USDZLoader } from "three/examples/jsm/loaders/USDZLoader";
16
16
 
17
+ // import { IFCLoader } from 'web-ifc-three/dist/IFCLoader';
18
+ // import { IFCLoader } from 'web-ifc-three';
19
+ // import { IFCSPACE } from 'web-ifc';
20
+
17
21
 
18
22
  // 引入静态资源
19
23
  //@ts-ignore
@@ -172,6 +176,18 @@ class ThreeLoader extends EventDispatcher {
172
176
  }).catch(() => {
173
177
  console.error(`${url},加载失败`);
174
178
  })
179
+
180
+ } else if (["stl"].includes(suffix)) {
181
+ await threeLoader.stlLoader.loadAsync(url).then(geometry => {
182
+ Object3d = new Mesh(geometry, new MeshStandardMaterial({
183
+ color: "#f1fbff",
184
+ metalness: 0.79,
185
+ roughness: 0.56,
186
+ envMapIntensity: 0.4
187
+ }));
188
+ }).catch(() => {
189
+ console.error(`${url},加载失败`);
190
+ })
175
191
  } else if (["usdz"].includes(suffix)) {
176
192
  await threeLoader.usdzLoader.loadAsync(url).then(res => {
177
193
  Object3d = res; // usdz 目前还不支持骨骼动画
package/threeUtils.d.ts CHANGED
@@ -1,47 +1,47 @@
1
- import { Box3, BufferGeometry, Clock, EventDispatcher, Object3D, Vector3 } from "three";
2
- declare class ThreeUtils extends EventDispatcher {
3
- constructor();
4
- isProd: boolean;
5
- isDev: boolean;
6
- _timeTemp: number;
7
- _accumulate: number;
8
- _box3: Box3;
9
- _size: Vector3;
10
- _center: Vector3;
11
- _clock: Clock;
12
- requestAnimationFrame(): void;
13
- private _keepZoomDoms;
14
- /**
15
- *计算需要保持比例的元素
16
- */
17
- private _computerDomZoom;
18
- /**
19
- * dom元素保持比例
20
- */
21
- keepZoom(dom: HTMLElement | null, width?: number, height?: number): void;
22
- workList: Array<() => void>;
23
- clock: Clock;
24
- /**
25
- * @param {() => void} [callback]
26
- * @param {boolean} [first=true] 需要优先执行
27
- */
28
- addWork(work?: () => void, first?: boolean): void;
29
- /**
30
- *判断一个元素是否在页面上
31
- */
32
- inDocument(dom: ParentNode | null): boolean;
33
- getCenter(object3d: Object3D | BufferGeometry): Vector3;
34
- getSize(object3d: Object3D | BufferGeometry): Vector3;
35
- alignBottom(object3d: Object3D | BufferGeometry, y?: number): void;
36
- centerObject3D(object3d: Object3D | BufferGeometry): void;
37
- center(object3d: Object3D | BufferGeometry): void;
38
- scaleTo(object3d: Object3D | BufferGeometry, size?: number, key?: Array<"x" | "y" | "z">): void;
39
- applyAllTranstion(object3d: Object3D): void;
40
- exportGLB(input: Object3D, fileName?: string): void;
41
- exportUsdz(): void;
42
- getVolume(geometry: BufferGeometry): number;
43
- signedVolumeOfTriangle(p1: Vector3, p2: Vector3, p3: Vector3): number;
44
- dipose(object3d: Object3D): void;
45
- }
46
- declare const threeUtils: ThreeUtils;
47
- export default threeUtils;
1
+ import { Box3, BufferGeometry, Clock, EventDispatcher, Object3D, Vector3 } from "three";
2
+ declare class ThreeUtils extends EventDispatcher {
3
+ constructor();
4
+ isProd: boolean;
5
+ isDev: boolean;
6
+ _timeTemp: number;
7
+ _accumulate: number;
8
+ _box3: Box3;
9
+ _size: Vector3;
10
+ _center: Vector3;
11
+ _clock: Clock;
12
+ requestAnimationFrame(): void;
13
+ private _keepZoomDoms;
14
+ /**
15
+ *计算需要保持比例的元素
16
+ */
17
+ private _computerDomZoom;
18
+ /**
19
+ * dom元素保持比例
20
+ */
21
+ keepZoom(dom: HTMLElement | null, width?: number, height?: number): void;
22
+ workList: Array<() => void>;
23
+ clock: Clock;
24
+ /**
25
+ * @param {() => void} [callback]
26
+ * @param {boolean} [first=true] 需要优先执行
27
+ */
28
+ addWork(work?: () => void, first?: boolean): void;
29
+ /**
30
+ *判断一个元素是否在页面上
31
+ */
32
+ inDocument(dom: ParentNode | null): boolean;
33
+ getCenter(object3d: Object3D | BufferGeometry): Vector3;
34
+ getSize(object3d: Object3D | BufferGeometry): Vector3;
35
+ alignBottom(object3d: Object3D | BufferGeometry, y?: number): void;
36
+ centerObject3D(object3d: Object3D | BufferGeometry): void;
37
+ center(object3d: Object3D | BufferGeometry): void;
38
+ scaleTo(object3d: Object3D | BufferGeometry, size?: number, key?: Array<"x" | "y" | "z">): void;
39
+ applyAllTranstion(object3d: Object3D): void;
40
+ exportGLB(input: Object3D, fileName?: string): void;
41
+ exportUsdz(): void;
42
+ getVolume(geometry: BufferGeometry): number;
43
+ signedVolumeOfTriangle(p1: Vector3, p2: Vector3, p3: Vector3): number;
44
+ dipose(object3d: Object3D): void;
45
+ }
46
+ declare const threeUtils: ThreeUtils;
47
+ export default threeUtils;