Grasshopper

algorithmic modeling for Rhino

Non manifold meshes: Blame James (and a Plankton question for Daniel)

Well friends,

A friend of mine (that man James) initiated an interesting thread recently:

http://www.grasshopper3d.com/forum/topics/hoopsnake-iterations-data...

The solution that I've provided has nothing to do with Hoopsnake (not to mention that his problem is very complex although it appears simple - as usual) but that's irrelevant. The solution is solely based on C# code using mesh connectivity data (vertex to vertices, edge to vertices, edge to faces, faces to dogs, dogs to cats blah blah).

But James has wild plans in mind: in fact his puzzle is to deal with non manifold meshes in order to create "trusses-out-of-meshes" so to speak. Or at least meshes reported as non-manifold by Rhino (Mesh.IsManifold(true, out isOriented, out hasBoundary)).

For instance Sandbox (Plan C) fails to extract connectivity data in similar meshes (See test cases 1,2 where the test mesh is a "combo" of open "portions" + some "closed" "sub-meshes" ... if all these make any sense anyway).

So I made a C# that inquires a mesh in every possible way (Plan B). C# keeps working even if the mesh is reported "non-manifold" (odd results, mind).

And after the "intro" ...  we arrive to the scope of this thread:

1. Attempting to do it (halfway: it's just a test) the Plankton way (Plan A):  I need Daniel's inside as regards case1: (by what means can we deal with runaway "loops"?)

2. Has anyone attempted dealing with non manifold meshes? (regardless if it's done with code or GH components or add-on components).

3. Has anyone any suggestion upon dealing with connectivity matters in similar situations?

best, Peter

Views: 1265

Attachments:

Replies to This Discussion

Hi Peter,

Plankton is a half-edge mesh data structure, which is specifically suited to dealing with manifold meshes. Therefore I don't think it is the right tool for this job. When provided with a mesh like this where sometimes more than 2 faces meet at an edge, there is no consistent way to assign the half edge connectivity, and it gives this runaway vertex circulator.

If you are just dealing with lines connecting points, I think it would be better to forget meshes, and just deal with it as a graph (as in graph theory, rather than a graph of a function). Spiderweb, Sandbox and Topologizer all provide various tools for graph connectivity queries.

Hi Daniel,

Had a feeling for that: in fact these ... er ... "graphs"/meshes come from artistic apps the likes of Modo where manifold or not has a very limited meaning.

So in fact, yes it's about "lines-connecting-points" > meaning Plan D is required (or at least Plan B.A if I opt using my C# for the manifold ones).

But I want to keep all that stuff within the C# bound wagon > thus > back to the drawing board.

best, Peter

Daniel,

A final question: appears (based on Plankton "failure") that case1 (james-pingu) is a non manifold mesh as well ...

... but this mesh yields returns true as regards the Rhino Method (IsManifold) used in my C#:

... meaning that the obvious question is: by what means/methods can we check similar cases?

best, Peter

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service