@d5techs/3dgs-lib 1.0.0
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/README.md +236 -0
- package/dist/3dgs-lib.cjs +12012 -0
- package/dist/3dgs-lib.cjs.map +1 -0
- package/dist/3dgs-lib.js +12012 -0
- package/dist/3dgs-lib.js.map +1 -0
- package/dist/App.d.ts +142 -0
- package/dist/core/BoundingBoxRenderer.d.ts +70 -0
- package/dist/core/Camera.d.ts +38 -0
- package/dist/core/OrbitControls.d.ts +101 -0
- package/dist/core/Renderer.d.ts +69 -0
- package/dist/core/ViewportGizmo.d.ts +83 -0
- package/dist/core/gizmo/ArcShape.d.ts +90 -0
- package/dist/core/gizmo/ArrowShape.d.ts +51 -0
- package/dist/core/gizmo/BoxLineShape.d.ts +47 -0
- package/dist/core/gizmo/PlaneShape.d.ts +48 -0
- package/dist/core/gizmo/Shape.d.ts +117 -0
- package/dist/core/gizmo/SphereShape.d.ts +29 -0
- package/dist/core/gizmo/TransformGizmoV2.d.ts +203 -0
- package/dist/core/gizmo/index.d.ts +14 -0
- package/dist/core/math/Mat4.d.ts +38 -0
- package/dist/core/math/Quat.d.ts +52 -0
- package/dist/core/math/Ray.d.ts +65 -0
- package/dist/core/math/Vec3.d.ts +39 -0
- package/dist/gs/GSSplatRenderer.d.ts +217 -0
- package/dist/gs/GSSplatRendererMobile.d.ts +147 -0
- package/dist/gs/GSSplatSorter.d.ts +105 -0
- package/dist/gs/GSSplatSorterMobile.d.ts +86 -0
- package/dist/gs/IGSSplatRenderer.d.ts +123 -0
- package/dist/gs/PLYLoader.d.ts +22 -0
- package/dist/gs/PLYLoaderMobile.d.ts +62 -0
- package/dist/gs/SplatLoader.d.ts +25 -0
- package/dist/gs/TextureCompressor.d.ts +57 -0
- package/dist/index.d.ts +44 -0
- package/dist/interaction/GizmoManager.d.ts +132 -0
- package/dist/loaders/GLBLoader.d.ts +67 -0
- package/dist/loaders/MTLParser.d.ts +65 -0
- package/dist/loaders/OBJLoader.d.ts +68 -0
- package/dist/loaders/OBJParser.d.ts +115 -0
- package/dist/mesh/Mesh.d.ts +52 -0
- package/dist/mesh/MeshRenderer.d.ts +74 -0
- package/dist/scene/SceneManager.d.ts +136 -0
- package/package.json +62 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Renderer } from "../core/Renderer";
|
|
2
|
+
import { Camera } from "../core/Camera";
|
|
3
|
+
import { Mesh, MeshBoundingBox } from "./Mesh";
|
|
4
|
+
import { MaterialData } from "../loaders/GLBLoader";
|
|
5
|
+
/**
|
|
6
|
+
* MeshRenderer - 网格渲染器
|
|
7
|
+
* 支持纹理和材质,每个 mesh 有独立的 uniform buffer
|
|
8
|
+
*/
|
|
9
|
+
export declare class MeshRenderer {
|
|
10
|
+
private renderer;
|
|
11
|
+
private camera;
|
|
12
|
+
private items;
|
|
13
|
+
private pipelineTextured;
|
|
14
|
+
private pipelineTexturedDoubleSided;
|
|
15
|
+
private bindGroupLayoutTextured;
|
|
16
|
+
private pipelineUntextured;
|
|
17
|
+
private pipelineUntexturedDoubleSided;
|
|
18
|
+
private bindGroupLayoutUntextured;
|
|
19
|
+
private sampler;
|
|
20
|
+
private defaultTexture;
|
|
21
|
+
private lightDir;
|
|
22
|
+
private ambientIntensity;
|
|
23
|
+
constructor(renderer: Renderer, camera: Camera);
|
|
24
|
+
private createResources;
|
|
25
|
+
private createPipelines;
|
|
26
|
+
/**
|
|
27
|
+
* 添加网格(带材质)- 每个 mesh 创建独立的 uniform buffer
|
|
28
|
+
*/
|
|
29
|
+
addMesh(mesh: Mesh, material?: MaterialData): void;
|
|
30
|
+
/**
|
|
31
|
+
* 移除网格
|
|
32
|
+
*/
|
|
33
|
+
removeMesh(mesh: Mesh): void;
|
|
34
|
+
/**
|
|
35
|
+
* 按索引移除网格
|
|
36
|
+
*/
|
|
37
|
+
removeMeshByIndex(index: number): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 清空所有网格
|
|
40
|
+
*/
|
|
41
|
+
clear(): void;
|
|
42
|
+
/**
|
|
43
|
+
* 设置光照方向
|
|
44
|
+
*/
|
|
45
|
+
setLightDirection(x: number, y: number, z: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* 设置环境光强度
|
|
48
|
+
*/
|
|
49
|
+
setAmbientIntensity(intensity: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* 获取环境光强度
|
|
52
|
+
*/
|
|
53
|
+
getAmbientIntensity(): number;
|
|
54
|
+
/**
|
|
55
|
+
* 渲染所有网格
|
|
56
|
+
*/
|
|
57
|
+
render(pass: GPURenderPassEncoder): void;
|
|
58
|
+
getMeshCount(): number;
|
|
59
|
+
getMeshByIndex(index: number): Mesh | null;
|
|
60
|
+
/**
|
|
61
|
+
* 获取指定索引网格的材质颜色
|
|
62
|
+
*/
|
|
63
|
+
getMeshColor(index: number): [number, number, number, number] | null;
|
|
64
|
+
/**
|
|
65
|
+
* 设置指定索引网格的材质颜色
|
|
66
|
+
*/
|
|
67
|
+
setMeshColor(index: number, r: number, g: number, b: number, a?: number): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* 设置指定范围内所有网格的材质颜色
|
|
70
|
+
*/
|
|
71
|
+
setMeshRangeColor(startIndex: number, count: number, r: number, g: number, b: number, a?: number): number;
|
|
72
|
+
getCombinedBoundingBox(): MeshBoundingBox | null;
|
|
73
|
+
destroy(): void;
|
|
74
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SceneManager - 场景管理器
|
|
3
|
+
*
|
|
4
|
+
* 负责管理场景中的所有对象:
|
|
5
|
+
* - Mesh 网格
|
|
6
|
+
* - Splat 点云
|
|
7
|
+
* - 场景查询(bounding box 等)
|
|
8
|
+
*/
|
|
9
|
+
import { Mesh } from "../mesh/Mesh";
|
|
10
|
+
import { MeshRenderer } from "../mesh/MeshRenderer";
|
|
11
|
+
import { IGSSplatRenderer, BoundingBox } from "../gs/IGSSplatRenderer";
|
|
12
|
+
import { MeshBoundingBox } from "../mesh/Mesh";
|
|
13
|
+
/**
|
|
14
|
+
* 场景对象类型
|
|
15
|
+
*/
|
|
16
|
+
export type SceneObjectType = 'mesh' | 'splat' | 'meshGroup';
|
|
17
|
+
/**
|
|
18
|
+
* 场景对象信息
|
|
19
|
+
*/
|
|
20
|
+
export interface SceneObjectInfo {
|
|
21
|
+
type: SceneObjectType;
|
|
22
|
+
index: number;
|
|
23
|
+
name?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* SceneManager - 场景管理器
|
|
27
|
+
*/
|
|
28
|
+
export declare class SceneManager {
|
|
29
|
+
private meshRenderer;
|
|
30
|
+
private gsRenderer;
|
|
31
|
+
constructor(meshRenderer: MeshRenderer);
|
|
32
|
+
/**
|
|
33
|
+
* 设置 GS Splat 渲染器
|
|
34
|
+
*/
|
|
35
|
+
setGSRenderer(renderer: IGSSplatRenderer | null): void;
|
|
36
|
+
/**
|
|
37
|
+
* 获取 GS Splat 渲染器
|
|
38
|
+
*/
|
|
39
|
+
getGSRenderer(): IGSSplatRenderer | null;
|
|
40
|
+
/**
|
|
41
|
+
* 是否有 Splat 数据
|
|
42
|
+
*/
|
|
43
|
+
hasSplats(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* 获取 Mesh 数量
|
|
46
|
+
*/
|
|
47
|
+
getMeshCount(): number;
|
|
48
|
+
/**
|
|
49
|
+
* 获取指定索引的 Mesh
|
|
50
|
+
*/
|
|
51
|
+
getMeshByIndex(index: number): Mesh | null;
|
|
52
|
+
/**
|
|
53
|
+
* 获取指定范围的 Mesh
|
|
54
|
+
*/
|
|
55
|
+
getMeshRange(startIndex: number, count: number): Mesh[];
|
|
56
|
+
/**
|
|
57
|
+
* 清空所有 Mesh
|
|
58
|
+
*/
|
|
59
|
+
clearMeshes(): void;
|
|
60
|
+
/**
|
|
61
|
+
* 按索引移除 Mesh
|
|
62
|
+
*/
|
|
63
|
+
removeMeshByIndex(index: number): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* 获取 Splat 数量
|
|
66
|
+
*/
|
|
67
|
+
getSplatCount(): number;
|
|
68
|
+
/**
|
|
69
|
+
* 清空 Splats
|
|
70
|
+
*/
|
|
71
|
+
clearSplats(): void;
|
|
72
|
+
/**
|
|
73
|
+
* 设置 Splat 位置
|
|
74
|
+
*/
|
|
75
|
+
setSplatPosition(x: number, y: number, z: number): void;
|
|
76
|
+
/**
|
|
77
|
+
* 获取 Splat 位置
|
|
78
|
+
*/
|
|
79
|
+
getSplatPosition(): [number, number, number] | null;
|
|
80
|
+
/**
|
|
81
|
+
* 设置 Splat 旋转
|
|
82
|
+
*/
|
|
83
|
+
setSplatRotation(x: number, y: number, z: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* 获取 Splat 旋转
|
|
86
|
+
*/
|
|
87
|
+
getSplatRotation(): [number, number, number] | null;
|
|
88
|
+
/**
|
|
89
|
+
* 设置 Splat 缩放
|
|
90
|
+
*/
|
|
91
|
+
setSplatScale(x: number, y: number, z: number): void;
|
|
92
|
+
/**
|
|
93
|
+
* 获取 Splat 缩放
|
|
94
|
+
*/
|
|
95
|
+
getSplatScale(): [number, number, number] | null;
|
|
96
|
+
/**
|
|
97
|
+
* 设置 SH 模式
|
|
98
|
+
*/
|
|
99
|
+
setSHMode(mode: 0 | 1 | 2 | 3): void;
|
|
100
|
+
/**
|
|
101
|
+
* 获取当前 SH 模式
|
|
102
|
+
*/
|
|
103
|
+
getSHMode(): number;
|
|
104
|
+
/**
|
|
105
|
+
* 获取 Mesh 的组合 bounding box
|
|
106
|
+
*/
|
|
107
|
+
getMeshBoundingBox(): MeshBoundingBox | null;
|
|
108
|
+
/**
|
|
109
|
+
* 获取 Splat 的 bounding box
|
|
110
|
+
*/
|
|
111
|
+
getSplatBoundingBox(): BoundingBox | null;
|
|
112
|
+
/**
|
|
113
|
+
* 获取指定 Mesh 范围的组合 bounding box
|
|
114
|
+
*/
|
|
115
|
+
getMeshRangeBoundingBox(startIndex: number, count: number): BoundingBox | null;
|
|
116
|
+
/**
|
|
117
|
+
* 获取整个场景的组合 bounding box
|
|
118
|
+
*/
|
|
119
|
+
getSceneBoundingBox(): BoundingBox | null;
|
|
120
|
+
/**
|
|
121
|
+
* 获取指定索引 Mesh 的材质颜色
|
|
122
|
+
*/
|
|
123
|
+
getMeshColor(index: number): [number, number, number, number] | null;
|
|
124
|
+
/**
|
|
125
|
+
* 设置指定索引 Mesh 的材质颜色
|
|
126
|
+
*/
|
|
127
|
+
setMeshColor(index: number, r: number, g: number, b: number, a?: number): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* 设置指定范围内所有 Mesh 的材质颜色
|
|
130
|
+
*/
|
|
131
|
+
setMeshRangeColor(startIndex: number, count: number, r: number, g: number, b: number, a?: number): number;
|
|
132
|
+
/**
|
|
133
|
+
* 销毁场景管理器
|
|
134
|
+
*/
|
|
135
|
+
destroy(): void;
|
|
136
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@d5techs/3dgs-lib",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "可扩展的 WebGPU 3D 渲染引擎",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/3dgs-lib.cjs",
|
|
7
|
+
"module": "./dist/3dgs-lib.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/3dgs-lib.js",
|
|
12
|
+
"require": "./dist/3dgs-lib.cjs",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"keywords": [
|
|
21
|
+
"webgpu",
|
|
22
|
+
"3d",
|
|
23
|
+
"gaussian-splatting",
|
|
24
|
+
"3dgs",
|
|
25
|
+
"renderer",
|
|
26
|
+
"graphics"
|
|
27
|
+
],
|
|
28
|
+
"author": "",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": ""
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"dev": "vite",
|
|
36
|
+
"build": "vite build --config vite.lib.config.ts && tsc -p tsconfig.build.json",
|
|
37
|
+
"build:lib": "vite build --config vite.lib.config.ts && tsc -p tsconfig.build.json",
|
|
38
|
+
"build:demo": "vite build",
|
|
39
|
+
"preview": "vite preview",
|
|
40
|
+
"test": "vitest run",
|
|
41
|
+
"test:watch": "vitest",
|
|
42
|
+
"prepublishOnly": "npm run build"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^25.2.0",
|
|
46
|
+
"@vitejs/plugin-basic-ssl": "^2.1.4",
|
|
47
|
+
"@webgpu/types": "^0.1.40",
|
|
48
|
+
"fast-check": "^4.5.3",
|
|
49
|
+
"typescript": "^5.3.3",
|
|
50
|
+
"vite": "^5.0.10",
|
|
51
|
+
"vite-plugin-dts": "^4.5.4",
|
|
52
|
+
"vitest": "^4.0.18"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"@webgpu/types": ">=0.1.40"
|
|
56
|
+
},
|
|
57
|
+
"peerDependenciesMeta": {
|
|
58
|
+
"@webgpu/types": {
|
|
59
|
+
"optional": true
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|