three-base 2.0.20 → 2.0.22

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/ApngTexture.ts CHANGED
@@ -86,6 +86,6 @@ export default class ApngTexture extends CanvasTexture {
86
86
  }
87
87
 
88
88
  // 定时更新时间戳
89
- threeUtils.addEventListener("requestAnimationFrame", (e) => {
89
+ threeUtils.addEventListener("requestAnimationFrame", (e: any) => {
90
90
  ApngTexture.TimeTemp = e.timeTemp;
91
91
  });
@@ -18,7 +18,7 @@ class apngTextureManage {
18
18
  // 初始化定时更新时间戳
19
19
  if (apngTextureManage.isInit) {
20
20
  apngTextureManage.isInit = false;
21
- threeUtils.addEventListener("requestAnimationFrame5000", (e) => {
21
+ threeUtils.addEventListener("requestAnimationFrame5000", (e: any) => {
22
22
  apngTextureManage.TimeTemp = e.timeTemp;
23
23
  });
24
24
  }
package/ExtrudeMesh.ts CHANGED
@@ -564,7 +564,7 @@ export default class ExtrudeMesh extends Mesh<BufferGeometry, Material> {
564
564
  this.geometry.dispose();
565
565
  this.geometry = geometry;
566
566
 
567
- this.dispatchEvent({ type: "loaded" });
567
+ this.dispatchEvent({ type: "loaded" } as never);
568
568
  }
569
569
 
570
570
 
@@ -109,7 +109,7 @@ export default class KeyframeAnimation extends Object3D {
109
109
  (endKeyframe.rotation.z - startKeyframe.rotation.z) * progress + startKeyframe.rotation.z,
110
110
  );
111
111
 
112
- this.dispatchEvent({ type: "update" });
112
+ this.dispatchEvent({ type: "update" } as never);
113
113
  }
114
114
 
115
115
  //更新关键帧的实例矩阵
@@ -16,7 +16,7 @@ export default class PlaneModal1 extends Mesh {
16
16
  static img: HTMLImageElement;
17
17
  canvas: HTMLCanvasElement;
18
18
  context: CanvasRenderingContext2D;
19
- texture: import("three").CanvasTexture | import("three").Texture;
19
+ texture: import("three").Texture;
20
20
  _config: {
21
21
  size: number;
22
22
  title: string;
@@ -144,7 +144,7 @@ export default class PlaneModal1 extends Mesh {
144
144
 
145
145
  this.texture.needsUpdate = true;
146
146
 
147
- this.dispatchEvent({ type: "loaded" });
147
+ this.dispatchEvent({ type: "loaded" } as never);
148
148
  }
149
149
 
150
150
 
package/PlaneText.d.ts CHANGED
@@ -22,16 +22,23 @@ export default class PlaneText extends Mesh {
22
22
  spriteText: SpriteText;
23
23
  material: MeshBasicMaterial;
24
24
  set(parame: Props): void;
25
- get(prop: keyof SpriteText): string | number | boolean | ((event: import("three").Event) => void) | Vector3 | import("three").Object3D<import("three").Event> | import("three").BufferGeometry<import("three").NormalBufferAttributes> | ((force?: boolean) => void) | import("three").Object3D<import("three").Event>[] | HTMLCanvasElement | import("three").Vector2 | import("three").Material | import("three").Matrix4 | import("three").Quaternion | import("three").Euler | ((callback: (object: import("three").Object3D<import("three").Event>) => any) => void) | import("three").Matrix3 | import("three").Layers | import("three").AnimationClip[] | {
26
- [key: string]: any;
27
- } | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group) => void) | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group) => void) | ((matrix: import("three").Matrix4) => void) | ((axis: Vector3, angle: number) => void) | ((euler: import("three").Euler) => void) | ((m: import("three").Matrix4) => void) | ((q: import("three").Quaternion) => void) | ((vector: Vector3) => Vector3) | ((vector: Vector3) => Vector3) | {
25
+ get(prop: keyof SpriteText): string | number | boolean | Vector3 | import("three").Object3D<import("three").Object3DEventMap> | import("three").BufferGeometry<import("three").NormalBufferAttributes> | ((force?: boolean) => void) | import("three").Object3D<import("three").Object3DEventMap>[] | HTMLCanvasElement | import("three").Vector2 | import("three").Material | Record<string, any> | import("three").Matrix4 | import("three").Quaternion | (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | import("three").Euler | ((callback: (object: import("three").Object3D<import("three").Object3DEventMap>) => any) => void) | import("three").Matrix3 | import("three").Layers | import("three").AnimationClip[] | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void) | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, depthMaterial: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void) | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void) | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry<import("three").NormalBufferAttributes>, material: import("three").Material, group: import("three").Group<import("three").Object3DEventMap>) => void) | ((matrix: import("three").Matrix4) => void) | ((axis: Vector3, angle: number) => void) | ((euler: import("three").Euler) => void) | ((m: import("three").Matrix4) => void) | ((q: import("three").Quaternion) => void) | ((vector: Vector3) => Vector3) | ((vector: Vector3) => Vector3) | {
28
26
  (vector: Vector3): void;
29
27
  (x: number, y: number, z: number): void;
30
- } | ((id: number) => import("three").Object3D<import("three").Event>) | ((name: string) => import("three").Object3D<import("three").Event>) | ((name: string, value: any) => import("three").Object3D<import("three").Event>) | ((name: string, value: any) => import("three").Object3D<import("three").Event>[]) | ((target: Vector3) => Vector3) | ((target: import("three").Quaternion) => import("three").Quaternion) | ((target: Vector3) => Vector3) | ((target: Vector3) => Vector3) | ((raycaster: import("three").Raycaster, intersects: import("three").Intersection<import("three").Object3D<import("three").Event>>[]) => void) | ((callback: (object: import("three").Object3D<import("three").Event>) => any) => void) | ((callback: (object: import("three").Object3D<import("three").Event>) => any) => void) | (() => void) | ((updateParents: boolean, updateChildren: boolean) => void) | ((meta?: {
28
+ } | ((id: number) => import("three").Object3D<import("three").Object3DEventMap>) | ((name: string) => import("three").Object3D<import("three").Object3DEventMap>) | ((name: string, value: any) => import("three").Object3D<import("three").Object3DEventMap>) | ((name: string, value: any, optionalTarget?: import("three").Object3D<import("three").Object3DEventMap>[]) => import("three").Object3D<import("three").Object3DEventMap>[]) | ((target: Vector3) => Vector3) | ((target: import("three").Quaternion) => import("three").Quaternion) | ((target: Vector3) => Vector3) | ((target: Vector3) => Vector3) | ((raycaster: import("three").Raycaster, intersects: import("three").Intersection<import("three").Object3D<import("three").Object3DEventMap>>[]) => void) | ((callback: (object: import("three").Object3D<import("three").Object3DEventMap>) => any) => void) | ((callback: (object: import("three").Object3D<import("three").Object3DEventMap>) => any) => void) | (() => void) | ((updateParents: boolean, updateChildren: boolean) => void) | ((meta?: {
31
29
  geometries: any;
32
30
  materials: any;
33
31
  textures: any;
34
32
  images: any;
35
- }) => any) | import("three").SpriteMaterial | ((source: SpriteText, recursive?: boolean) => SpriteText) | (() => void) | ((quaternion: import("three").Quaternion) => SpriteText) | ((axis: Vector3, angle: number) => SpriteText) | ((axis: Vector3, angle: number) => SpriteText) | ((angle: number) => SpriteText) | ((angle: number) => SpriteText) | ((angle: number) => SpriteText) | ((axis: Vector3, distance: number) => SpriteText) | ((distance: number) => SpriteText) | ((distance: number) => SpriteText) | ((distance: number) => SpriteText) | ((...object: import("three").Object3D<import("three").Event>[]) => SpriteText) | ((...object: import("three").Object3D<import("three").Event>[]) => SpriteText) | (() => SpriteText) | (() => SpriteText) | ((object: import("three").Object3D<import("three").Event>) => SpriteText) | ((recursive?: boolean) => SpriteText) | (<T extends string>(type: T, listener: import("three").EventListener<import("three").Event, T, SpriteText>) => void) | (<T_1 extends string>(type: T_1, listener: import("three").EventListener<import("three").Event, T_1, SpriteText>) => boolean) | (<T_2 extends string>(type: T_2, listener: import("three").EventListener<import("three").Event, T_2, SpriteText>) => void);
33
+ }) => any) | import("three").SpriteMaterial | ((source: SpriteText, recursive?: boolean) => SpriteText) | (() => void) | ((quaternion: import("three").Quaternion) => SpriteText) | ((axis: Vector3, angle: number) => SpriteText) | ((axis: Vector3, angle: number) => SpriteText) | ((angle: number) => SpriteText) | ((angle: number) => SpriteText) | ((angle: number) => SpriteText) | ((axis: Vector3, distance: number) => SpriteText) | ((distance: number) => SpriteText) | ((distance: number) => SpriteText) | ((distance: number) => SpriteText) | ((...object: import("three").Object3D<import("three").Object3DEventMap>[]) => SpriteText) | ((...object: import("three").Object3D<import("three").Object3DEventMap>[]) => SpriteText) | (() => SpriteText) | (() => SpriteText) | ((object: import("three").Object3D<import("three").Object3DEventMap>) => SpriteText) | ((recursive?: boolean) => SpriteText) | {
34
+ <T_1 extends keyof import("three").Object3DEventMap>(type: T_1, listener: import("three").EventListener<import("three").Object3DEventMap[T_1], T_1, SpriteText>): void;
35
+ <T_2 extends string>(type: T_2, listener: import("three").EventListener<{}, T_2, SpriteText>): void;
36
+ } | {
37
+ <T_3 extends keyof import("three").Object3DEventMap>(type: T_3, listener: import("three").EventListener<import("three").Object3DEventMap[T_3], T_3, SpriteText>): boolean;
38
+ <T_4 extends string>(type: T_4, listener: import("three").EventListener<{}, T_4, SpriteText>): boolean;
39
+ } | {
40
+ <T_5 extends keyof import("three").Object3DEventMap>(type: T_5, listener: import("three").EventListener<import("three").Object3DEventMap[T_5], T_5, SpriteText>): void;
41
+ <T_6 extends string>(type: T_6, listener: import("three").EventListener<{}, T_6, SpriteText>): void;
42
+ };
36
43
  }
