Display large amount of meshes that are totally the same in shape through grasshopper component



I would like to ask what is the proper way of displaying large amount of elements via grasshopper component?

I have a collection of objects that are totally the same (not necessary boxes) but an example I did is this:

In the Solve instance each iteration I declare mesh that is global to the component:

previewMesh = new Mesh();

then I loop through a for loop and append mesh boxes to previewMesh

foreach(Rigid body in solver.Bodies){

previewMesh.Append(Mesh.CreateFromBox(b, 1, 1, 1));


And then display it through custom previews:

    public override void DrawViewportWires(IGH_PreviewArgs args) {
        args.Display.DrawMeshWires(previewMesh, System.Drawing.Color.Black);

    public override void DrawViewportMeshes(IGH_PreviewArgs args) {
        args.Display.DrawMeshShaded(previewMesh, m);

Since this is the same geometry I do not think this is the best way to create one large mesh out of many small meshes. What would be the most efficient way regarding display?

(David Rutten) #2

You must store the transform per mesh, then push the transform to the display pipeline prior to drawing each individual mesh, then pop the transform again afterwards. I can go into more detail after dinner.

(David Rutten) #3

The basic idea is this:

args.Display.DrawMeshShaded(_mesh, mat);

pushpop.gh (7.5 KB)


Thank you, I did not know about this push and pop tranformations:)