Introduction: Grasshopper - Parametric Wrist Brace - Sport & Impact Protection

This is my 'at home' project to experiment with the design and fabrication of custom personal impact protection equipment for the wrist and hand. This project aims to create a parametric design system solely using Grasshopper, into which a user can input hand scans and produces a 3D printable wrist brace. I want to explore how is best to deal with 3D meshes whilst creating a strong but lightweight design, and also investigate designs for the best way to print that also allows user to take on and off.

These are the simplified stages of this iterative design process:

  • Simple Test Brace
  • Hand Canvas
  • Smoothing Hand Canvas
  • Removing Small Circles
  • Boundary Curve Modifications
  • Thumb Hole
  • Back Cutout
  • Solid Palm Pad
  • Voronoi
  • Leveling Base
  • Cutting the Back Off
  • Strap Cut-outs
  • Bake & Boolean Union
  • Printing

Supplies

Update: For all those reaching out to me, I am happy to supply my final Grasshopper file/files for guidance purposes. Please send me an email and I will let you know what plugins are required.

Note: The files are relatively slow on a laptop. I am in the process of updating the steps taken with simplified Grasshopper flows for efficiency.

Step 1: Research & Motivation

I have snowboarded all my life and suffered from multiple wrist injuries and fractures, and worn/purchased expensive and uncomfortable wrist braces. I believe the scope of digital fabrication and 3D printing has the potential to improve the overall user experience of the conventional wrist brace for any sport/activity by making them more comfortable, lightweight and cheaper.

Step 2: Simple Test Brace 1

Before I create my own parametric wrist brace in grasshopper, I decided to do a simple test run, create the most simple brace possible, print it out and then see what I can learn from the results before I begin the final product.

For this first experimentation attempt to create the most simple wrist brace possible I found a generic grasshopper file online that creates the outline curves seen above. I then used a FitLoft to turn those curves into a hand/wrist shape I can use as a canvas for developing the brace.

Step 3: Simple Test Brace 2 - Voronoi

I then used a brep to Voronoi tool block from online to create a simple 3D geometry with a Voronoi pattern from a surface. I used Voronoi here as an experiment so that I could see if this is the type of design I would like to use and whether it has appropriate properties (such as strength) for a real brace.

Step 4: Simple Test Brace 3 - Thumb Hole

In order to create a hole in the brace for my thumb to come out from, I started by creating a cylinder and capped it. The size of the cylinder was made bigger than that of my thumb to allow space for it,

Step 5: Simple Test Brace 4 - Cutout

I cut the hole directly out of the Voronoi by finding the difference between the 2 geometries.

Step 6: Simple Test Brace 5 - Analytics

There were a few obvious problems with this very rudimentary first attempt at a brace. Firstly, there were clearly areas that had geometries that are far too thin for both printing and being a strong reinforcement. Secondly, where I had cut out the hole for the thumb, the areas were jagged and sharp. In the future, I should cut the thumb hole from the surface before adding the 3D Voronoi.

The last thing I found here is that working with meshes was not optimal. I should try and keep my cast as a brep/polysurface as rhino/grasshopper is not optimised for meshes and this mesh was incredible slow on my laptop.

Step 7: Simple Test Brace 6 - Printing

For this first time printing, I cut the back off the brace for better analytics of the brace once printed, such as being able to look inside and see where it fits well and badly

Step 8: Simple Test Brace 7 - Printing 2

During my peer review meeting, Alex raised the point that printing the brace may have some associated challenges. I had planned to print the brace vertically as seen above, however, I wanted to check if the brace could be printed in this orientation and to determine what other considerations and challenges may arise.

Step 9: Simple Test Brace 8

Step 10: Hand Canvas 1 - Importing Hand Scan

I am initially starting with 3D scan my friend recently took of his left hand. I imported this into Rhino as a .STL, and then into Grasshopper using a mesh block.

We compared hands and have very similar sized hands so this scan should work initially until I can get access to a 3D scanner to take a more accurate STL scan of my own hand.

