Skip to content

Commit ed1f8c3

Browse files
committed
Add GitHub Pages deploy workflow
1 parent 161fb5b commit ed1f8c3

2 files changed

Lines changed: 239 additions & 0 deletions

File tree

.github/workflows/deploy-pages.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: true
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Setup Node.js
25+
uses: actions/setup-node@v4
26+
with:
27+
node-version: 22
28+
cache: npm
29+
30+
- name: Install dependencies
31+
run: npm ci
32+
33+
- name: Build for GitHub Pages
34+
run: npm run build
35+
env:
36+
BASE_HREF: /ReSplat/
37+
38+
- name: Upload artifact
39+
uses: actions/upload-pages-artifact@v3
40+
with:
41+
path: dist
42+
43+
deploy:
44+
needs: build
45+
runs-on: ubuntu-latest
46+
environment:
47+
name: github-pages
48+
url: ${{ steps.deployment.outputs.page_url }}
49+
steps:
50+
- name: Deploy to GitHub Pages
51+
id: deployment
52+
uses: actions/deploy-pages@v4

README.md

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,190 @@ ReSplat 重构了原版的选择球与选择盒,并新增了阻挡平面,三
147147
## 许可证
148148

149149
本项目基于 [MIT License](./LICENSE) 开源。
150+
151+
---
152+
153+
---
154+
155+
# English Version
156+
157+
---
158+
159+
## ReSplat Editor
160+
161+
> **Powered by [supersplat-2.27.0](https://github.com/playcanvas/supersplat)** — This project is a fork/rebrand of the original SuperSplat editor.
162+
163+
[![Github Release](https://img.shields.io/github/v/release/Re-qi/ReSplat)](https://github.com/Re-qi/ReSplat/releases)
164+
[![License](https://img.shields.io/github/license/Re-qi/ReSplat)](https://github.com/Re-qi/ReSplat/blob/main/LICENSE)
165+
166+
| [Live Demo](https://superspl.at/editor) | [User Guide](https://developer.playcanvas.com/user-manual/gaussian-splatting/editing/ReSplat/) | [Issues](https://github.com/Re-qi/ReSplat/issues) |
167+
168+
---
169+
170+
### Introduction
171+
172+
ReSplat is a **3D Gaussian Splat editor** refactored from [SuperSplat](https://github.com/playcanvas/supersplat). It runs entirely in the browser — nothing to download or install.
173+
174+
Building on SuperSplat, this project **redesigns the interaction logic**, drawing on the strengths of both **Blender** and **Unreal Engine** to make Gaussian Splat editing more intuitive and efficient.
175+
176+
> **Language Note**: The developer's native language is Chinese, so the **Chinese UI is fully reviewed and optimized**. Other languages are machine-translated and have not been manually proofread. Community contributions for translation improvements are welcome.
177+
178+
![ReSplat Editor](https://github.com/user-attachments/assets/b6cbb5cc-d3cc-4385-8c71-ab2807fd4fba)
179+
180+
---
181+
182+
### Features
183+
184+
#### Wrapper System
185+
186+
ReSplat refactors the original selection sphere and selection box, and adds a new blocking plane. These three are collectively called **Wrappers**. Wrappers can be transformed (moved, rotated, scaled) just like Meshes, providing flexible spatial constraints for point cloud selection.
187+
188+
| Wrapper | Description |
189+
|---------|-------------|
190+
| **Wrapper Sphere** | A spherical wrapper for selecting Gaussian points inside the sphere. The eyedropper, fill, opacity selection, and size selection tools can all be constrained to operate only on points inside the wrapper sphere. Useful for precisely handling white noise points inside tree leaves in large scenes. |
191+
| **Wrapper Box** | Same as the wrapper sphere, but with a cuboid shape. Ideal for working with point clouds within regular regions. |
192+
| **Blocking Plane** | An infinite plane that blocks the rectangle selection, lasso selection, polygon selection, and brush tools from selecting Gaussian points **behind** the plane, enabling precise selection under front-to-back occlusion relationships. |
193+
194+
#### Point Cloud Groups
195+
196+
Similar to Blender's **Vertex Group** concept:
197+
198+
- Save the currently selected points as a **Point Cloud Group** for quick re-selection later
199+
- Independently **move, rotate, and scale** points within a group
200+
- Great for workflows that require repeatedly editing the same region of points
201+
202+
#### Duplicate, Split, Merge
203+
204+
Brand-new features designed for more convenient **Gaussian Splat assembly**, overcoming the limitations of SuperSplat's original depth-sorting constraints:
205+
206+
- **Duplicate** — Copy selected points
207+
- **Split** — Separate selected points from the current Splat into an independent object
208+
- **Merge** — Combine multiple Splat objects into one
209+
210+
#### Opacity Selection Tool & Size Selection Tool
211+
212+
Based on source code from the [GaussianSplatEditor](https://github.com/TimChen1383/GaussianSplatEditor) branch, with extended features:
213+
214+
- **Opacity Selection Tool** — Range-select by Gaussian point opacity, quickly filtering semi-transparent or low-opacity points
215+
- **Size Selection Tool** — Range-select by Gaussian point size, locating abnormally large or small points
216+
217+
#### Low-Precision Gaussian Repair
218+
219+
A repair feature for specific scenarios:
220+
221+
- Applicable to Gaussian files that suffered coordinate precision loss due to **GPS jammer interference** during aerial triangulation
222+
- Fixes the **flickering issue** when low-float-precision Gaussians are rendered
223+
- Automatically detects and corrects precision-abnormal coordinate data
224+
225+
#### Rich Selection Toolset
226+
227+
ReSplat provides **14 tools** across three categories: selection, transformation, and measurement.
228+
229+
| Category | Tools |
230+
|----------|-------|
231+
| **Selection** | Rectangle, Lasso, Polygon, Brush, Fill, Sphere, Box, Eyedropper, Opacity, Size |
232+
| **Transform** | Move, Rotate, Scale |
233+
| **Measurement** | Distance |
234+
235+
#### Animation & Timeline
236+
237+
- Built-in timeline panel with **keyframe animation** editing
238+
- Camera trajectory animation for creating smooth flythrough paths
239+
- Play, pause, and frame-by-frame control support
240+
241+
#### Multi-Format Import & Export
242+
243+
| Format | Import | Export |
244+
|--------|:------:|:------:|
245+
| PLY (standard / compressed) |||
246+
| Splat |||
247+
| SOG |||
248+
| SSPROJ (project file) |||
249+
| Images (PNG / WebP) |||
250+
| Video (MP4 / WebM / MOV / MKV) |||
251+
252+
#### Multi-Language Support
253+
254+
i18next-based internationalization system supporting 9 languages:
255+
256+
中文(简体) · English · 日本語 · 한국어 · Français · Deutsch · Español · Português · Русский
257+
258+
---
259+
260+
### Local Development
261+
262+
> For detailed setup instructions, see [SETUP.md](./SETUP.md)
263+
264+
#### Requirements
265+
266+
- [Node.js](https://nodejs.org/) >= 20.19.0
267+
268+
#### Quick Start
269+
270+
1. Clone the repository:
271+
272+
```sh
273+
git clone https://github.com/Re-qi/ReSplat.git
274+
cd ReSplat
275+
```
276+
277+
2. Install dependencies:
278+
279+
```sh
280+
npm install
281+
```
282+
283+
3. Start the development server:
284+
285+
```sh
286+
npm run develop
287+
```
288+
289+
This starts Rollup compilation (watch mode) and the static file server simultaneously.
290+
291+
4. Open your browser and navigate to `http://localhost:3000`
292+
293+
Source code changes are detected and recompiled automatically — just refresh your browser to see the updates.
294+
295+
#### Available Commands
296+
297+
| Command | Description |
298+
|---------|-------------|
299+
| `npm run develop` | Start the development server (build + hot reload) |
300+
| `npm run build` | Build the production version |
301+
| `npm run watch` | Watch and recompile only |
302+
| `npm run serve` | Start the static file server only |
303+
| `npm run lint` | Run ESLint code checks |
304+
305+
#### FAQ
306+
307+
**Page not updating?** ReSplat uses Service Worker caching. Perform a force refresh:
308+
- Windows / Linux: `Ctrl + Shift + R`
309+
- macOS: `Cmd + Shift + R`
310+
311+
---
312+
313+
### Contributing Translations
314+
315+
Help improve translation quality!
316+
317+
1. Find the corresponding language JSON file in the `static/locales/` directory
318+
2. Edit or add translation entries
319+
3. To add a new language, create a `<locale>.json` file in `static/locales/` and register it in `src/ui/localization.ts`
320+
321+
Test translations: start the dev server and visit `http://localhost:3000/?lng=<locale>` (e.g., `?lng=zh-CN`)
322+
323+
---
324+
325+
### Acknowledgments
326+
327+
- [SuperSplat](https://github.com/playcanvas/supersplat) — The original project, providing a powerful foundation for Gaussian Splat editing
328+
- [GaussianSplatEditor](https://github.com/TimChen1383/GaussianSplatEditor) — Source reference for opacity and size selection tools
329+
- [PlayCanvas](https://playcanvas.com/) — The excellent WebGL game engine
330+
331+
---
332+
333+
### License
334+
335+
This project is open source under the [MIT License](./LICENSE).
336+

0 commit comments

Comments
 (0)