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 +1 -1
- package/ApngTextureManage.ts +1 -1
- package/ExtrudeMesh.ts +1 -1
- package/KeyFrameAnimation.ts +1 -1
- package/PlaneModal1/PlaneModal1.d.ts +1 -1
- package/PlaneModal1/PlaneModal1.ts +1 -1
- package/PlaneText.d.ts +12 -5
- package/PlaneWithHtml.ts +1 -1
- package/SpriteModal1/SpriteModal1.d.ts +2 -2
- package/SpriteModal1/SpriteModal1.ts +1 -1
- package/SpriteWithHtml.ts +1 -1
- package/Text3D/Text3D.ts +1 -1
- package/ThreeBase.js +20 -17
- package/ThreeBase.ts +22 -18
- package/ThreeMouse.ts +14 -14
- package/keyContorls.d.ts +2 -2
- package/keyContorls.ts +5 -5
- package/package.json +4 -3
- package/pass/FullScreenQuad.d.ts +1 -1
- package/threeLoader.d.ts +2 -2
- package/threeLoader.ts +1 -1
- package/threeUtils.ts +1 -1
- package/lib/draco/draco_encoder.js +0 -33
package/ApngTexture.ts
CHANGED
package/ApngTextureManage.ts
CHANGED
|
@@ -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
package/KeyFrameAnimation.ts
CHANGED
|
@@ -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").
|
|
19
|
+
texture: import("three").Texture;
|
|
20
20
|
_config: {
|
|
21
21
|
size: number;
|
|
22
22
|
title: string;
|
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 |
|
|
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").
|
|
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").
|
|
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Sprite,
|
|
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:
|
|
17
|
+
texture: import("three").Texture;
|
|
18
18
|
_config: {
|
|
19
19
|
size: number;
|
|
20
20
|
title: string;
|
package/SpriteWithHtml.ts
CHANGED
package/Text3D/Text3D.ts
CHANGED
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
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
-
//
|
|
308
|
+
// 把基础场景渲染到 帧缓冲区 在后期通道中会用到
|
|
309
|
+
this.renderer.setRenderTarget(this.baseRenderTarget);
|
|
307
310
|
this.renderer.clear();
|
|
308
311
|
this.renderer.render(this.scene, this.camera);
|
|
309
|
-
//
|
|
310
|
-
|
|
311
|
-
|
|
312
|
+
// 清空主画布
|
|
313
|
+
this.renderer.setRenderTarget(null);
|
|
314
|
+
this.renderer.clear();
|
|
312
315
|
// this.renderer.setScissorTest(false);
|
|
313
|
-
|
|
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,
|
|
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
|
-
//
|
|
381
|
+
// 把基础场景渲染到 帧缓冲区 在后期通道中会用到
|
|
382
|
+
this.renderer.setRenderTarget(this.baseRenderTarget);
|
|
379
383
|
this.renderer.clear();
|
|
380
384
|
this.renderer.render(this.scene, this.camera);
|
|
381
385
|
|
|
382
|
-
//
|
|
383
|
-
|
|
386
|
+
// 清空主画布
|
|
387
|
+
this.renderer.setRenderTarget(null);
|
|
388
|
+
this.renderer.clear();
|
|
384
389
|
|
|
385
|
-
//TODO 渲染了2次, 还有优化空间
|
|
386
390
|
// this.renderer.setScissorTest(false);
|
|
387
|
-
|
|
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 {
|
|
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<
|
|
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<
|
|
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.
|
|
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.
|
|
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
|
+
}
|
package/pass/FullScreenQuad.d.ts
CHANGED
|
@@ -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 {
|
|
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):
|
|
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 = () => {
|