37
44
  export {};
package/PlaneWithHtml.ts CHANGED
@@ -78,7 +78,7 @@ export default class PlaneWithHtml extends Mesh {
78
78
 
79
79
  });
80
80
 
81
- this.dispatchEvent({ type: "loaded" });
81
+ this.dispatchEvent({ type: "loaded" } as never);
82
82
  }
83
83
 
84
84
 
@@ -1,4 +1,4 @@
1
- import { Sprite, CanvasTexture, Raycaster, Intersection } from "three";
1
+ import { Sprite, Raycaster, Intersection } from "three";
2
2
  export type SpritModal1Config = {
3
3
  size?: number;
4
4
  title?: string;
@@ -14,7 +14,7 @@ export default class SpritModal1 extends Sprite {
14
14
  static img: HTMLImageElement;
15
15
  canvas: HTMLCanvasElement;
16
16
  context: CanvasRenderingContext2D;
17
- texture: CanvasTexture | import("three").Texture;
17
+ texture: import("three").Texture;
18
18
  _config: {
19
19
  size: number;
20
20
  title: string;
@@ -141,7 +141,7 @@ export default class SpritModal1 extends Sprite {
141
141
 
142
142
  this.texture.needsUpdate = true;
143
143
 
144
- this.dispatchEvent({ type: "loaded" });
144
+ this.dispatchEvent({ type: "loaded" } as never);
145
145
  }
146
146
 
147
147
  //鼠标拾取计算
package/SpriteWithHtml.ts CHANGED
@@ -55,7 +55,7 @@ export default class SpriteWithHtml extends Sprite {
55
55
 
56
56
  });
57
57
 
58
- this.dispatchEvent({ type: "loaded" });
58
+ this.dispatchEvent({ type: "loaded" } as never);
59
59
  }
60
60
 
61
61
 
package/Text3D/Text3D.ts CHANGED
@@ -81,7 +81,7 @@ export default class Text3D extends Mesh {
81
81
  bevelSegments: this._config.bevelSegments,//斜角分段
82
82
  });
