This is the web-based version of the Point Cloud Segmentation Annotation Tool (PSAT). It focuses on smooth visualization of large point clouds directly in the browser.
- Framework: React (with Vite for fast development)
- 3D Engine: Three.js
- Data Loading: loaders.gl (focused on .las and .laz support)
- State Management: Zustand
- Styling: Vanilla CSS
- Node.js: v18 or later (v20+ recommended)
- npm: v9 or later
-
Navigate to the web directory:
-
Install dependencies:
-
Start the development server:
-
Open your browser at http://localhost:5173.
- Layout: The main layout is defined in src/App.jsx.
- UI Components: Simple UI components are used for controls and lists.
- Three.js Scene: Look into src/App.jsx for the Three.js initialization and point cloud loading logic.
📦 Git Submodule Management
This directory is a Git submodule. When working with it:
- Updating in main repo: If you make changes inside web/ and commit/push them to the PSAT-web repository, you must also go back to the root PSAT directory and commit the reference change.
- Cloning with submodules:
git clone --recursive <main-repo-url>
- Pulling changes:
And then update submodules:
git submodule update --init --recursive
- High Performance: Renders hundreds of thousands of points smoothly using loaders.gl.
- Flexible Viewing: Toggle between RGB, Classification, and Instance views.
- Read-only Components: Display existing components from JSON/LAS metadata (no add/edit/delete in Web).
- Local privacy: All processing happens in your browser; no data is uploaded to a server.
⚠️ Limitations (Compared to Desktop Qt)
- No polygon/box/lasso selection for per-point labeling.
- No per-point class/instance editing.
- No component add/edit/delete operations (view-only).
- No LAZ/LAS write-back from the browser.
- No category/instance visibility panels.
- Temporary: components with component_type = "绝缘子串" are hidden in Web display (3D markers and sidebar list).
- Point clouds: .las / .laz files.
- Metadata: Matching .json file (must be selected together with the point cloud due to browser security).
- ExtraBytes: Support for instance (uint32) and category (uint16) extra bytes in LAS/LAZ.
- JSON: Contains metadata and component points. Does not include point-level labels.