Step 11: Hand Canvas 2 - Boundary Curves

I now need to trim the hand to make up the basis of a blank canvas that I will use to model the brace around. To do this is firstly removed the fingers as I do not want the brace to cover these. I drew lines in XZ plane with the goal of extruding them to cut off parts of the hand I don't want to work with in the future.

Step 12: Hand Canvas 3

I extruded this curves in the Y direction to intersect the hand model scan.

Step 13: Hand Canvas 4

Using the MeshSplit function in grasshopper I was able to separate the hand into different parts. The fingers (index 0) and the palm (index 1), the part which I want to work with).

Step 14: Hand Canvas 5

I offset the whole mesh by 0.65. This value will be changed in the future, but this is the number that will control how much space or how tight the user wants the brace.

Step 15: Smoothing Hand Canvas 1

Here, my next concern was to move away from using a mesh. I don't want to work with meshes whilst doing the parametric manipulation. I want it to be a poly surface as I found in 'Simple Brace 6 - Analysis' that a mesh is harder to work with and was slowing down my computer. Hence I used the Mesh 2 PolySurface block, and you can see the results above.

I firstly see that the output polysurfaces need to be smoothed. Similarly, from looking at my simple hand brace in 'Simple Brace 6 - Analysis' I see that the jagged edges I used in the hand canvas created problems with sharp edges and corners that are not ergonomic and are difficult to print. In order to make a smooth canvas for an effective and ergonomic brace, I need to turn this canvas into a smooth surface. Based on my research, I found an effective method of doing this by making up the canvas as a sequence of circles. It starts by converting my mesh from the previous step to a surface in order to make modifications. I used the Mesh2PolySurface block.

Step 16: Smoothing Hand Canvas 2

I found a some grasshopper examples of making up a shape of circles by projecting an equally spaced sequence of lines onto the model. I started by creating this sequence between the original boundary curves for the wrist and fingers. In grasshopper I then project these lines onto the polysurface.

Step 17: Smoothing Hand Canvas 3

Taking in points of intersection between the hand Canvas surface and the projected curves, you can see the result above. These open curves need to be closed in order to form the smooth sequence of circular closed curves I desire.

Step 18: Smoothing Hand Canvas 4

I 'closed' the curves using a Close Curve block. This has the option to include a bulge. This is going to be a key variable for the design of the brace as it determines how much of the thumb area the brace will cover. Since this area is a key area to protect it would be good for the brace to extend over the palm area at the base of the thumb.

Step 19: Smoothing Hand Canvas 5

I realised that during the 'Hand Canvas 6' stage, the top and bottom edges of the mesh were not turned into curves since the Tween Two Curve doesn't allow me to include these bounding curves.

Step 20: Smoothing Hand Canvas 6

When increasing the 'bulge' in order to cover the palm, I noticed some associated issues. There is this problem seen here with a tiny circle forming on the bulge. This will cause complications when lofting these circles into a smooth brace.

Step 21: Removing Small Circles 1

I attempted to use the 'Divide Curve' and then Interpolate the result to try and remove the small circle above the thumb. As seen above, this did not work. However, I liked the resulting interpolated result as it gave a smoother wider fitting canvas for the palm of the hand which I think could improve comfort in the future brace.

Step 22: Removing Small Circles 2

I had the idea to take the average point for each circle on individual z-axis levels and compare this to the far left point on each circle. Since the average point for the tiny circle is less (in the x-direction), it can be singled out and removed.

Step 23: Removing Small Circles 3

In order to find the most left point of each circle in the sequence, I started by drawing a line that hits the most left point (smallest point on the x-axis) for each circle.

Step 24: Removing Small Circles 4

By extruding this into the x-direction, so that it cuts the circles, I identified the key points on each circle for comparison.

Step 25: Removing Small Circles 5

By dividing the curves into 50 points, I used the Average function to find the 3D central location of each circle.

Step 26: Removing Small Circles 6