83
83
  this.geometry.center();
84
- this.dispatchEvent({ type: "loaded" });
84
+ this.dispatchEvent({ type: "loaded" } as never);
85
85
  }
86
86
  })
87
87
 
package/ThreeBase.js CHANGED
@@ -5,16 +5,16 @@
5
5
  * @Last Modified time: 2023-05-23 23:54:13
6
6
  */
7
7
  import { round } from "lodash";
8
- import { AxesHelper, DepthFormat, DepthTexture, EventDispatcher, GridHelper, LinearFilter, Mesh, MOUSE, NoBlending, NormalBlending, PerspectiveCamera, RGBAFormat, Scene, TOUCH, UnsignedShortType, Vector2, Vector3, WebGLRenderer, WebGLRenderTarget } from "three";
8
+ import { AxesHelper, DepthFormat, DepthTexture, EventDispatcher, GridHelper, LinearFilter, Mesh, MOUSE, NoBlending, NoColorSpace, NormalBlending, PerspectiveCamera, RGBAFormat, Scene, TOUCH, UnsignedShortType, Vector2, Vector3, WebGLRenderer, WebGLRenderTarget } from "three";
9
9
  import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
10
10
  import { generateUUID } from "three/src/math/MathUtils";
11
+ import glow_pass from "./pass/glow_pass";
12
+ import stroke_pass from "./pass/stroke_pass";
11
13
  import { clearShader, coptyShader, fullScreenMesh, gaussBlurShader, strokeShader } from "./shaders";
