Grasshopper

algorithmic modeling for Rhino

Does anyone know how I can make a proper mesh division from an irregular outline (see image)? I've first tried to make a mesh using a surface which I then converted to a mesh, but the division of this mesh not nice. Since I want to use this mesh for a Kangaroo simulation, the mesh division needs to be proper. 

Hope you can help me out here!

Views: 28588

Attachments:

Replies to This Discussion

Hi Ton

I wrote Weaverbird with this purpose. It contains several subdivision patterns.

Giulio

Hi Giulio,

Thank you for your reply!

I was aware of the Weaverbird package, but I posted this question since I could not find out how to use Weaverbird in order to create a quadrangulate subdivision on the mesh. As I mentioned in my earlier post I am using this mesh to simulate a fabric behavior, that's why I want a quadrangulate subdivision on the mesh. Since an other subdivision means another simulated behavior in Kangaroo. 

In the mean time I tried several approaches to solve the issue, however the edges of the mesh are still ugly.(see the attached files).

Do you have an idea how to solve this issue, or how I could use Weaverbird in order to solve my problem?

Ton

Attachments:

Hi Ton,

Automatically generating a nice all quad mesh of an arbitrary surface is actually a problem with no really easy solution. See this paper (QuadCover - Surface Parameterization using Branched Coverings) for one approach, using the principal curvature field, but as you can see, it is complex stuff.

It becomes a much easier problem if you don't try and make it completely automated, but allow some manual initialization.

If you are going to be relaxing the surface anyway, all you really need to start with is a mesh with the right topology - its geometry is not too important at this point, as that will get taken care of by the relaxation. So I would recommend modelling a very rough, blocky form of your surface with very few mesh faces (but all quads), and then use WeaverBird to subdivide it into more faces, then relax it with Kangaroo, pulling edges to a particular boundary curve if necessary.

http://www.grasshopper3d.com/xn/detail/2985220:Comment:187943

http://www.grasshopper3d.com/forum/topics/converting-tri-poly-mesh-...

Hi Daniel,

Thanks for your fast reply. This comment certainly helps me a lot. The only thing I was still asking myself, how can you pull an edge curve to a certain boundary. I know that there is the option to pull points to a curve, but how to pull a curve is to me unclear.

Hope you could enlighten this part for me a little more.

Thanks!

Ton

To pull the edge of a mesh onto some curve, you need to extract the naked edge vertices of the mesh, and pull those points.

Hi Daniel,

I've tried your method and the results are quite good, however when I want to pull the mesh to a boundary curve, something strange happens when I sort the naked edge points. 

What I do is I extract the naked edges from the mesh, which I then sort (as i saw in your circle pull script) according a unitized x-vector. I also divide the boundary curve in the same amount as there are naked edge vertices. Then I calculate a vector  between each naked edge vertice and a point located at the boundary curve. However when I display the vectors, they are turned in a strange way.

If I look at your circle pull script each vector is nicely pointing towards the "nearest" point on the boundary curve. In the end I get a mesh which appears to be okay! But I was wondering why he sorts the points in my script in this strange way? 

Hopefully you could help me out with this!

Ton

Attachments:

Here's one solution - just sort the points along boundary you are pulling to in the same way you sorted those of the mesh edges.

Of course, pulling a 4 sided shape onto a 5 sided one means you'll never match all the corners. But you could also make some manual decisions about which points to pull where to make at least some of the corners line up

Attachments:

Here's an example of manually choosing where some of the corners go:

Attachments:

Thanks Daniel, you've helped me a lot with all this info!

Hi Daniel, I tried this definition, but it doesn't work.
I don't understand the problem.

Other approach to this problem is to reparameterize mesh... use starling components as here :

http://www.grasshopper3d.com/photo/slexampleremeshing?context=user

description :

http://www.grasshopper3d.com/group/starling/forum/topics/slexamples...

However it will only work with genus 0 geometry...

As you can see you curve(yellow) is converted to bunch of polylines (mesh doesnt like duplicated points as far as i know). Boundary is different cause your mesh is embedded to  square and there is some mismatch (I will correct it probably in next version of starling)

RSS

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service