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.
Files changed (83) hide show
  1. 3mesh-1.0.1/3mesh.egg-info/PKG-INFO +506 -0
  2. 3mesh-1.0.1/3mesh.egg-info/SOURCES.txt +82 -0
  3. 3mesh-1.0.1/3mesh.egg-info/dependency_links.txt +1 -0
  4. 3mesh-1.0.1/3mesh.egg-info/requires.txt +1 -0
  5. 3mesh-1.0.1/3mesh.egg-info/top_level.txt +1 -0
  6. 3mesh-1.0.1/LICENSE +148 -0
  7. 3mesh-1.0.1/PKG-INFO +506 -0
  8. 3mesh-1.0.1/README.md +330 -0
  9. 3mesh-1.0.1/meshsdk/MRDarkTheme.json +602 -0
  10. 3mesh-1.0.1/meshsdk/MRLightTheme.json +604 -0
  11. 3mesh-1.0.1/meshsdk/NotoSans-Regular.ttf +0 -0
  12. 3mesh-1.0.1/meshsdk/NotoSans-SemiBold.ttf +0 -0
  13. 3mesh-1.0.1/meshsdk/NotoSansMono-Regular.ttf +0 -0
  14. 3mesh-1.0.1/meshsdk/NotoSansSC-Regular.otf +0 -0
  15. 3mesh-1.0.1/meshsdk/__init__.py +2 -0
  16. 3mesh-1.0.1/meshsdk/fa-solid-900.ttf +0 -0
  17. 3mesh-1.0.1/meshsdk/libpybind11nonlimitedapi_meshsdk_3.10.so +0 -0
  18. 3mesh-1.0.1/meshsdk/libpybind11nonlimitedapi_meshsdk_3.12.so +0 -0
  19. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane Import.png +0 -0
  20. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane XY.png +0 -0
  21. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane XZ.png +0 -0
  22. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/Plane YZ.png +0 -0
  23. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/mouse left.png +0 -0
  24. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/mouse right.png +0 -0
  25. 3mesh-1.0.1/meshsdk/resource/independent_icons/X1/mouse scroll.png +0 -0
  26. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane Import.png +0 -0
  27. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane XY.png +0 -0
  28. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane XZ.png +0 -0
  29. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/Plane YZ.png +0 -0
  30. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/mouse left.png +0 -0
  31. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/mouse right.png +0 -0
  32. 3mesh-1.0.1/meshsdk/resource/independent_icons/X3/mouse scroll.png +0 -0
  33. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/AngleMeasurementObject.png +0 -0
  34. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/CircleObject.png +0 -0
  35. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ConeObject.png +0 -0
  36. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/CylinderObject.png +0 -0
  37. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/DistanceMeasurementObject.png +0 -0
  38. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/LineObject.png +0 -0
  39. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/Object.png +0 -0
  40. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectDistanceMap.png +0 -0
  41. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectGcode.png +0 -0
  42. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectLabel.png +0 -0
  43. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectLines.png +0 -0
  44. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectMesh.png +0 -0
  45. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectPoints.png +0 -0
  46. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/ObjectVoxels.png +0 -0
  47. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/Object_open.png +0 -0
  48. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/PlaneObject.png +0 -0
  49. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/PointObject.png +0 -0
  50. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/RadiusMeasurementObject.png +0 -0
  51. 3mesh-1.0.1/meshsdk/resource/object_icons/X1/SphereObject.png +0 -0
  52. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/AngleMeasurementObject.png +0 -0
  53. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/CircleObject.png +0 -0
  54. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ConeObject.png +0 -0
  55. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/CylinderObject.png +0 -0
  56. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/DistanceMeasurementObject.png +0 -0
  57. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/LineObject.png +0 -0
  58. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/Object.png +0 -0
  59. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectDistanceMap.png +0 -0
  60. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectGcode.png +0 -0
  61. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectLabel.png +0 -0
  62. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectLines.png +0 -0
  63. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectMesh.png +0 -0
  64. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectPoints.png +0 -0
  65. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/ObjectVoxels.png +0 -0
  66. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/Object_open.png +0 -0
  67. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/PlaneObject.png +0 -0
  68. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/PointObject.png +0 -0
  69. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/RadiusMeasurementObject.png +0 -0
  70. 3mesh-1.0.1/meshsdk/resource/object_icons/X3/SphereObject.png +0 -0
  71. 3mesh-1.0.1/meshsdk/resource/textures/controller_cube_default.png +0 -0
  72. 3mesh-1.0.1/meshsdk/resource/textures/controller_cube_edges.png +0 -0
  73. 3mesh-1.0.1/meshsdk/resource/textures/controller_cube_sides.png +0 -0
  74. 3mesh-1.0.1/meshsdk/trimcudapy.pyi +239 -0
  75. 3mesh-1.0.1/meshsdk/trimcudapy.so +0 -0
  76. 3mesh-1.0.1/meshsdk/trimnumpy.pyi +89 -0
  77. 3mesh-1.0.1/meshsdk/trimnumpy.so +0 -0
  78. 3mesh-1.0.1/meshsdk/trimpy.pyi +105735 -0
  79. 3mesh-1.0.1/meshsdk/trimpy.so +0 -0
  80. 3mesh-1.0.1/meshsdk/trimviewerpy.pyi +596 -0
  81. 3mesh-1.0.1/meshsdk/trimviewerpy.so +0 -0
  82. 3mesh-1.0.1/pyproject.toml +37 -0
  83. 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
+ numpy>=1.19.0
@@ -0,0 +1 @@
1
+ meshsdk