12
14
  import threeLoader from "./threeLoader";
13
15
  import ThreeMouse from "./ThreeMouse";
14
16
  import threeUtils from "./threeUtils";
15
17
  import Transition from "./Transition";
16
- import stroke_pass from "./pass/stroke_pass";
17
- import glow_pass from "./pass/glow_pass";
18
18
  // three.js 的基础对象
19
19
  export default class ThreeBase extends EventDispatcher {
20
20
  constructor() {
@@ -64,6 +64,7 @@ export default class ThreeBase extends EventDispatcher {
64
64
  });
65
65
  renderer.domElement.id = generateUUID();
66
66
  renderer.localClippingEnabled = true;
67
+ renderer.outputColorSpace = NoColorSpace;
67
68
  renderer.setPixelRatio(window.devicePixelRatio);
68
69
  renderer.autoClear = false;
69
70
  renderer.clear();
@@ -95,9 +96,6 @@ export default class ThreeBase extends EventDispatcher {
95
96
  div.style.overflow = "hidden";
96
97
  div.innerHTML = "";
97
98
  div.append(this.renderer.domElement);
98
- // this.renderer.forceContextLoss();
99
- // await new Promise(resolve => requestAnimationFrame(resolve));
100
- // await new Promise(resolve => requestAnimationFrame(resolve));
101
99
  this.renderer.forceContextRestore();
102
100
  this.renderer.domElement.style.opacity = "1";
103
101
  this.setSize(div.clientWidth, div.clientHeight);
@@ -114,7 +112,11 @@ export default class ThreeBase extends EventDispatcher {
114
112
  }
115
113
  this.renderer.setPixelRatio(window.devicePixelRatio);
116
114
  this.renderer.setSize(width, height);
115
+ // 设置帧缓存区的尺寸
117
116
  this.baseRenderTarget.setSize(width * window.devicePixelRatio, height * window.devicePixelRatio);
117
+ // 设置深度纹理的尺寸
118
+ this.baseDepthTexture.image.width = width * window.devicePixelRatio;
119
+ this.baseDepthTexture.image.height = height * window.devicePixelRatio;
118
120
  this.size.set(width, height);
119
121
  // 渲染场景
120
122
  // this.renderer.clear();
@@ -142,11 +144,11 @@ export default class ThreeBase extends EventDispatcher {
142
144
  const controlsPosition = new Transition({ x: 100, y: 100, z: 100 });
143
145
  controlsPosition.setDuration(1000);
144
146
  controlsPosition.onChange(({ x, y, z }) => {
145
- const distance = this.controlsDistance.get("distance");
146
- this.camera.position.set(x + 0.01, y, z + 0.01)
147
- .sub(this.controls.target)
148
- .setLength(distance)
149
- .add(this.controls.target);
147
+ // const distance = this.controlsDistance.get("distance");
148
+ this.camera.position.set(x + 0.01, y, z + 0.01);
149
+ // .sub(this.controls.target)
150
+ // .setLength(distance)
151
+ // .add(this.controls.target);
150
152
  // // 创建初始方向向量
151
153
  // const directionVecA = new THREE.Vector3(1, 0, 0); // 需要旋转的初始方向向量
152
154
  // const referenceVecB = new THREE.Vector3(0, 1, 0); // 参考方向向量,用于确定旋转轴
@@ -303,14 +305,15 @@ export default class ThreeBase extends EventDispatcher {
303
305
  }
304
306
  // 渲染场景
305
307
  this.dispatchEvent({ type: "beforeRender" });
306
- // this.renderer.setRenderTarget(this.baseRenderTarget);
308
+ // 把基础场景渲染到 帧缓冲区 在后期通道中会用到
309
+ this.renderer.setRenderTarget(this.baseRenderTarget);
307
310
  this.renderer.clear();
308
311
  this.renderer.render(this.scene, this.camera);
309
- // this.renderer.setRenderTarget(null);
310
- // this.renderer.clear();
311
- //TODO 渲染了2次, 还有优化空间
312
+ // 清空主画布
313
+ this.renderer.setRenderTarget(null);
314
+ this.renderer.clear();
312
315
  // this.renderer.setScissorTest(false);
313
- // this.renderRendererTarget(this.baseRenderTarget);
316
+ this.renderRendererTarget(this.baseRenderTarget);
314
317
  // this.renderer.setScissorTest(true);
315
318
  // this.renderer.setScissor(0, 0, 800, 1000);
316
319
  // this.renderer.render(this.scene, this.camera);
@@ -442,7 +445,7 @@ export default class ThreeBase extends EventDispatcher {
442
445
  this.renderTargetgaussBlur(renderTarget, 1, 1);
443
446
  this.renderTargetgaussBlur(renderTarget, 1, 1);
444
447
  }
445
- // 渲染 渲染目标
448
+ // TODO 需要做康锯齿处理 渲染 渲染目标
446
449
  renderRendererTarget(renderTarget, alpha = false) {
447
450
  coptyShader.uniforms.map.value = renderTarget.texture;
448
451
  coptyShader.uniforms.opacity.value = 1.0;
package/ThreeBase.ts CHANGED
@@ -6,16 +6,16 @@
6
6
  */
7
7
 
8
8
  import { round } from "lodash";
9
- import { AxesHelper, BufferGeometry, Camera, DepthFormat, DepthTexture, DisplayP3ColorSpace, EventDispatcher, GridHelper, LinearEncoding, LinearFilter, LinearSRGBColorSpace, Mesh, MeshBasicMaterial, MOUSE, NoBlending, NoColorSpace, NormalBlending, Object3D, PerspectiveCamera, RGBAFormat, Scene, SRGBColorSpace, sRGBEncoding, Texture, TOUCH, UnsignedShortType, Vector2, Vector3, WebGLRenderer, WebGLRenderTarget } from "three";
9
+ import { AxesHelper, BufferGeometry, Camera, DepthFormat, DepthTexture, DisplayP3ColorSpace, EventDispatcher, GridHelper, LinearDisplayP3ColorSpace, LinearFilter, LinearSRGBColorSpace, Mesh, MeshBasicMaterial, MOUSE, NoBlending, NoColorSpace, NormalBlending, Object3D, PerspectiveCamera, RGBAFormat, Scene, SRGBColorSpace, Texture, TOUCH, UnsignedShortType, Vector2, Vector3, WebGLRenderer, WebGLRenderTarget } from "three";
10
10
  import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
11
11
  import { generateUUID } from "three/src/math/MathUtils";
12
+ import glow_pass from "./pass/glow_pass";
13
+ import stroke_pass from "./pass/stroke_pass";
12
14
  import { clearShader, coptyShader, fullScreenMesh, gaussBlurShader, strokeShader } from "./shaders";
13
15
  import threeLoader from "./threeLoader";
14
16
  import ThreeMouse from "./ThreeMouse";
15
17
  import threeUtils from "./threeUtils";
16
18
  import Transition from "./Transition";
17
- import stroke_pass from "./pass/stroke_pass";
18
- import glow_pass from "./pass/glow_pass";
19
19
 
20
20
  // three.js 的基础对象
21
21
  export default class ThreeBase extends EventDispatcher {
@@ -76,6 +76,7 @@ export default class ThreeBase extends EventDispatcher {
76
76
 
77
77
  renderer.domElement.id = generateUUID();
78
78
  renderer.localClippingEnabled = true;
79
+ renderer.outputColorSpace = NoColorSpace;
79
80
  renderer.setPixelRatio(window.devicePixelRatio);
80
81
  renderer.autoClear = false;
81
82
  renderer.clear();
@@ -113,9 +114,6 @@ export default class ThreeBase extends EventDispatcher {
113
114
  div.innerHTML = "";
114
115
  div.append(this.renderer.domElement);
115
116
 
116
- // this.renderer.forceContextLoss();
117
- // await new Promise(resolve => requestAnimationFrame(resolve));
118
- // await new Promise(resolve => requestAnimationFrame(resolve));
119
117
  this.renderer.forceContextRestore();
120
118
  this.renderer.domElement.style.opacity = "1";
121
119
 
@@ -137,8 +135,13 @@ export default class ThreeBase extends EventDispatcher {
137
135
  this.renderer.setPixelRatio(window.devicePixelRatio);
138
136
  this.renderer.setSize(width, height);
139
137
 
138
+ // 设置帧缓存区的尺寸
140
139
  this.baseRenderTarget.setSize(width * window.devicePixelRatio, height * window.devicePixelRatio);
141
140
 
141
+ // 设置深度纹理的尺寸
142
+ this.baseDepthTexture.image.width = width * window.devicePixelRatio;
143
+ this.baseDepthTexture.image.height = height * window.devicePixelRatio;
144
+
142
145
  this.size.set(width, height);
143
146
  // 渲染场景
144
147
  // this.renderer.clear();
@@ -169,11 +172,11 @@ export default class ThreeBase extends EventDispatcher {
169
172
  const controlsPosition = new Transition({ x: 100, y: 100, z: 100 });
170
173
  controlsPosition.setDuration(1000);
171
174
  controlsPosition.onChange(({ x, y, z }) => {
172
- const distance = this.controlsDistance.get("distance");
175
+ // const distance = this.controlsDistance.get("distance");
173
176
  this.camera.position.set(x + 0.01, y, z + 0.01)
174
- .sub(this.controls.target)
175
- .setLength(distance)
176
- .add(this.controls.target);
177
+ // .sub(this.controls.target)
178
+ // .setLength(distance)
179
+ // .add(this.controls.target);
177
180
 
178
181
  // // 创建初始方向向量
179
182
  // const directionVecA = new THREE.Vector3(1, 0, 0); // 需要旋转的初始方向向量
@@ -373,18 +376,19 @@ export default class ThreeBase extends EventDispatcher {
373
376
  }
374
377
 
375
378
  // 渲染场景
376
- this.dispatchEvent({ type: "beforeRender" });
379
+ this.dispatchEvent({ type: "beforeRender" } as never);
377
380
 
378
- // this.renderer.setRenderTarget(this.baseRenderTarget);
381
+ // 把基础场景渲染到 帧缓冲区 在后期通道中会用到
382
+ this.renderer.setRenderTarget(this.baseRenderTarget);
379
383
  this.renderer.clear();
380
384
  this.renderer.render(this.scene, this.camera);
381
385
 
382
- // this.renderer.setRenderTarget(null);
383
- // this.renderer.clear();
386
+ // 清空主画布
387
+ this.renderer.setRenderTarget(null);
388
+ this.renderer.clear();
384
389
 
385
- //TODO 渲染了2次, 还有优化空间
386
390
  // this.renderer.setScissorTest(false);
387
- // this.renderRendererTarget(this.baseRenderTarget);
391
+ this.renderRendererTarget(this.baseRenderTarget);
388
392
  // this.renderer.setScissorTest(true);
389
393
  // this.renderer.setScissor(0, 0, 800, 1000);
390
394
  // this.renderer.render(this.scene, this.camera);
@@ -395,7 +399,7 @@ export default class ThreeBase extends EventDispatcher {
395
399
  glow_pass(this.renderer, this.camera, obj, this.baseDepthTexture);
396
400
  });
397
401
 
398
- this.dispatchEvent({ type: "afterRender" });
402
+ this.dispatchEvent({ type: "afterRender" } as never);
399
403
  }
400
404
 
401
405
  private renderBindThis = this.render.bind(this);
@@ -542,7 +546,7 @@ export default class ThreeBase extends EventDispatcher {
542
546
  this.renderTargetgaussBlur(renderTarget, 1, 1);
543
547
  }
544
548
 
545
- // 渲染 渲染目标
549
+ // TODO 需要做康锯齿处理 渲染 渲染目标
546
550
  renderRendererTarget(renderTarget: WebGLRenderTarget, alpha: boolean = false) {
547
551
  coptyShader.uniforms.map.value = renderTarget.texture;
548
552
  coptyShader.uniforms.opacity.value = 1.0;
package/ThreeMouse.ts CHANGED
@@ -168,7 +168,7 @@ export default class ThreeMouse {
168
168
  if (this._mesh_on === MouseEvent.object) {
169
169
  if (this.hasEvent(MouseEvent.object, ["mousemove"])) {
170
170
  MouseEvent.type = "mousemove";
171
- MouseEvent.object.dispatchEvent(MouseEvent);
171
+ MouseEvent.object.dispatchEvent(MouseEvent as never);
172
172
  }
173
173
 
174
174
  // 鼠标划入滑出事件
@@ -176,12 +176,12 @@ export default class ThreeMouse {
176
176
 
177
177
  if (this.hasEvent(this._mesh_on, ["mouseleave"])) {
178
178
  MouseEvent.type = "mouseleave";
179
- this._mesh_on!.dispatchEvent(MouseEvent);
179
+ this._mesh_on!.dispatchEvent(MouseEvent as never);
180
180
  }
181
181
 
182
182
  if (this.hasEvent(MouseEvent.object, ["mouseenter"])) {
183
183
  MouseEvent.type = "mouseenter";
184
- MouseEvent.object.dispatchEvent(MouseEvent);
184
+ MouseEvent.object.dispatchEvent(MouseEvent as never);
185
185
  }
186
186
 
187
187
  }
@@ -208,7 +208,7 @@ export default class ThreeMouse {
208
208
  offsetY: this._mousemoveEvent.offsetY,
209
209
  x: this._mousemoveEvent.x,
210
210
  y: this._mousemoveEvent.y
211
- });
211
+ } as never);
212
212
  }
213
213
 
214
214
 
@@ -235,7 +235,7 @@ export default class ThreeMouse {
235
235
  offsetY: this._mousemoveEvent.offsetY,
236
236
  x: this._mousemoveEvent.x,
237
237
  y: this._mousemoveEvent.y
238
- });
238
+ } as never);
239
239
  }
240
240
 
241
241
  // 置空当前鼠标上面的对象
@@ -292,7 +292,7 @@ export default class ThreeMouse {
292
292
  offsetY: this._mousemoveEvent.offsetY,
293
293
  x: this._mousemoveEvent.x,
294
294
  y: this._mousemoveEvent.y
295
- });
295
+ } as never);
296
296
 
297
297
  }
298
298
 
@@ -324,7 +324,7 @@ export default class ThreeMouse {
324
324
  offsetY: this._mousemoveEvent.offsetY,
325
325
  x: this._mousemoveEvent.x,
326
326
  y: this._mousemoveEvent.y
327
- });
327
+ } as never);
328
328
  }