By deconstructing both the sequence of average points and the far left points to their x-components, I compared their x locations using the LargerThan block.

Step 27: Removing Small Circles 7

I then sorted the points greater than (that I want to keep), and use this register to remove the small circle that wasn't larger.

Step 28: Boundary Curve Modifications

After lofting the curves from the previous step I realise that there were some unpredictable overhangs that would make the design both difficult to print and uncomfortable to wear. Hence I went back and edited both the thumb bulge and the original boundary curves. The result is a much more smooth flowing loft.

I started using the shape of the boundary curve to produce the amount of thumb pad included in the hand canvas rather than the bulge. This gives me more flexibility to increase the lower portion of the thumb at the base of the hand, and remove the area above the thumb so that it has maximum mobility whilst being protected.

Step 29: Thumb Hole 1

I wanted to create the thumb hole in the hand canvas, before creating the brace and using the voronoi. Previously in the 'Simple Brace 4 - Cutout' stage above, cutting the hole in the Voronoi pattern led to jagged and sharp edges. Using a similar technique as used previously for cutting the lofted surface, I firstly drew a curve in Rhino on the x-axis which would intersect the surface in a way that it would cut out a good thumb hole. I extruded this curve into the y-direction to slice a good thumb hole.

Step 30: Thumb Hole 2

By splitting the surface using this extruded panel I was left with two pieces. Only the large piece (above in green) is needed to create the brace. I edited the original thumb curve to preference, in order to cut a thumb hole that looked good.

Step 31: Thumb Hole 3

This hand canvas is done and represents the template shape to build the brace around. I will now look into creating a one-piece design for the brace.

Step 32: Back Cutout 1

I wanted to create a back cut-out, which would leave the back of the brace open. From my previous print of the simple brace with its back cut off, I learned that this feature would allow the user to put the brace on and off with more ease. The back of the wrist does not need much protection. Velcro straps will go over this empty space to hold the brace on the user's hand.

In order to create the back cut-out, I used the similar method as above with the thumb cut-out. I drew a slicing curve in the Y plane that would nicely intersect the back of the canvas.

Step 33: Back Cutout 2

I extrude the curve in the X direction to intersect the canvas.

Step 34: Back Cutout 3

I split the surface using the extruded curve leaving the canvas with the back cut off. I edited the back curve to create a good looking cut out on the back of the canvas.

Step 35: Solid Palm Pad 1

My vision for this brace is to have a solid (rigid) pad which extends from the front of the wrist across the palm of the hand. This is the area that requires the most protection and rigidity in the event of a fall. Around this brace the supporting structure will be less rigid and will be more conservative with weight and comfortability.

In order to create a solid palm pad I decided to split the hand canvas into 2 parts. Above you can see I drew a curve on the top view of the canvas.

Step 36: Solid Palm Pad 2

By extruding this curve down (and editing the shape and position of the curve) I optimised the shape of the pad by looking at the area on each side of the extruded curve.

Step 37: Solid Palm Pad 3

Above you can see the palm pad that I settled on and cut-out from the hand canvas.

Step 38: Solid Palm Pad 4

Initially, here, I extrude this cutout in the Y direction. This gives the solid geometry that once printed will sit against he users palm for protection.

Step 39: Voronoi 1

Following on from the palm pad above, it is time to create the supporting structure that will surround the hand and hold the rig palm pad in place. For this area, I am once again trying to use Voronoi since this gives a good balance for strength and rigidity whilst being light weight, comfortable, and aesthetically pleasing.

Step 40: Voronoi 2

This green area to be turned into Voronoi whilst the front palm pad remains solid.

Step 41: Voronoi 3

There are many tutorials on how to turn a surface (like the green one seen in the previous stage) into a Voronoi geometry. Here I used the PopGeo function to populate the geometry with random spaced points. Using the Grasshopper Voronoi and PLine tools, I was able to create the Voronoi mesh seen above.

Step 42: Voronoi 4

using the weaverbird (wb) toolkit I was able to join up the Voronoi mesh can convert it into a brep.

