Generate 3D mesh from implicit surface and an input mesh
Project description
Scaffolder
Transform a 3D model from STL/PLY/OFF/OBJ to a porous model with implicit function (e.g., Schwarz P/ Gyroid).
Binary installation
- Download from Github Releases page or
- Install from Anaconda
conda install -c nodtem66 scaffolder
Python supports
pip install PyScaffolder
Blender addon
- Install the
Scaffolder-blender.zip
downloaded from Release - The plugin will appear at
View > Sidebar
orPress N
Screenshots
- Blender plugin with PyScaffolder
- The figure of patterns implemented in this program
- The examples of generated porous scaffold
Dependencies
- libigl - The computational geometry library
- vcglib - The mesh utility library
- sol2 - Lua script integration
- tbb - Threading library
How it works
- Read STL file and finding the boundary box
- Generate the grid and calculate the winding number with STL mesh
- Use winding number to determine the condition for implicit isosurface function
- Generate the isosurface field in the same-size grid
- Perform Dual marching cube to construct the manifold
- Clean up the duplicated vertices or faces, and abandon the group of connected faces having the diameter below the setting
- Export to the target 3D format
FAQ
How can I find the dataset from a study of coffient and isolevel?
The raw dataset is available at Mendeley Data. The program that used to generate that data was released at Github repository. You can also find the interactive visualization at Google Colab
Where is the implicit functions were defined in the C++ sourcecode?
https://github.com/nodtem66/Scaffolder/blob/master/include/implicit_function.h
Can you suggest alternative softwares like this program?
- Rhino (Grasshopper)
- nTopology
- Hyperganic
References
- Minimal surface Blog
- Dual marching cube - dualmc
- Command line parser - cxxopts
- Progress bar - ProgressBar
Citation
Computational method and program for generating a porous scaffold based on implicit surfaces
@article{IAMSAMANG2021106088,
title = {Computational method and program for generating a porous scaffold based on implicit surfaces},
journal = {Computer Methods and Programs in Biomedicine},
volume = {205},
pages = {106088},
year = {2021},
issn = {0169-2607},
doi = {https://doi.org/10.1016/j.cmpb.2021.106088},
url = {https://www.sciencedirect.com/science/article/pii/S0169260721001632},
author = {Jirawat Iamsamang and Phornphop Naiyanetr},
keywords = {Triply periodic minimal surface (TPMS), Implicit surface, Porous scaffold, Pore size, Porosity}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Close
Hashes for PyScaffolder-1.5.2.post2-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12fdb9e4569a1d23a049434e6d98e1b9d098444c6c4e4c16a73961d26b869ece |
|
MD5 | e52a865bba6cb8f75df658cd58c3a9a4 |
|
BLAKE2b-256 | 38fc2ccd6f1a74e5d980d90710379df2a66e4dc1fb9179580cc7b985f0f85c56 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d18df4963b3266ff8797a2166848288edf18f1c3237b0442cd879e016328bb7 |
|
MD5 | 06eb495e2ed72eebe4f152f478dbf3c8 |
|
BLAKE2b-256 | 5bb68b83f638cd388e992721996e47b11ec30346d435be6e18cd4186715d9aa2 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75286fa8f4ef7dbf5f2ee6bc48bf2290b902e8283a81929ff66806f67b09ae27 |
|
MD5 | a17250cbdc81f1690e9c53a229505221 |
|
BLAKE2b-256 | fde4f3c5493c73836d37e72338d3490521fe21ab8d97171ab85e5e168d8e3e05 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e55b73ddbd8c997a317ae4661f84fc1f013bbe0b362fb27693e86da937c1c44 |
|
MD5 | 324b6b02dce58a64b59abace2ffa2035 |
|
BLAKE2b-256 | 64ad98ad4acf1daafb971514963d48fe5b97b8ee72ef9bf16c15c2dcf717150f |
Close
Hashes for PyScaffolder-1.5.2.post2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3176787454557f839785b1e0b5ce9110d9b1455cc49e494c85c85578356f8798 |
|
MD5 | f607502063592d696edffaea635e8c4f |
|
BLAKE2b-256 | 5948218dffaeb4711a1a845bc9e369cff13170d9fe8b7900592722136ad9f0b5 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b24b9a7ed244c9b99124b554182cb362f485909aa3f2ae22763cc405f69b437f |
|
MD5 | bf4c459ef15c2d34f61878f1f0eef4f3 |
|
BLAKE2b-256 | 633246d1b25b8270716df85efec0dbdc88ff4933d23046482792a7e9551e7b68 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5911a59895add955ca873b30ae40433d3b2a93ee65cd13134d8a43e20165c713 |
|
MD5 | 8923255daba588ae7f785e8869d2e78d |
|
BLAKE2b-256 | a027fc63dc179472b9500c8102fc917a1dcf739688d120c5c6ff0020b803865c |
Close
Hashes for PyScaffolder-1.5.2.post2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc85867559061e465cf47cf60ace15ea2c01725f9edecda6d3678788085748bd |
|
MD5 | 8aea5a43d8ce91448a2dd51d65f72015 |
|
BLAKE2b-256 | 3390b206d1df6ddee5866e0766daf6e8de0f431ac35b1d78c45c697f67339b4a |
Close
Hashes for PyScaffolder-1.5.2.post2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f02c24cd7fa99cab436f00b0909e5e70e3cc50c30bb91156d62b88f917fe3a65 |
|
MD5 | d943b54317f54686b52958c9e18cfad3 |
|
BLAKE2b-256 | 58ab7fdf59ef860d69b5735e999b634af1812627c77f3cd1c92bd3938efa82e6 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 299df481f97c4f144ea7cb09dc5d7edf442d97d9f458da4504d85c70cc5bb98c |
|
MD5 | d4d46a5ab97967cef0e2e831b8b72e14 |
|
BLAKE2b-256 | 0d540ba27b47c08abc9ed50cadeaf7a942f00548c1d26ffc707a23a0db28c723 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27700020eff03e1d069780a9f20e7f4fb76e46e1ee8e572912bb5b4437e2506f |
|
MD5 | 452c85e8b0309be8bc97a2e6f7313fc6 |
|
BLAKE2b-256 | 03b7031cb0e6138c5d6bcb4bb9368f255a1131badebb9bfa0eb1bb84a518c4f1 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37033f6502822d4bf5aae89bae7355cb9507926b388af6fe5e217887ac9bcb3a |
|
MD5 | 935b9e9394444a5b05340c5eb8c8eb31 |
|
BLAKE2b-256 | aabbbd68e7389950922d049bc18ebcab72f3e86ae6b5b4e6231caf20df4f14ef |
Close
Hashes for PyScaffolder-1.5.2.post2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed4a661daa0fc2ebdaca98c3edb21dc4ada9f427a6ac0e97bfe2363baeaa8fc9 |
|
MD5 | 1d380dc78390d81e939bbddd56bd2012 |
|
BLAKE2b-256 | d21faa379b382ae50a2787d3a7b5feaf9e6854ec644f91e849d84134a2df62b7 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e518fa46b824ba264226843ab9af7ff97bbc44ad7a69decc82bf147adc4cc373 |
|
MD5 | 71a64c9389bfebb4ecf9a0a6812020ba |
|
BLAKE2b-256 | 035bbc5526838d0b9319588af91c51467811330e86f8410fe499e9557032dfd3 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3ea61493873231c5359a9eba5dbae7f6544103fa11ddb69ca7cec3ad46897db |
|
MD5 | 025e3121ba5fe4a62d7ae1ba845eafcb |
|
BLAKE2b-256 | 74484145f7cd8b053bf5ed24b946ea9bc97f213f6873a068517193b3f0e92955 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b8c48f04dfaa5611eb4754ea8ad4594a1741a38f9636cf2a5cc85e606f889fb |
|
MD5 | fda0ec7f7b622f753ae646fbf2bee21c |
|
BLAKE2b-256 | a8cd7f3149e4d8322ec242b60a36aa249116e6c9c7e6faa38694cd8944f744cb |
Close
Hashes for PyScaffolder-1.5.2.post2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9976bd7fabca95b6effe7766d3004e02a7755c18b3f8b0739a0e634df6800dd0 |
|
MD5 | 97a6cca3db1d29ccf78626b9ea12405d |
|
BLAKE2b-256 | db769de3792b739a755ff94c7376d90ec436cec6cf7e0955ef998bfbdf859b53 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a35c7f60385ce9a71a236c2364f2393ea0de35b5772b20cdde736e59d4f8b17d |
|
MD5 | aa24b142ee8ff285cf5e9fa926a813a6 |
|
BLAKE2b-256 | 7ae7f238ea23cee05102ed3a9f4012a84c3563f8bf3e80eb4d2b83236e8f2918 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd071fa3c0a4ffcee6dc46f6887f67dddc5c76d714e25dfa6d87767bc3ae300a |
|
MD5 | 3f44f1a7602a7c5f29a52aadad171904 |
|
BLAKE2b-256 | d218ef3885b895745da5ac70be64bfa2fc691b4de51084091057371abcade8bd |
Close
Hashes for PyScaffolder-1.5.2.post2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 253d55000b6040216da73ee55c1c3b9c4deaabccaf4aedb1fcc64244383a837c |
|
MD5 | 611f9003a9a01c34cce541015bd84a1d |
|
BLAKE2b-256 | 722c8470652d4642701f207855da02316025f4de13d85872e06a4e8f93441471 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0baa5bb50051764b2c531d1cb37c005f6410a98ee8ce40a894ee94fa750fabb0 |
|
MD5 | 7eb0bc9f723c39f580b23f22c170fafd |
|
BLAKE2b-256 | 7a543f9468a49b445f98e6290d21b64cf6b074e632df0e7fac887893f75cc394 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 735d566faa80a3a2daa352ae830740bb98c3d5a2ef7eea507f141eb5e815b228 |
|
MD5 | aabfec39f6810afd6c89a2b67b5ca521 |
|
BLAKE2b-256 | 5e1a5bd1c440fe11a6b0ee7c92bb5a82ad6bc0072169d81e4fa2f1d4e61cddb4 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 665a8e2fc67bd5f4e79d4d16a3132db9222e9de3a98ee683204b1f4d448c0a19 |
|
MD5 | 50fdc6e42ae5f9652a7a7758f3159209 |
|
BLAKE2b-256 | e3d565150a050c061d7ef673a3b2b7a17b7a6e92a4e639be5ed0fe4cf2759b09 |
Close
Hashes for PyScaffolder-1.5.2.post2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b83e23b4279a068eb276ad1aebff47e2d68d05a5c2c867f7ddf06b8fe884002 |
|
MD5 | 141076d301c471b6eb7db32bfa7475a9 |
|
BLAKE2b-256 | f6369098df0ae7688c5d3e5720ef76fb69b4d9f3c90ce9b71df30e83fb9eb967 |