329
329
 
330
330
  // 触发鼠标弹起事件
@@ -356,7 +356,7 @@ export default class ThreeMouse {
356
356
  offsetY: this._mousemoveEvent.offsetY,
357
357
  x: this._mousemoveEvent.x,
358
358
  y: this._mousemoveEvent.y
359
- });
359
+ } as never);
360
360
  }
361
361
 
362
362
  if (this.hasEvent(this._mesh_Down, ["leftclick"]) && (e.button === 0)) {
@@ -370,7 +370,7 @@ export default class ThreeMouse {
370
370
  offsetY: this._mousemoveEvent.offsetY,
371
371
  x: this._mousemoveEvent.x,
372
372
  y: this._mousemoveEvent.y
373
- });
373
+ } as never);
374
374
  }
375
375
 
376
376
  if (this.hasEvent(this._mesh_Down, ["rightclick"]) && (e.button === 2)) {
@@ -384,7 +384,7 @@ export default class ThreeMouse {
384
384
  offsetY: this._mousemoveEvent.offsetY,
385
385
  x: this._mousemoveEvent.x,
386
386
  y: this._mousemoveEvent.y
387
- });
387
+ } as never);
388
388
  }
389
389
 
390
390
  } else if (this._click_num > 1) {
@@ -401,7 +401,7 @@ export default class ThreeMouse {
401
401
  offsetY: this._mousemoveEvent.offsetY,
402
402
  x: this._mousemoveEvent.x,
403
403
  y: this._mousemoveEvent.y
404
- });
404
+ } as never);
405
405
 