Step 43: Voronoi 5

Step 44: Voronoi 6

I immediately notice a few problems with this stage of the Voronoi. Firstly, there were obviously parts of the brep that were too thin. Not only would they cause difficulties when printing, they may also have a negative impact on the structural integrity of the brace. By adding the front palm pad back in, I aimed to check if this might help correct/reinforce these thin areas.

Step 45: Voronoi 7

Currently, the rigid palm pad is extruded in the Y direction as seen in stage: 'Solid Palm Pad 4'. However, I realised that this wouldn't make the pad flush with the Voronoi since this is extruded in the normal direction to the surface.

Step 46: Solid Palm Pad 5

I instead, aimed to edit the previous extrusion for the solid palm pad by extruding it in the direction normal to its surface, rather than in the Y direction. This gave a better fit but still was no connecting well to the Voronoi.

Step 47: Voronoi 8

This Voronoi design seen in the previous stage, does not match my vision for this brace. I was hoping to get an extruded surface with holes cut-out as seen above, rather than this smooth tree-like formation. Also, as seen in the previous step, the palm pad is still not flush with the exterior Voronoi structure. I think a more square extrusion design will improve this. The current smooth branches do not touch the pad at all sides, therefor both boolean union and printing are unlikely to be successful.

Step 48: Voronoi 9

I researched a better way to create the Voronoi I desired, which involves projecting my wrist shaped surface (the hand canvas) onto the flat XY plane before adding the pattern.

Step 49: Voronoi 10

Using the PopGeo block once again I populate the projected surface with points and use the Voronoi block to create a series of holes.

Step 50: Voronoi 11

Following a method used in many online Voronoi tutorials I created a surface using the previous Voronoi curves.

Step 51: Voronoi 12

I extrude the surface in the Y direction whilst also extruding the hole areas so they are not. present in the final brep.

Step 52: Voronoi 13

I used the SurfaceMorph block to correct the protected surface to fit around the hand canvas once again, now including the Voronoi holes.

Step 53: Voronoi 14

This gives the final Voronoi structure for the exterior of the brace. I now go back and investigate a good way to add back in the solid palm pad.

Step 54: Bake & Boolean Union 1

I added the palm pad back in, which is now a good fit since it is extruded in the direction normal to its surface. This matches the process used in the Voronoi (extrude in Z direction and map to the surface). This helps create a solid palm pad that is flush and well fitted to the Voronoi exterior.

Step 55: Bake & Boolean Union 2

However, upon trying to complete a Boolean Union, I realised it was not working. Whilst the palm pad looks good and is also flush with the Voronoi exterior, it has not got a constant connection between the connecting surfaces as seen by the gaps above. I attempted to scale the pad so that there was a good overlap for the boolean union to work, however, this was unsuccessful and ruined the flush aesthetic of the pad.

Step 56: Voronoi 15

I attempted a backup plan which involved not cutting out the pad in the original Voronoi section, and just adding the pad inside this geometry as seen above.

Step 57: Solid Palm Pad 6

I made the solid palm pad slightly thinner than the outside extrusion so it fits within the geometry of the exterior Voronoi. This should still help to re-enforce the area without affecting the ergonomics of the brace.

Step 58: One-Piece Design

At this point, Grasshopper is very slow, and my laptop cannot handle it. Any changes take >5 minutes to load/implement.

Step 59: Bake & Boolean Union 3

The brace can now be successfully joined together into a single object using a Boolean Union in Rhino.

Step 60: Printing 2

When I moved into the printing stage I noticed something strange occurring in the Cura slicing process. I wanted to use a brim as I did before with the printing of the first simple brace since this seemed effective at supporting the brace whilst it is printed vertically.

Since the brim doesn't work as expected, as seen above, it suggested to me that the base of the brace isn't level.

Step 61: Leveling Base

I levelled the base by cutting a 1mm square from the bottom edge of the brace. The base is now level and the brim works as expected.

