3mesh 1.0.1__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.
- 3mesh-1.0.1/3mesh.egg-info/PKG-INFO +506 -0
- 3mesh-1.0.1/3mesh.egg-info/SOURCES.txt +82 -0
- 3mesh-1.0.1/3mesh.egg-info/dependency_links.txt +1 -0
- 3mesh-1.0.1/3mesh.egg-info/requires.txt +1 -0
- 3mesh-1.0.1/3mesh.egg-info/top_level.txt +1 -0
- 3mesh-1.0.1/LICENSE +148 -0
- 3mesh-1.0.1/PKG-INFO +506 -0
- 3mesh-1.0.1/README.md +330 -0
- 3mesh-1.0.1/meshsdk/MRDarkTheme.json +602 -0
- 3mesh-1.0.1/meshsdk/MRLightTheme.json +604 -0
- 3mesh-1.0.1/meshsdk/NotoSans-Regular.ttf +0 -0
- 3mesh-1.0.1/meshsdk/NotoSans-SemiBold.ttf +0 -0
- 3mesh-1.0.1/meshsdk/NotoSansMono-Regular.ttf +0 -0
- 3mesh-1.0.1/meshsdk/NotoSansSC-Regular.otf +0 -0
- 3mesh-1.0.1/meshsdk/__init__.py +2 -0
- 3mesh-1.0.1/meshsdk/fa-solid-900.ttf +0 -0
- 3mesh-1.0.1/meshsdk/libpybind11nonlimitedapi_meshsdk_3.10.so +0 -0
- 3mesh-1.0.1/meshsdk/libpybind11nonlimitedapi_meshsdk_3.12.so +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane Import.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane XY.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane XZ.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane YZ.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/mouse left.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/mouse right.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/mouse scroll.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane Import.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane XY.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane XZ.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane YZ.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/mouse left.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/mouse right.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/mouse scroll.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/AngleMeasurementObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/CircleObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ConeObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/CylinderObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/DistanceMeasurementObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/LineObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/Object.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectDistanceMap.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectGcode.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectLabel.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectLines.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectMesh.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectPoints.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectVoxels.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/Object_open.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/PlaneObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/PointObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/RadiusMeasurementObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X1/SphereObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/AngleMeasurementObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/CircleObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ConeObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/CylinderObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/DistanceMeasurementObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/LineObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/Object.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectDistanceMap.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectGcode.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectLabel.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectLines.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectMesh.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectPoints.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectVoxels.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/Object_open.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/PlaneObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/PointObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/RadiusMeasurementObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/object_icons/X3/SphereObject.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/textures/controller_cube_default.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/textures/controller_cube_edges.png +0 -0
- 3mesh-1.0.1/meshsdk/resource/textures/controller_cube_sides.png +0 -0
- 3mesh-1.0.1/meshsdk/trimcudapy.pyi +239 -0
- 3mesh-1.0.1/meshsdk/trimcudapy.so +0 -0
- 3mesh-1.0.1/meshsdk/trimnumpy.pyi +89 -0
- 3mesh-1.0.1/meshsdk/trimnumpy.so +0 -0
- 3mesh-1.0.1/meshsdk/trimpy.pyi +105735 -0
- 3mesh-1.0.1/meshsdk/trimpy.so +0 -0
- 3mesh-1.0.1/meshsdk/trimviewerpy.pyi +596 -0
- 3mesh-1.0.1/meshsdk/trimviewerpy.so +0 -0
- 3mesh-1.0.1/pyproject.toml +37 -0
- 3mesh-1.0.1/setup.cfg +18 -0
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: 3mesh
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Advanced 3D mesh processing library.
|
|
5
|
+
Author-email: alpinebuster <imzqqq@hotmail.com>
|
|
6
|
+
License: NON-COMMERCIAL & education LICENSE AGREEMENT
|
|
7
|
+
|
|
8
|
+
This agreement is between the individual below (User) and AMV Consulting, LLC, a
|
|
9
|
+
Nevada limited liability company (AMV). The AMV source code library software, and all
|
|
10
|
+
modifications, enhancements, technical documentation provided by AMV as part of the
|
|
11
|
+
Software (Software) are licensed and are not sold. By receiving or using this
|
|
12
|
+
Software, User indicates its acceptance of the terms of this agreement.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
TRIAL LICENSE.
|
|
16
|
+
|
|
17
|
+
Subject to the terms of this agreement, AMV grants User a terminable, non-exclusive,
|
|
18
|
+
and non-transferable license to use the Software, solely for non-commercial,
|
|
19
|
+
evaluation or educational purposes.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
DISCLAIMER.
|
|
23
|
+
|
|
24
|
+
AMV DISCLAIMS ANY AND ALL REPRESENTATIONS OR WARRANTIES OF ANY
|
|
25
|
+
KIND, WHETHER EXPRESS OR IMPLIED, MADE WITH RESPECT TO THE
|
|
26
|
+
SOFTWARE, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
|
|
27
|
+
OF MERCHANTABILITY, NON-INFRINGEMENT, AND FITNESS FOR A
|
|
28
|
+
PARTICULAR PURPOSE. THE SOFTWARE IS PROVIDED ‘AS IS’ WITHOUT ANY
|
|
29
|
+
WARRANTY OF ANY KIND. AMV AND ITS LICENSORS DO NOT WARRANT THAT
|
|
30
|
+
ANY SOFTWARE IS WITHOUT DEFECT OR ERROR, OR THAT THE OPERATION
|
|
31
|
+
OF ANY SOFTWARE WILL BE UNINTERRUPTED.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
RESTRICTIONS ON USE.
|
|
35
|
+
|
|
36
|
+
User may not sell, rent, sublicense, display, modify, or otherwise transfer the Software
|
|
37
|
+
to any third party.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
OWNERSHIP.
|
|
41
|
+
|
|
42
|
+
All right, title, and interest to the Software are owned by AMV and its licensors, and
|
|
43
|
+
are protected by United States and international intellectual property laws. User may
|
|
44
|
+
not remove or alter any copyright or proprietary notice from copies of the Software.
|
|
45
|
+
AMV reserves all rights not expressly granted to User.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
TERMINATION.
|
|
49
|
+
|
|
50
|
+
The license in Section 1 terminates upon AMV’s notice of termination to User. Upon
|
|
51
|
+
termination of this agreement or a license for any reason, User must discontinue using
|
|
52
|
+
the Software, de-install, and destroy the Software and all copies within 5 days. Upon
|
|
53
|
+
AMV’s request, User will confirm in writing its compliance with this destruction or
|
|
54
|
+
return requirement.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
LIABILITY LIMIT.
|
|
58
|
+
|
|
59
|
+
EXCLUSION OF INDIRECT DAMAGES. TO THE MAXIMUM EXTENT ALLOWED
|
|
60
|
+
BY LAW, AMV IS NOT LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL,
|
|
61
|
+
OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATED TO THIS
|
|
62
|
+
AGREEMENT (INCLUDING, WITHOUT LIMITATION, COSTS OF DELAY; LOSS
|
|
63
|
+
OF OR UNAUTHORIZED ACCESS TO DATA OR INFORMATION; AND LOST
|
|
64
|
+
PROFITS, REVENUE, OR ANTICIPATED COST SAVINGS), EVEN IF IT
|
|
65
|
+
KNOWS OF THE POSSIBILITY OR FORESEEABILITY OF SUCH DAMAGE OR
|
|
66
|
+
LOSS.
|
|
67
|
+
|
|
68
|
+
TOTAL LIMIT ON LIABILITY. TO THE MAXIMUM EXTENT ALLOWED BY LAW,
|
|
69
|
+
AMV'S TOTAL LIABILITY ARISING OUT OF OR RELATED TO THIS
|
|
70
|
+
AGREEMENT (WHETHER IN CONTRACT, TORT, OR OTHERWISE) DOES NOT
|
|
71
|
+
EXCEED $100.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
GOVERNING LAW AND FORUM.
|
|
75
|
+
|
|
76
|
+
This agreement is governed by the laws of the State of Nevada (without regard to
|
|
77
|
+
conflicts of law principles) for any dispute between the parties or relating in any way to
|
|
78
|
+
the subject matter of this agreement. Any suit or legal proceeding must be exclusively
|
|
79
|
+
brought in the federal or state courts for Washoe County, Nevada, and User submits to
|
|
80
|
+
this personal jurisdiction and venue. Nothing in this agreement prevents either party
|
|
81
|
+
from seeking injunctive relief in a court of competent jurisdiction. The prevailing party
|
|
82
|
+
in any litigation is entitled to recover its attorneys’ fees and costs from the other party.
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
OTHER TERMS.
|
|
86
|
+
|
|
87
|
+
Entire Agreement and Changes. This agreement constitutes the entire
|
|
88
|
+
agreement between the parties and supersedes any prior or contemporaneous
|
|
89
|
+
negotiations or agreements, whether oral or written, related to this subject matter.
|
|
90
|
+
User is not relying on any representation concerning this subject matter, oral or
|
|
91
|
+
written, not included in this agreement. No representation, promise, or inducement
|
|
92
|
+
not included in this agreement is binding. No modification or waiver of any term of
|
|
93
|
+
this agreement is effective unless both parties sign it.
|
|
94
|
+
|
|
95
|
+
No Assignment. Neither party may assign or transfer this agreement to a third
|
|
96
|
+
party, nor delegate any duty, except that the agreement may be assigned, without
|
|
97
|
+
the consent of the other party, (i) as part of a merger or sale of all or substantially
|
|
98
|
+
all a party's businesses or assets, of User, and (ii) in the case of AMV at any time
|
|
99
|
+
to any third party.
|
|
100
|
+
|
|
101
|
+
Independent Contractors. The parties are independent contractors with respect
|
|
102
|
+
to each other, and neither party is an agent, employee, or partner of the other
|
|
103
|
+
party or the other party's affiliates.
|
|
104
|
+
|
|
105
|
+
Enforceability and Force Majeure. If any term of this agreement is invalid or
|
|
106
|
+
unenforceable, the other terms remain in effect. Neither party is liable for its non-
|
|
107
|
+
performance due to events beyond its reasonable control, including but not limited
|
|
108
|
+
to natural weather events and disasters, labor disruptions, and disruptions in the
|
|
109
|
+
supply of utilities.
|
|
110
|
+
|
|
111
|
+
Money Damages Insufficient. Any breach by a party of this agreement or
|
|
112
|
+
violation of the other party’s intellectual property rights could cause irreparable
|
|
113
|
+
injury or harm to the other party. The other party may seek a court order to stop
|
|
114
|
+
any breach or avoid any future breach of this agreement.
|
|
115
|
+
|
|
116
|
+
Survival of Terms. All provisions of this agreement regarding payment,
|
|
117
|
+
confidentiality, indemnification, limitations of liability, proprietary rights and such
|
|
118
|
+
other provisions that by fair implication require performance beyond the term of
|
|
119
|
+
this agreement must survive expiration or termination of this agreement until fully
|
|
120
|
+
performed or otherwise are inapplicable. The UN Convention on Contracts for the
|
|
121
|
+
International Sale of Goods does not apply.
|
|
122
|
+
|
|
123
|
+
Compliance Audit. No more than once in any 12-month period and upon at least
|
|
124
|
+
30 days’ advance notice, AMV (or its representative) may audit User’s usage of the
|
|
125
|
+
Software at any User facility. User will cooperate with such audit. User agrees to pay
|
|
126
|
+
within 30 days of written notification any fees applicable to User’s use of the
|
|
127
|
+
Software in excess of the license.
|
|
128
|
+
|
|
129
|
+
Export Compliance. The Software and Confidential Information may be subject to
|
|
130
|
+
export laws and regulations of the United States and other jurisdictions. Each party
|
|
131
|
+
represents that it is not named on any U.S. government denied-party list. Neither
|
|
132
|
+
party will permit its personnel or representatives to access any Software in a U.S.-
|
|
133
|
+
embargoed country or in violation of any applicable export law or regulation.
|
|
134
|
+
|
|
135
|
+
U.S. Government Restricted Rights. If User is a United States government
|
|
136
|
+
agency or acquired the license to the Software hereunder pursuant to a
|
|
137
|
+
government contract or with government funds, then as defined in FAR §2.101,
|
|
138
|
+
DFAR §252.227-7014(a)(1), and DFAR §252.227-7014(a)(5), or otherwise, all
|
|
139
|
+
Software provided in connection with this agreement are “commercial items,”
|
|
140
|
+
“commercial computer software,” or “commercial computer software
|
|
141
|
+
documentation.” Consistent with DFAR §227.7202 and FAR §12.212, any use,
|
|
142
|
+
modification, reproduction, release, performance, display, disclosure, or
|
|
143
|
+
distribution by or for the United States government is governed solely by the
|
|
144
|
+
terms of this agreement and is prohibited except to the extent permitted by the
|
|
145
|
+
terms of this agreement.
|
|
146
|
+
|
|
147
|
+
Open Source Software Licenses. The Software may contain embedded open source
|
|
148
|
+
software components, which are provided as part of the Software and for
|
|
149
|
+
which additional terms may be included in the technical documentation.
|
|
150
|
+
|
|
151
|
+
Feedback. If User provides feedback or suggestions about the Software, then AMV
|
|
152
|
+
(and those it allows to use its technology) may use such information without
|
|
153
|
+
obligation to User.
|
|
154
|
+
|
|
155
|
+
Project-URL: Homepage, https://3mesh.tech/
|
|
156
|
+
Project-URL: Documentation, https://3mesh.tech/documentation/
|
|
157
|
+
Project-URL: Source, https://github.com/alpinebuster/3mesh-sdk
|
|
158
|
+
Project-URL: Bug Reports, https://github.com/alpinebuster/3mesh-sdk/issues
|
|
159
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
160
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
161
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
162
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
163
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
164
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
165
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
166
|
+
Classifier: License :: Free For Educational Use
|
|
167
|
+
Classifier: License :: Free for non-commercial use
|
|
168
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
169
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
170
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
171
|
+
Requires-Python: >=3.8
|
|
172
|
+
Description-Content-Type: text/markdown
|
|
173
|
+
License-File: LICENSE
|
|
174
|
+
Requires-Dist: numpy>=1.19.0
|
|
175
|
+
Dynamic: license-file
|
|
176
|
+
|
|
177
|
+
<!-- cSpell:disable -->
|
|
178
|
+
<p align="center">
|
|
179
|
+
<img src="https://github.com/alpinebuster/3mesh-sdk/actions/workflows/build-test-distribute.yml/badge.svg?branch=main">
|
|
180
|
+
<img alt="GitHub License" src="https://img.shields.io/github/license/alpinebuster/3mesh-sdk">
|
|
181
|
+
<img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/v/release/alpinebuster/3mesh-sdk">
|
|
182
|
+
<img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues/alpinebuster/3mesh-sdk">
|
|
183
|
+
</p>
|
|
184
|
+
|
|
185
|
+
<!-- <p align="center">
|
|
186
|
+
<picture>
|
|
187
|
+
<source media="(prefers-color-scheme: dark)" srcset="front_page.png">
|
|
188
|
+
<source media="(prefers-color-scheme: light)" srcset="front_page.png">
|
|
189
|
+
<img alt="Front Page" width="544">
|
|
190
|
+
</picture>
|
|
191
|
+
</p> -->
|
|
192
|
+
<!-- cSpell:enable -->
|
|
193
|
+
|
|
194
|
+
<h1 align="center">3MeshSDK</h1>
|
|
195
|
+
|
|
196
|
+
<p align="center">
|
|
197
|
+
<b>Advanced algorithms for 3D mesh processing with AI agents!</b>
|
|
198
|
+
</p>
|
|
199
|
+
|
|
200
|
+
3MeshSDK provides a robust foundation for 3D data processing, supporting all essential formats like point clouds, meshes, and volumes continuously generated by modern sensors. The powerful half-edge data structure ensures manifold compliance for precise, reliable mesh representation.
|
|
201
|
+
|
|
202
|
+
## AI Driven Mesh Modeling
|
|
203
|
+
- Generative AI / LLM & VLM tools for geometry creation and editing
|
|
204
|
+
- 3D reconstruction, point-cloud fusion & odometry
|
|
205
|
+
- Geometry-aware deep learning for defect detection & segmentation
|
|
206
|
+
- To be continued...
|
|
207
|
+
|
|
208
|
+
## Core Algorithms
|
|
209
|
+
- **3D Boolean** performs fast, highly optimized mesh- and voxel-based operations.
|
|
210
|
+
- **Mesh Repair** eliminates self-intersections, fills holes, and removes degeneracies.
|
|
211
|
+
- **Mesh Offsetting** controls surface thickness with multiple precise modes for 3D printing and machining.
|
|
212
|
+
- **Hole Filling** fills flat and curved surfaces, connects or separates holes, and builds bridges.
|
|
213
|
+
- **Mesh Simplification** optimizes mesh complexity while keeping details within set tolerance. We provide remeshing, and subdivision options as well.
|
|
214
|
+
- **Collision Detection** verifies intersections between models for further operations.
|
|
215
|
+
- **Extensive File Format Support** enables importing a wide range of file formats for meshes, point clouds, CT scans, polylines, distance maps, and G-code. Export functionalities—and support for color and texture data—are available for select formats, too.
|
|
216
|
+
- **Triangulation** converts point clouds into meshes with accurate normal creation.
|
|
217
|
+
- **ICP** precisely aligns meshes using point-to-point and point-to-plane transformations.
|
|
218
|
+
- **Segmentation** performs semi-automatic segmentation based on curvature for meshes and voxels.
|
|
219
|
+
- **Deformation** applies Laplacian, freeform, and relaxation smoothing for fine mesh adjustments.
|
|
220
|
+
- **Support of Distance Maps and Polylines** allows to generate distance maps and iso-lines and performs projection and intersection.
|
|
221
|
+
|
|
222
|
+
## Getting Started
|
|
223
|
+
This guide explains how to set up 3MeshSDK for C++ development on Windows, Linux, macOS, and docker, and also shows how to build WebAssembly modules using 3MeshSDK with Emscripten. It covers all the prerequisites and setup steps for each platform, making it easy to get started.
|
|
224
|
+
|
|
225
|
+
### Linux
|
|
226
|
+
> Install Clang 18+ first.
|
|
227
|
+
|
|
228
|
+
```sh
|
|
229
|
+
wget https://apt.llvm.org/llvm.sh
|
|
230
|
+
chmod u+x llvm.sh
|
|
231
|
+
sudo ./llvm.sh 18
|
|
232
|
+
|
|
233
|
+
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100 # (optional)
|
|
234
|
+
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 200
|
|
235
|
+
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 100 # (optional)
|
|
236
|
+
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 200
|
|
237
|
+
sudo update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-14 100 # (optional)
|
|
238
|
+
sudo update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-18 200
|
|
239
|
+
sudo update-alternatives --config clang
|
|
240
|
+
sudo update-alternatives --config clang++
|
|
241
|
+
clang --version
|
|
242
|
+
clang++ --version
|
|
243
|
+
llvm-config --version
|
|
244
|
+
|
|
245
|
+
export CC=gcc
|
|
246
|
+
export CXX=g++
|
|
247
|
+
export CMAKE_C_COMPILER=gcc
|
|
248
|
+
export CMAKE_CXX_COMPILER=g++
|
|
249
|
+
export PATH=/usr/bin:$PATH
|
|
250
|
+
|
|
251
|
+
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2
|
|
252
|
+
sudo update-alternatives --config python3
|
|
253
|
+
python3.12 -m ensurepip --upgrade
|
|
254
|
+
python3.12 -m pip install --upgrade pip
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Install/Build Dependencies and Compile:
|
|
258
|
+
|
|
259
|
+
```sh
|
|
260
|
+
git submodule update --init
|
|
261
|
+
|
|
262
|
+
./scripts/build_thirdparty.sh
|
|
263
|
+
./scripts/build_source.sh
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Create and Install Package:
|
|
267
|
+
|
|
268
|
+
For Ubuntu:
|
|
269
|
+
```sh
|
|
270
|
+
./scripts/distribution.sh
|
|
271
|
+
sudo apt install ./distr/meshsdk-dev.deb
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
For Fedora**:
|
|
275
|
+
```sh
|
|
276
|
+
./scripts/distribution_rpm.sh
|
|
277
|
+
sudo rpm -i ./distr/meshsdk-dev.rpm
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Docker
|
|
281
|
+
```sh
|
|
282
|
+
`docker compose up --build 3mesh-emscripten-build`
|
|
283
|
+
|
|
284
|
+
`docker compose up 3mesh-emscripten-build`
|
|
285
|
+
`docker compose up 3mesh-emscripten-build -d`
|
|
286
|
+
|
|
287
|
+
`docker compose --profile singlethreaded up 3mesh-emscripten-build-singlethreaded`
|
|
288
|
+
`docker compose --profile wasm64 up 3mesh-emscripten-build-wasm64`
|
|
289
|
+
|
|
290
|
+
#
|
|
291
|
+
# To run custom build commands:
|
|
292
|
+
#
|
|
293
|
+
`docker compose exec 3mesh-emscripten-build bash`
|
|
294
|
+
`docker compose exec 3mesh-emscripten-build-singlethreaded bash`
|
|
295
|
+
`docker compose exec 3mesh-emscripten-build-wasm64 bash`
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### MacOS
|
|
299
|
+
> Prerequisites
|
|
300
|
+
|
|
301
|
+
1. Install Homebrew
|
|
302
|
+
Run the following command in your terminal to install [Homebrew](https://brew.sh/):
|
|
303
|
+
`/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
|
304
|
+
|
|
305
|
+
2. Update Homebrew
|
|
306
|
+
Make sure Homebrew is up to date:
|
|
307
|
+
`brew update`
|
|
308
|
+
|
|
309
|
+
3. Install Git Using Homebrew
|
|
310
|
+
Once Homebrew is installed and added to your PATH, you can proceed to install Git:
|
|
311
|
+
`brew install git`
|
|
312
|
+
|
|
313
|
+
> Compile Locally
|
|
314
|
+
4. Install/Build Dependencies and Compile:
|
|
315
|
+
```sh
|
|
316
|
+
git submodule update --init
|
|
317
|
+
|
|
318
|
+
./scripts/build_thirdparty.sh
|
|
319
|
+
./scripts/build_source.sh
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
5. Run example We suggest starting with the mesh loading and saving example, which demonstrates how to work with mesh files programmatically.
|
|
323
|
+
|
|
324
|
+
### Windows (Desktop)
|
|
325
|
+
Compile locally from sources.
|
|
326
|
+
|
|
327
|
+
#### Prerequisites
|
|
328
|
+
1. **Git**
|
|
329
|
+
- [Install Git](https://git-scm.com/) to manage repositories and submodules, which is also required to install `vcpkg`.
|
|
330
|
+
2. **Visual Studio 2019 or 2022**
|
|
331
|
+
- [Download and install either Visual Studio 2019 or 2022](https://visualstudio.microsoft.com/). During installation, make sure to:
|
|
332
|
+
- Select the "Desktop development with C++" workload.
|
|
333
|
+
- Include support for the C++ programming language.
|
|
334
|
+
- Ensure the English language pack is installed (required for `vcpkg`).
|
|
335
|
+
3. **CUDA Toolkit**
|
|
336
|
+
- For **Visual Studio 2019**: Install [CUDA v11.4](https://developer.nvidia.com/cuda-11-4-0-download-archive)
|
|
337
|
+
- For **Visual Studio 2022**: Install [CUDA v12.0](https://developer.nvidia.com/cuda-12-0-0-download-archive)
|
|
338
|
+
Choose the appropriate version based on your Visual Studio installation.
|
|
339
|
+
4. **vcpkg**
|
|
340
|
+
- To install `vcpkg`, follow these steps:
|
|
341
|
+
1. **Open a command prompt (CMD) or PowerShell window**.
|
|
342
|
+
2. **Navigate to parent directory to install** `vcpkg`:
|
|
343
|
+
```cmd
|
|
344
|
+
cd ../
|
|
345
|
+
```
|
|
346
|
+
3. **Clone the** `vcpkg` **repository**:
|
|
347
|
+
```cmd
|
|
348
|
+
git clone https://github.com/microsoft/vcpkg.git
|
|
349
|
+
```
|
|
350
|
+
4. **Navigate to the** `vcpkg` **directory**:
|
|
351
|
+
```cmd
|
|
352
|
+
cd vcpkg
|
|
353
|
+
git checkout git checkout 2026.02.27
|
|
354
|
+
```
|
|
355
|
+
If you're using **Visual Studio 2022**, you can use the latest version of vcpkg: `git checkout 2026.02.27`
|
|
356
|
+
The version `2024.10.21` is required only for compatibility with **Visual Studio 2019**.
|
|
357
|
+
|
|
358
|
+
5. **Run the bootstrap script to build the** `vcpkg` **executable**:
|
|
359
|
+
```cmd
|
|
360
|
+
bootstrap-vcpkg.bat
|
|
361
|
+
```
|
|
362
|
+
6. **Integrate** `vcpkg` **with Visual Studio (requires Administrator access)**:
|
|
363
|
+
```cmd
|
|
364
|
+
vcpkg integrate install
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
[Learn more about](https://github.com/Microsoft/vcpkg) `vcpkg`.
|
|
368
|
+
|
|
369
|
+
#### Building
|
|
370
|
+
The following steps will require approximately 40 GB of disk space.
|
|
371
|
+
|
|
372
|
+
1. **Fetch the Submodules**:
|
|
373
|
+
```cmd
|
|
374
|
+
cd ../3mesh-sdk
|
|
375
|
+
git submodule update --init
|
|
376
|
+
```
|
|
377
|
+
2. (Optional) **Speed Up with AWS CLI**
|
|
378
|
+
- Optionally, [install AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) to speed up the process before using the Installation Script. Restart your terminal after installation.
|
|
379
|
+
3. **Install Third-Party Dependencies**
|
|
380
|
+
- Execute the following commands to run the third-party installation script:
|
|
381
|
+
```cmd
|
|
382
|
+
cd ../vcpkg
|
|
383
|
+
..\3mesh-sdk\thirdparty\install.bat
|
|
384
|
+
```
|
|
385
|
+
- This script automates the installation of necessary third-party dependencies.
|
|
386
|
+
4. **Build and Run Visual Studio Solution**
|
|
387
|
+
- Open `3mesh-sdk/source/MeshSDK.sln` in Visual Studio.
|
|
388
|
+
- Build the solution and run the application.
|
|
389
|
+
5. **Build and Run CMake Project**
|
|
390
|
+
- Make sure you have the "C++ CMake tools for Windows" component installed.
|
|
391
|
+
- Open `3mesh-sdk/CMakeLists.txt` in Visual Studio (File - Open - CMake).
|
|
392
|
+
- Build the project and run the application.
|
|
393
|
+
|
|
394
|
+
## Generate Bindings
|
|
395
|
+
### JavaScript/TypeScript
|
|
396
|
+
[Emscripten](https://emscripten.org/docs/getting_started/downloads.html) is required to compile C++ code into WebAssembly. You can install Emscripten by following the steps below.
|
|
397
|
+
|
|
398
|
+
```sh
|
|
399
|
+
# Fetch the latest version of the emsdk (not needed the first time you clone)
|
|
400
|
+
git pull
|
|
401
|
+
|
|
402
|
+
# Download and install the latest SDK tools.
|
|
403
|
+
# ./emsdk install latest # ⚠️ NOT supported
|
|
404
|
+
./emsdk install 4.0.10
|
|
405
|
+
|
|
406
|
+
# Make the "latest" SDK "active" for the current user. (writes .emscripten file)
|
|
407
|
+
# ./emsdk activate latest # ⚠️ NOT supported
|
|
408
|
+
./emsdk activate 4.0.10
|
|
409
|
+
|
|
410
|
+
# Activate PATH and other environment variables in the current terminal
|
|
411
|
+
source ./emsdk_env.sh
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
Only web and worker environments (i.e. web browsers) are officially supported.
|
|
415
|
+
|
|
416
|
+
```sh
|
|
417
|
+
git submodule update --init
|
|
418
|
+
|
|
419
|
+
./scripts/build_thirdparty.sh
|
|
420
|
+
./scripts/build_source.sh
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### Python
|
|
424
|
+
Build `3meshsdk` from source code, see more details in [README-generating](./scripts/3mbind/README-generating.md).
|
|
425
|
+
|
|
426
|
+
```sh
|
|
427
|
+
curl -Ls https://astral.sh/uv/install.sh | sh
|
|
428
|
+
source ~/.bashrc
|
|
429
|
+
# At project's root dir
|
|
430
|
+
sudo ${PWD}/scripts/3mbind/install_deps_ubuntu.sh
|
|
431
|
+
|
|
432
|
+
./scripts/3mbind/install_3mbind_ubuntu.sh
|
|
433
|
+
make -f ${PWD}/scripts/3mbind/generate.mk -B --trace ENABLE_CUDA=1
|
|
434
|
+
# **`shims` — add support for multiple Python versions.**
|
|
435
|
+
make shims -f ${PWD}/scripts/3mbind/generate.mk -B --trace ENABLE_CUDA=1 PYTHON_VERSIONS=3.12
|
|
436
|
+
|
|
437
|
+
# Create and fix wheel
|
|
438
|
+
python -m venv ./wheel_venv
|
|
439
|
+
source ./wheel_venv/bin/activate
|
|
440
|
+
python -m pip install patchelf
|
|
441
|
+
# This will generate the `3meshsdk` wheel to `./scripts/wheel/meshsdk`
|
|
442
|
+
python ${PWD}/scripts/wheel/build_wheel.py --version 'v1.0.1'
|
|
443
|
+
# Install the built `3meshsdk`
|
|
444
|
+
cd ${PWD}/scripts/wheel/meshsdk
|
|
445
|
+
pip install .
|
|
446
|
+
# Check the installed `3meshsdk`
|
|
447
|
+
pip list | grep 3mesh
|
|
448
|
+
|
|
449
|
+
# Publish
|
|
450
|
+
pip install --upgrade build twine
|
|
451
|
+
python -m build
|
|
452
|
+
|
|
453
|
+
'''
|
|
454
|
+
[distutils]
|
|
455
|
+
index-servers =
|
|
456
|
+
pypi
|
|
457
|
+
testpypi
|
|
458
|
+
|
|
459
|
+
[pypi]
|
|
460
|
+
username = __token__
|
|
461
|
+
password = <u-token>
|
|
462
|
+
[testpypi]
|
|
463
|
+
username = __token__
|
|
464
|
+
password = <u-token>
|
|
465
|
+
'''
|
|
466
|
+
vi ~/.pyirc
|
|
467
|
+
|
|
468
|
+
# test
|
|
469
|
+
#pip install -i https://test.pypi.org/simple 3meshsdk
|
|
470
|
+
twine upload --repository testpypi dist/* --verbose
|
|
471
|
+
# official
|
|
472
|
+
#pip install 3meshsdk
|
|
473
|
+
twine upload dist/* --verbose
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
> Run the generator on different platforms
|
|
477
|
+
|
|
478
|
+
* **On Windows:** `scripts\3mbind\generate_win.bat -B --trace` from the VS developer command prompt (use the `x64 Native` one!).
|
|
479
|
+
|
|
480
|
+
When generating the Python bindings, the current directory matters, as this will look for 3MeshSDK in `./source/x64/Release`. Add `VS_MODE=Debug` at the end if you built 3MeshSDK in debug mode.
|
|
481
|
+
|
|
482
|
+
The `generate_win.bat` file merely calls `generate.mk` (see below) inside of MSYS2 shell. You can use that directly if you want.
|
|
483
|
+
|
|
484
|
+
* **On Linux:** `make -f scripts/3mbind/generate.mk -B --trace`
|
|
485
|
+
|
|
486
|
+
This will look for 3MeshSDK in `./build/Release/bin`. Pass `MESHSDK_SHLIB_DIR=path/to/bin` for a different directory.
|
|
487
|
+
|
|
488
|
+
* **On MacOS:** Same as on Linux, but before running the command you must adjust the PATH. On Arm Macs: `export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"`, and on x86 Macs `/usr/local/...` instead of `/opt/homebrew/...`. This adds the version of Make installed in Homebrew to PATH, because the default one is outdated. Confirm the version with `make --version`, it must be 4.x or newer.
|
|
489
|
+
|
|
490
|
+
## Installation
|
|
491
|
+
### JavaScript/TypeScript
|
|
492
|
+
Install with npm or yarn:
|
|
493
|
+
|
|
494
|
+
```sh
|
|
495
|
+
npm install 3meshsdk
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
### Python
|
|
499
|
+
For Python, simply install via pip:
|
|
500
|
+
|
|
501
|
+
```sh
|
|
502
|
+
pip install 3meshsdk
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
## **License**
|
|
506
|
+
Here, you can access our Non-Commercial Free License with a Commercial License Requirement. Also, see [license](./LICENSE).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
setup.cfg
|
|
5
|
+
3mesh.egg-info/PKG-INFO
|
|
6
|
+
3mesh.egg-info/SOURCES.txt
|
|
7
|
+
3mesh.egg-info/dependency_links.txt
|
|
8
|
+
3mesh.egg-info/requires.txt
|
|
9
|
+
3mesh.egg-info/top_level.txt
|
|
10
|
+
meshsdk/MRDarkTheme.json
|
|
11
|
+
meshsdk/MRLightTheme.json
|
|
12
|
+
meshsdk/NotoSans-Regular.ttf
|
|
13
|
+
meshsdk/NotoSans-SemiBold.ttf
|
|
14
|
+
meshsdk/NotoSansMono-Regular.ttf
|
|
15
|
+
meshsdk/NotoSansSC-Regular.otf
|
|
16
|
+
meshsdk/__init__.py
|
|
17
|
+
meshsdk/fa-solid-900.ttf
|
|
18
|
+
meshsdk/libpybind11nonlimitedapi_meshsdk_3.10.so
|
|
19
|
+
meshsdk/libpybind11nonlimitedapi_meshsdk_3.12.so
|
|
20
|
+
meshsdk/trimcudapy.pyi
|
|
21
|
+
meshsdk/trimcudapy.so
|
|
22
|
+
meshsdk/trimnumpy.pyi
|
|
23
|
+
meshsdk/trimnumpy.so
|
|
24
|
+
meshsdk/trimpy.pyi
|
|
25
|
+
meshsdk/trimpy.so
|
|
26
|
+
meshsdk/trimviewerpy.pyi
|
|
27
|
+
meshsdk/trimviewerpy.so
|
|
28
|
+
meshsdk/resource/independent_icons/X1/Plane Import.png
|
|
29
|
+
meshsdk/resource/independent_icons/X1/Plane XY.png
|
|
30
|
+
meshsdk/resource/independent_icons/X1/Plane XZ.png
|
|
31
|
+
meshsdk/resource/independent_icons/X1/Plane YZ.png
|
|
32
|
+
meshsdk/resource/independent_icons/X1/mouse left.png
|
|
33
|
+
meshsdk/resource/independent_icons/X1/mouse right.png
|
|
34
|
+
meshsdk/resource/independent_icons/X1/mouse scroll.png
|
|
35
|
+
meshsdk/resource/independent_icons/X3/Plane Import.png
|
|
36
|
+
meshsdk/resource/independent_icons/X3/Plane XY.png
|
|
37
|
+
meshsdk/resource/independent_icons/X3/Plane XZ.png
|
|
38
|
+
meshsdk/resource/independent_icons/X3/Plane YZ.png
|
|
39
|
+
meshsdk/resource/independent_icons/X3/mouse left.png
|
|
40
|
+
meshsdk/resource/independent_icons/X3/mouse right.png
|
|
41
|
+
meshsdk/resource/independent_icons/X3/mouse scroll.png
|
|
42
|
+
meshsdk/resource/object_icons/X1/AngleMeasurementObject.png
|
|
43
|
+
meshsdk/resource/object_icons/X1/CircleObject.png
|
|
44
|
+
meshsdk/resource/object_icons/X1/ConeObject.png
|
|
45
|
+
meshsdk/resource/object_icons/X1/CylinderObject.png
|
|
46
|
+
meshsdk/resource/object_icons/X1/DistanceMeasurementObject.png
|
|
47
|
+
meshsdk/resource/object_icons/X1/LineObject.png
|
|
48
|
+
meshsdk/resource/object_icons/X1/Object.png
|
|
49
|
+
meshsdk/resource/object_icons/X1/ObjectDistanceMap.png
|
|
50
|
+
meshsdk/resource/object_icons/X1/ObjectGcode.png
|
|
51
|
+
meshsdk/resource/object_icons/X1/ObjectLabel.png
|
|
52
|
+
meshsdk/resource/object_icons/X1/ObjectLines.png
|
|
53
|
+
meshsdk/resource/object_icons/X1/ObjectMesh.png
|
|
54
|
+
meshsdk/resource/object_icons/X1/ObjectPoints.png
|
|
55
|
+
meshsdk/resource/object_icons/X1/ObjectVoxels.png
|
|
56
|
+
meshsdk/resource/object_icons/X1/Object_open.png
|
|
57
|
+
meshsdk/resource/object_icons/X1/PlaneObject.png
|
|
58
|
+
meshsdk/resource/object_icons/X1/PointObject.png
|
|
59
|
+
meshsdk/resource/object_icons/X1/RadiusMeasurementObject.png
|
|
60
|
+
meshsdk/resource/object_icons/X1/SphereObject.png
|
|
61
|
+
meshsdk/resource/object_icons/X3/AngleMeasurementObject.png
|
|
62
|
+
meshsdk/resource/object_icons/X3/CircleObject.png
|
|
63
|
+
meshsdk/resource/object_icons/X3/ConeObject.png
|
|
64
|
+
meshsdk/resource/object_icons/X3/CylinderObject.png
|
|
65
|
+
meshsdk/resource/object_icons/X3/DistanceMeasurementObject.png
|
|
66
|
+
meshsdk/resource/object_icons/X3/LineObject.png
|
|
67
|
+
meshsdk/resource/object_icons/X3/Object.png
|
|
68
|
+
meshsdk/resource/object_icons/X3/ObjectDistanceMap.png
|
|
69
|
+
meshsdk/resource/object_icons/X3/ObjectGcode.png
|
|
70
|
+
meshsdk/resource/object_icons/X3/ObjectLabel.png
|
|
71
|
+
meshsdk/resource/object_icons/X3/ObjectLines.png
|
|
72
|
+
meshsdk/resource/object_icons/X3/ObjectMesh.png
|
|
73
|
+
meshsdk/resource/object_icons/X3/ObjectPoints.png
|
|
74
|
+
meshsdk/resource/object_icons/X3/ObjectVoxels.png
|
|
75
|
+
meshsdk/resource/object_icons/X3/Object_open.png
|
|
76
|
+
meshsdk/resource/object_icons/X3/PlaneObject.png
|
|
77
|
+
meshsdk/resource/object_icons/X3/PointObject.png
|
|
78
|
+
meshsdk/resource/object_icons/X3/RadiusMeasurementObject.png
|
|
79
|
+
meshsdk/resource/object_icons/X3/SphereObject.png
|
|
80
|
+
meshsdk/resource/textures/controller_cube_default.png
|
|
81
|
+
meshsdk/resource/textures/controller_cube_edges.png
|
|
82
|
+
meshsdk/resource/textures/controller_cube_sides.png
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
numpy>=1.19.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
meshsdk
|