@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
package/README.md ADDED
@@ -0,0 +1,236 @@
1
+ # WebGPU 3D Gaussian Splatting 渲染引擎
2
+
3
+ 一个可扩展的 WebGPU 3D 渲染引擎,核心特性是支持 **3D Gaussian Splatting (3DGS)** 技术。
4
+
5
+ ![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue?logo=typescript)
6
+ ![WebGPU](https://img.shields.io/badge/WebGPU-Supported-green)
7
+ ![Vite](https://img.shields.io/badge/Vite-5.0-purple?logo=vite)
8
+
9
+ ## 功能特性
10
+
11
+ - **WebGPU 高性能渲染** - 利用现代 GPU API 实现高效渲染
12
+ - **3D Gaussian Splatting 支持**
13
+ - PLY / Splat 文件加载
14
+ - GPU 加速排序(基于 Radix Sort)
15
+ - 球谐函数 (SH) 多级支持:L0 / L1 / L2 / L3
16
+ - 移动端自动优化
17
+ - **多格式模型加载**
18
+ - GLB/GLTF 模型
19
+ - OBJ/MTL 模型(支持材质和纹理)
20
+ - **完整交互系统**
21
+ - 轨道控制器 (OrbitControls)
22
+ - 变换 Gizmo(平移/旋转/缩放)
23
+ - 视口坐标轴指示器
24
+ - 选中对象包围盒显示
25
+ - **场景管理**
26
+ - 多对象管理
27
+ - 材质颜色编辑
28
+ - 自动 Frame Model 功能
29
+ - **移动端支持**
30
+ - 触摸手势控制
31
+ - 自动性能优化
32
+ - 响应式 UI
33
+
34
+ ## 文档
35
+
36
+ 📖 **[完整使用手册](./USAGE_GUIDE.md)** - 详细的 API 文档和使用示例
37
+
38
+ ## 系统要求
39
+
40
+ ### 浏览器支持
41
+
42
+ | 浏览器 | 最低版本 |
43
+ |--------|----------|
44
+ | Chrome | 113+ |
45
+ | Edge | 113+ |
46
+ | Safari | 17+ |
47
+ | Firefox | 实验性支持 |
48
+
49
+ ### 其他要求
50
+
51
+ - 需要在 **HTTPS** 或 **localhost** 环境下运行
52
+ - Node.js 18+(用于开发构建)
53
+
54
+ ## 快速开始
55
+
56
+ ### 安装
57
+
58
+ ```bash
59
+ yarn install
60
+ ```
61
+
62
+ ### 启动开发服务器
63
+
64
+ ```bash
65
+ yarn dev
66
+ ```
67
+
68
+ 访问 `https://localhost:3000` 查看 Demo。
69
+
70
+ ### 构建
71
+
72
+ ```bash
73
+ # 构建 Demo
74
+ yarn build:demo
75
+
76
+ # 构建库(类型检查)
77
+ yarn build:lib
78
+ ```
79
+
80
+ ## 基本用法
81
+
82
+ ```typescript
83
+ import { App } from 'webgpu-3dgs';
84
+
85
+ // 创建应用
86
+ const canvas = document.getElementById('canvas') as HTMLCanvasElement;
87
+ const app = new App(canvas);
88
+
89
+ // 初始化
90
+ await app.init();
91
+
92
+ // 加载 3D Gaussian Splatting 模型
93
+ await app.addPLY('model.ply', (progress, stage) => {
94
+ console.log(`${stage}: ${progress.toFixed(1)}%`);
95
+ });
96
+
97
+ // 或加载传统 3D 模型
98
+ await app.addGLB('model.glb');
99
+ await app.addOBJ('model.obj');
100
+
101
+ // 自动调整相机
102
+ app.frameCurrentModel();
103
+
104
+ // 启动渲染
105
+ app.start();
106
+ ```
107
+
108
+ ## 项目结构
109
+
110
+ ```
111
+ webgpu-3dgs/
112
+ ├── src/ # 引擎源代码
113
+ │ ├── index.ts # 库入口
114
+ │ ├── App.ts # 统一调度入口
115
+ │ ├── core/ # 核心模块
116
+ │ │ ├── Renderer.ts # WebGPU 渲染器
117
+ │ │ ├── Camera.ts # 相机
118
+ │ │ ├── OrbitControls.ts # 轨道控制器
119
+ │ │ ├── ViewportGizmo.ts # 视口 Gizmo
120
+ │ │ ├── BoundingBoxRenderer.ts # 包围盒渲染
121
+ │ │ ├── gizmo/ # 变换 Gizmo
122
+ │ │ └── math/ # 数学工具
123
+ │ ├── gs/ # 3D Gaussian Splatting
124
+ │ │ ├── GSSplatRenderer.ts # 桌面端渲染器
125
+ │ │ ├── GSSplatRendererMobile.ts # 移动端渲染器
126
+ │ │ ├── GSSplatSorter.ts # GPU 排序器
127
+ │ │ ├── PLYLoader.ts # PLY 加载器
128
+ │ │ ├── SplatLoader.ts # Splat 加载器
129
+ │ │ └── *.wgsl # WGSL 着色器
130
+ │ ├── mesh/ # 网格渲染
131
+ │ ├── loaders/ # 模型加载器
132
+ │ ├── scene/ # 场景管理
133
+ │ └── interaction/ # 交互管理
134
+ ├── demo/ # Demo 应用
135
+ ├── USAGE_GUIDE.md # 使用手册
136
+ └── package.json
137
+ ```
138
+
139
+ ## 核心 API
140
+
141
+ ### App 类
142
+
143
+ ```typescript
144
+ // 初始化
145
+ await app.init();
146
+ app.start();
147
+ app.stop();
148
+ app.destroy();
149
+
150
+ // 模型加载
151
+ await app.addPLY(url, onProgress?);
152
+ await app.addSplat(url, onProgress?);
153
+ await app.addGLB(url);
154
+ await app.addOBJ(url);
155
+
156
+ // 场景管理
157
+ app.getMeshCount();
158
+ app.getSplatCount();
159
+ app.clearMeshes();
160
+ app.clearSplats();
161
+
162
+ // SH 模式 (0-3)
163
+ app.setSHMode(mode);
164
+ app.getSHMode();
165
+
166
+ // 相机控制
167
+ app.frameCurrentModel(animate?);
168
+ app.getCamera();
169
+ app.getControls();
170
+
171
+ // Gizmo
172
+ app.setGizmoMode(mode);
173
+ app.setGizmoTarget(object);
174
+ ```
175
+
176
+ ### 导出类
177
+
178
+ | 类名 | 说明 |
179
+ |------|------|
180
+ | `App` | 统一调度入口 |
181
+ | `Renderer` | WebGPU 渲染器 |
182
+ | `Camera` | 透视相机 |
183
+ | `OrbitControls` | 轨道控制器 |
184
+ | `Mesh` | 网格数据结构 |
185
+ | `MeshRenderer` | 网格渲染器 |
186
+ | `GSSplatRenderer` | 3DGS 渲染器 |
187
+ | `GLBLoader` | GLB 加载器 |
188
+ | `OBJLoader` | OBJ 加载器 |
189
+ | `TransformGizmoV2` | 变换 Gizmo |
190
+ | `ViewportGizmo` | 视口 Gizmo |
191
+ | `SceneManager` | 场景管理器 |
192
+
193
+ ## 交互控制
194
+
195
+ ### 鼠标
196
+
197
+ | 操作 | 功能 |
198
+ |------|------|
199
+ | 左键拖拽 | 旋转视角 |
200
+ | 右键拖拽 | 平移视角 |
201
+ | 滚轮 | 缩放 |
202
+
203
+ ### 触摸
204
+
205
+ | 操作 | 功能 |
206
+ |------|------|
207
+ | 单指拖拽 | 旋转视角 |
208
+ | 双指捏合 | 缩放 |
209
+ | 双指拖拽 | 平移视角 |
210
+
211
+ ### 键盘
212
+
213
+ | 按键 | 功能 |
214
+ |------|------|
215
+ | W | 平移模式 |
216
+ | E | 旋转模式 |
217
+ | R | 缩放模式 |
218
+
219
+ ## 技术细节
220
+
221
+ ### 3D Gaussian Splatting
222
+
223
+ - **排序**: GPU Radix Sort (Compute Shader)
224
+ - **渲染**: 基于 Quad 的 2D 高斯椭圆投影
225
+ - **协方差**: 3D → 2D 屏幕空间投影
226
+ - **球谐函数**: 0-3 阶 SH 系数,视角相关颜色
227
+
228
+ ### 着色器
229
+
230
+ - WGSL (WebGPU Shading Language)
231
+ - 多 SH 级别优化变体
232
+ - GPU 排序 Compute Shader
233
+
234
+ ## 许可证
235
+
236
+ MIT License