three-base 2.0.130 → 2.0.137
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.d.ts +13 -13
- package/ApngTexture.js +61 -61
- package/ApngTextureManage.d.ts +18 -18
- package/ApngTextureManage.js +87 -87
- package/DirectionalLight.d.ts +6 -0
- package/DirectionalLight.js +68 -0
- package/EventMesh.d.ts +18 -18
- package/EventMesh.js +59 -59
- package/ExtrudeMesh.d.ts +112 -112
- package/ExtrudeMesh.js +366 -366
- package/FPScontrol.d.ts +78 -50
- package/FPScontrol.js +617 -232
- package/Fire/Fire.d.ts +28 -28
- package/Fire/Fire.js +79 -79
- package/Fire/FireGromtry.d.ts +9 -9
- package/Fire/FireGromtry.js +40 -40
- package/Fire/FireMaterial.d.ts +28 -28
- package/Fire/FireMaterial.js +32 -32
- package/Fire/index.d.ts +1 -1
- package/Fire/index.js +1 -1
- package/Grass/Grass.d.ts +8 -8
- package/Grass/Grass.js +38 -38
- package/Grass/index.d.ts +1 -1
- package/Grass/index.js +1 -1
- package/Ground1/Ground1.d.ts +11 -11
- package/Ground1/Ground1.js +54 -54
- package/Ground1/index.d.ts +1 -1
- package/Ground1/index.js +1 -1
- package/InstancedMeshBase.d.ts +39 -39
- package/InstancedMeshBase.js +293 -293
- package/KeyFrameAnimation.d.ts +25 -25
- package/KeyFrameAnimation.js +78 -78
- package/MeshBase.d.ts +35 -35
- package/MeshBase.js +223 -223
- package/Mirror.d.ts +25 -25
- package/Mirror.js +139 -139
- package/PipeMesh/PathGeometry.d.ts +44 -44
- package/PipeMesh/PathGeometry.js +300 -300
- package/PipeMesh/PathPoint.d.ts +17 -17
- package/PipeMesh/PathPoint.js +31 -31
- package/PipeMesh/PathPointList.d.ts +31 -31
- package/PipeMesh/PathPointList.js +208 -208
- package/PipeMesh/PathTubeGeometry.d.ts +25 -25
- package/PipeMesh/PathTubeGeometry.js +130 -130
- package/PipeMesh/PipeMesh.d.ts +25 -25
- package/PipeMesh/PipeMesh.js +63 -63
- package/PipeMesh/index.d.ts +1 -1
- package/PipeMesh/index.js +1 -1
- package/PlaneModal1/PlaneModal1.d.ts +31 -31
- package/PlaneModal1/PlaneModal1.js +105 -105
- package/PlaneModal1/index.d.ts +1 -1
- package/PlaneModal1/index.js +1 -1
- package/PlaneText.d.ts +39 -39
- package/PlaneText.js +30 -30
- package/PlaneWithHtml.d.ts +11 -11
- package/PlaneWithHtml.js +63 -68
- package/PointLight/PointLight.d.ts +14 -13
- package/PointLight/PointLight.js +70 -64
- package/PointLight/index.d.ts +1 -1
- package/PointLight/index.js +1 -1
- package/Sky/Sky.d.ts +9 -9
- package/Sky/Sky.js +22 -22
- package/Sky/index.d.ts +1 -1
- package/Sky/index.js +1 -1
- package/SpotLight.d.ts +6 -0
- package/SpotLight.js +72 -0
- package/SpriteModal1/SpriteModal1.d.ts +30 -30
- package/SpriteModal1/SpriteModal1.js +110 -110
- package/SpriteModal1/index.d.ts +1 -1
- package/SpriteModal1/index.js +1 -1
- package/SpriteText.d.ts +45 -45
- package/SpriteText.js +163 -163
- package/SpriteText2.d.ts +47 -47
- package/SpriteText2.js +198 -198
- package/SpriteWithHtml.d.ts +7 -7
- package/SpriteWithHtml.js +44 -49
- package/Text3D/Text3D.d.ts +20 -20
- package/Text3D/Text3D.js +62 -62
- package/Text3D/fontController.d.ts +59 -59
- package/Text3D/fontController.js +199 -199
- package/Text3D/index.d.ts +1 -1
- package/Text3D/index.js +1 -1
- package/ThreeBase.d.ts +111 -81
- package/ThreeBase.js +656 -560
- package/ThreeMouse.d.ts +40 -40
- package/ThreeMouse.js +407 -407
- package/Transition.d.ts +40 -40
- package/Transition.js +210 -210
- package/Water/Water.d.ts +5 -0
- package/Water/Water.js +26 -0
- package/Water/waternormals.jpg +0 -0
- package/declare.d.ts +167 -0
- package/index.d.ts +1 -1
- package/index.js +2 -2
- package/keyContorls.d.ts +25 -25
- package/keyContorls.js +98 -98
- package/package.json +3 -2
- package/pass/bloom_pass.d.ts +2 -2
- package/pass/bloom_pass.js +99 -99
- package/pass/cover_pass.d.ts +2 -2
- package/pass/cover_pass.js +95 -95
- package/pass/emissive_ao_pass.d.ts +13 -0
- package/pass/emissive_ao_pass.js +370 -0
- package/pass/frosted_glass_pass.d.ts +2 -0
- package/pass/frosted_glass_pass.js +275 -0
- package/pass/fsQuad.d.ts +9 -9
- package/pass/fsQuad.js +28 -28
- package/pass/glow_pass.d.ts +2 -2
- package/pass/glow_pass.js +310 -254
- package/pass/ssao_pass.d.ts +13 -0
- package/pass/ssao_pass.js +372 -0
- package/pass/stroke_pass.d.ts +2 -2
- package/pass/stroke_pass.js +199 -199
- package/shaders/FXAAShaderMaterial.d.ts +3 -3
- package/shaders/FXAAShaderMaterial.js +21 -21
- package/shaders/baseTextureToRenderShader.d.ts +2 -2
- package/shaders/baseTextureToRenderShader.js +14 -14
- package/shaders/copyShader.d.ts +3 -3
- package/shaders/copyShader.js +14 -14
- package/shaders.d.ts +5 -5
- package/shaders.js +42 -42
- package/threeLoader.d.ts +34 -34
- package/threeLoader.js +527 -527
- package/threeUtils.d.ts +52 -52
- package/threeUtils.js +330 -330
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2023-03-09 18:51:11
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2023-03-09 19:15:35
|
|
6
|
-
*/
|
|
7
|
-
import { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Vector2 } from "three";
|
|
8
|
-
import threeLoader from "../threeLoader";
|
|
9
|
-
import planeModalPNG from "./planeModal.png";
|
|
10
|
-
// 平面模型弹窗
|
|
11
|
-
export default class PlaneModal1 extends Mesh {
|
|
12
|
-
constructor(config = {}) {
|
|
13
|
-
super();
|
|
14
|
-
this.updata(config);
|
|
15
|
-
this.material.map = this.texture;
|
|
16
|
-
// this.scale.set(10, 10, 10);
|
|
17
|
-
}
|
|
18
|
-
geometry = new PlaneGeometry(1 * 0.65, 0.728 * 0.65, 1, 1);
|
|
19
|
-
material = new MeshBasicMaterial({
|
|
20
|
-
side: DoubleSide,
|
|
21
|
-
transparent: true,
|
|
22
|
-
alphaTest: 0.01
|
|
23
|
-
});
|
|
24
|
-
// 背景图
|
|
25
|
-
static img = (() => {
|
|
26
|
-
const img = new Image();
|
|
27
|
-
img.src = planeModalPNG;
|
|
28
|
-
return img;
|
|
29
|
-
})();
|
|
30
|
-
canvas = (() => {
|
|
31
|
-
const canvas = document.createElement("canvas");
|
|
32
|
-
canvas.width = 660;
|
|
33
|
-
canvas.height = 481;
|
|
34
|
-
return canvas;
|
|
35
|
-
})();
|
|
36
|
-
context = this.canvas.getContext("2d");
|
|
37
|
-
texture = threeLoader.getTexture(this.canvas);
|
|
38
|
-
// 配置
|
|
39
|
-
_config = {
|
|
40
|
-
size: 10,
|
|
41
|
-
title: "PlaneModal1",
|
|
42
|
-
titleColor: "#ffffff",
|
|
43
|
-
texts: []
|
|
44
|
-
// [
|
|
45
|
-
// {
|
|
46
|
-
// text: "1",
|
|
47
|
-
// color: "#ffff00",
|
|
48
|
-
// size: 40
|
|
49
|
-
// },
|
|
50
|
-
// {
|
|
51
|
-
// text: "2",
|
|
52
|
-
// color: "#ff00ff",
|
|
53
|
-
// size: 40
|
|
54
|
-
// },
|
|
55
|
-
// ]
|
|
56
|
-
};
|
|
57
|
-
async updata(config) {
|
|
58
|
-
Object.assign(this._config, config);
|
|
59
|
-
//绘制背景
|
|
60
|
-
this.context.clearRect(0, 0, 660, 481);
|
|
61
|
-
while (!PlaneModal1.img.complete) {
|
|
62
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
63
|
-
}
|
|
64
|
-
// 设置大小
|
|
65
|
-
this.scale.set(this._config.size, this._config.size, this._config.size);
|
|
66
|
-
// this.context.fillStyle = "#00000088";
|
|
67
|
-
// this.context.fillRect(0, 0, 660, 481);
|
|
68
|
-
//绘制背景
|
|
69
|
-
this.context.drawImage(PlaneModal1.img, 0, 0);
|
|
70
|
-
// 绘制标题
|
|
71
|
-
this.context.fillStyle = this._config.titleColor;
|
|
72
|
-
this.context.font = '40px serif'; // 设置字体大小
|
|
73
|
-
this.context.textAlign = "left";
|
|
74
|
-
this.context.textBaseline = "top";
|
|
75
|
-
this.context.fillText(this._config.title, 60, 72);
|
|
76
|
-
let textPos = new Vector2(60, 150);
|
|
77
|
-
let maxWidth = 530;
|
|
78
|
-
// 绘制内容
|
|
79
|
-
this._config.texts.map(({ text = "text", color = "#ffffff", size = 40 }) => {
|
|
80
|
-
this.context.fillStyle = color;
|
|
81
|
-
this.context.font = `${size}px serif`; // 设置字体大小
|
|
82
|
-
this.context.textAlign = "left";
|
|
83
|
-
this.context.textBaseline = "top";
|
|
84
|
-
// 字符分隔为数组
|
|
85
|
-
var arrText = text.split('');
|
|
86
|
-
var line = '';
|
|
87
|
-
for (var n = 0; n < arrText.length; n++) {
|
|
88
|
-
var metrics = this.context.measureText(line + arrText[n]);
|
|
89
|
-
var testWidth = metrics.width;
|
|
90
|
-
if ((testWidth > maxWidth && n > 0) || arrText[n] === "\n") {
|
|
91
|
-
this.context.fillText(line, textPos.x, textPos.y);
|
|
92
|
-
line = "";
|
|
93
|
-
textPos.y += size;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
line += arrText[n];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
this.context.fillText(line, textPos.x, textPos.y);
|
|
100
|
-
textPos.y += size;
|
|
101
|
-
});
|
|
102
|
-
this.texture.needsUpdate = true;
|
|
103
|
-
this.dispatchEvent({ type: "loaded" });
|
|
104
|
-
}
|
|
105
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2023-03-09 18:51:11
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2023-03-09 19:15:35
|
|
6
|
+
*/
|
|
7
|
+
import { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Vector2 } from "three";
|
|
8
|
+
import threeLoader from "../threeLoader";
|
|
9
|
+
import planeModalPNG from "./planeModal.png";
|
|
10
|
+
// 平面模型弹窗
|
|
11
|
+
export default class PlaneModal1 extends Mesh {
|
|
12
|
+
constructor(config = {}) {
|
|
13
|
+
super();
|
|
14
|
+
this.updata(config);
|
|
15
|
+
this.material.map = this.texture;
|
|
16
|
+
// this.scale.set(10, 10, 10);
|
|
17
|
+
}
|
|
18
|
+
geometry = new PlaneGeometry(1 * 0.65, 0.728 * 0.65, 1, 1);
|
|
19
|
+
material = new MeshBasicMaterial({
|
|
20
|
+
side: DoubleSide,
|
|
21
|
+
transparent: true,
|
|
22
|
+
alphaTest: 0.01
|
|
23
|
+
});
|
|
24
|
+
// 背景图
|
|
25
|
+
static img = (() => {
|
|
26
|
+
const img = new Image();
|
|
27
|
+
img.src = planeModalPNG;
|
|
28
|
+
return img;
|
|
29
|
+
})();
|
|
30
|
+
canvas = (() => {
|
|
31
|
+
const canvas = document.createElement("canvas");
|
|
32
|
+
canvas.width = 660;
|
|
33
|
+
canvas.height = 481;
|
|
34
|
+
return canvas;
|
|
35
|
+
})();
|
|
36
|
+
context = this.canvas.getContext("2d");
|
|
37
|
+
texture = threeLoader.getTexture(this.canvas);
|
|
38
|
+
// 配置
|
|
39
|
+
_config = {
|
|
40
|
+
size: 10,
|
|
41
|
+
title: "PlaneModal1",
|
|
42
|
+
titleColor: "#ffffff",
|
|
43
|
+
texts: []
|
|
44
|
+
// [
|
|
45
|
+
// {
|
|
46
|
+
// text: "1",
|
|
47
|
+
// color: "#ffff00",
|
|
48
|
+
// size: 40
|
|
49
|
+
// },
|
|
50
|
+
// {
|
|
51
|
+
// text: "2",
|
|
52
|
+
// color: "#ff00ff",
|
|
53
|
+
// size: 40
|
|
54
|
+
// },
|
|
55
|
+
// ]
|
|
56
|
+
};
|
|
57
|
+
async updata(config) {
|
|
58
|
+
Object.assign(this._config, config);
|
|
59
|
+
//绘制背景
|
|
60
|
+
this.context.clearRect(0, 0, 660, 481);
|
|
61
|
+
while (!PlaneModal1.img.complete) {
|
|
62
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
63
|
+
}
|
|
64
|
+
// 设置大小
|
|
65
|
+
this.scale.set(this._config.size, this._config.size, this._config.size);
|
|
66
|
+
// this.context.fillStyle = "#00000088";
|
|
67
|
+
// this.context.fillRect(0, 0, 660, 481);
|
|
68
|
+
//绘制背景
|
|
69
|
+
this.context.drawImage(PlaneModal1.img, 0, 0);
|
|
70
|
+
// 绘制标题
|
|
71
|
+
this.context.fillStyle = this._config.titleColor;
|
|
72
|
+
this.context.font = '40px serif'; // 设置字体大小
|
|
73
|
+
this.context.textAlign = "left";
|
|
74
|
+
this.context.textBaseline = "top";
|
|
75
|
+
this.context.fillText(this._config.title, 60, 72);
|
|
76
|
+
let textPos = new Vector2(60, 150);
|
|
77
|
+
let maxWidth = 530;
|
|
78
|
+
// 绘制内容
|
|
79
|
+
this._config.texts.map(({ text = "text", color = "#ffffff", size = 40 }) => {
|
|
80
|
+
this.context.fillStyle = color;
|
|
81
|
+
this.context.font = `${size}px serif`; // 设置字体大小
|
|
82
|
+
this.context.textAlign = "left";
|
|
83
|
+
this.context.textBaseline = "top";
|
|
84
|
+
// 字符分隔为数组
|
|
85
|
+
var arrText = text.split('');
|
|
86
|
+
var line = '';
|
|
87
|
+
for (var n = 0; n < arrText.length; n++) {
|
|
88
|
+
var metrics = this.context.measureText(line + arrText[n]);
|
|
89
|
+
var testWidth = metrics.width;
|
|
90
|
+
if ((testWidth > maxWidth && n > 0) || arrText[n] === "\n") {
|
|
91
|
+
this.context.fillText(line, textPos.x, textPos.y);
|
|
92
|
+
line = "";
|
|
93
|
+
textPos.y += size;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
line += arrText[n];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
this.context.fillText(line, textPos.x, textPos.y);
|
|
100
|
+
textPos.y += size;
|
|
101
|
+
});
|
|
102
|
+
this.texture.needsUpdate = true;
|
|
103
|
+
this.dispatchEvent({ type: "loaded" });
|
|
104
|
+
}
|
|
105
|
+
}
|
package/PlaneModal1/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./PlaneModal1";
|
|
1
|
+
export { default } from "./PlaneModal1";
|
package/PlaneModal1/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./PlaneModal1";
|
|
1
|
+
export { default } from "./PlaneModal1";
|
package/PlaneText.d.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { Mesh, MeshBasicMaterial, PlaneGeometry, Vector3 } from "three";
|
|
2
|
-
import SpriteText from "./SpriteText";
|
|
3
|
-
type Props = {
|
|
4
|
-
text?: string;
|
|
5
|
-
textHeight?: number;
|
|
6
|
-
color?: string;
|
|
7
|
-
backgroundColor?: string;
|
|
8
|
-
fontFace?: string;
|
|
9
|
-
fontSize?: number;
|
|
10
|
-
fontWeight?: string;
|
|
11
|
-
padding?: number | [number, number];
|
|
12
|
-
borderWidth?: number;
|
|
13
|
-
borderRadius?: number;
|
|
14
|
-
borderColor?: string;
|
|
15
|
-
strokeWidth?: number;
|
|
16
|
-
strokeColor?: string;
|
|
17
|
-
};
|
|
18
|
-
export default class PlaneText extends Mesh {
|
|
19
|
-
constructor(text?: string);
|
|
20
|
-
type: string;
|
|
21
|
-
static geometry: PlaneGeometry;
|
|
22
|
-
spriteText: SpriteText;
|
|
23
|
-
material: MeshBasicMaterial;
|
|
24
|
-
set(parame: Props): void;
|
|
25
|
-
get(prop: keyof SpriteText): string | number | boolean | Vector3 | import("three").Object3D<import("three").Object3DEventMap> | import("three").BufferGeometry<import("three").NormalBufferAttributes> | ((force?: boolean) => void) | ((callback: (object: import("three").Object3D
|
|
26
|
-
(vector: Vector3): void;
|
|
27
|
-
(x: number, y: number, z: number): void;
|
|
28
|
-
} | ((id: number) => import("three").Object3D
|
|
29
|
-
<
|
|
30
|
-
<
|
|
31
|
-
} | {
|
|
32
|
-
<
|
|
33
|
-
<
|
|
34
|
-
} | {
|
|
35
|
-
<
|
|
36
|
-
<
|
|
37
|
-
} | (() => void)
|
|
38
|
-
}
|
|
39
|
-
export {};
|
|
1
|
+
import { Mesh, MeshBasicMaterial, PlaneGeometry, Vector3 } from "three";
|
|
2
|
+
import SpriteText from "./SpriteText";
|
|
3
|
+
type Props = {
|
|
4
|
+
text?: string;
|
|
5
|
+
textHeight?: number;
|
|
6
|
+
color?: string;
|
|
7
|
+
backgroundColor?: string;
|
|
8
|
+
fontFace?: string;
|
|
9
|
+
fontSize?: number;
|
|
10
|
+
fontWeight?: string;
|
|
11
|
+
padding?: number | [number, number];
|
|
12
|
+
borderWidth?: number;
|
|
13
|
+
borderRadius?: number;
|
|
14
|
+
borderColor?: string;
|
|
15
|
+
strokeWidth?: number;
|
|
16
|
+
strokeColor?: string;
|
|
17
|
+
};
|
|
18
|
+
export default class PlaneText extends Mesh {
|
|
19
|
+
constructor(text?: string);
|
|
20
|
+
type: string;
|
|
21
|
+
static geometry: PlaneGeometry;
|
|
22
|
+
spriteText: SpriteText;
|
|
23
|
+
material: MeshBasicMaterial;
|
|
24
|
+
set(parame: Props): void;
|
|
25
|
+
get(prop: keyof SpriteText): string | number | boolean | Vector3 | import("three").Object3D<import("three").Object3DEventMap> | import("three").BufferGeometry<import("three").NormalBufferAttributes> | ((force?: boolean) => void) | ((callback: (object: import("three").Object3D) => any) => void) | import("three").Material | Record<string, any> | import("three").Euler | import("three").Matrix4 | import("three").Object3D<import("three").Object3DEventMap>[] | import("three").Quaternion | 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, depthMaterial: import("three").Material, group: import("three").Group) => void) | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry, depthMaterial: import("three").Material, group: import("three").Group) => void) | ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, 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, 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) | {
|
|
26
|
+
(vector: Vector3): void;
|
|
27
|
+
(x: number, y: number, z: number): void;
|
|
28
|
+
} | ((id: number) => import("three").Object3D | undefined) | ((name: string) => import("three").Object3D | undefined) | ((name: string, value: any) => import("three").Object3D | undefined) | ((name: string, value: any, optionalTarget?: import("three").Object3D[]) => import("three").Object3D[]) | ((target: Vector3) => Vector3) | ((target: import("three").Quaternion) => import("three").Quaternion) | ((target: Vector3) => Vector3) | ((target: Vector3) => Vector3) | ((raycaster: import("three").Raycaster, intersects: import("three").Intersection[]) => void) | ((callback: (object: import("three").Object3D) => any) => void) | ((callback: (object: import("three").Object3D) => any) => void) | (() => void) | ((updateParents: boolean, updateChildren: boolean) => void) | ((meta?: import("three").JSONMeta) => import("three").Object3DJSON) | (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | HTMLCanvasElement | import("three").Vector2 | import("three").SpriteMaterial | ((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[]) => SpriteText) | ((...object: import("three").Object3D[]) => SpriteText) | (() => SpriteText) | (() => SpriteText) | ((object: import("three").Object3D) => SpriteText) | ((recursive?: boolean) => SpriteText) | ((object: import("three").Object3D, recursive?: boolean) => SpriteText) | {
|
|
29
|
+
<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, SpriteText>): void;
|
|
30
|
+
<T extends string>(type: T, listener: import("three").EventListener<{}, T, SpriteText>): void;
|
|
31
|
+
} | {
|
|
32
|
+
<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, SpriteText>): boolean;
|
|
33
|
+
<T extends string>(type: T, listener: import("three").EventListener<{}, T, SpriteText>): boolean;
|
|
34
|
+
} | {
|
|
35
|
+
<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, SpriteText>): void;
|
|
36
|
+
<T extends string>(type: T, listener: import("three").EventListener<{}, T, SpriteText>): void;
|
|
37
|
+
} | (() => void);
|
|
38
|
+
}
|
|
39
|
+
export {};
|
package/PlaneText.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2022-05-23 13:53:06
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2023-05-03 02:54:52
|
|
6
|
-
*/
|
|
7
|
-
import { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Vector3 } from "three";
|
|
8
|
-
import SpriteText from "./SpriteText";
|
|
9
|
-
export default class PlaneText extends Mesh {
|
|
10
|
-
constructor(text = "planeText") {
|
|
11
|
-
super(PlaneText.geometry);
|
|
12
|
-
this.set({ text });
|
|
13
|
-
}
|
|
14
|
-
type = "PlaneText";
|
|
15
|
-
static geometry = new PlaneGeometry(1, 1, 1, 1);
|
|
16
|
-
spriteText = new SpriteText("");
|
|
17
|
-
material = new MeshBasicMaterial({ transparent: true, side: DoubleSide, map: this.spriteText.material.map });
|
|
18
|
-
set(parame) {
|
|
19
|
-
for (let key in parame) {
|
|
20
|
-
//@ts-ignore
|
|
21
|
-
this.spriteText[key] = parame[key];
|
|
22
|
-
}
|
|
23
|
-
this.scale.copy(this.spriteText.scale);
|
|
24
|
-
this.scale.max(new Vector3(1, 1, 1));
|
|
25
|
-
this.material.map = this.spriteText.material.map;
|
|
26
|
-
}
|
|
27
|
-
get(prop) {
|
|
28
|
-
return this.spriteText[prop];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2022-05-23 13:53:06
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2023-05-03 02:54:52
|
|
6
|
+
*/
|
|
7
|
+
import { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Vector3 } from "three";
|
|
8
|
+
import SpriteText from "./SpriteText";
|
|
9
|
+
export default class PlaneText extends Mesh {
|
|
10
|
+
constructor(text = "planeText") {
|
|
11
|
+
super(PlaneText.geometry);
|
|
12
|
+
this.set({ text });
|
|
13
|
+
}
|
|
14
|
+
type = "PlaneText";
|
|
15
|
+
static geometry = new PlaneGeometry(1, 1, 1, 1);
|
|
16
|
+
spriteText = new SpriteText("");
|
|
17
|
+
material = new MeshBasicMaterial({ transparent: true, side: DoubleSide, map: this.spriteText.material.map });
|
|
18
|
+
set(parame) {
|
|
19
|
+
for (let key in parame) {
|
|
20
|
+
//@ts-ignore
|
|
21
|
+
this.spriteText[key] = parame[key];
|
|
22
|
+
}
|
|
23
|
+
this.scale.copy(this.spriteText.scale);
|
|
24
|
+
this.scale.max(new Vector3(1, 1, 1));
|
|
25
|
+
this.material.map = this.spriteText.material.map;
|
|
26
|
+
}
|
|
27
|
+
get(prop) {
|
|
28
|
+
return this.spriteText[prop];
|
|
29
|
+
}
|
|
30
|
+
}
|
package/PlaneWithHtml.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Mesh, MeshBasicMaterial, PlaneGeometry, Vector2 } from "three";
|
|
2
|
-
export default class PlaneWithHtml extends Mesh {
|
|
3
|
-
constructor(html?: string, backgroundColor?: `#${string}`);
|
|
4
|
-
visible: boolean;
|
|
5
|
-
size: Vector2;
|
|
6
|
-
geometry: PlaneGeometry;
|
|
7
|
-
material: MeshBasicMaterial;
|
|
8
|
-
div: HTMLDivElement;
|
|
9
|
-
setGeoSize(width: number, height: number): void;
|
|
10
|
-
setHtml(html?: string, backgroundColor?: `#${string}`): Promise<void>;
|
|
11
|
-
}
|
|
1
|
+
import { Mesh, MeshBasicMaterial, PlaneGeometry, Vector2 } from "three";
|
|
2
|
+
export default class PlaneWithHtml extends Mesh {
|
|
3
|
+
constructor(html?: string, backgroundColor?: `#${string}`);
|
|
4
|
+
visible: boolean;
|
|
5
|
+
size: Vector2;
|
|
6
|
+
geometry: PlaneGeometry;
|
|
7
|
+
material: MeshBasicMaterial;
|
|
8
|
+
div: HTMLDivElement;
|
|
9
|
+
setGeoSize(width: number, height: number): void;
|
|
10
|
+
setHtml(html?: string, backgroundColor?: `#${string}`): Promise<void>;
|
|
11
|
+
}
|
package/PlaneWithHtml.js
CHANGED
|
@@ -1,68 +1,63 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2023-04-15 11:26:32
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2023-04-15 12:38:09
|
|
6
|
-
*/
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import { degToRad } from "three/src/math/MathUtils";
|
|
10
|
-
import threeLoader from "./threeLoader";
|
|
11
|
-
// html 文本面板
|
|
12
|
-
export default class PlaneWithHtml extends Mesh {
|
|
13
|
-
constructor(html = "", backgroundColor = "#00000000") {
|
|
14
|
-
super();
|
|
15
|
-
this.setHtml(html, backgroundColor);
|
|
16
|
-
}
|
|
17
|
-
visible = false;
|
|
18
|
-
size = new Vector2(10, 10);
|
|
19
|
-
geometry = (() => {
|
|
20
|
-
const geometry = new PlaneGeometry(10, 10, 1, 1);
|
|
21
|
-
geometry.rotateX(degToRad(-90));
|
|
22
|
-
return geometry;
|
|
23
|
-
})();
|
|
24
|
-
material = new MeshBasicMaterial({
|
|
25
|
-
side: DoubleSide,
|
|
26
|
-
transparent: true,
|
|
27
|
-
alphaTest: 0.1
|
|
28
|
-
});
|
|
29
|
-
div = (() => {
|
|
30
|
-
const div = document.createElement("div");
|
|
31
|
-
div.style.position = "fixed";
|
|
32
|
-
div.style.top = "100%";
|
|
33
|
-
div.style.left = "100%";
|
|
34
|
-
div.style.pointerEvents = "none";
|
|
35
|
-
div.style.userSelect = "none";
|
|
36
|
-
div.style.lineHeight = "1";
|
|
37
|
-
div.style.whiteSpace = "nowrap";
|
|
38
|
-
return div;
|
|
39
|
-
})();
|
|
40
|
-
// 设置网格尺寸
|
|
41
|
-
setGeoSize(width, height) {
|
|
42
|
-
this.size.set(width, height);
|
|
43
|
-
this.geometry.dispose();
|
|
44
|
-
const geometry = new PlaneGeometry(width, height, 1, 1);
|
|
45
|
-
geometry.rotateX(degToRad(-90));
|
|
46
|
-
this.geometry = geometry;
|
|
47
|
-
}
|
|
48
|
-
async setHtml(html = "", backgroundColor = "#00000000") {
|
|
49
|
-
this.div.innerHTML = html;
|
|
50
|
-
document.body.appendChild(this.div);
|
|
51
|
-
await
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
this.dispatchEvent({ type: "loaded" });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2023-04-15 11:26:32
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2023-04-15 12:38:09
|
|
6
|
+
*/
|
|
7
|
+
import { snapdom } from "@zumer/snapdom";
|
|
8
|
+
import { Texture, DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Vector2 } from "three";
|
|
9
|
+
import { degToRad } from "three/src/math/MathUtils";
|
|
10
|
+
import threeLoader from "./threeLoader";
|
|
11
|
+
// html 文本面板
|
|
12
|
+
export default class PlaneWithHtml extends Mesh {
|
|
13
|
+
constructor(html = "", backgroundColor = "#00000000") {
|
|
14
|
+
super();
|
|
15
|
+
this.setHtml(html, backgroundColor);
|
|
16
|
+
}
|
|
17
|
+
visible = false;
|
|
18
|
+
size = new Vector2(10, 10);
|
|
19
|
+
geometry = (() => {
|
|
20
|
+
const geometry = new PlaneGeometry(10, 10, 1, 1);
|
|
21
|
+
geometry.rotateX(degToRad(-90));
|
|
22
|
+
return geometry;
|
|
23
|
+
})();
|
|
24
|
+
material = new MeshBasicMaterial({
|
|
25
|
+
side: DoubleSide,
|
|
26
|
+
transparent: true,
|
|
27
|
+
alphaTest: 0.1
|
|
28
|
+
});
|
|
29
|
+
div = (() => {
|
|
30
|
+
const div = document.createElement("div");
|
|
31
|
+
div.style.position = "fixed";
|
|
32
|
+
div.style.top = "100%";
|
|
33
|
+
div.style.left = "100%";
|
|
34
|
+
div.style.pointerEvents = "none";
|
|
35
|
+
div.style.userSelect = "none";
|
|
36
|
+
div.style.lineHeight = "1";
|
|
37
|
+
div.style.whiteSpace = "nowrap";
|
|
38
|
+
return div;
|
|
39
|
+
})();
|
|
40
|
+
// 设置网格尺寸
|
|
41
|
+
setGeoSize(width, height) {
|
|
42
|
+
this.size.set(width, height);
|
|
43
|
+
this.geometry.dispose();
|
|
44
|
+
const geometry = new PlaneGeometry(width, height, 1, 1);
|
|
45
|
+
geometry.rotateX(degToRad(-90));
|
|
46
|
+
this.geometry = geometry;
|
|
47
|
+
}
|
|
48
|
+
async setHtml(html = "", backgroundColor = "#00000000") {
|
|
49
|
+
this.div.innerHTML = html;
|
|
50
|
+
document.body.appendChild(this.div);
|
|
51
|
+
const img = await snapdom.toPng(this.div, { backgroundColor });
|
|
52
|
+
this.setGeoSize(img.naturalWidth, img.naturalHeight);
|
|
53
|
+
const texture = new Texture(img);
|
|
54
|
+
texture.needsUpdate = true;
|
|
55
|
+
this.material.map = texture;
|
|
56
|
+
this.material.map.anisotropy = threeLoader.anisotropy;
|
|
57
|
+
this.material.needsUpdate = true;
|
|
58
|
+
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
59
|
+
this.visible = true;
|
|
60
|
+
this.div.remove();
|
|
61
|
+
this.dispatchEvent({ type: "loaded" });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Sprite, PointLight as THREEPointLight } from "three";
|
|
2
|
-
import SpriteText from "../SpriteText";
|
|
3
|
-
/**
|
|
4
|
-
* 点光源
|
|
5
|
-
* @export
|
|
6
|
-
* @class PointLight
|
|
7
|
-
* @extends {THREEPointLight}
|
|
8
|
-
*/
|
|
9
|
-
export default class PointLight extends THREEPointLight {
|
|
10
|
-
constructor(color?: string, intensity?: number, distance?: number, decay?: number);
|
|
11
|
-
pointLinghtHelper: Sprite<import("three").Object3DEventMap>;
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { Sprite, PointLight as THREEPointLight, Mesh, SphereGeometry, MeshBasicMaterial } from "three";
|
|
2
|
+
import SpriteText from "../SpriteText";
|
|
3
|
+
/**
|
|
4
|
+
* 点光源
|
|
5
|
+
* @export
|
|
6
|
+
* @class PointLight
|
|
7
|
+
* @extends {THREEPointLight}
|
|
8
|
+
*/
|
|
9
|
+
export default class PointLight extends THREEPointLight {
|
|
10
|
+
constructor(color?: string, intensity?: number, distance?: number, decay?: number);
|
|
11
|
+
pointLinghtHelper: Sprite<import("three").Object3DEventMap>;
|
|
12
|
+
wireframeSphere: Mesh<SphereGeometry, MeshBasicMaterial, import("three").Object3DEventMap>;
|
|
13
|
+
label: SpriteText;
|
|
14
|
+
}
|