MeshMachine update

A minor update to the remeshing component (read about the earlier release here)

This adds the option to also scale the triangle size by distance from the boundaries:

download this new version here:

MeshMachine.gha

(replaces the previous version, no need to change any of the other files)

The 2 new inputs are BoundaryScale and BoundaryDistance

If BoundaryScale is set to 1 (the default) then it has no effect and everything else works as before.

If it is set to (for example) 0.2, then the mesh edges along the boundaries will have a target length of 0.2 multiplied by the Length input value.

The BoundaryDistance input controls the size of the transition zone from this reduced boundary edge length to the standard edge length. For example, in the image below, on the left the BoundaryDistance is 4.0, and on the right 10.0

and here's an example of a circle packing with boundary gradient (generated by using the CPMesh component from Kangaroo on the output of MeshMachine):

  • Christian Schmidts

    been waiting for this! thank you! the half-edge meshes are endless fun :)

  • Tudor Cosmatu

    cool!

  • Daniel González Abalde

    I love you Daniel x)
    Thanks for the new examples.

  • jjsolly

    This is absolutely ace Daniel. Thanks! 

    If there was an option for a "feature request" then i'd love to see the possibility to add additional point attractors to exactly this same function.. so you can have a refined edge and then additional refinement at extra points across the surface. May be pushing my luck here :-)

    I had a play trying with this in the component that we could user-modify and got some distance but am sure you'd do much better! 

    J

  • AB

    amazing! Thank you!

  • Nick Tyrer

    Good feature! This would have made my life alot easier a year ago..

  • ntoniceddu

    this is great daniel thanks! i was trying to do this via script waiting for this feature in mesh machine, what i have done was to use divided points on the boundary courve and then using them as attractors.. but the result was not good as your, obviously, you genius!

  • Khaled ElAshry

    Nice work, I will definitely be using it
  • Mathias Gmachl

    Beautiful idea running CP Mesh as a second stage.

  • Duncan W

    Looking so exciting. I've replaced the new GHA and saw it's a few KB larger. Yet in GH it's not showing the two new inputs you mentioned, and as I see them in NikFromNYC's screenshot.

    Any idea what could be wrong?

  • Daniel Piker

    Duncan - it sounds like it is still loading the old component from somewhere on your computer. Have you restarted Rhino? Also try deleting the old GHA from the downloads folder.
  • Duncan W

    Thanks for the swift response. I had restarted Rhino, yea.

    Searched for *.gha mesh using Win7 search and deleted the instance I indeed found in users/downloads. It's still loading the old component in GH though. I double-checked the GHA in Libraries folder, but it's the 30kb one so should be correct?

    Any other ideas?

  • Duncan W

    Fixed it. I didn't realise both the old and new component could co-exist. When I load the old example files, it's showing the old MeshMachine. But when I select a new one from the toolbar, it's the new one.

  • Daniel Piker

    Duncan - ah yes, forgot to mention - I included a legacy component so that previous definitions will still open, but when dragging a new meshmachine component from the toolbar it will always be the new one

  • Duncan W

    Further question: Is it possible to somehow set a minimum edge length when using mesh machine?

    When I approximate a wavy freeform surface with triangles, I need the CurvatureAdaptivity to work but not go lower than a particular minimum edge length. Even if this means a loss of curvature information. I am unsure how to incorporate this into my definition.

  • Mathias Gmachl

    Daniel, would you be able to also share a non-realtime Mesh Machine that runs through X amount of iterations, so it can be included in a Galapagos/Octopus type setup? Superdanke!!!

  • Daniel Piker

    Hi Mathias,

    I can certainly add that in the next release. In the meantime it is possible though to achieve like this:

  • Daniel Piker

    Duncan - When using the CurvatureAdaptivity with Adapt set to 1.0, the target edge length can theoretically drop as low as L/(3*π). If Adapt is set to 0.5 this lower limit would be halfway between that and L,

    so (L+(L/(3*π)))/2

    and so on

    I guess I could make theoretically make this value an input parameter.

    With all the different features and controls people are asking for though, I'm concerned that if I keeping on adding them to one component it makes it an unwieldy 50 input monster.

    I think it will be better to make several components each geared towards particular usage. For this it would be helpful to hear from all of you about what you are using or want to use it for.

  • Mathias Gmachl

    Thanks, I'll try that now.

  • Dominik Zausinger

    Hy Daniel,

    I am having issues with getting MeshMachine to run.

    I downloaded the previous files "plankton.gha", "Plankton.dll" and the new "meshmachine.gha", put it all in the gh libraries folder.

    Then when starting grasshopper it gives me the following error message:

    Object: MeshMachineComponent2 (level 1)
    {
      Ein Aufrufziel hat einen Ausnahmefehler verursacht.
      TargetInvocationException
    }

    Object: MeshMachineComponent2 (level 2)
    {
      Die Datei oder Assembly "Plankton, Version=0.3.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
      FileNotFoundException
    }

    Object: MeshMachineComponent (level 1)
    {
      Ein Aufrufziel hat einen Ausnahmefehler verursacht.
      TargetInvocationException
    }

    Object: MeshMachineComponent (level 2)
    {
      Die Datei oder Assembly "Plankton, Version=0.3.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
      FileNotFoundException
    }
     Any ideas...?

  • Bradley Bowers

    Hello, 

    What should I do if I have a even more recent version of Kangaroo . . . ? 

    This is the Error I receive: 1. Error (CS1705): Assembly 'GH_Kangaroo, Version=0.0.9.9, Culture=neutral, PublicKeyToken=null' uses 'RhinoCommon, Version=5.1.30000.13, Culture=neutral, PublicKeyToken=552281e97c755530' which has a higher version than referenced assembly 'RhinoCommon, Version=5.1.30000.12, Culture=neutral, PublicKeyToken=552281e97c755530'

  • Daniel Piker

    Bradley - it looks like that error may be caused by not having the latest update of Rhino 5.

    Anyway - the version of MeshMachine above is older than the one included with the latest Kangaroo

  • Bradley Bowers

    . . . that explains why I have 2 Mesh Machine features

  • saraphineshps

    Hi Daniel. Not sure if you'll see this message.

    Is it possible that you can make the mesh machine features (scale triangle size by distance from boundary) in a 3D space?

    Not really a 3D mesh (not possible), but a distribution of points that are densely distributed near the object surface and loosely distributed when away from the boundary, so it can be used for sphere packing or further processing. Thanks.

  • Ben

    Hey Check out this project I worked on for school here

    It was a quick semester project but the Meshmachine was defiantly a very helpful; intuitive and very fun. Kudos Daniel!

    This was one of my first GH projects, any suggestions or pointers would be greatly appreciated.  

  • Daniel Piker

    @Benjamin - Nice! thanks for sharing

  • Timothy Tai

    Hi All,

    Might there be an example of dynamic remshing based on an image (as a map)

    For example, on a b/w image and the mesh density is based on the brightness?

    Thanks a lot!

  • Bathsheba Grossman

    This has been a great tool, thanks for all you do.  And thanks-in-advance for anything you can say on this question: any chance of an interim MeshMachine update that works with current Rhino/Plankton? 

    I can't keep old Plankton around anymore, other things need the new version, and in any case I can't find any combination of MM, Plankton, and current Rhino that now runs. 

    I apologize if this is a sensitive question, or if MM is finished and I'm the last to know.  A more recent post in another thread gave me an impression that there was still a plan to integrate MM further into Kangaroo and/or Grasshopper.  Awesome if so, but right now I'd just like to mesh something....

  • Galiaf Velikiy

  • philip pappas

    hello,

    does this component work in grasshopper 1.0 rhino6? because i does load and it does output a mesh but i cannot get it to work like the example you have here with the polygon reduction following the curvature. am i doing something wrong? i didnt work in 0.97 either. i change the settings but the effect is always a homogenous poylgon reduction. the gh is unblocked also plankton.dll etc.

  • Bathsheba Grossman

    This seems to be the last heard of MeshMachine:

    https://www.grasshopper3d.com/forum/topics/re-meshing-mesh-achievin...

    I do see the "mmstatic" version in this thread working in current Rhino 6.  It comes packaged with old Kangaroo, from which we may infer that it still hasn't been updated to work with current Kangaroo.   An example: mmstatic%20example.gh

    It was a brilliant idea, but maybe be careful about depending very much on it, as it was never really finished and it's not clear that it will ever be updated.

  • philip pappas

    no this is not working in rhino 6, i dont even have this component, meshmachine static, i only have mesh machine. Anymway my problem was that meshing from a brep isnt doing much good in terms of quality and performance and i was hoping mesh machine could fix that. at least producing polygons were needed which is something you cannot do otherwise as far as i know