Step 62: Printing 3

The brace printed well first time.

Step 63: Printing 4

Upon inspection of this printed brace, I found that leaving a part of the back not cut out made the brace far more rigid. While this might be a positive aspect with regard to the strength of the brace, it needs more flexibility to put on and off, as well as to 'mould'/better fit the user's hand. In the next iteration of the brace, I want to test having the whole back edge cut out as you will see below.

Step 64: Cutting the Back Off 1

Since my grasshopper file was too slow to continue using, I had to do the following edits to the brace directly in Rhino. I drew a curve in the XZ plane that I could then use the MakeHole function to cut into the baked brace to remove the remaining section of the back cut-out.

Step 65: Cutting the Back Off 2

Step 66: Strap Cut-outs

I needed an effective location to add two velcro straps to the brace to hold it on and to add tightness so that it fits better around the wrist. Using the same method as above I drew curves and used the MakeHole function to extrude and remove these grooves seen above. I added the groves to the sides of the holes already there from the Voronoi, however, I did not like this aesthetic. Hence I decided to add a feature that was purposeful there to hold the velcro straps.

Step 67: Strap Cut-Outs 2

I drew 4 identical panels on either side of the back cut-out.

Step 68: Strap Cut-Outs 3

I used a new grasshopper file to extrude these panels into the hand canvas in order to get 4 well positioned panels within the brace geometry.

Step 69: Strap Cut-Outs 4

Using the same method as previously used for the solid palm pad, I created the 4 panels by splitting the canvas and extruding the 4 sections.

Step 70: Strap Cut-Outs 5

I now added this new grasshopper file into the old (slow) file.

Step 71: Strap Cut-Outs 6

Using a boolean union I join the new strap panels to the brace.

Step 72: Strap Cut-Outs 7

I drew central holes for the velcro straps in each panel and cut out the holes using the MakeHole function and extruding the curves in the Y direction within Rhino.

Step 73: Final Result

Step 74: Final Result 2

Step 75: Printing 5

I printed the brace once more. This time I made the brace slightly thinner (3mm) using a slider in grasshopper which controls all extrusions. I did this because I wanted the brace to be slightly more lightweight and flexible.

Step 76: Printing 6

Step 77: Printing 7

Step 78: Final Result 3

Step 79: Development 1

During my class review, it was a suggested improvement that I could trim the solid inner panel along the inside wrist so that it matches the profile of the Voronoi holes. This is seen above in red. Upon attempting this I quickly realised that I quite like this feature and think it improves the aesthetics of the design. I think being able to see the whole solid palm pad and its outline is a cool design feature.

Step 80: Future Development Ideas

These are a list of developments i plan to implement in the future, but haven't had time to complete before the end of the quarter:

  • I am waiting on the straps to be delivered. These 2 straps will be added to the back strap cut-outs.
  • I will investigate creating a 2 piece design. Splitting the design into a front and back piece might allow the user an easier way to put the brace on and off whilst retaining maximum rigidity in the brace.
  • I plan to get and use a better hand scan. I will hopefully use professional hand scanning equipment to get a better/ more detailed scan of my own hand.
  • I hope to explore and print more braces using a more flexible material. During my peer review, it was suggested I should attempt to use something like a TPA filament which can be more flexible and forgiving for use with human-centred design.
  • I plan to extend the scope of this project and attempt to use generative design in Fusion360 to optimise the design to withstand directional loads
  • During my class review it was suggested that I could 'vary the scale of the subdivisions within the overall Voronoi structure depending on where it falls along the arm'. This would be a very effective improvement in the future since it would allow me to add strength to those areas where it is needed by having a very condensed geometry. Similarly, where comfort is more important and strength is not as necessary I could have less material and more Voronoi holes.
  • Upon peer review with Ashley, they suggested that I could use the power of the Parakeet Grasshopper plugin to create a cool/strong pattern for the external wrist support that might be an improvement on my Voronoi Pattern. It may also allow me to add more condensed material in sections as suggested above.