406
406
  }
407
407
 
@@ -420,7 +420,7 @@ export default class ThreeMouse {
420
420
  offsetY: this._mousemoveEvent.offsetY,
421
421
  x: this._mousemoveEvent.x,
422
422
  y: this._mousemoveEvent.y
423
- });
423
+ } as never);
424
424
  }
425
425
 
426
426
  if (this.hasEvent(this._mesh_Down, ["leftclick"]) && (e.button === 0)) {
@@ -434,7 +434,7 @@ export default class ThreeMouse {
434
434
  offsetY: this._mousemoveEvent.offsetY,
435
435
  x: this._mousemoveEvent.x,
436
436
  y: this._mousemoveEvent.y
437
- });
437
+ } as never);
438
438
  }
439
439
 
440
440
  if (this.hasEvent(this._mesh_Down, ["rightclick"]) && (e.button === 2)) {
@@ -448,7 +448,7 @@ export default class ThreeMouse {
448
448
  offsetY: this._mousemoveEvent.offsetY,
449
449
  x: this._mousemoveEvent.x,
450
450
  y: this._mousemoveEvent.y
451
- });
451
+ } as never);
452
452
  }
453
453
 
454
454
  }
package/keyContorls.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Event, EventDispatcher, EventListener, Vector3 } from "three";
1
+ import { EventDispatcher, EventListener, Vector3 } from "three";
2
2
  /**
3
3
  * 键盘 使用 ↑↓←→ 控制 x z 方向, 小键盘 1 0 控制 y 方向
4
4
  *
@@ -17,7 +17,7 @@ declare class KeyContorls extends EventDispatcher {
17
17
  [key: string]: Array<any>;
18
18
  };
19
19
  removeEvent: import("lodash").DebouncedFunc<(type: string) => void>;
20
- addEventListener<T extends string>(type: T, listener: EventListener<Event, T, this>): void;
20
+ addEventListener<T extends string>(type: T, listener: EventListener<{}, T, this>): void;
21
21
  addEvent(): void;
22
22
  dispose(): void;
23
23
  }
package/keyContorls.ts CHANGED
@@ -29,17 +29,17 @@ class KeyContorls extends EventDispatcher {
29
29
 
30
30
  // 添加事件需要由外部实现
31
31
  add(e: any) {
32
- this.dispatchEvent({ ...e, type: "add" });
32
+ this.dispatchEvent({ ...e, type: "add" } as never);
33
33
  }
34
34
 
35
35
  // 删除事件
36
36
  delete(e: any) {
37
- this.dispatchEvent({ ...e, type: "delete" });
37
+ this.dispatchEvent({ ...e, type: "delete" } as never);
38
38
  }
39
39
 
40
40
  // 回车按钮
41
41
  enter(e: any) {
42
- this.dispatchEvent({ ...e, type: "enter" });
42
+ this.dispatchEvent({ ...e, type: "enter" } as never);
43
43
  }
44
44
 
45
45
  keyDown = (e: any) => {
@@ -96,7 +96,7 @@ class KeyContorls extends EventDispatcher {
96
96
  this.dispatchEvent({
97
97
  type: "change",
98
98
  direction: this.direction
99
- });
99
+ } as never);
100
100
 
101
101
  }
102
102
 
@@ -107,7 +107,7 @@ class KeyContorls extends EventDispatcher {
107
107
  this._listeners = undefined;
108
108
  }, 1000, { trailing: false });
109
109
 
110
- addEventListener<T extends string>(type: T, listener: EventListener<Event, T, this>): void {
110
+ addEventListener<T extends string>(type: T, listener: EventListener<{}, T, this>): void {
111
111
  this.removeEvent(type);
112
112
  super.addEventListener(type, listener);
113
113
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-base",
3
- "version": "2.0.20",
3
+ "version": "2.0.22",
4
4
  "description": "three 3d three-base",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -38,9 +38,10 @@
38
38
  "dependencies": {
39
39
  "apng-js": "^1",
40
40
  "lodash": "^4",
41
- "three": "^0.154.0",
41
+ "@types/three": "^0.159.0",
42
+ "three": "^0.159.0",
42
43
  "dexie": "^3",
43
44
  "vite": "*",
44
45
  "html2canvas": "^1.4.1"
45
46
  }
46
- }
47
+ }
@@ -1,7 +1,7 @@
1
1
  import { BufferGeometry, Material, Mesh, OrthographicCamera, Scene, WebGLRenderer } from "three";
2
2
  export default class FullScreenQuad extends Scene {
3
3
  constructor();
4
- mesh: Mesh<BufferGeometry<import("three").NormalBufferAttributes>, Material>;
4
+ mesh: Mesh<BufferGeometry<import("three").NormalBufferAttributes>, Material, import("three").Object3DEventMap>;
5
5
  orthographicCamera: OrthographicCamera;
6
6
  render(renderer: WebGLRenderer, material: Material): void;
7
7
  }
package/threeLoader.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CanvasTexture, EventDispatcher, Texture, TextureLoader } from "three";
1
+ import { EventDispatcher, Texture, TextureLoader } from "three";
2
2
  import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader";
3
3
  import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
4
4
  import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader";
@@ -10,7 +10,7 @@ declare class ThreeLoader extends EventDispatcher {
10
10
  setAnisotropy(v: number): void;
11
11
  textureMap: Map<string, Texture>;
12
12
  textureLoader: TextureLoader;
13
- getTexture(src: string | HTMLCanvasElement): CanvasTexture | Texture;
13
+ getTexture(src: string | HTMLCanvasElement): Texture;
14
14
  fbxLoader: FBXLoader;
15
15
  objLoader: OBJLoader;
16
16
  stlLoader: STLLoader;
package/threeLoader.ts CHANGED
@@ -33,7 +33,7 @@ class ThreeLoader extends EventDispatcher {
33
33
 
34
34
  // 有资源加载完成时通知渲染器
35
35
  DefaultLoadingManager.onProgress = () => {
36
- this.dispatchEvent({ type: "progress" });
36
+ this.dispatchEvent({ type: "progress" } as never);
37
37
  }
38
38
 
39
39
  DefaultLoadingManager.onLoad = () => {
package/threeUtils.ts CHANGED
@@ -37,7 +37,7 @@ class ThreeUtils extends EventDispatcher {
37
37
  type: "requestAnimationFrame",
38
38
  timeTemp,
39
39
  accumulate: this._accumulate
40
- });
40
+ } as never);
41
41
 
42
42
  this._computerDomZoom();
43
43