Mathematically defined fursuit claws

I needed claws for my fursuit, but I wanted something totally unique. These claws were 3D printed, but they were not sculpted in a modeling tool or 3D scanned. The shape of each claw is defined by a set of mathematical formulas.

The code to actually generate the claws was written in OpenSCAD (http://www.openscad.org/). OpenSCAD is primarily a CAD tool, but it is very much unlike other CAD tools. In OpenSCAD, models are created by writing code that generates a part. This is very much in contrast to other tools, such as Inventor or Fusion360 in which parts are created interactively.



Most CAD tools are designed for the creation of mechanical components, not organic shapes such as claws. But there are a few features of OpenSCAD that can be used to create these shapes. The hull operation (https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#hull) is particularly useful here. The actual claw portion of the model above was created using nothing but 3D primitives and hull operations.

A hull operation essentially takes two three dimensional shapes and fills in the space between them.

This operation makes it fairly easy to create organic looking objects as we can create a few base shapes and and use hull operations between them to create a solid object from cross sections.



In the claw above, the hull operation has been disabled and I’ve replaced the claw profile objects with with flat cross sections.

Where things start to get a little technical, is how the size and locations of the cross sections are computed. As complicated as it may seem, though, the math behind it doesn’t require any knowledge beyond some high school mathmatics. The formulas that define the size and locations of these shapes are simply a pair of quadratic equations!

z = A * x * x + B * x girth = GIRTH_C - (x * x * GIRTH_A + x * GIRTH_B)



The first formula sets the translation in Z axis of the cross section with respect to the X axis. In other words, the downward shift of each cross section. The second formula sets the size of the cross section, so that it gets progressively smaller towards the tip of the claw. The variables A, B and C are the coefficients of the quadratic equation (https://en.wikipedia.org/wiki/Quadratic_equation).



So, to create the claw, we iterate over each unit of the X axis, compute the size and Z translation of the base shape and hull that base shape with the previous base shape.



pts = [for (x = [0 : X_MAX]) let (z = A * x * x + B * x) [x, 0, z]]; for (x = [1 : len(pts)-1]){ hull(){

translate(pts[x-1])

base_shape(GIRTH_C - ((x-1) * (x-1) * GIRTH_A + (x-1) * GIRTH_B));

translate(pts[x])

base_shape(GIRTH_C - (x * x * GIRTH_A + x * GIRTH_B));

} }

In the code above, base_shape() is a function that generates a cross section of a given size. To generate the claw shown in the photo I used a three dimensional object instead of a flat cross section.

The idea is the same, but this makes the tip of the claw smooth instead of flat.

This was quite a fun piece of software to write and I’m excited to have the opportunity to use such an unusual, and as far as I know, novel method of creating claws for my fursuit. Expect some more fursuit related posts from me in the future as I continue to build my suit!

