cli-anything-acloudviewer 3.2.0__tar.gz
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.
- cli_anything_acloudviewer-3.2.0/MANIFEST.in +4 -0
- cli_anything_acloudviewer-3.2.0/PKG-INFO +663 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/README.md +616 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/__init__.py +1 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/__main__.py +5 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/acloudviewer_cli.py +4354 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/core/__init__.py +1 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/core/ai_registry.py +61 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/core/scene.py +49 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/core/session.py +42 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/mcp_server.py +3319 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/skills/SKILL.md +548 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/__init__.py +1 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_backend.py +407 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_cli.py +228 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_cli_comprehensive.py +1674 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_core.py +762 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_e2e.py +129 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_installer.py +1116 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_mcp.py +1835 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/tests/test_utils.py +1424 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/__init__.py +1 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/acloudviewer_backend.py +3164 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/colmap_backend.py +716 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/installer.py +1327 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/repl_skin.py +455 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/rpc_client.py +490 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/source_builder.py +376 -0
- cli_anything_acloudviewer-3.2.0/cli_anything/acloudviewer/utils/spirula_backend.py +151 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/PKG-INFO +663 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/SOURCES.txt +37 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/dependency_links.txt +1 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/entry_points.txt +3 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/not-zip-safe +1 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/requires.txt +9 -0
- cli_anything_acloudviewer-3.2.0/cli_anything_acloudviewer.egg-info/top_level.txt +1 -0
- cli_anything_acloudviewer-3.2.0/pyproject.toml +7 -0
- cli_anything_acloudviewer-3.2.0/setup.cfg +4 -0
- cli_anything_acloudviewer-3.2.0/setup.py +98 -0
|
@@ -0,0 +1,663 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cli-anything-acloudviewer
|
|
3
|
+
Version: 3.2.0
|
|
4
|
+
Summary: CLI harness for ACloudViewer — 3D point cloud and mesh processing via binary CLI and JSON-RPC, with Colmap reconstruction and SIBR pipelines
|
|
5
|
+
Home-page: https://github.com/Asher-1/CLI-Anything
|
|
6
|
+
Author: ACloudViewer Contributors
|
|
7
|
+
Author-email: admin@cloudViewer.org
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Source, https://github.com/Asher-1/CLI-Anything
|
|
10
|
+
Project-URL: Tracker, https://github.com/Asher-1/CLI-Anything/issues
|
|
11
|
+
Project-URL: ACloudViewer, https://asher-1.github.io/ACloudViewer/
|
|
12
|
+
Keywords: cli,acloudviewer,point-cloud,mesh,3d,colmap,reconstruction,automation
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
Requires-Dist: click>=8.1
|
|
27
|
+
Requires-Dist: websockets>=11.0
|
|
28
|
+
Requires-Dist: prompt-toolkit>=3.0
|
|
29
|
+
Requires-Dist: mcp<2.0,>=1.0
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: pytest>=7; extra == "dev"
|
|
32
|
+
Requires-Dist: pytest-cov>=4; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
|
|
34
|
+
Dynamic: author
|
|
35
|
+
Dynamic: author-email
|
|
36
|
+
Dynamic: classifier
|
|
37
|
+
Dynamic: description
|
|
38
|
+
Dynamic: description-content-type
|
|
39
|
+
Dynamic: home-page
|
|
40
|
+
Dynamic: keywords
|
|
41
|
+
Dynamic: license
|
|
42
|
+
Dynamic: project-url
|
|
43
|
+
Dynamic: provides-extra
|
|
44
|
+
Dynamic: requires-dist
|
|
45
|
+
Dynamic: requires-python
|
|
46
|
+
Dynamic: summary
|
|
47
|
+
|
|
48
|
+
# cli-anything-acloudviewer v3.1.0
|
|
49
|
+
|
|
50
|
+
CLI harness for **ACloudViewer** — 3D point cloud and mesh processing via
|
|
51
|
+
the ACloudViewer binary CLI (`-SILENT` mode) and JSON-RPC WebSocket.
|
|
52
|
+
|
|
53
|
+
Part of the [CLI-Anything](https://github.com/Asher-1/CLI-Anything) project.
|
|
54
|
+
|
|
55
|
+
**Supported Platforms:** Linux, macOS, Windows.
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cd acloudviewer/agent-harness
|
|
61
|
+
pip install -e .
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
One-line script (Linux / macOS): installs the harness, runs `check`, and
|
|
65
|
+
registers the MCP server with detected AI clients
|
|
66
|
+
(`ACV_SKIP_CLIENTS=1` to skip registration):
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
curl -LsSf https://raw.githubusercontent.com/Asher-1/CLI-Anything/main/acloudviewer/agent-harness/install.sh | sh
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The ACloudViewer binary must be on `PATH`, or set the `ACV_BINARY`
|
|
73
|
+
environment variable to its absolute path. `cli-anything-acloudviewer
|
|
74
|
+
install auto` downloads it from GitHub Releases automatically, and
|
|
75
|
+
`cli-anything-acloudviewer install clients --all` merges the MCP server entry
|
|
76
|
+
(`cli-anything-acloudviewer-mcp`) into the configs of detected clients
|
|
77
|
+
(Claude Code, Claude Desktop, Codex, Cursor) with `.bak` backups.
|
|
78
|
+
|
|
79
|
+
## Command modes
|
|
80
|
+
|
|
81
|
+
### Runtime behavior (auto-detect)
|
|
82
|
+
|
|
83
|
+
| Mode | How it Works | Requirement |
|
|
84
|
+
|------|-------------|-------------|
|
|
85
|
+
| **Headless** | Subprocess: `ACloudViewer -SILENT -O ... -SS ...` | ACloudViewer binary |
|
|
86
|
+
| **GUI** | JSON-RPC WebSocket to running ACloudViewer | ACloudViewer with JSON-RPC plugin |
|
|
87
|
+
|
|
88
|
+
The CLI auto-detects: if a running ACloudViewer instance responds on
|
|
89
|
+
`ws://127.0.0.1:6001`, GUI mode is used; otherwise headless.
|
|
90
|
+
|
|
91
|
+
### Commands by category (what each command needs)
|
|
92
|
+
|
|
93
|
+
**General** (no ACloudViewer backend required):
|
|
94
|
+
|
|
95
|
+
`info`, `check`, `install`, `formats`, `session`, `repl`
|
|
96
|
+
|
|
97
|
+
**Headless** (binary `-SILENT` mode; no GUI):
|
|
98
|
+
|
|
99
|
+
- `convert`, `batch-convert`
|
|
100
|
+
- `ai`: `list`, `schema`, `run` (all registered AICore plugin batch tasks)
|
|
101
|
+
- `plugin`: `run` (ordinary/third-party native command passthrough)
|
|
102
|
+
- `process`: `subsample`, `normals`, `icp`, `sor`, `c2c-dist`, `c2m-dist`, `crop`, `density`, `curvature`, `roughness`, `delaunay`, `sample-mesh`, `color-banding`, `volume-25d`, `crop-2d`, `rasterize`, `cross-section`, `stat-test`, `approx-density`, `feature`, `best-fit-plane`, `extract-cc`, `set-active-sf`, `remove-sf`, `remove-all-sfs`, `rename-sf`, `filter-sf`, `coord-to-sf`, `sf-arithmetic`, `sf-op`, `octree-normals`, `orient-normals`, `invert-normals`, `clear-normals`, `normals-to-dip`, `normals-to-sfs`, `remove-rgb`, `merge-clouds`, `extract-vertices`, `flip-triangles`, `mesh-volume`, `merge-meshes`, `match-centers`, `drop-global-shift`, `closest-point-set`, `remove-scan-grids`, `pcv`, `compass-export`, `compass-import-fol`, `compass-import-lin`, `compass-refit`, `compass-p21`, `sra`
|
|
103
|
+
- `reconstruct`: `mesh`, `auto`, `extract-features`, `match`, `sparse`, `undistort`, `dense-stereo`, `fuse`, `poisson`, `simplify-mesh`, `texture-mesh`, `convert-model`, `analyze-model`, `delaunay-mesh`
|
|
104
|
+
- `sibr`: `tool`, `prepare-colmap`, `texture-mesh`, `unwrap-mesh`, `tonemapper`, `align-meshes`, `camera-converter`, `nvm-to-sibr`, `crop-from-center`, `clipping-planes`, `distord-crop`
|
|
105
|
+
|
|
106
|
+
**GUI** (requires ACloudViewer running with the JSON-RPC plugin):
|
|
107
|
+
|
|
108
|
+
- `open`, `clear`
|
|
109
|
+
- `scene`: `list`, `info`, `remove`, `set-visible`
|
|
110
|
+
- `entity`: `rename`, `set-color`
|
|
111
|
+
- `view`: `screenshot`, `camera`, `orientation`, `zoom-fit`, `refresh`, `perspective`, `point-size`
|
|
112
|
+
- `cloud`: `compute-normals`, `subsample`, `crop`, `scalar-fields`, `paint-uniform`, `paint-by-height`, `set-active-sf`, `remove-sf`, `remove-all-sfs`, `rename-sf`, `filter-sf`, `coord-to-sf`, `remove-rgb`, `remove-normals`, `invert-normals`, `merge`
|
|
113
|
+
- `mesh`: `simplify`, `smooth`, `sample-points`, `extract-vertices`, `flip-triangles`, `volume`, `merge`
|
|
114
|
+
- `transform`: `apply`
|
|
115
|
+
- `export`
|
|
116
|
+
- `methods`: `list`
|
|
117
|
+
- `colmap`: `reconstruct`, `run` (generic subcommand executor)
|
|
118
|
+
|
|
119
|
+
## Usage Examples
|
|
120
|
+
|
|
121
|
+
### Basic operations — **General**
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Enter interactive REPL
|
|
125
|
+
cli-anything-acloudviewer
|
|
126
|
+
|
|
127
|
+
# Show backend info
|
|
128
|
+
cli-anything-acloudviewer --json info
|
|
129
|
+
|
|
130
|
+
# Diagnostics: binary, wheel, install hints
|
|
131
|
+
cli-anything-acloudviewer check
|
|
132
|
+
|
|
133
|
+
# Install app, wheel, or auto (see --help)
|
|
134
|
+
cli-anything-acloudviewer install --help
|
|
135
|
+
|
|
136
|
+
# List supported file formats
|
|
137
|
+
cli-anything-acloudviewer --json formats
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### AICore and plugin automation — **Headless or GUI RPC**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Registry identity is local; schemas come from the installed plugin
|
|
144
|
+
cli-anything-acloudviewer --json ai list
|
|
145
|
+
cli-anything-acloudviewer --json --mode headless ai schema lightglue
|
|
146
|
+
|
|
147
|
+
# External-data batch inference; repeat inputs and arbitrary typed options
|
|
148
|
+
cli-anything-acloudviewer --json --mode headless ai run ocr \
|
|
149
|
+
--image page-1.png --image page-2.png --out-dir ./ocr-out \
|
|
150
|
+
--option LANG=en --option LAYOUT=true
|
|
151
|
+
|
|
152
|
+
# Legacy ordinary plugin argv is preserved exactly
|
|
153
|
+
cli-anything-acloudviewer --mode headless plugin run ANIMATION \
|
|
154
|
+
--arg=-FPS --arg=24 --arg=-TOTAL_FRAMES --arg=10
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`ai run` returns the plugin's `acloudviewer.aicore.batch/1` manifest. In GUI
|
|
158
|
+
mode it calls JSON-RPC `aicore.batch`; in headless mode it invokes the same
|
|
159
|
+
native command directly. MCP exposes the same boundary as `list_ai_tasks`,
|
|
160
|
+
`get_ai_schema`, `run_ai_batch`, and `run_plugin_command`.
|
|
161
|
+
|
|
162
|
+
### File conversion — **Headless**
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Convert PLY to PCD
|
|
166
|
+
cli-anything-acloudviewer --mode headless convert input.ply output.pcd
|
|
167
|
+
|
|
168
|
+
# Convert mesh OBJ to STL
|
|
169
|
+
cli-anything-acloudviewer --mode headless convert model.obj model.stl
|
|
170
|
+
|
|
171
|
+
# Batch convert all PLY files to PCD
|
|
172
|
+
cli-anything-acloudviewer --mode headless batch-convert ./scans/ ./output/ -f .pcd
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Point cloud processing — **Headless**
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Voxel subsample
|
|
179
|
+
cli-anything-acloudviewer --mode headless process subsample input.ply -o sub.ply --voxel-size 0.05
|
|
180
|
+
|
|
181
|
+
# Compute normals (standard k-NN method)
|
|
182
|
+
cli-anything-acloudviewer --mode headless process normals input.ply -o normals.ply
|
|
183
|
+
|
|
184
|
+
# Compute normals with octree (faster for large clouds)
|
|
185
|
+
cli-anything-acloudviewer --mode headless normals octree input.ply -o normals.ply --radius AUTO
|
|
186
|
+
|
|
187
|
+
# Orient normals consistently (MST algorithm)
|
|
188
|
+
cli-anything-acloudviewer --mode headless normals orient-mst input.ply -o oriented.ply --knn 6
|
|
189
|
+
|
|
190
|
+
# Invert all normal directions
|
|
191
|
+
cli-anything-acloudviewer --mode headless normals invert input.ply -o inverted.ply
|
|
192
|
+
|
|
193
|
+
# Convert normals to scalar fields (Nx, Ny, Nz)
|
|
194
|
+
cli-anything-acloudviewer --mode headless normals to-sfs input.ply -o normals_sf.ply
|
|
195
|
+
|
|
196
|
+
# ICP registration (align source to target)
|
|
197
|
+
cli-anything-acloudviewer --mode headless process icp source.ply target.ply -o aligned.ply
|
|
198
|
+
|
|
199
|
+
# Statistical outlier removal
|
|
200
|
+
cli-anything-acloudviewer --mode headless process sor input.ply -o clean.ply --knn 6 --sigma 1.0
|
|
201
|
+
|
|
202
|
+
# Cloud-to-cloud distance
|
|
203
|
+
cli-anything-acloudviewer --mode headless process c2c-dist compared.ply reference.ply -o dist.ply
|
|
204
|
+
|
|
205
|
+
# Cloud-to-mesh distance
|
|
206
|
+
cli-anything-acloudviewer --mode headless process c2m-dist cloud.ply mesh.obj -o dist.ply
|
|
207
|
+
|
|
208
|
+
# Point density
|
|
209
|
+
cli-anything-acloudviewer --mode headless process density input.ply -o density.ply --radius 0.05
|
|
210
|
+
|
|
211
|
+
# Curvature estimation
|
|
212
|
+
cli-anything-acloudviewer --mode headless process curvature input.ply -o curv.ply --type MEAN --radius 0.05
|
|
213
|
+
|
|
214
|
+
# Surface roughness
|
|
215
|
+
cli-anything-acloudviewer --mode headless process roughness input.ply -o rough.ply --radius 0.1
|
|
216
|
+
|
|
217
|
+
# Geometric features (surface variation, etc.)
|
|
218
|
+
cli-anything-acloudviewer --mode headless process feature input.ply -o features.ply --type SURFACE_VARIATION --kernel-size 0.1
|
|
219
|
+
|
|
220
|
+
# Extract connected components
|
|
221
|
+
cli-anything-acloudviewer --mode headless process extract-cc input.ply -o components.ply --min-points 100
|
|
222
|
+
|
|
223
|
+
# Delaunay triangulation
|
|
224
|
+
cli-anything-acloudviewer --mode headless process delaunay input.ply -o mesh.ply
|
|
225
|
+
|
|
226
|
+
# Sample mesh to point cloud
|
|
227
|
+
cli-anything-acloudviewer --mode headless process sample-mesh mesh.obj -o cloud.ply --density 100
|
|
228
|
+
|
|
229
|
+
# Color banding (height-based coloring)
|
|
230
|
+
cli-anything-acloudviewer --mode headless process color-banding input.ply -o colored.ply --axis Z --frequency 10.0
|
|
231
|
+
|
|
232
|
+
# Extract cross-section along polyline
|
|
233
|
+
cli-anything-acloudviewer --mode headless process cross-section input.ply -o section.ply --polyline path.ply
|
|
234
|
+
|
|
235
|
+
# Compute 2.5D volume between two clouds
|
|
236
|
+
cli-anything-acloudviewer --mode headless process volume-25d ground.ply surface.ply -o volume_mesh.ply --grid-step 0.5
|
|
237
|
+
|
|
238
|
+
# Crop by 2D polygon (orthogonal to Z axis)
|
|
239
|
+
cli-anything-acloudviewer --mode headless process crop-2d input.ply -o cropped.ply --dim Z --polygon "0,0;10,0;10,10;0,10"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Plugin processing — **Headless**
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# PCV ambient occlusion (ShadeVis)
|
|
246
|
+
cli-anything-acloudviewer --mode headless process pcv input.ply -o ao.ply --n-rays 256 --resolution 1024
|
|
247
|
+
cli-anything-acloudviewer --mode headless process pcv input.ply -o ao.ply --mode-180 --is-closed
|
|
248
|
+
|
|
249
|
+
# Compass — export measurements to CSV or XML
|
|
250
|
+
cli-anything-acloudviewer --mode headless process compass-export project.bin -o data --format csv
|
|
251
|
+
cli-anything-acloudviewer --mode headless process compass-export project.bin -o data.xml --format xml
|
|
252
|
+
|
|
253
|
+
# Compass — import foliations / lineations from scalar fields
|
|
254
|
+
cli-anything-acloudviewer --mode headless process compass-import-fol input.ply --dip-sf Dip --dipdir-sf DipDir
|
|
255
|
+
cli-anything-acloudviewer --mode headless process compass-import-lin input.ply --trend-sf Trend --plunge-sf Plunge
|
|
256
|
+
|
|
257
|
+
# Compass — refit planes & P21 intensity
|
|
258
|
+
cli-anything-acloudviewer --mode headless process compass-refit project.bin
|
|
259
|
+
cli-anything-acloudviewer --mode headless process compass-p21 input.ply --radius 10.0 --subsample 25 -o p21.ply
|
|
260
|
+
|
|
261
|
+
# SRA radial distance from surface of revolution
|
|
262
|
+
cli-anything-acloudviewer --mode headless process sra input.ply -o output.ply --profile profile.txt --axis Z
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Scalar field operations — **Headless**
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# Create scalar field from coordinate (X, Y, or Z)
|
|
269
|
+
cli-anything-acloudviewer --mode headless sf coord-to-sf input.ply -o height.ply --dimension Z
|
|
270
|
+
|
|
271
|
+
# Apply arithmetic operation (SQRT, ABS, EXP, LOG, etc.)
|
|
272
|
+
cli-anything-acloudviewer --mode headless sf arithmetic input.ply -o sqrt.ply --sf-index 0 --operation SQRT
|
|
273
|
+
|
|
274
|
+
# Apply operation with constant (ADD, SUB, MULTIPLY, DIVIDE)
|
|
275
|
+
cli-anything-acloudviewer --mode headless sf operation input.ply -o scaled.ply --sf-index 0 --operation MULTIPLY --value 2.0
|
|
276
|
+
|
|
277
|
+
# Compute scalar field gradient
|
|
278
|
+
cli-anything-acloudviewer --mode headless sf gradient input.ply -o gradient.ply
|
|
279
|
+
|
|
280
|
+
# Filter points by scalar field value
|
|
281
|
+
cli-anything-acloudviewer --mode headless sf filter input.ply -o filtered.ply --min 0.0 --max 10.0
|
|
282
|
+
|
|
283
|
+
# Convert active scalar field to RGB colors
|
|
284
|
+
cli-anything-acloudviewer --mode headless sf convert-to-rgb input.ply -o colored.ply
|
|
285
|
+
|
|
286
|
+
# Set active scalar field
|
|
287
|
+
cli-anything-acloudviewer --mode headless sf set-active input.ply -o active.ply --sf-index 0
|
|
288
|
+
|
|
289
|
+
# Rename scalar field
|
|
290
|
+
cli-anything-acloudviewer --mode headless sf rename input.ply -o renamed.ply --sf-index 0 --name "Elevation"
|
|
291
|
+
|
|
292
|
+
# Remove scalar field
|
|
293
|
+
cli-anything-acloudviewer --mode headless sf remove input.ply -o removed.ply --sf-index 0
|
|
294
|
+
|
|
295
|
+
# Remove all scalar fields
|
|
296
|
+
cli-anything-acloudviewer --mode headless sf remove-all input.ply -o clean.ply
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 3D reconstruction (Colmap) — **Headless**
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# Automatic end-to-end reconstruction from images
|
|
303
|
+
cli-anything-acloudviewer --json reconstruct auto ./images/ -w ./workspace/ --quality high
|
|
304
|
+
|
|
305
|
+
# Step-by-step reconstruction pipeline:
|
|
306
|
+
|
|
307
|
+
# 1. Extract features from images
|
|
308
|
+
cli-anything-acloudviewer reconstruct extract-features ./images/ -d ./database.db
|
|
309
|
+
|
|
310
|
+
# 2. Match features between images
|
|
311
|
+
cli-anything-acloudviewer reconstruct match ./database.db --method exhaustive
|
|
312
|
+
|
|
313
|
+
# 3. Sparse reconstruction (Structure-from-Motion)
|
|
314
|
+
cli-anything-acloudviewer reconstruct sparse -d ./database.db --image-path ./images/ -o ./sparse/
|
|
315
|
+
|
|
316
|
+
# Reproducible sparse reconstruction with raw COLMAP mapper options
|
|
317
|
+
cli-anything-acloudviewer reconstruct sparse -d ./database.db --image-path ./images/ -o ./sparse/ \
|
|
318
|
+
--random-seed 17 --mapper-option Mapper.min_num_matches=32
|
|
319
|
+
|
|
320
|
+
# 4. Undistort images for dense reconstruction
|
|
321
|
+
cli-anything-acloudviewer reconstruct undistort --image-path ./images/ -i ./sparse/0 -o ./dense/
|
|
322
|
+
|
|
323
|
+
# 5. Dense stereo (PatchMatch MVS)
|
|
324
|
+
cli-anything-acloudviewer reconstruct dense-stereo ./dense/
|
|
325
|
+
|
|
326
|
+
# 6. Fuse depth maps into dense point cloud
|
|
327
|
+
cli-anything-acloudviewer reconstruct fuse ./dense/ -o ./dense/fused.ply
|
|
328
|
+
|
|
329
|
+
# 7. Poisson surface reconstruction
|
|
330
|
+
cli-anything-acloudviewer reconstruct poisson ./dense/fused.ply -o ./mesh.ply
|
|
331
|
+
|
|
332
|
+
# 8. Delaunay meshing with visibility constraints
|
|
333
|
+
cli-anything-acloudviewer reconstruct delaunay-mesh ./dense/fused.ply -o ./mesh_delaunay.ply
|
|
334
|
+
|
|
335
|
+
# 9. Texture the mesh (uses Colmap image_texturer)
|
|
336
|
+
cli-anything-acloudviewer reconstruct texture-mesh ./dense/ -o ./textured/ --mesh ./mesh_delaunay.ply
|
|
337
|
+
|
|
338
|
+
# Utility: convert model format
|
|
339
|
+
cli-anything-acloudviewer reconstruct convert-model ./sparse/0 -o ./model.ply --output-type PLY
|
|
340
|
+
|
|
341
|
+
# Utility: analyze reconstruction quality
|
|
342
|
+
cli-anything-acloudviewer reconstruct analyze-model ./sparse/0
|
|
343
|
+
|
|
344
|
+
# Mesh reconstruction from point cloud (via ACloudViewer Delaunay)
|
|
345
|
+
cli-anything-acloudviewer reconstruct mesh input.ply -o mesh.ply
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### SIBR dataset tools — **Headless**
|
|
349
|
+
|
|
350
|
+
Requires ACloudViewer built with the SIBR plugin (`-DPLUGIN_STANDARD_QSIBR=ON`).
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# Prepare Colmap output for SIBR rendering
|
|
354
|
+
cli-anything-acloudviewer sibr prepare-colmap ./colmap_workspace/
|
|
355
|
+
|
|
356
|
+
# Prepare with metadata fix
|
|
357
|
+
cli-anything-acloudviewer sibr prepare-colmap ./colmap_workspace/ --fix-metadata
|
|
358
|
+
|
|
359
|
+
# Generate textured mesh from dataset
|
|
360
|
+
cli-anything-acloudviewer sibr texture-mesh ./dataset/
|
|
361
|
+
|
|
362
|
+
# UV-unwrap a mesh for texturing
|
|
363
|
+
cli-anything-acloudviewer sibr unwrap-mesh ./dataset/
|
|
364
|
+
|
|
365
|
+
# Apply tonemapping to HDR images
|
|
366
|
+
cli-anything-acloudviewer sibr tonemapper ./dataset/
|
|
367
|
+
|
|
368
|
+
# Align meshes in the dataset
|
|
369
|
+
cli-anything-acloudviewer sibr align-meshes ./dataset/
|
|
370
|
+
|
|
371
|
+
# Convert camera formats for SIBR
|
|
372
|
+
cli-anything-acloudviewer sibr camera-converter ./dataset/
|
|
373
|
+
|
|
374
|
+
# Convert NVM format to SIBR dataset layout
|
|
375
|
+
cli-anything-acloudviewer sibr nvm-to-sibr ./dataset/
|
|
376
|
+
|
|
377
|
+
# Crop dataset from center
|
|
378
|
+
cli-anything-acloudviewer sibr crop-from-center ./dataset/
|
|
379
|
+
|
|
380
|
+
# Compute clipping planes
|
|
381
|
+
cli-anything-acloudviewer sibr clipping-planes ./dataset/
|
|
382
|
+
|
|
383
|
+
# Distortion-aware image cropping
|
|
384
|
+
cli-anything-acloudviewer sibr distord-crop ./dataset/
|
|
385
|
+
|
|
386
|
+
# Run any SIBR tool by name with passthrough args
|
|
387
|
+
cli-anything-acloudviewer sibr tool prepareColmap4Sibr -path ./dataset/ -fix_metadata
|
|
388
|
+
|
|
389
|
+
# Launch SIBR viewers for novel view synthesis visualization
|
|
390
|
+
cli-anything-acloudviewer sibr viewer gaussian --model-path ./output/ --path ./dataset/
|
|
391
|
+
cli-anything-acloudviewer sibr viewer ulr --path ./dataset/
|
|
392
|
+
cli-anything-acloudviewer sibr viewer texturedmesh --mesh ./model.obj --path ./dataset/
|
|
393
|
+
cli-anything-acloudviewer sibr viewer remoteGaussian --ip 127.0.0.1 --port 6009
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
**Available SIBR viewer types**:
|
|
397
|
+
- `gaussian`: Gaussian Splatting viewer (requires `--model-path` and `--path`)
|
|
398
|
+
- `ulr` / `ulrv2`: Unstructured Lumigraph Rendering viewers
|
|
399
|
+
- `texturedmesh`: Textured mesh viewer (requires `--mesh` and `--path`)
|
|
400
|
+
- `pointbased`: Point-based rendering viewer
|
|
401
|
+
- `remoteGaussian`: Remote Gaussian viewer for network rendering
|
|
402
|
+
|
|
403
|
+
### Full reconstruction pipeline (Colmap + SIBR) — **Headless**
|
|
404
|
+
|
|
405
|
+
End-to-end example: images to SIBR-ready dataset:
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
# 1. Automatic Colmap reconstruction
|
|
409
|
+
cli-anything-acloudviewer reconstruct auto ./images/ -w ./workspace/ --quality high
|
|
410
|
+
|
|
411
|
+
# 2. Prepare the reconstruction for SIBR viewing
|
|
412
|
+
cli-anything-acloudviewer sibr prepare-colmap ./workspace/
|
|
413
|
+
|
|
414
|
+
# 3. Generate textured mesh
|
|
415
|
+
cli-anything-acloudviewer sibr texture-mesh ./workspace/
|
|
416
|
+
|
|
417
|
+
# 4. UV-unwrap the mesh
|
|
418
|
+
cli-anything-acloudviewer sibr unwrap-mesh ./workspace/
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Scene, entity, view & open — **GUI**
|
|
422
|
+
|
|
423
|
+
Requires a running ACloudViewer with the JSON-RPC plugin (`--mode gui` or auto-detect when `ws://127.0.0.1:6001` is available).
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# Open a file in the viewer
|
|
427
|
+
cli-anything-acloudviewer --mode gui open /path/to/model.ply
|
|
428
|
+
|
|
429
|
+
# List all entities in the scene
|
|
430
|
+
cli-anything-acloudviewer --json --mode gui scene list
|
|
431
|
+
|
|
432
|
+
# Get entity details
|
|
433
|
+
cli-anything-acloudviewer --json --mode gui scene info --id 1
|
|
434
|
+
|
|
435
|
+
# Remove an entity from the scene
|
|
436
|
+
cli-anything-acloudviewer --mode gui scene remove --id 1
|
|
437
|
+
|
|
438
|
+
# Rename an entity
|
|
439
|
+
cli-anything-acloudviewer --mode gui entity rename --id 1 --name "MyCloud"
|
|
440
|
+
|
|
441
|
+
# Set entity color
|
|
442
|
+
cli-anything-acloudviewer --mode gui entity set-color --id 1 --r 255 --g 0 --b 0
|
|
443
|
+
|
|
444
|
+
# Take a screenshot
|
|
445
|
+
cli-anything-acloudviewer --mode gui view screenshot -o screenshot.png --width 1920 --height 1080
|
|
446
|
+
|
|
447
|
+
# Get camera parameters
|
|
448
|
+
cli-anything-acloudviewer --json --mode gui view camera
|
|
449
|
+
|
|
450
|
+
# Set view orientation
|
|
451
|
+
cli-anything-acloudviewer --mode gui view orientation --orient top
|
|
452
|
+
|
|
453
|
+
# Clear the scene
|
|
454
|
+
cli-anything-acloudviewer --mode gui clear
|
|
455
|
+
|
|
456
|
+
# List available RPC methods
|
|
457
|
+
cli-anything-acloudviewer --json --mode gui methods list
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Cloud operations — **GUI**
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
# Compute normals on a loaded cloud
|
|
464
|
+
cli-anything-acloudviewer --json --mode gui cloud compute-normals --id 1 --radius 0.05
|
|
465
|
+
|
|
466
|
+
# Subsample a cloud
|
|
467
|
+
cli-anything-acloudviewer --json --mode gui cloud subsample --id 1 --method SPATIAL --param 0.1
|
|
468
|
+
|
|
469
|
+
# Get scalar field list
|
|
470
|
+
cli-anything-acloudviewer --json --mode gui cloud scalar-fields --id 1
|
|
471
|
+
|
|
472
|
+
# Set active scalar field
|
|
473
|
+
cli-anything-acloudviewer --json --mode gui cloud set-active-sf --id 1 --index 0
|
|
474
|
+
|
|
475
|
+
# Remove a scalar field
|
|
476
|
+
cli-anything-acloudviewer --json --mode gui cloud remove-sf --id 1 --index 0
|
|
477
|
+
|
|
478
|
+
# Coordinate to scalar field
|
|
479
|
+
cli-anything-acloudviewer --json --mode gui cloud coord-to-sf --id 1 --axis z
|
|
480
|
+
|
|
481
|
+
# Remove RGB colors
|
|
482
|
+
cli-anything-acloudviewer --mode gui cloud remove-rgb --id 1
|
|
483
|
+
|
|
484
|
+
# Remove/Invert normals
|
|
485
|
+
cli-anything-acloudviewer --mode gui cloud remove-normals --id 1
|
|
486
|
+
cli-anything-acloudviewer --mode gui cloud invert-normals --id 1
|
|
487
|
+
|
|
488
|
+
# Merge multiple clouds
|
|
489
|
+
cli-anything-acloudviewer --json --mode gui cloud merge --ids 1 2 3
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### Mesh operations — **GUI**
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
# Simplify mesh
|
|
496
|
+
cli-anything-acloudviewer --json --mode gui mesh simplify --id 1 --target-count 10000
|
|
497
|
+
|
|
498
|
+
# Smooth mesh (Laplacian)
|
|
499
|
+
cli-anything-acloudviewer --json --mode gui mesh smooth --id 1 --iterations 3
|
|
500
|
+
|
|
501
|
+
# Extract vertices as point cloud
|
|
502
|
+
cli-anything-acloudviewer --json --mode gui mesh extract-vertices --id 1
|
|
503
|
+
|
|
504
|
+
# Compute mesh volume
|
|
505
|
+
cli-anything-acloudviewer --json --mode gui mesh volume --id 1
|
|
506
|
+
|
|
507
|
+
# Flip triangle normals
|
|
508
|
+
cli-anything-acloudviewer --mode gui mesh flip-triangles --id 1
|
|
509
|
+
|
|
510
|
+
# Merge meshes
|
|
511
|
+
cli-anything-acloudviewer --json --mode gui mesh merge --ids 1 2
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
### COLMAP via RPC — **GUI**
|
|
515
|
+
|
|
516
|
+
```bash
|
|
517
|
+
# Run automatic reconstruction via RPC (live Colmap progress in GUI console)
|
|
518
|
+
cli-anything-acloudviewer --json --mode gui colmap reconstruct --image-path ./images/ -w ./workspace/
|
|
519
|
+
|
|
520
|
+
# Run any Colmap subcommand via RPC
|
|
521
|
+
cli-anything-acloudviewer --json --mode gui colmap run --subcommand feature_extractor --args "--image_path ./images/"
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### Session management — **General**
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
# Show session status
|
|
528
|
+
cli-anything-acloudviewer --json session status
|
|
529
|
+
|
|
530
|
+
# Undo last operation
|
|
531
|
+
cli-anything-acloudviewer session undo
|
|
532
|
+
|
|
533
|
+
# Redo last undone operation
|
|
534
|
+
cli-anything-acloudviewer session redo
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
### JSON output (for agent/script consumption)
|
|
538
|
+
|
|
539
|
+
All commands support `--json` flag for structured output. Use **`--mode headless`** or **`--mode gui`** when the command belongs to that category; General commands do not require a backend mode.
|
|
540
|
+
|
|
541
|
+
```bash
|
|
542
|
+
cli-anything-acloudviewer --json info
|
|
543
|
+
cli-anything-acloudviewer --json formats
|
|
544
|
+
cli-anything-acloudviewer --json --mode headless process subsample input.ply -o sub.ply --voxel-size 0.05
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
## Command Reference
|
|
548
|
+
|
|
549
|
+
| Mode | Group | Subcommands | Description |
|
|
550
|
+
|------|-------|------------|-------------|
|
|
551
|
+
| **General** | `check` | — | Installation diagnostics and fix hints |
|
|
552
|
+
| **General** | `install` | `app`, `wheel`, `auto` | Download / install binary or Python wheel |
|
|
553
|
+
| **General** | `formats` | — | List supported file formats |
|
|
554
|
+
| **General** | `info` | — | Show backend info and supported formats |
|
|
555
|
+
| **General** | `session` | `status`, `undo`, `redo` | Session management |
|
|
556
|
+
| **General** | `repl` | — | Interactive REPL session |
|
|
557
|
+
| **Headless** | `convert` | — | Convert between 30+ 3D file formats |
|
|
558
|
+
| **Headless** | `batch-convert` | — | Batch convert all files in a directory |
|
|
559
|
+
| **Headless** | `process` | `subsample`, `normals`, `icp`, `sor`, `c2c-dist`, `c2m-dist`, `crop`, `density`, `curvature`, `roughness`, `delaunay`, `sample-mesh`, `color-banding`, `set-active-sf`, `remove-sf`, `remove-all-sfs`, `rename-sf`, `filter-sf`, `coord-to-sf`, `remove-rgb`, `remove-normals`, `invert-normals`, `merge-clouds`, `extract-vertices`, `flip-triangles`, `mesh-volume`, `merge-meshes`, `volume-25d`, `crop-2d`, `rasterize`, `cross-section`, `stat-test`, … | Point cloud and mesh processing (35+ operations) |
|
|
560
|
+
| **Headless** | `reconstruct` | `mesh`, `auto`, `extract-features`, `match`, `sparse`, `undistort`, `dense-stereo`, `fuse`, `poisson`, `simplify-mesh`, `texture-mesh`, `convert-model`, `analyze-model`, `delaunay-mesh` | 3D reconstruction (Colmap SfM/MVS) |
|
|
561
|
+
| **Headless** | `sibr` | `tool`, `prepare-colmap`, `texture-mesh`, `unwrap-mesh`, `tonemapper`, `align-meshes`, `camera-converter`, `nvm-to-sibr`, `crop-from-center`, `clipping-planes`, `distord-crop` | SIBR dataset preprocessing (11 tools) |
|
|
562
|
+
| **GUI** | `open` | — | Open a file in the running ACloudViewer |
|
|
563
|
+
| **GUI** | `clear` | — | Clear all entities from the scene |
|
|
564
|
+
| **GUI** | `scene` | `list`, `info`, `remove`, `set-visible`, `select`, `clear` | Scene tree operations |
|
|
565
|
+
| **GUI** | `entity` | `rename`, `set-color` | Entity property management |
|
|
566
|
+
| **GUI** | `view` | `screenshot`, `camera`, `orientation`, `zoom-fit`, `refresh`, `perspective`, `point-size` | Viewport control (7 operations) |
|
|
567
|
+
| **GUI** | `cloud` | `compute-normals`, `subsample`, `crop`, `scalar-fields`, `paint-uniform`, `paint-by-height`, `set-active-sf`, `remove-sf`, `remove-all-sfs`, `rename-sf`, `filter-sf`, `coord-to-sf`, `remove-rgb`, `remove-normals`, `invert-normals`, `merge` | Point cloud operations (16 operations) |
|
|
568
|
+
| **GUI** | `mesh` | `simplify`, `smooth`, `sample-points`, `extract-vertices`, `flip-triangles`, `volume`, `merge` | Mesh operations (7 operations) |
|
|
569
|
+
| **GUI** | `transform` | `apply` | Apply transformations to entities |
|
|
570
|
+
| **GUI** | `export` | — | Export entities to file |
|
|
571
|
+
| **GUI** | `methods` | `list` | List available RPC methods (dynamic discovery) |
|
|
572
|
+
| **GUI** | `colmap` | `reconstruct`, `run` | COLMAP reconstruction via RPC |
|
|
573
|
+
|
|
574
|
+
## JSON-RPC API (72 Methods)
|
|
575
|
+
|
|
576
|
+
When running in GUI mode, the harness communicates via JSON-RPC 2.0 over WebSocket. The method registry is dynamic — use `methods.list` to discover all available methods at runtime.
|
|
577
|
+
|
|
578
|
+
Key method groups:
|
|
579
|
+
|
|
580
|
+
| Category | Methods |
|
|
581
|
+
|----------|---------|
|
|
582
|
+
| **Lifecycle** | `ping`, `methods.list` |
|
|
583
|
+
| **File I/O** | `open`, `export`, `file.convert`, `clear` |
|
|
584
|
+
| **Scene** | `scene.list`, `scene.info`, `scene.remove`, `scene.setVisible` |
|
|
585
|
+
| **Entity** | `entity.rename`, `entity.setColor` |
|
|
586
|
+
| **View** | `view.screenshot`, `view.setOrientation`, `view.zoomFit`, `view.refresh`, `view.setPerspective`, `view.setPointSize`, `view.getCamera` |
|
|
587
|
+
| **Cloud** | `cloud.computeNormals`, `cloud.subsample`, `cloud.crop`, `cloud.getScalarFields`, `cloud.paintUniform`, `cloud.paintByHeight`, `cloud.paintByScalarField`, `cloud.setActiveSf`, `cloud.removeSf`, `cloud.removeAllSfs`, `cloud.renameSf`, `cloud.filterSf`, `cloud.coordToSF`, `cloud.removeRgb`, `cloud.removeNormals`, `cloud.invertNormals`, `cloud.merge`, `cloud.density`, `cloud.curvature`, `cloud.roughness`, `cloud.geometricFeature`, `cloud.approxDensity`, `cloud.colorBanding`, `cloud.sorFilter`, `cloud.sfArithmetic`, `cloud.sfOperation`, `cloud.sfGradient`, `cloud.sfConvertToRGB`, `cloud.octreeNormals`, `cloud.orientNormalsMST`, `cloud.clearNormals`, `cloud.normalsToSFs`, `cloud.normalsToDip`, `cloud.extractConnectedComponents`, `cloud.bestFitPlane`, `cloud.delaunay` |
|
|
588
|
+
| **Mesh** | `mesh.simplify`, `mesh.smooth`, `mesh.samplePoints`, `mesh.extractVertices`, `mesh.flipTriangles`, `mesh.volume`, `mesh.merge` |
|
|
589
|
+
| **Transform** | `transform.apply` |
|
|
590
|
+
| **COLMAP** | `colmap.reconstruct`, `colmap.run` |
|
|
591
|
+
|
|
592
|
+
## MCP Server (187 Tools)
|
|
593
|
+
|
|
594
|
+
An optional MCP server exposes 187 tools for integration with AI agents:
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
pip install -e .
|
|
598
|
+
cli-anything-acloudviewer-mcp --mode auto
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
MCP tool categories mirror the JSON-RPC methods above, plus additional CLI-only tools for headless processing, file conversion, batch operations, SIBR, plugin processing (PCV, Compass, SRA, CSF, RANSAC, etc.), and session management.
|
|
602
|
+
|
|
603
|
+
## Supported File Formats
|
|
604
|
+
|
|
605
|
+
### Point Cloud (Import/Export)
|
|
606
|
+
|
|
607
|
+
| Format | Extensions | Plugin Required |
|
|
608
|
+
|--------|-----------|----------------|
|
|
609
|
+
| PLY | `.ply` | — (built-in) |
|
|
610
|
+
| ASCII | `.asc`, `.xyz`, `.xyzn`, `.xyzrgb`, `.pts`, `.txt`, `.csv`, `.neu` | — (built-in) |
|
|
611
|
+
| BIN | `.bin` | — (built-in) |
|
|
612
|
+
| VTK | `.vtk` | — (built-in) |
|
|
613
|
+
| PCD | `.pcd` | qPCL |
|
|
614
|
+
| LAS/LAZ | `.las`, `.laz` | qLASIO or qPDALIO |
|
|
615
|
+
| E57 | `.e57` | qE57IO |
|
|
616
|
+
| DRC | `.drc` | qDracoIO |
|
|
617
|
+
| SBF | `.sbf` | qCoreIO |
|
|
618
|
+
| PTX (import only) | `.ptx` | — (built-in) |
|
|
619
|
+
|
|
620
|
+
### Mesh (Import/Export)
|
|
621
|
+
|
|
622
|
+
| Format | Extensions | Plugin Required |
|
|
623
|
+
|--------|-----------|----------------|
|
|
624
|
+
| OBJ | `.obj` | — (built-in) |
|
|
625
|
+
| STL | `.stl` | — (built-in) |
|
|
626
|
+
| OFF | `.off` | — (built-in) |
|
|
627
|
+
| FBX | `.fbx` | qFBXIO |
|
|
628
|
+
| DXF | `.dxf` | — (requires CV_DXF_SUPPORT) |
|
|
629
|
+
| glTF (import only) | `.gltf`, `.glb` | qMeshIO |
|
|
630
|
+
| DAE (import only) | `.dae` | qMeshIO |
|
|
631
|
+
| 3DS (import only) | `.3ds` | qMeshIO |
|
|
632
|
+
|
|
633
|
+
## Platform Notes
|
|
634
|
+
|
|
635
|
+
| Platform | Binary Name | Auto-Discovery |
|
|
636
|
+
|----------|------------|----------------|
|
|
637
|
+
| Linux | `ACloudViewer.sh`, `ACloudViewer` | PATH, `/usr/local/bin`, `/opt/ACloudViewer`, `~/.local/share/ACloudViewer` |
|
|
638
|
+
| macOS | `ACloudViewer` | PATH, `/Applications/ACloudViewer.app`, `~/Applications/ACloudViewer.app` |
|
|
639
|
+
| Windows | `ACloudViewer.bat`, `ACloudViewer.exe` | PATH, `%PROGRAMFILES%\ACloudViewer`, `%LOCALAPPDATA%\ACloudViewer` |
|
|
640
|
+
|
|
641
|
+
On all platforms, set `ACV_BINARY` environment variable to override auto-discovery.
|
|
642
|
+
|
|
643
|
+
### Platform-specific format availability
|
|
644
|
+
|
|
645
|
+
- **LAS FWF** (full waveform): Windows only (`qLASFWF` plugin)
|
|
646
|
+
- **STEP/STP** import: Requires OpenCASCADE (varies by build)
|
|
647
|
+
- **GDAL rasters** (`.tif`, `.tiff`): Requires `CV_GDAL_SUPPORT` build flag
|
|
648
|
+
- **SHP**: Requires `CV_SHP_SUPPORT` build flag
|
|
649
|
+
- **SIBR tools**: Not available on macOS
|
|
650
|
+
|
|
651
|
+
## Running Tests
|
|
652
|
+
|
|
653
|
+
```bash
|
|
654
|
+
pip install -e ".[dev]"
|
|
655
|
+
python -m pytest cli_anything/acloudviewer/tests/ -v
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
Test suite covering CLI structure, format maps, backend logic, RPC client wrappers (20 new cloud analysis/SF/normals wrappers), MCP tool registration (187 tools), and session management.
|
|
659
|
+
|
|
660
|
+
## Methodology
|
|
661
|
+
|
|
662
|
+
Built following the
|
|
663
|
+
[CLI-Anything HARNESS methodology](https://github.com/Asher-1/CLI-Anything/blob/main/cli-anything-plugin/HARNESS.md).
|