@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.
Files changed (42) hide show
  1. package/README.md +236 -0
  2. package/dist/3dgs-lib.cjs +12012 -0
  3. package/dist/3dgs-lib.cjs.map +1 -0
  4. package/dist/3dgs-lib.js +12012 -0
  5. package/dist/3dgs-lib.js.map +1 -0
  6. package/dist/App.d.ts +142 -0
  7. package/dist/core/BoundingBoxRenderer.d.ts +70 -0
  8. package/dist/core/Camera.d.ts +38 -0
  9. package/dist/core/OrbitControls.d.ts +101 -0
  10. package/dist/core/Renderer.d.ts +69 -0
  11. package/dist/core/ViewportGizmo.d.ts +83 -0
  12. package/dist/core/gizmo/ArcShape.d.ts +90 -0
  13. package/dist/core/gizmo/ArrowShape.d.ts +51 -0
  14. package/dist/core/gizmo/BoxLineShape.d.ts +47 -0
  15. package/dist/core/gizmo/PlaneShape.d.ts +48 -0
  16. package/dist/core/gizmo/Shape.d.ts +117 -0
  17. package/dist/core/gizmo/SphereShape.d.ts +29 -0
  18. package/dist/core/gizmo/TransformGizmoV2.d.ts +203 -0
  19. package/dist/core/gizmo/index.d.ts +14 -0
  20. package/dist/core/math/Mat4.d.ts +38 -0
  21. package/dist/core/math/Quat.d.ts +52 -0
  22. package/dist/core/math/Ray.d.ts +65 -0
  23. package/dist/core/math/Vec3.d.ts +39 -0
  24. package/dist/gs/GSSplatRenderer.d.ts +217 -0
  25. package/dist/gs/GSSplatRendererMobile.d.ts +147 -0
  26. package/dist/gs/GSSplatSorter.d.ts +105 -0
  27. package/dist/gs/GSSplatSorterMobile.d.ts +86 -0
  28. package/dist/gs/IGSSplatRenderer.d.ts +123 -0
  29. package/dist/gs/PLYLoader.d.ts +22 -0
  30. package/dist/gs/PLYLoaderMobile.d.ts +62 -0
  31. package/dist/gs/SplatLoader.d.ts +25 -0
  32. package/dist/gs/TextureCompressor.d.ts +57 -0
  33. package/dist/index.d.ts +44 -0
  34. package/dist/interaction/GizmoManager.d.ts +132 -0
  35. package/dist/loaders/GLBLoader.d.ts +67 -0
  36. package/dist/loaders/MTLParser.d.ts +65 -0
  37. package/dist/loaders/OBJLoader.d.ts +68 -0
  38. package/dist/loaders/OBJParser.d.ts +115 -0
  39. package/dist/mesh/Mesh.d.ts +52 -0
  40. package/dist/mesh/MeshRenderer.d.ts +74 -0
  41. package/dist/scene/SceneManager.d.ts +136 -0
  42. 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
+ }