GithubHelp home page GithubHelp logo

xarthurx / ig-mesh Goto Github PK

View Code? Open in Web Editor NEW
36.0 0.0 5.0 36.5 MB

An one-stop solution for mesh processing in Grasshopper (for Rhino).

License: GNU General Public License v3.0

C# 77.68% C++ 18.16% C 3.32% PowerShell 0.83%
mesh-processing plugin grasshopper-plugin

ig-mesh's Introduction

IG-Mesh

A mesh processing library for Grasshopper & Rhino

IG-Mesh (standing for "I Get a Mesh..." or "Igl-Grasshopper Mesh") is a grasshopper plugin for both low-level and advanced mesh processing.

The library features tools for extracting both low-level information (e.g. vertex, edge, face relationship) and high-level properties (e.g. isolines, quad-planarization) that many mesh processing plugins do not provide.

IG-Mesh is developed for the general architecture, design, and fabrication community, hoping to fill the gap of mesh operations in any design-to-fabrication pipelines. The goal is to resolve the long-lasting pain of interactive mesh processing on the Rhino & Grasshopper platform.

Components Overview

Showcase

demo.gif

Highlighted Components

universal random points (blue noise):

Universal Random Distribution

More (Click to expand!)...

fast geodesic distance:

Heat Geodesics

mesh isoline:

Mesh Isoline

quad-mesh planarization:

Quad Planarization

ALPHA-phase and Use case collection

This library is currently under the alpha-phase for initial public test. To further improve it, your contribution is needed.

Please submit an issue and describe what your mesh processing task requires and what type of functions are missing.

I will add the corresponding functions to the library after evaluation, ASAP.

Installation

Install with PackageManager (Rhino 7+)

  1. Open Rhino and run command PackageManager.
  2. Search for "IG-Mesh".
  3. Install the plugin and restart Rhino.

Food4Rhino

The Project Page on Food4Rhino also holds major release versions of this library.

Pre-compiled release

Pre-compiled releases are available on the GitHub repo.

  1. Download the .zip file from the latest release.
  2. Unzip the .zip file and put the folder into you Grasshopper Component Folder.
  3. Restart Rhino and Grasshopper.

Releases with minor updates will only be published as pre-compiled releases and be hosted on github.

Planned Feature

TODO

Below are the current planned features to be added in the next release:

  • planarization using Shape-Up (done in v0.2)
  • Fast geodesic distance based on the "Heat-kernel" method (done in v0.2)
  • Half-Edge structure

Future Plan (Non-Goal TODO)

Below is an incomplete list of functions that IG-Mesh plans to provide. The list is constantly adjusted based on feedback:

  • edge-related functions for vector fields operation
  • Various approaches for unrolling mesh (parametrization)
  • FEM-related functions (need evaluation on speed and computational efficiency)
  • voxel (tet-based) processing functionality

Contribution

You need Visual Studio 2019 (2022 is not supported by McNeel) and the .NET framework to compile the project.

Dependence

openNURBS

  1. Install the official Rhino SDK.
  2. Build the iglCpp project -- if no error occurs, the SDK is installed successfully.

libigl

  1. Download the libigl library to your local desk.
  2. Add the include dir in the Property Page of igmCpp.

Eigen

Both IG-Mesh and libigl requires Eigen3. The vcpkg approach is recommended, though you can also manually link the library in the Solution Property Page.

nuget

In the NuGet package manager of Visual Studio, you should install the following packages for the solution:

  • System.Collections
  • System.Runtime
  • Grasshopper
  • RhinoCommon

Build

You should now be able to build the whole solution and generate the .gha and .dll files.

Acknowledgement and License

Many of the base functions are converted from the geometry processing library libigl, and ported into C# environment through the PInvoke methods and openNURBS.

The author would like to pay his deepest gratitude to the developers for this library and the responsive Q&A during the past years1.

The library is released under the GPL licence.


Credit & Citation

Author: Zhao Ma

If IG-Mesh contributes to an academic publication, please cite it as:

@software{ig-mesh,
  title = {IG-Mesh},
  author = {Zhao Ma},
  url = {https://github.com/xarthurx/IG-Mesh},
  doi = {10.5281/zenodo.6499203},
  version = {0.2.8}
  year = {2022}
}

You can also find the reference infomation on Zenodo.org.

Footnotes

  1. The name of this library is also partially inspired by the libigl library.

ig-mesh's People

Contributors

xarthurx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ig-mesh's Issues

igmCppPort.dll issue

Describe the bug

unable to use IGmesh components downloaded from package manager because of this error:

  1. Solution exception:igmCppPort.dll assembly: type: member:(null)

Tried on both Windows and Mac M1 devices with the same error.

To Reproduce
Using the Examples file provided, all components were throwing this error.

steps taken so far:

unblocked all components (.dll and gha)
downloaded from food4rhino and package manager
tried with files in package folder and components folder on both dell and mac

Expected behavior
working?

Screenshots and Grasshopper links (if possible)

none

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.