v3p 0.1.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.
v3p-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Ge Yang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
v3p-0.1.0/MANIFEST.in ADDED
@@ -0,0 +1,2 @@
1
+ include VERSION
2
+ recursive-include src/vuer_doc_boilerplate/ *.*
v3p-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,174 @@
1
+ Metadata-Version: 2.4
2
+ Name: v3p
3
+ Version: 0.1.0
4
+ Summary: Vuer 3DGS Processing - Tools for Gaussian Splatting workflows.
5
+ Home-page: https://github.com/vuer-ai/vuer-doc-boilerplate
6
+ Author: Ge Yang<ge.ike.yang@gmail.com>
7
+ Author-email: ge.ike.yang@gmail.com
8
+ License: MIT
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Programming Language :: Python
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: params-proto>=3.1.0
15
+ Requires-Dist: numpy>=1.21
16
+ Provides-Extra: all
17
+ Provides-Extra: dev
18
+ Requires-Dist: pylint==2.13.4; extra == "dev"
19
+ Requires-Dist: pytest==7.1.2; extra == "dev"
20
+ Requires-Dist: sphinx==7.1.2; extra == "dev"
21
+ Requires-Dist: furo; extra == "dev"
22
+ Requires-Dist: sphinx-autobuild; extra == "dev"
23
+ Requires-Dist: sphinx_copybutton; extra == "dev"
24
+ Requires-Dist: sphinxcontrib-video; extra == "dev"
25
+ Requires-Dist: sphinx-design; extra == "dev"
26
+ Requires-Dist: myst_parser; extra == "dev"
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: home-page
30
+ Dynamic: license-file
31
+
32
+ # v3p - Vuer 3DGS Processing
33
+
34
+ Tools for Gaussian Splatting (3DGS) processing workflows. Built with [params-proto](https://github.com/geyang/params-proto) for configuration management.
35
+
36
+ [![PyPI version](https://badge.fury.io/py/v3p.svg)](https://badge.fury.io/py/v3p)
37
+ [![Documentation](https://readthedocs.org/projects/v3p/badge/?version=latest)](https://v3p.readthedocs.io/en/latest/)
38
+
39
+ ## Installation
40
+
41
+ ```bash
42
+ pip install v3p
43
+ ```
44
+
45
+ For development:
46
+
47
+ ```bash
48
+ git clone https://github.com/vuer-ai/vuer-3dgs-processing.git
49
+ cd vuer-3dgs-processing
50
+ pip install -e ".[dev]"
51
+ ```
52
+
53
+ ## Quick Start
54
+
55
+ ### CLI Usage
56
+
57
+ The `v3p` command provides several subcommands for processing 3DGS point clouds:
58
+
59
+ ```bash
60
+ # Show available commands
61
+ v3p
62
+
63
+ # Process a point cloud
64
+ v3p process --input-path input.ply --output-path output.ply
65
+
66
+ # Convert between formats
67
+ v3p convert --input-path input.ply --output-path output.pcd
68
+ ```
69
+
70
+ ### Python API
71
+
72
+ ```python
73
+ import v3p
74
+ print(v3p.__version__)
75
+ ```
76
+
77
+ Using the configuration classes directly:
78
+
79
+ ```python
80
+ from v3p.scripts.process import ProcessConfig, main
81
+
82
+ # Configure via class attributes
83
+ ProcessConfig.input_path = "input.ply"
84
+ ProcessConfig.output_path = "output.ply"
85
+ ProcessConfig.voxel_size = 0.01
86
+ ProcessConfig.verbose = True
87
+
88
+ # Run processing
89
+ main()
90
+ ```
91
+
92
+ ## Commands
93
+
94
+ ### v3p process
95
+
96
+ Process 3DGS point clouds with filtering and downsampling.
97
+
98
+ ```bash
99
+ v3p process --input-path <path> [options]
100
+ ```
101
+
102
+ Options:
103
+ - `--input-path`: Path to input PLY or point cloud file (required)
104
+ - `--output-path`: Path to output file (default: output.ply)
105
+ - `--voxel-size`: Voxel size for downsampling (default: 0.01)
106
+ - `--remove-outliers`: Remove statistical outliers (default: True)
107
+ - `--num-neighbors`: Number of neighbors for outlier detection (default: 20)
108
+ - `--std-ratio`: Standard deviation ratio for outlier removal (default: 2.0)
109
+ - `--verbose`: Enable verbose output
110
+
111
+ ### v3p convert
112
+
113
+ Convert between point cloud formats.
114
+
115
+ ```bash
116
+ v3p convert --input-path <path> --output-path <path> [options]
117
+ ```
118
+
119
+ Options:
120
+ - `--input-path`: Path to input file (required)
121
+ - `--output-path`: Path to output file (required)
122
+ - `--input-format`: Input format - auto, ply, pcd, xyz (default: auto)
123
+ - `--output-format`: Output format - ply, pcd, xyz (default: ply)
124
+ - `--binary`: Write binary format when supported (default: True)
125
+ - `--verbose`: Enable verbose output
126
+
127
+ ## Configuration with params-proto
128
+
129
+ v3p uses [params-proto](https://github.com/geyang/params-proto) for configuration management. This allows you to:
130
+
131
+ 1. **Set parameters via CLI**: All config class attributes become CLI flags
132
+ 2. **Set parameters programmatically**: Modify class attributes directly
133
+ 3. **Use sweep files**: Generate parameter sweeps for batch processing
134
+
135
+ Example sweep file:
136
+
137
+ ```python
138
+ from params_proto import Sweep
139
+ from v3p.scripts.process import ProcessConfig
140
+
141
+ with Sweep(ProcessConfig) as sweep:
142
+ ProcessConfig.input_path = "input.ply"
143
+ with sweep.product:
144
+ ProcessConfig.voxel_size = [0.01, 0.02, 0.05]
145
+
146
+ sweep.save("process_sweep.jsonl")
147
+ ```
148
+
149
+ ## Development
150
+
151
+ ```bash
152
+ # Install dev dependencies
153
+ pip install -e ".[dev]"
154
+
155
+ # Run tests
156
+ make test
157
+
158
+ # Build and preview documentation
159
+ make preview
160
+
161
+ # Build wheel
162
+ make wheel
163
+
164
+ # Publish to PyPI
165
+ make publish
166
+ ```
167
+
168
+ ## Documentation
169
+
170
+ Full documentation: https://v3p.readthedocs.io/en/latest/
171
+
172
+ ## License
173
+
174
+ MIT
v3p-0.1.0/README.md ADDED
@@ -0,0 +1,143 @@
1
+ # v3p - Vuer 3DGS Processing
2
+
3
+ Tools for Gaussian Splatting (3DGS) processing workflows. Built with [params-proto](https://github.com/geyang/params-proto) for configuration management.
4
+
5
+ [![PyPI version](https://badge.fury.io/py/v3p.svg)](https://badge.fury.io/py/v3p)
6
+ [![Documentation](https://readthedocs.org/projects/v3p/badge/?version=latest)](https://v3p.readthedocs.io/en/latest/)
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ pip install v3p
12
+ ```
13
+
14
+ For development:
15
+
16
+ ```bash
17
+ git clone https://github.com/vuer-ai/vuer-3dgs-processing.git
18
+ cd vuer-3dgs-processing
19
+ pip install -e ".[dev]"
20
+ ```
21
+
22
+ ## Quick Start
23
+
24
+ ### CLI Usage
25
+
26
+ The `v3p` command provides several subcommands for processing 3DGS point clouds:
27
+
28
+ ```bash
29
+ # Show available commands
30
+ v3p
31
+
32
+ # Process a point cloud
33
+ v3p process --input-path input.ply --output-path output.ply
34
+
35
+ # Convert between formats
36
+ v3p convert --input-path input.ply --output-path output.pcd
37
+ ```
38
+
39
+ ### Python API
40
+
41
+ ```python
42
+ import v3p
43
+ print(v3p.__version__)
44
+ ```
45
+
46
+ Using the configuration classes directly:
47
+
48
+ ```python
49
+ from v3p.scripts.process import ProcessConfig, main
50
+
51
+ # Configure via class attributes
52
+ ProcessConfig.input_path = "input.ply"
53
+ ProcessConfig.output_path = "output.ply"
54
+ ProcessConfig.voxel_size = 0.01
55
+ ProcessConfig.verbose = True
56
+
57
+ # Run processing
58
+ main()
59
+ ```
60
+
61
+ ## Commands
62
+
63
+ ### v3p process
64
+
65
+ Process 3DGS point clouds with filtering and downsampling.
66
+
67
+ ```bash
68
+ v3p process --input-path <path> [options]
69
+ ```
70
+
71
+ Options:
72
+ - `--input-path`: Path to input PLY or point cloud file (required)
73
+ - `--output-path`: Path to output file (default: output.ply)
74
+ - `--voxel-size`: Voxel size for downsampling (default: 0.01)
75
+ - `--remove-outliers`: Remove statistical outliers (default: True)
76
+ - `--num-neighbors`: Number of neighbors for outlier detection (default: 20)
77
+ - `--std-ratio`: Standard deviation ratio for outlier removal (default: 2.0)
78
+ - `--verbose`: Enable verbose output
79
+
80
+ ### v3p convert
81
+
82
+ Convert between point cloud formats.
83
+
84
+ ```bash
85
+ v3p convert --input-path <path> --output-path <path> [options]
86
+ ```
87
+
88
+ Options:
89
+ - `--input-path`: Path to input file (required)
90
+ - `--output-path`: Path to output file (required)
91
+ - `--input-format`: Input format - auto, ply, pcd, xyz (default: auto)
92
+ - `--output-format`: Output format - ply, pcd, xyz (default: ply)
93
+ - `--binary`: Write binary format when supported (default: True)
94
+ - `--verbose`: Enable verbose output
95
+
96
+ ## Configuration with params-proto
97
+
98
+ v3p uses [params-proto](https://github.com/geyang/params-proto) for configuration management. This allows you to:
99
+
100
+ 1. **Set parameters via CLI**: All config class attributes become CLI flags
101
+ 2. **Set parameters programmatically**: Modify class attributes directly
102
+ 3. **Use sweep files**: Generate parameter sweeps for batch processing
103
+
104
+ Example sweep file:
105
+
106
+ ```python
107
+ from params_proto import Sweep
108
+ from v3p.scripts.process import ProcessConfig
109
+
110
+ with Sweep(ProcessConfig) as sweep:
111
+ ProcessConfig.input_path = "input.ply"
112
+ with sweep.product:
113
+ ProcessConfig.voxel_size = [0.01, 0.02, 0.05]
114
+
115
+ sweep.save("process_sweep.jsonl")
116
+ ```
117
+
118
+ ## Development
119
+
120
+ ```bash
121
+ # Install dev dependencies
122
+ pip install -e ".[dev]"
123
+
124
+ # Run tests
125
+ make test
126
+
127
+ # Build and preview documentation
128
+ make preview
129
+
130
+ # Build wheel
131
+ make wheel
132
+
133
+ # Publish to PyPI
134
+ make publish
135
+ ```
136
+
137
+ ## Documentation
138
+
139
+ Full documentation: https://v3p.readthedocs.io/en/latest/
140
+
141
+ ## License
142
+
143
+ MIT
v3p-0.1.0/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,77 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "v3p"
7
+ version = "0.1.0"
8
+ description = "Vuer 3DGS Processing - Tools for Gaussian Splatting workflows."
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ requires-python = ">=3.8"
12
+ classifiers = [
13
+ "Development Status :: 3 - Alpha",
14
+ "Programming Language :: Python",
15
+ ]
16
+ dependencies = [
17
+ "params-proto>=3.1.0",
18
+ "numpy>=1.21",
19
+ ]
20
+
21
+ [project.optional-dependencies]
22
+ all = []
23
+ dev = [
24
+ "pylint==2.13.4",
25
+ "pytest==7.1.2",
26
+ "sphinx==7.1.2",
27
+ "furo",
28
+ "sphinx-autobuild",
29
+ "sphinx_copybutton",
30
+ "sphinxcontrib-video",
31
+ "sphinx-design",
32
+ "myst_parser",
33
+ ]
34
+
35
+ [project.scripts]
36
+ v3p = "v3p.scripts.cli:cli"
37
+ v3p-process = "v3p.scripts.process:main"
38
+ v3p-convert = "v3p.scripts.convert:main"
39
+
40
+ [tool.setuptools.packages.find]
41
+ where = ["src"]
42
+ include = ["v3p*"]
43
+
44
+ [tool.setuptools.package-data]
45
+ "*" = ["*.json"]
46
+
47
+ [tool.black]
48
+ line-length = 120
49
+
50
+ [tool.pylint.messages_control]
51
+ max-line-length = 120
52
+ generated-members = []
53
+ good-names-rgxs = "^[_a-zA-Z][_a-z0-9]?$"
54
+ ignore-paths = []
55
+ jobs = 0
56
+ ignored-classes = ["TensorDataclass"]
57
+
58
+ disable = [
59
+ "duplicate-code",
60
+ "fixme",
61
+ "logging-fstring-interpolation",
62
+ "too-many-arguments",
63
+ "too-many-branches",
64
+ "too-many-instance-attributes",
65
+ "too-many-locals",
66
+ "unnecessary-ellipsis",
67
+ ]
68
+
69
+ [tool.pyright]
70
+ include = ["src/v3p"]
71
+ exclude = ["**/node_modules", "**/__pycache__", ]
72
+ defineConstant = { DEBUG = true }
73
+
74
+ reportMissingImports = true
75
+ reportMissingTypeStubs = false
76
+ reportPrivateImportUsage = false
77
+ reportUndefinedVariable = false
v3p-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
v3p-0.1.0/setup.py ADDED
@@ -0,0 +1,24 @@
1
+ from os import path
2
+ from setuptools import setup, find_packages
3
+
4
+ with open(path.join(path.abspath(path.dirname(__file__)), 'VERSION'), encoding='utf-8') as f:
5
+ version = f.read()
6
+
7
+ with open(path.join(path.abspath(path.dirname(__file__)), 'README.md'), encoding='utf-8') as f:
8
+ long_description = f.read()
9
+
10
+ setup(name='vuer-doc-boilerplate',
11
+ packages=find_packages(where='src'),
12
+ package_dir={'': 'src'},
13
+ install_requires=[
14
+ "params-proto>=3.1.0",
15
+ "numpy",
16
+ ],
17
+ description=long_description.split('\n')[0],
18
+ long_description=long_description,
19
+ long_description_content_type='text/markdown',
20
+ author='Ge Yang<ge.ike.yang@gmail.com>',
21
+ url='https://github.com/vuer-ai/vuer-doc-boilerplate',
22
+ author_email='ge.ike.yang@gmail.com',
23
+ package_data={'vuer_doc_boilerplate': ['vuer_doc_boilerplate', 'vuer_doc_boilerplate/*.*']},
24
+ version=version)
@@ -0,0 +1,5 @@
1
+ """v3p - Vuer 3DGS Processing tools."""
2
+
3
+ from pathlib import Path
4
+
5
+ __version__ = (Path(__file__).parent.parent.parent / "VERSION").read_text().strip()
@@ -0,0 +1 @@
1
+ """v3p CLI scripts."""
@@ -0,0 +1,40 @@
1
+ """v3p CLI with params-proto subcommands."""
2
+
3
+ import sys
4
+
5
+
6
+ def cli():
7
+ """Main CLI entry point with subcommand routing."""
8
+ if len(sys.argv) < 2:
9
+ print("Usage: v3p <command> [options]")
10
+ print("")
11
+ print("Commands:")
12
+ print(" process Process 3DGS point clouds")
13
+ print(" convert Convert between formats")
14
+ print("")
15
+ print("Run 'v3p <command> --help' for more information.")
16
+ sys.exit(1)
17
+
18
+ command = sys.argv[1]
19
+ sys.argv = [sys.argv[0]] + sys.argv[2:] # Remove subcommand from argv
20
+
21
+ if command == "process":
22
+ # Import triggers CLI parsing with @proto(cli=True)
23
+ from v3p.scripts.process import ProcessConfig, main
24
+
25
+ main()
26
+ elif command == "convert":
27
+ from v3p.scripts.convert import ConvertConfig, main
28
+
29
+ main()
30
+ elif command in ["-h", "--help"]:
31
+ sys.argv = [sys.argv[0]]
32
+ cli() # Show help
33
+ else:
34
+ print(f"Unknown command: {command}")
35
+ print("Run 'v3p --help' for available commands.")
36
+ sys.exit(1)
37
+
38
+
39
+ if __name__ == "__main__":
40
+ cli()
@@ -0,0 +1,46 @@
1
+ """Example params-proto subcommand for format conversion."""
2
+
3
+ from params_proto import proto
4
+
5
+
6
+ @proto(cli=True)
7
+ class ConvertConfig:
8
+ """Configuration for format conversion.
9
+
10
+ Args:
11
+ input_path: Path to input file
12
+ output_path: Path to output file
13
+ input_format: Input format (auto, ply, pcd, xyz)
14
+ output_format: Output format (ply, pcd, xyz)
15
+ binary: Write binary format when supported
16
+ verbose: Enable verbose output
17
+ """
18
+
19
+ input_path: str = None
20
+ output_path: str = None
21
+
22
+ # Format options
23
+ input_format: str = "auto"
24
+ output_format: str = "ply"
25
+
26
+ # Options
27
+ binary: bool = True
28
+ verbose: bool = False
29
+
30
+
31
+ def main():
32
+ """Run format conversion with the given configuration."""
33
+ print(f"Converting: {ConvertConfig.input_path}")
34
+ print(f"Output: {ConvertConfig.output_path}")
35
+ print(f"Input format: {ConvertConfig.input_format}")
36
+ print(f"Output format: {ConvertConfig.output_format}")
37
+
38
+ if ConvertConfig.verbose:
39
+ print(f"Binary: {ConvertConfig.binary}")
40
+
41
+ # Placeholder for actual conversion logic
42
+ print("Conversion complete!")
43
+
44
+
45
+ if __name__ == "__main__":
46
+ main()
@@ -0,0 +1,49 @@
1
+ """Example params-proto subcommand for 3DGS processing."""
2
+
3
+ from params_proto import proto
4
+
5
+
6
+ @proto(cli=True)
7
+ class ProcessConfig:
8
+ """Configuration for 3DGS processing.
9
+
10
+ Args:
11
+ input_path: Path to input PLY or point cloud file
12
+ output_path: Path to output file
13
+ voxel_size: Voxel size for downsampling
14
+ remove_outliers: Remove statistical outliers
15
+ num_neighbors: Number of neighbors for outlier detection
16
+ std_ratio: Standard deviation ratio for outlier removal
17
+ verbose: Enable verbose output
18
+ """
19
+
20
+ input_path: str = None
21
+ output_path: str = "output.ply"
22
+
23
+ # Processing options
24
+ voxel_size: float = 0.01
25
+ remove_outliers: bool = True
26
+ num_neighbors: int = 20
27
+ std_ratio: float = 2.0
28
+
29
+ # Output options
30
+ verbose: bool = False
31
+
32
+
33
+ def main():
34
+ """Run 3DGS processing with the given configuration."""
35
+ print(f"Processing: {ProcessConfig.input_path}")
36
+ print(f"Output: {ProcessConfig.output_path}")
37
+ print(f"Voxel size: {ProcessConfig.voxel_size}")
38
+ print(f"Remove outliers: {ProcessConfig.remove_outliers}")
39
+
40
+ if ProcessConfig.verbose:
41
+ print(f"Neighbors: {ProcessConfig.num_neighbors}")
42
+ print(f"Std ratio: {ProcessConfig.std_ratio}")
43
+
44
+ # Placeholder for actual processing logic
45
+ print("Processing complete!")
46
+
47
+
48
+ if __name__ == "__main__":
49
+ main()
@@ -0,0 +1,174 @@
1
+ Metadata-Version: 2.4
2
+ Name: v3p
3
+ Version: 0.1.0
4
+ Summary: Vuer 3DGS Processing - Tools for Gaussian Splatting workflows.
5
+ Home-page: https://github.com/vuer-ai/vuer-doc-boilerplate
6
+ Author: Ge Yang<ge.ike.yang@gmail.com>
7
+ Author-email: ge.ike.yang@gmail.com
8
+ License: MIT
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Programming Language :: Python
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: params-proto>=3.1.0
15
+ Requires-Dist: numpy>=1.21
16
+ Provides-Extra: all
17
+ Provides-Extra: dev
18
+ Requires-Dist: pylint==2.13.4; extra == "dev"
19
+ Requires-Dist: pytest==7.1.2; extra == "dev"
20
+ Requires-Dist: sphinx==7.1.2; extra == "dev"
21
+ Requires-Dist: furo; extra == "dev"
22
+ Requires-Dist: sphinx-autobuild; extra == "dev"
23
+ Requires-Dist: sphinx_copybutton; extra == "dev"
24
+ Requires-Dist: sphinxcontrib-video; extra == "dev"
25
+ Requires-Dist: sphinx-design; extra == "dev"
26
+ Requires-Dist: myst_parser; extra == "dev"
27
+ Dynamic: author
28
+ Dynamic: author-email
29
+ Dynamic: home-page
30
+ Dynamic: license-file
31
+
32
+ # v3p - Vuer 3DGS Processing
33
+
34
+ Tools for Gaussian Splatting (3DGS) processing workflows. Built with [params-proto](https://github.com/geyang/params-proto) for configuration management.
35
+
36
+ [![PyPI version](https://badge.fury.io/py/v3p.svg)](https://badge.fury.io/py/v3p)
37
+ [![Documentation](https://readthedocs.org/projects/v3p/badge/?version=latest)](https://v3p.readthedocs.io/en/latest/)
38
+
39
+ ## Installation
40
+
41
+ ```bash
42
+ pip install v3p
43
+ ```
44
+
45
+ For development:
46
+
47
+ ```bash
48
+ git clone https://github.com/vuer-ai/vuer-3dgs-processing.git
49
+ cd vuer-3dgs-processing
50
+ pip install -e ".[dev]"
51
+ ```
52
+
53
+ ## Quick Start
54
+
55
+ ### CLI Usage
56
+
57
+ The `v3p` command provides several subcommands for processing 3DGS point clouds:
58
+
59
+ ```bash
60
+ # Show available commands
61
+ v3p
62
+
63
+ # Process a point cloud
64
+ v3p process --input-path input.ply --output-path output.ply
65
+
66
+ # Convert between formats
67
+ v3p convert --input-path input.ply --output-path output.pcd
68
+ ```
69
+
70
+ ### Python API
71
+
72
+ ```python
73
+ import v3p
74
+ print(v3p.__version__)
75
+ ```
76
+
77
+ Using the configuration classes directly:
78
+
79
+ ```python
80
+ from v3p.scripts.process import ProcessConfig, main
81
+
82
+ # Configure via class attributes
83
+ ProcessConfig.input_path = "input.ply"
84
+ ProcessConfig.output_path = "output.ply"
85
+ ProcessConfig.voxel_size = 0.01
86
+ ProcessConfig.verbose = True
87
+
88
+ # Run processing
89
+ main()
90
+ ```
91
+
92
+ ## Commands
93
+
94
+ ### v3p process
95
+
96
+ Process 3DGS point clouds with filtering and downsampling.
97
+
98
+ ```bash
99
+ v3p process --input-path <path> [options]
100
+ ```
101
+
102
+ Options:
103
+ - `--input-path`: Path to input PLY or point cloud file (required)
104
+ - `--output-path`: Path to output file (default: output.ply)
105
+ - `--voxel-size`: Voxel size for downsampling (default: 0.01)
106
+ - `--remove-outliers`: Remove statistical outliers (default: True)
107
+ - `--num-neighbors`: Number of neighbors for outlier detection (default: 20)
108
+ - `--std-ratio`: Standard deviation ratio for outlier removal (default: 2.0)
109
+ - `--verbose`: Enable verbose output
110
+
111
+ ### v3p convert
112
+
113
+ Convert between point cloud formats.
114
+
115
+ ```bash
116
+ v3p convert --input-path <path> --output-path <path> [options]
117
+ ```
118
+
119
+ Options:
120
+ - `--input-path`: Path to input file (required)
121
+ - `--output-path`: Path to output file (required)
122
+ - `--input-format`: Input format - auto, ply, pcd, xyz (default: auto)
123
+ - `--output-format`: Output format - ply, pcd, xyz (default: ply)
124
+ - `--binary`: Write binary format when supported (default: True)
125
+ - `--verbose`: Enable verbose output
126
+
127
+ ## Configuration with params-proto
128
+
129
+ v3p uses [params-proto](https://github.com/geyang/params-proto) for configuration management. This allows you to:
130
+
131
+ 1. **Set parameters via CLI**: All config class attributes become CLI flags
132
+ 2. **Set parameters programmatically**: Modify class attributes directly
133
+ 3. **Use sweep files**: Generate parameter sweeps for batch processing
134
+
135
+ Example sweep file:
136
+
137
+ ```python
138
+ from params_proto import Sweep
139
+ from v3p.scripts.process import ProcessConfig
140
+
141
+ with Sweep(ProcessConfig) as sweep:
142
+ ProcessConfig.input_path = "input.ply"
143
+ with sweep.product:
144
+ ProcessConfig.voxel_size = [0.01, 0.02, 0.05]
145
+
146
+ sweep.save("process_sweep.jsonl")
147
+ ```
148
+
149
+ ## Development
150
+
151
+ ```bash
152
+ # Install dev dependencies
153
+ pip install -e ".[dev]"
154
+
155
+ # Run tests
156
+ make test
157
+
158
+ # Build and preview documentation
159
+ make preview
160
+
161
+ # Build wheel
162
+ make wheel
163
+
164
+ # Publish to PyPI
165
+ make publish
166
+ ```
167
+
168
+ ## Documentation
169
+
170
+ Full documentation: https://v3p.readthedocs.io/en/latest/
171
+
172
+ ## License
173
+
174
+ MIT
@@ -0,0 +1,17 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ VERSION
5
+ pyproject.toml
6
+ setup.py
7
+ src/v3p/__init__.py
8
+ src/v3p.egg-info/PKG-INFO
9
+ src/v3p.egg-info/SOURCES.txt
10
+ src/v3p.egg-info/dependency_links.txt
11
+ src/v3p.egg-info/entry_points.txt
12
+ src/v3p.egg-info/requires.txt
13
+ src/v3p.egg-info/top_level.txt
14
+ src/v3p/scripts/__init__.py
15
+ src/v3p/scripts/cli.py
16
+ src/v3p/scripts/convert.py
17
+ src/v3p/scripts/process.py
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ v3p = v3p.scripts.cli:cli
3
+ v3p-convert = v3p.scripts.convert:main
4
+ v3p-process = v3p.scripts.process:main
@@ -0,0 +1,15 @@
1
+ params-proto>=3.1.0
2
+ numpy>=1.21
3
+
4
+ [all]
5
+
6
+ [dev]
7
+ pylint==2.13.4
8
+ pytest==7.1.2
9
+ sphinx==7.1.2
10
+ furo
11
+ sphinx-autobuild
12
+ sphinx_copybutton
13
+ sphinxcontrib-video
14
+ sphinx-design
15
+ myst_parser
@@ -0,0 +1 @@
1
+ v3p