three-base 2.0.129 → 2.0.134
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 +71 -50
- package/FPScontrol.js +505 -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 +97 -81
- package/ThreeBase.js +613 -559
- package/ThreeMouse.d.ts +40 -40
- package/ThreeMouse.js +407 -409
- package/Transition.d.ts +40 -40
- package/Transition.js +210 -207
- 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 +1 -1
- 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/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 +11 -0
- package/pass/ssao_pass.js +294 -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
package/Fire/Fire.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { BufferGeometry, Camera, Clock, Group, Material, NormalBufferAttributes, Object3DEventMap, Points, Scene, Vector2, WebGLRenderer } from "three";
|
|
2
|
-
import FireGromtry from "./FireGromtry";
|
|
3
|
-
import FireMaterial from "./FireMaterial";
|
|
4
|
-
export default class Fire extends Points {
|
|
5
|
-
constructor();
|
|
6
|
-
geometry: FireGromtry;
|
|
7
|
-
material: FireMaterial;
|
|
8
|
-
fireColor: string;
|
|
9
|
-
fireScale: number;
|
|
10
|
-
fireRadius: number;
|
|
11
|
-
fireHeight: number;
|
|
12
|
-
particleCount: number;
|
|
13
|
-
isPerspectiveCamera: boolean;
|
|
14
|
-
size: Vector2;
|
|
15
|
-
cacheProps: {
|
|
16
|
-
fireColor: string;
|
|
17
|
-
fireScale: number;
|
|
18
|
-
fireRadius: number;
|
|
19
|
-
fireHeight: number;
|
|
20
|
-
particleCount: number;
|
|
21
|
-
width: number;
|
|
22
|
-
height: number;
|
|
23
|
-
isPerspectiveCamera: boolean;
|
|
24
|
-
};
|
|
25
|
-
updataFrame: number;
|
|
26
|
-
clock: Clock;
|
|
27
|
-
onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, group: Group<Object3DEventMap>): void;
|
|
28
|
-
}
|
|
1
|
+
import { BufferGeometry, Camera, Clock, Group, Material, NormalBufferAttributes, Object3DEventMap, Points, Scene, Vector2, WebGLRenderer } from "three";
|
|
2
|
+
import FireGromtry from "./FireGromtry";
|
|
3
|
+
import FireMaterial from "./FireMaterial";
|
|
4
|
+
export default class Fire extends Points {
|
|
5
|
+
constructor();
|
|
6
|
+
geometry: FireGromtry;
|
|
7
|
+
material: FireMaterial;
|
|
8
|
+
fireColor: string;
|
|
9
|
+
fireScale: number;
|
|
10
|
+
fireRadius: number;
|
|
11
|
+
fireHeight: number;
|
|
12
|
+
particleCount: number;
|
|
13
|
+
isPerspectiveCamera: boolean;
|
|
14
|
+
size: Vector2;
|
|
15
|
+
cacheProps: {
|
|
16
|
+
fireColor: string;
|
|
17
|
+
fireScale: number;
|
|
18
|
+
fireRadius: number;
|
|
19
|
+
fireHeight: number;
|
|
20
|
+
particleCount: number;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
isPerspectiveCamera: boolean;
|
|
24
|
+
};
|
|
25
|
+
updataFrame: number;
|
|
26
|
+
clock: Clock;
|
|
27
|
+
onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, group: Group<Object3DEventMap>): void;
|
|
28
|
+
}
|
package/Fire/Fire.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2024-06-17 02:15:58
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2024-06-18 20:34:38
|
|
6
|
-
*/
|
|
7
|
-
import { Clock, Color, Points, Vector2 } from "three";
|
|
8
|
-
import FireGromtry from "./FireGromtry";
|
|
9
|
-
import FireMaterial from "./FireMaterial";
|
|
10
|
-
import { degToRad } from "three/src/math/MathUtils";
|
|
11
|
-
// 粒子火焰效果
|
|
12
|
-
export default class Fire extends Points {
|
|
13
|
-
constructor() {
|
|
14
|
-
super();
|
|
15
|
-
}
|
|
16
|
-
geometry = new FireGromtry(0, 0, 0);
|
|
17
|
-
material = new FireMaterial();
|
|
18
|
-
// 火焰的颜色
|
|
19
|
-
fireColor = "#ff2200";
|
|
20
|
-
// 火焰的整体缩放值
|
|
21
|
-
fireScale = 1;
|
|
22
|
-
// 火焰的燃烧半径
|
|
23
|
-
fireRadius = 0.5;
|
|
24
|
-
// 火焰的高度
|
|
25
|
-
fireHeight = 3;
|
|
26
|
-
// 火焰的粒子数量
|
|
27
|
-
particleCount = 500;
|
|
28
|
-
// 是否是透视相机
|
|
29
|
-
isPerspectiveCamera = true;
|
|
30
|
-
//渲染器的尺寸
|
|
31
|
-
size = new Vector2();
|
|
32
|
-
// 缓存的参数
|
|
33
|
-
cacheProps = {
|
|
34
|
-
fireColor: "#ff2200",
|
|
35
|
-
fireScale: 0,
|
|
36
|
-
fireRadius: 0.5,
|
|
37
|
-
fireHeight: 3,
|
|
38
|
-
particleCount: 500,
|
|
39
|
-
width: 0,
|
|
40
|
-
height: 0,
|
|
41
|
-
isPerspectiveCamera: true
|
|
42
|
-
};
|
|
43
|
-
// 当前渲染的帧数
|
|
44
|
-
updataFrame = 0;
|
|
45
|
-
// 时钟对象
|
|
46
|
-
clock = new Clock();
|
|
47
|
-
onBeforeRender(renderer, scene, camera, geometry, material, group) {
|
|
48
|
-
const delta = this.clock.getDelta();
|
|
49
|
-
renderer.getSize(this.size);
|
|
50
|
-
if (this.cacheProps.fireColor !== this.fireColor ||
|
|
51
|
-
this.cacheProps.fireScale !== this.fireScale ||
|
|
52
|
-
this.cacheProps.fireRadius !== this.fireRadius ||
|
|
53
|
-
this.cacheProps.fireHeight !== this.fireHeight ||
|
|
54
|
-
this.cacheProps.particleCount !== this.particleCount ||
|
|
55
|
-
this.cacheProps.isPerspectiveCamera !== this.isPerspectiveCamera ||
|
|
56
|
-
this.cacheProps.width !== this.size.x ||
|
|
57
|
-
this.cacheProps.height !== this.size.y) {
|
|
58
|
-
this.cacheProps.fireColor = this.fireColor;
|
|
59
|
-
this.cacheProps.fireScale = this.fireScale;
|
|
60
|
-
this.cacheProps.fireRadius = this.fireRadius;
|
|
61
|
-
this.cacheProps.fireHeight = this.fireHeight;
|
|
62
|
-
this.cacheProps.particleCount = this.particleCount;
|
|
63
|
-
this.cacheProps.isPerspectiveCamera = this.isPerspectiveCamera;
|
|
64
|
-
this.cacheProps.width = this.size.x;
|
|
65
|
-
this.cacheProps.height = this.size.y;
|
|
66
|
-
this.geometry = new FireGromtry(this.fireRadius * this.fireScale, this.fireHeight * this.fireScale, this.particleCount);
|
|
67
|
-
this.material.uniforms.color.value = new Color(this.fireColor);
|
|
68
|
-
this.material.uniforms.size.value = this.fireScale * 0.4;
|
|
69
|
-
if (camera.isPerspectiveCamera) {
|
|
70
|
-
this.material.uniforms.heightOfNearPlane.value = Math.abs(this.size.y / (2 * Math.tan(degToRad(camera.fov * 0.5))));
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
this.material.uniforms.heightOfNearPlane.value = 0;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
this.isPerspectiveCamera = camera.isPerspectiveCamera;
|
|
77
|
-
this.material.uniforms.time.value = (this.material.uniforms.time.value + delta) % 1;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2024-06-17 02:15:58
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2024-06-18 20:34:38
|
|
6
|
+
*/
|
|
7
|
+
import { Clock, Color, Points, Vector2 } from "three";
|
|
8
|
+
import FireGromtry from "./FireGromtry";
|
|
9
|
+
import FireMaterial from "./FireMaterial";
|
|
10
|
+
import { degToRad } from "three/src/math/MathUtils";
|
|
11
|
+
// 粒子火焰效果
|
|
12
|
+
export default class Fire extends Points {
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
}
|
|
16
|
+
geometry = new FireGromtry(0, 0, 0);
|
|
17
|
+
material = new FireMaterial();
|
|
18
|
+
// 火焰的颜色
|
|
19
|
+
fireColor = "#ff2200";
|
|
20
|
+
// 火焰的整体缩放值
|
|
21
|
+
fireScale = 1;
|
|
22
|
+
// 火焰的燃烧半径
|
|
23
|
+
fireRadius = 0.5;
|
|
24
|
+
// 火焰的高度
|
|
25
|
+
fireHeight = 3;
|
|
26
|
+
// 火焰的粒子数量
|
|
27
|
+
particleCount = 500;
|
|
28
|
+
// 是否是透视相机
|
|
29
|
+
isPerspectiveCamera = true;
|
|
30
|
+
//渲染器的尺寸
|
|
31
|
+
size = new Vector2();
|
|
32
|
+
// 缓存的参数
|
|
33
|
+
cacheProps = {
|
|
34
|
+
fireColor: "#ff2200",
|
|
35
|
+
fireScale: 0,
|
|
36
|
+
fireRadius: 0.5,
|
|
37
|
+
fireHeight: 3,
|
|
38
|
+
particleCount: 500,
|
|
39
|
+
width: 0,
|
|
40
|
+
height: 0,
|
|
41
|
+
isPerspectiveCamera: true
|
|
42
|
+
};
|
|
43
|
+
// 当前渲染的帧数
|
|
44
|
+
updataFrame = 0;
|
|
45
|
+
// 时钟对象
|
|
46
|
+
clock = new Clock();
|
|
47
|
+
onBeforeRender(renderer, scene, camera, geometry, material, group) {
|
|
48
|
+
const delta = this.clock.getDelta();
|
|
49
|
+
renderer.getSize(this.size);
|
|
50
|
+
if (this.cacheProps.fireColor !== this.fireColor ||
|
|
51
|
+
this.cacheProps.fireScale !== this.fireScale ||
|
|
52
|
+
this.cacheProps.fireRadius !== this.fireRadius ||
|
|
53
|
+
this.cacheProps.fireHeight !== this.fireHeight ||
|
|
54
|
+
this.cacheProps.particleCount !== this.particleCount ||
|
|
55
|
+
this.cacheProps.isPerspectiveCamera !== this.isPerspectiveCamera ||
|
|
56
|
+
this.cacheProps.width !== this.size.x ||
|
|
57
|
+
this.cacheProps.height !== this.size.y) {
|
|
58
|
+
this.cacheProps.fireColor = this.fireColor;
|
|
59
|
+
this.cacheProps.fireScale = this.fireScale;
|
|
60
|
+
this.cacheProps.fireRadius = this.fireRadius;
|
|
61
|
+
this.cacheProps.fireHeight = this.fireHeight;
|
|
62
|
+
this.cacheProps.particleCount = this.particleCount;
|
|
63
|
+
this.cacheProps.isPerspectiveCamera = this.isPerspectiveCamera;
|
|
64
|
+
this.cacheProps.width = this.size.x;
|
|
65
|
+
this.cacheProps.height = this.size.y;
|
|
66
|
+
this.geometry = new FireGromtry(this.fireRadius * this.fireScale, this.fireHeight * this.fireScale, this.particleCount);
|
|
67
|
+
this.material.uniforms.color.value = new Color(this.fireColor);
|
|
68
|
+
this.material.uniforms.size.value = this.fireScale * 0.4;
|
|
69
|
+
if (camera.isPerspectiveCamera) {
|
|
70
|
+
this.material.uniforms.heightOfNearPlane.value = Math.abs(this.size.y / (2 * Math.tan(degToRad(camera.fov * 0.5))));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.material.uniforms.heightOfNearPlane.value = 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
this.isPerspectiveCamera = camera.isPerspectiveCamera;
|
|
77
|
+
this.material.uniforms.time.value = (this.material.uniforms.time.value + delta) % 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
package/Fire/FireGromtry.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export declare const SPRITE_ROW_LENGTH = 4;
|
|
2
|
-
export declare const ONE_SPRITE_ROW_LENGTH: number;
|
|
3
|
-
import { BufferGeometry } from "three";
|
|
4
|
-
export default class FireGromtry extends BufferGeometry {
|
|
5
|
-
radius: number;
|
|
6
|
-
height: number;
|
|
7
|
-
particleCount: number;
|
|
8
|
-
constructor(radius?: number, height?: number, particleCount?: number);
|
|
9
|
-
}
|
|
1
|
+
export declare const SPRITE_ROW_LENGTH = 4;
|
|
2
|
+
export declare const ONE_SPRITE_ROW_LENGTH: number;
|
|
3
|
+
import { BufferGeometry } from "three";
|
|
4
|
+
export default class FireGromtry extends BufferGeometry {
|
|
5
|
+
radius: number;
|
|
6
|
+
height: number;
|
|
7
|
+
particleCount: number;
|
|
8
|
+
constructor(radius?: number, height?: number, particleCount?: number);
|
|
9
|
+
}
|
package/Fire/FireGromtry.js
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2024-06-17 02:15:58
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2024-06-18 18:12:37
|
|
6
|
-
*/
|
|
7
|
-
export const SPRITE_ROW_LENGTH = 4; // 粒子图片中图片数量
|
|
8
|
-
export const ONE_SPRITE_ROW_LENGTH = 1 / SPRITE_ROW_LENGTH; // 每一行的宽度
|
|
9
|
-
import { BufferAttribute, BufferGeometry } from "three";
|
|
10
|
-
// 粒子火焰顶点对象
|
|
11
|
-
export default class FireGromtry extends BufferGeometry {
|
|
12
|
-
radius = 0.5;
|
|
13
|
-
height = 3;
|
|
14
|
-
particleCount = 200;
|
|
15
|
-
constructor(radius = 0.5, height = 3, particleCount = 200) {
|
|
16
|
-
super();
|
|
17
|
-
const halfHeight = height * 0.5;
|
|
18
|
-
const position = new Float32Array(particleCount * 3);
|
|
19
|
-
const random = new Float32Array(particleCount);
|
|
20
|
-
const sprite = new Float32Array(particleCount);
|
|
21
|
-
for (let i = 0; i < particleCount; i++) {
|
|
22
|
-
const r = Math.sqrt(Math.random()) * radius;
|
|
23
|
-
const angle = Math.random() * 2 * Math.PI;
|
|
24
|
-
position[i * 3 + 0] = Math.cos(angle) * r;
|
|
25
|
-
position[i * 3 + 1] = (radius - r) / radius * halfHeight + halfHeight;
|
|
26
|
-
position[i * 3 + 2] = Math.sin(angle) * r;
|
|
27
|
-
sprite[i] = ONE_SPRITE_ROW_LENGTH * ((Math.random() * 4) | 0);
|
|
28
|
-
random[i] = Math.random();
|
|
29
|
-
if (i === 0) {
|
|
30
|
-
// to avoid going out of Frustum
|
|
31
|
-
position[i * 3 + 0] = 0;
|
|
32
|
-
position[i * 3 + 1] = 0;
|
|
33
|
-
position[i * 3 + 2] = 0;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
this.setAttribute('position', new BufferAttribute(position, 3));
|
|
37
|
-
this.setAttribute('random', new BufferAttribute(random, 1));
|
|
38
|
-
this.setAttribute('sprite', new BufferAttribute(sprite, 1));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2024-06-17 02:15:58
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2024-06-18 18:12:37
|
|
6
|
+
*/
|
|
7
|
+
export const SPRITE_ROW_LENGTH = 4; // 粒子图片中图片数量
|
|
8
|
+
export const ONE_SPRITE_ROW_LENGTH = 1 / SPRITE_ROW_LENGTH; // 每一行的宽度
|
|
9
|
+
import { BufferAttribute, BufferGeometry } from "three";
|
|
10
|
+
// 粒子火焰顶点对象
|
|
11
|
+
export default class FireGromtry extends BufferGeometry {
|
|
12
|
+
radius = 0.5;
|
|
13
|
+
height = 3;
|
|
14
|
+
particleCount = 200;
|
|
15
|
+
constructor(radius = 0.5, height = 3, particleCount = 200) {
|
|
16
|
+
super();
|
|
17
|
+
const halfHeight = height * 0.5;
|
|
18
|
+
const position = new Float32Array(particleCount * 3);
|
|
19
|
+
const random = new Float32Array(particleCount);
|
|
20
|
+
const sprite = new Float32Array(particleCount);
|
|
21
|
+
for (let i = 0; i < particleCount; i++) {
|
|
22
|
+
const r = Math.sqrt(Math.random()) * radius;
|
|
23
|
+
const angle = Math.random() * 2 * Math.PI;
|
|
24
|
+
position[i * 3 + 0] = Math.cos(angle) * r;
|
|
25
|
+
position[i * 3 + 1] = (radius - r) / radius * halfHeight + halfHeight;
|
|
26
|
+
position[i * 3 + 2] = Math.sin(angle) * r;
|
|
27
|
+
sprite[i] = ONE_SPRITE_ROW_LENGTH * ((Math.random() * 4) | 0);
|
|
28
|
+
random[i] = Math.random();
|
|
29
|
+
if (i === 0) {
|
|
30
|
+
// to avoid going out of Frustum
|
|
31
|
+
position[i * 3 + 0] = 0;
|
|
32
|
+
position[i * 3 + 1] = 0;
|
|
33
|
+
position[i * 3 + 2] = 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.setAttribute('position', new BufferAttribute(position, 3));
|
|
37
|
+
this.setAttribute('random', new BufferAttribute(random, 1));
|
|
38
|
+
this.setAttribute('sprite', new BufferAttribute(sprite, 1));
|
|
39
|
+
}
|
|
40
|
+
}
|
package/Fire/FireMaterial.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { Color, ShaderMaterial } from "three";
|
|
2
|
-
export default class FireMaterial extends ShaderMaterial {
|
|
3
|
-
constructor();
|
|
4
|
-
uniforms: {
|
|
5
|
-
color: {
|
|
6
|
-
value: Color;
|
|
7
|
-
};
|
|
8
|
-
size: {
|
|
9
|
-
value: number;
|
|
10
|
-
};
|
|
11
|
-
map: {
|
|
12
|
-
value: import("three").Texture;
|
|
13
|
-
};
|
|
14
|
-
time: {
|
|
15
|
-
value: number;
|
|
16
|
-
};
|
|
17
|
-
heightOfNearPlane: {
|
|
18
|
-
value: number;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
vertexShader: string;
|
|
22
|
-
fragmentShader: string;
|
|
23
|
-
blending: 2;
|
|
24
|
-
depthTest: boolean;
|
|
25
|
-
depthWrite: boolean;
|
|
26
|
-
transparent: boolean;
|
|
27
|
-
fog: boolean;
|
|
28
|
-
}
|
|
1
|
+
import { Color, ShaderMaterial } from "three";
|
|
2
|
+
export default class FireMaterial extends ShaderMaterial {
|
|
3
|
+
constructor();
|
|
4
|
+
uniforms: {
|
|
5
|
+
color: {
|
|
6
|
+
value: Color;
|
|
7
|
+
};
|
|
8
|
+
size: {
|
|
9
|
+
value: number;
|
|
10
|
+
};
|
|
11
|
+
map: {
|
|
12
|
+
value: import("three").Texture;
|
|
13
|
+
};
|
|
14
|
+
time: {
|
|
15
|
+
value: number;
|
|
16
|
+
};
|
|
17
|
+
heightOfNearPlane: {
|
|
18
|
+
value: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
vertexShader: string;
|
|
22
|
+
fragmentShader: string;
|
|
23
|
+
blending: 2;
|
|
24
|
+
depthTest: boolean;
|
|
25
|
+
depthWrite: boolean;
|
|
26
|
+
transparent: boolean;
|
|
27
|
+
fog: boolean;
|
|
28
|
+
}
|
package/Fire/FireMaterial.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2024-06-17 02:37:46
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2024-06-18 20:23:31
|
|
6
|
-
*/
|
|
7
|
-
import { AdditiveBlending, Color, ShaderChunk, ShaderMaterial } from "three";
|
|
8
|
-
import threeLoader from "../threeLoader";
|
|
9
|
-
import { ONE_SPRITE_ROW_LENGTH } from "./FireGromtry";
|
|
10
|
-
// 火焰粒子材质
|
|
11
|
-
export default class FireMaterial extends ShaderMaterial {
|
|
12
|
-
constructor() {
|
|
13
|
-
super();
|
|
14
|
-
}
|
|
15
|
-
// 材质参数
|
|
16
|
-
uniforms = {
|
|
17
|
-
color: { value: new Color() },
|
|
18
|
-
size: { value: 0.0 },
|
|
19
|
-
map: { value: threeLoader.getTexture("data:image/png;base64,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") },
|
|
20
|
-
time: { value: 0.0 },
|
|
21
|
-
heightOfNearPlane: { value: 0.0 }
|
|
22
|
-
};
|
|
23
|
-
// 顶点着色器
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2024-06-17 02:37:46
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2024-06-18 20:23:31
|
|
6
|
+
*/
|
|
7
|
+
import { AdditiveBlending, Color, ShaderChunk, ShaderMaterial } from "three";
|
|
8
|
+
import threeLoader from "../threeLoader";
|
|
9
|
+
import { ONE_SPRITE_ROW_LENGTH } from "./FireGromtry";
|
|
10
|
+
// 火焰粒子材质
|
|
11
|
+
export default class FireMaterial extends ShaderMaterial {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
}
|
|
15
|
+
// 材质参数
|
|
16
|
+
uniforms = {
|
|
17
|
+
color: { value: new Color() },
|
|
18
|
+
size: { value: 0.0 },
|
|
19
|
+
map: { value: threeLoader.getTexture("data:image/png;base64,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") },
|
|
20
|
+
time: { value: 0.0 },
|
|
21
|
+
heightOfNearPlane: { value: 0.0 }
|
|
22
|
+
};
|
|
23
|
+
// 顶点着色器
|
|
24
24
|
vertexShader = `
|
|
25
25
|
${ShaderChunk.common}
|
|
26
26
|
${ShaderChunk.logdepthbuf_pars_vertex}
|
|
@@ -52,8 +52,8 @@ export default class FireMaterial extends ShaderMaterial {
|
|
|
52
52
|
vSprite = sprite;
|
|
53
53
|
${ShaderChunk.logdepthbuf_vertex}
|
|
54
54
|
}
|
|
55
|
-
`;
|
|
56
|
-
//片元着色器
|
|
55
|
+
`;
|
|
56
|
+
//片元着色器
|
|
57
57
|
fragmentShader = `
|
|
58
58
|
${ShaderChunk.logdepthbuf_pars_fragment}
|
|
59
59
|
uniform vec3 color;
|
|
@@ -74,10 +74,10 @@ export default class FireMaterial extends ShaderMaterial {
|
|
|
74
74
|
gl_FragColor = newTextureColor * vec4(color,1.0) * vOpacity;
|
|
75
75
|
${ShaderChunk.logdepthbuf_fragment}
|
|
76
76
|
}
|
|
77
|
-
`;
|
|
78
|
-
blending = AdditiveBlending;
|
|
79
|
-
depthTest = true;
|
|
80
|
-
depthWrite = false;
|
|
81
|
-
transparent = true;
|
|
82
|
-
fog = false;
|
|
83
|
-
}
|
|
77
|
+
`;
|
|
78
|
+
blending = AdditiveBlending;
|
|
79
|
+
depthTest = true;
|
|
80
|
+
depthWrite = false;
|
|
81
|
+
transparent = true;
|
|
82
|
+
fog = false;
|
|
83
|
+
}
|
package/Fire/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./Fire";
|
|
1
|
+
export { default } from "./Fire";
|
package/Fire/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./Fire";
|
|
1
|
+
export { default } from "./Fire";
|
package/Grass/Grass.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Mesh, MeshLambertMaterial, PlaneGeometry } from "three";
|
|
2
|
-
export default class Grass extends Mesh {
|
|
3
|
-
constructor();
|
|
4
|
-
geometry: PlaneGeometry;
|
|
5
|
-
map: import("three").Texture;
|
|
6
|
-
material: MeshLambertMaterial;
|
|
7
|
-
setSize(width: number, height: number): void;
|
|
8
|
-
}
|
|
1
|
+
import { Mesh, MeshLambertMaterial, PlaneGeometry } from "three";
|
|
2
|
+
export default class Grass extends Mesh {
|
|
3
|
+
constructor();
|
|
4
|
+
geometry: PlaneGeometry;
|
|
5
|
+
map: import("three").Texture;
|
|
6
|
+
material: MeshLambertMaterial;
|
|
7
|
+
setSize(width: number, height: number): void;
|
|
8
|
+
}
|
package/Grass/Grass.js
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2024-09-14 22:58:16
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2024-09-14 23:20:39
|
|
6
|
-
*/
|
|
7
|
-
import { DoubleSide, MathUtils, Mesh, MeshLambertMaterial, PlaneGeometry, RepeatWrapping, TextureLoader, } from "three";
|
|
8
|
-
import grassJPG from "./grass.jpg";
|
|
9
|
-
// 草地Mesh
|
|
10
|
-
export default class Grass extends Mesh {
|
|
11
|
-
constructor() {
|
|
12
|
-
super();
|
|
13
|
-
}
|
|
14
|
-
geometry = (() => {
|
|
15
|
-
const geometry = new PlaneGeometry(1, 1, 1, 1);
|
|
16
|
-
geometry.rotateX(MathUtils.degToRad(90));
|
|
17
|
-
return geometry;
|
|
18
|
-
})();
|
|
19
|
-
map = (() => {
|
|
20
|
-
const map = new TextureLoader().load(grassJPG);
|
|
21
|
-
map.wrapS = map.wrapT = RepeatWrapping;
|
|
22
|
-
map.repeat.set(1, 1);
|
|
23
|
-
return map;
|
|
24
|
-
})();
|
|
25
|
-
material = (() => {
|
|
26
|
-
const material = new MeshLambertMaterial({
|
|
27
|
-
map: this.map,
|
|
28
|
-
side: DoubleSide,
|
|
29
|
-
});
|
|
30
|
-
return material;
|
|
31
|
-
})();
|
|
32
|
-
// 设置尺寸
|
|
33
|
-
setSize(width, height) {
|
|
34
|
-
this.scale.set(width, 1, height);
|
|
35
|
-
this.map.repeat.set(width, height);
|
|
36
|
-
// this.material.uniforms.size.value.set(width * 0.001, height * 0.001);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2024-09-14 22:58:16
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2024-09-14 23:20:39
|
|
6
|
+
*/
|
|
7
|
+
import { DoubleSide, MathUtils, Mesh, MeshLambertMaterial, PlaneGeometry, RepeatWrapping, TextureLoader, } from "three";
|
|
8
|
+
import grassJPG from "./grass.jpg";
|
|
9
|
+
// 草地Mesh
|
|
10
|
+
export default class Grass extends Mesh {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
}
|
|
14
|
+
geometry = (() => {
|
|
15
|
+
const geometry = new PlaneGeometry(1, 1, 1, 1);
|
|
16
|
+
geometry.rotateX(MathUtils.degToRad(90));
|
|
17
|
+
return geometry;
|
|
18
|
+
})();
|
|
19
|
+
map = (() => {
|
|
20
|
+
const map = new TextureLoader().load(grassJPG);
|
|
21
|
+
map.wrapS = map.wrapT = RepeatWrapping;
|
|
22
|
+
map.repeat.set(1, 1);
|
|
23
|
+
return map;
|
|
24
|
+
})();
|
|
25
|
+
material = (() => {
|
|
26
|
+
const material = new MeshLambertMaterial({
|
|
27
|
+
map: this.map,
|
|
28
|
+
side: DoubleSide,
|
|
29
|
+
});
|
|
30
|
+
return material;
|
|
31
|
+
})();
|
|
32
|
+
// 设置尺寸
|
|
33
|
+
setSize(width, height) {
|
|
34
|
+
this.scale.set(width, 1, height);
|
|
35
|
+
this.map.repeat.set(width, height);
|
|
36
|
+
// this.material.uniforms.size.value.set(width * 0.001, height * 0.001);
|
|
37
|
+
}
|
|
38
|
+
}
|
package/Grass/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./Grass";
|
|
1
|
+
export { default } from "./Grass";
|
package/Grass/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./Grass";
|
|
1
|
+
export { default } from "./Grass";
|
package/Ground1/Ground1.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BufferGeometry, Camera, Clock, Group, Material, Matrix4, Mesh, PlaneGeometry, Scene, ShaderMaterial, WebGLRenderer } from "three";
|
|
2
|
-
export default class Ground1 extends Mesh {
|
|
3
|
-
tempMatrix: Matrix4;
|
|
4
|
-
constructor();
|
|
5
|
-
renderOrder: number;
|
|
6
|
-
geometry: PlaneGeometry;
|
|
7
|
-
setSize(width: number, height: number): void;
|
|
8
|
-
clock: Clock;
|
|
9
|
-
onBeforeRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material, group: Group) => void;
|
|
10
|
-
material: ShaderMaterial;
|
|
11
|
-
}
|
|
1
|
+
import { BufferGeometry, Camera, Clock, Group, Material, Matrix4, Mesh, PlaneGeometry, Scene, ShaderMaterial, WebGLRenderer } from "three";
|
|
2
|
+
export default class Ground1 extends Mesh {
|
|
3
|
+
tempMatrix: Matrix4;
|
|
4
|
+
constructor();
|
|
5
|
+
renderOrder: number;
|
|
6
|
+
geometry: PlaneGeometry;
|
|
7
|
+
setSize(width: number, height: number): void;
|
|
8
|
+
clock: Clock;
|
|
9
|
+
onBeforeRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material, group: Group) => void;
|
|
10
|
+
material: ShaderMaterial;
|
|
11
|
+
}
|