Category Archives: Customization

Easy Custom Holiday Gifts for Everyone You Love

Custom holiday gifts from independent designers were once expensive and hard to create. But this holiday season at Shapeways, we have thousands of fun and affordable ways for you to Say You Made It. Enabling you to craft one-of-a-kind personalized gifts that hold special meaning for your loved ones. From our Easy Creator apps to the thousands of customizable objects offered by our community — including personalized ceramics pieces — making extraordinary gifts for all your friends and family has never been this easy.

Screenshot 2016-11-03 15.23.28

Create a Christmas heirloom with the easy Ornament Creator

Does your mom still save the macaroni art you made for her in fourth grade? That’s because even a simple custom gift can have a huge impact. Thankfully, it could not be simpler to use one of our Easy Creator apps to design your own personalized pieces. Use the Ornament Creator to make a holiday heirloom, the adorable Cookie Caster to design cookie cutters for loved ones who love to bake, or Crayon Creatures to magically bring your kids’ 2D art to life.

Crayon Creatures turn kids' crayon art into 3D creatures

Crayon Creatures turn kids’ crayon art into 3D creatures

If you don’t want to make an entire custom object, you can use the Customizable option in our SHOP section, or marketplace. Here, you’ll find products that allow you to add your own messages to pieces already for sale. You can find customizable products by clicking the “Customizable” box on the left-hand side of any page in our marketplace. Underneath the box, you can also select the type of material you would like to customize.

Sometimes, the best gifts are the ones that help preserve a precious photo memory. Your mom’s favorite snapshot of you. Or the double selfie from that amazing day you spent at the ball game with your dad. What if you could turn these images into durable 3D mementos? Luckily, one of the most amazing things that you can do with Shapeways — that you cannot do anywhere else — is to create Celadon Selfies. In this store, you can select any number of lovely tiles, mugs, or ornaments to which you can apply your own image (or one of your sister, mom, dad, or pets!).

Celadon Selfies help preserve special photo memories forever

Celadon Selfies help preserve special photo memories forever

Time spent with family and friends is the most important part of our lives. What could be better than using Shapeways to create mementos of your favorite moments, and custom gifts that hold special meaning for you and your loved ones? We’re happy to offer so many unique ways to show your love this holiday season. What’s your best custom gift of all time? Let us know in the comments, and make sure to check out our Holiday Gift Guide for gifting inspiration for all the beloved people on your list.

Designer Spotlight: Gavin Rose – Sparkshot Custom Creations

Gavin Rose of Sparkshot Custom Creations has been interested in British outline railways since a very early age and has been making models since he was 12 years old. Almost 20 years later, he’s still at it, now with the help of 3D design and 3D printing. Gavin does a tremendous job of leveraging 3D printing to create model trains that are otherwise unavailable through mass-manufactured models.

How’d you get into 3D modeling of trains?

Prior to doing 3D modeling I used to (and still do) railway modeling the usual ways — build kits or ‘bash’ them — modifying them to represent a different version of an engine, either real or theoretical. Before this, I dabbled in military modeling, but the bug has always been for railways more than anything. Amongst a few other things, 3D printing creates the opportunity for me (and you!) to now own models of railway prototypes the mainstream firms haven’t created. You have to buy your own wheels, motors and bits for the printed model but once done, it’s great to see the engine you’ve always longed for pottering about on a layout.

You mention that models of railway prototypes you’re building aren’t available from mainstream firms. Tell us about that and what you’re focusing on.

Most of the mainstream Ready to Run (RTR) manufacturers concentrate on the latter British Railways (BR) period of railway history and I can only estimate this is because most of the people alive today remember that period, and not earlier. As such, nostalgia has its power well established in BR territory, which undoubtedly is the reason that the mainstream companies cater to BR models. This means that newcomers to the hobby end up with a choice that is predominantly BR so sales of those products increase, mainstream companies keep making them … and so the cycle continues.

There’s nothing wrong with BR, but the post-Grouping (and especially pre-Grouping) suffers dreadfully, and many locomotive classes aren’t given any attention while the popular ones are redone over and over and over. This is a shame, and along with it goes some of the history and knowledge of what our railways looked like, once upon a time. If more people were to model the earlier periods we could hopefully get back to some degree and accurate portrayal of what was once lost and my hope is that 3D printing will help to bring the past back to the present. Currently Sparkshot Custom Creations is concentrating on the earlier periods, so keep an eye out. :)

We love that you’re using modern-day manufacturing to bring back the past! Tell us more about how you design these unique models.

For customization, I have done a series of variants of most of the locomotive classes. Some are real variants, but a lot are freelance also to enable me and anyone who is inclined to model certain things in a more theoretical rather than factual way. Obvious detail variations are the most important such as the standard VS extended tank E2 and the various chimneys some engines ran with. The new-to-the-SCC range Furness J1 class has a separate pack of chimneys to order that allow the engine to take on different guises, the simple change in chimney can make all the difference.  People have asked me to make a few alterations here and there and I have done it; the creation of the Cambrian Class 61 was due to consultation to give the Furness K2 some alterations but the work became more elaborate than originally envisioned as research continued. It has however produced a new loco choice all together, so all good!

At the time of this interview, the next engine to be completed and released for sale will be the Furness Railway J1 Class. There is already a Furness Railway 21 Class that’s also known as the K2 available in several variants, so for the meantime, I’m concentrating on this particular railway company and then will move on to another.

Check out Gavin’s incredible model train designs in his shop here. He’s created some videos on post-processing his models here and here if you’re looking for a glance into his methods.

He’s also requested that if anyone has built, painted, and are running his creations on a model railway, to please send him photos or video. As Gavin says, “I’d very much like to see what people do with the kits, there’s something quite ‘happifying’ seeing your own designs all completed by another!”

Custom-Designed 3D Printed Gifts for the Animal Lover

Looking for a gift for a loved one who adores their pet? Get their pup or kitty immortalized in an unforgettable 3D form. In full color sandstone or even in bronze, silver, or gold, these pet-inspired pieces are perfect for collectors — adding a familiar face to their dollhouse or train set — or for any pet parents who can’t stop Instagramming their furry friends.

Designers Cuddle Clones and Minichua Design specialize in creating incredible pet mementos in 3D.

custom pet sculpture

A cute example of the type of custom 3D design that can be made from a picture of a pet, by Cuddle Clones.

sleepingceramickitties

Cat lovers will fall in love with Sleeping Kitty 1, 2, and 3 by cheerioboy.

labrador pendantPay tribute to their favorite breed of pup with a pendant like this Labrador dog full body silhouette pendant by Custompendants.

Design it yourself with 3D printing apps like Pup Workshop or the Keychain Creator which doubles nicely as a custom dog tag creator.

pup workshop

Click for More Custom Pet Gifts

The Crazy Build-it-Yourself Watch Your Dad Will Love to Make

If your dad is anything like mine, he likes to work with his hands. This year, rather than getting him a run-of-the-mill store-bought product, I thought I’d order something cool he can put together himself.

Shop owner Danowall has designed this faceplate for the stylish wordwatch. The wordwatch is a DIY project where you can combine electrical components from Adufruit with Shapeways 3D printed materials to make this super creative accessory. The 3D printed metal faceplate is attached to a matrix of LED lights on a circuit board, then to the wristband. Instructions for assembling and programing the watch can be found here.

wordwatch

 

Danowall offers the faceplate as an STL file you can print or laser engrave, but I think you’ll agree that the cast metals available at Shapeways really bring out the best in the design. Not only is it the perfect watch for your dad to wear to that next big meeting, but people will be blown away when your dad tells them he built it himself.

 

How have you customized your watch? Show us with by leaving a comment below!

Learn ShapeJS: Signet Ring

I’m really excited about this weeks post. Not only did the test prints come out well but as a creator concept I really think this idea has legs. We published the ring creator a few years ago and the response and sales have been very favorable. Looking through the designs people make it’s clear that signet ring type usage is desired. ShapeJS has had a signet ring example for awhile, but for this posting I improved it with side images and engraved text. In terms of new ShapeJS concepts we’ll go over Text,Embossing,Mul and Mask.

Let’s start with a photo of the first test rings. These are with the text engraving but not the side images. The user gets to choose the top imagery, the engraved text plus the typical ring size and width.

Originally I had the image go completely through the ring. For this revision I changed to having the image engraved. We are working up to having shopper friendly creators available and we found that explaining when pieces would fall out was difficult. Engraving the top allows you to ignore that problem and there’s never a question whether it will be structurally sound. Here is a picture of the original style:

How would you go about modeling this ring style? The primary area of interest is the top image area. We want a flat area that blends nicely into a band. Let’s start with a Cylinder slice as the top area. This gives us a circular landing area. Here is a diagram showing the setup we’ll use.

We made the height of our image area(called a bezel) 1.5mm. This gives a nice feeling weight to the ring and insures that we have enough space to engrave at least 0.35mm deep as required by the guidelines for polished metals. The next part we’ll do is cut the cylinder with two planes at an angle. This gives us something more interesting then just a straight sided cylinder. Here is the code for this portion:

  // bezel is cone truncated by 2 parallel planes
  var bezel = new Intersection();
  bezel.add(new Cone(new Vector3d(0,Ay, 0), new Vector3d(0,-1,0), bezelAngle));
  bezel.add(new Plane(new Vector3d(0,1,0), bezelTop));
  bezel.add(new Plane(new Vector3d(0,-1,0), -bezelBase));

Now let’s turn towards getting the band correct. For this we’ll start with a Sphere(ringBase) which will be a radius of ring size + the ring thickness. From this sphere we’ll cut out a cylinder for our finger(thru). Then we’ll use the combination of a cylinder and box to create the arch like shape on the sides(cutoff). The final band will be the base sphere plus the bezel that we then subtract the finger thru hole and the side cutoffs.

  var ringBase = new Sphere(outRad);

  var ring = new Union();
  ring.add(ringBase);
  ring.add(bezel);

  var cutoff = new Union();

  var gw = gridWidth;
  var gw2 = gridWidth/2;
  var thru = new Cylinder(new Vector3d(0, 0, -gw2),new Vector3d(0,0,gw2),inRad);

  cutoff.add(new Cylinder(new Vector3d(-gw2, Ey, Ex), new Vector3d(gw2, Ey, Ex), cutR));
  cutoff.add(new Cylinder(new Vector3d(-gw2, Ey, -Ex), new Vector3d(gw2, Ey, -Ex), cutR));
  cutoff.add(new Box(0,-inRad,  Ex,  gw, 2*(inRad+Ey), 2*cutR));
  cutoff.add(new Box(0,-inRad, -Ex,  gw, 2*(inRad+Ey), 2*cutR));

  var partialRing = new Subtraction(ring,thru);
  partialRing.setBlend(1*MM);

  var fullRing = new Subtraction(partialRing, cutoff);
  fullRing.setBlend(0.1*MM);

Now that we have the ring modeled its time to turn to making it more customized. Using user imagery is a great way to add customization. For our signet ring we’ll provide 4 customizations points. We’ll have an image on top, an image on each side and text on the inside of the ring. In the past we’ve learned about the Image3D datasource. These easily turns images into 3D geometry. This is great for when we have flat areas to place things or a simple curve like a cylinder. Things become more tricky when we want to apply imagery to complex or unknown shapes. When dealing with these you’ll want to use the Embossing datasource. An Embossing let’s you change the surface of an object with another object. If your familiar with displacement maps in traditional modeling packages it’s a similar idea.

An Embossing takes a base shape and then an embossing shape. It also takes a minimum and maximum range value to limit the embossing distance. In general an embossing is only really good close to the surface, usually you wouldn’t extend further then 2*MM from the surface with this. This example also uses another new datasource called a Mask. A mask is used to select portions of a datasource you want to use for an operation. By default an embossing affects all sides of an object within its volume. For our ring this would mean the side images would emboss both the inside and outside. Since we want text inside we need to mask out the inside. We can do this by taking the band as the mask and shifting it to right or left. This creates a masked area on the outside to limit the application of the embossing to that region. Here is the code for left side imagery:

  if (args.leftImage !== undefined) {
    var edepth = ringThickness/4;
    var mask = new Mask(result,0,edepth);
    var maskShift = new Vector3d(1,0,0);
    maskShift.scale(edepth);
    mask.setTransform(new Translation(maskShift));

    var lbump = makeImage(args.leftImage, 0.84*2*Cx, By+inRad,12*MM,false);
    var trans = new CompositeTransform();
    trans.add(new Rotation(0,1,0,Math.PI/2));
    trans.add(new Translation(inRad,0,0));
    lbump.setTransform(trans);

    var maskedBump = new Mul(lbump, mask);

    var lsideImage = new Embossing(result,maskedBump);
    lsideImage.setMinValue(-edepth);
    lsideImage.setMaxValue(0);
    result = lsideImage;
  }

Since we are looking to engrave the ring we set the minimum value of the embossing to our desired depth and then maximum value to 0. Now that we have the imagery on the sides we are ready to tackle the engraved text. Text in ShapeJS is basically just like the Image3D node. Internally your specified text string, font and font styles are converted to a raster image. To do this you use the Text2D datasource. You then specify the font name and style you want to use. In a later tutorial we’ll cover how to use custom fonts. Text2D has alignment and centering options for the horizontal and vertical directions. Checking the online docs I can see we need put more detail there, so look for that soon. Here is the final ring:

One note about the image sizes. The side images are mapped to cover the whole side of the potentially largest ring. I used images of 400×667 resolution. Anything following that aspect ratio will work. If you adjust ring width you’ll reveal more of the image on the sides.

This wraps up our signet ring post. We’ve introduced a bunch of new concepts this week that we’ll reuse in later postings. Adding text and imagery to base objects gives your users plenty of options to make things their own. Using 3D printing we can make each object unique and this gives you the power to easily get it done. Here is the full code for your enjoyment:

Signet Ring

Learn ShapeJS: Symmetry and Reflections Part 1

For this week we’ll start into the powerful world of symmetry and reflections. ShapeJS allows arbitrary transformations of objects and as we’ll see in this post this has great power and some sharp edges to avoid. Guest writing this week is Vladimir Bulatov, he’s the math whiz behind the curtains of ShapeJS.

PeriodicWrap is a ShapeJS transformation which is most useful for creating repeated shapes and patterns. However if used incorrectly it can produce unexpected results. The purpose of this tutorial is to provide basic info and examples with correct use of PeriodicWrap, highlight potential problems and suggest possible solutions.

PeriodicWrap generates a fill of the three dimensional space (tiling) with copies of a single tile – the fundamental domain. PeriodicWrap is defined by linearly independent basis vectors and an origin. All parameters have type Vector3d. Basis vectors define the shape and orientation of the fundamental domain and the origin defines the place of the fundamental domain in space. There are 3 variants of PeriodicWrap one-, two- and three-periodic. This week we’ll examine the one periodic version, and in a later post we’ll cover the more complex versions.

One-periodic wrap
We start with the simplest variant – one-periodic. It is defined by one basis vector and origin. The origin has default value (0,0,0) which means the PeriodicWrap is located at the origin of the coordinate axes.

var a = 5*MM;
var pw = new PeriodicWrap(new Vector3d(a,0,0));

This creates a one dimensional PeriodicWrap with basis vector (a,0,0).

The one-periodic tiling can be imagined as cutting a space into set of identical slices. The fundamental domain (yellow) is a single slice. Slices are orthogonal to the basis vector (in this case (a,0,0). The thickness of the slice equals the length of the basis vector (5mm in this case) and the left side of the slice passes through the origin of the PeriodicWrap (in this case default value (0,0,0)). Let’s place a simple shape inside of the fundamental domain.

  var sphere = new Sphere(a/2,a/2,0, a/3); // sphere radius a/3 centered at (a/2,a/2, 0) 


And apply PeriodicWrap to the shape.

  sphere.setTransform(pw); // tiled sphere 

Here is the diagram of the result:


Shapes are replicated in both directions indefinitely. Below is the screenshot of the ShapeJS rendering:

Let’s place a different shape in a different spot

  var redSphere = new Sphere(0,a/3,0,a/2); // sphere radius a/2 centered at (0,a/3,0)

PeriodicWrap works by filling the whole space by identical copies of single tile – the fundamental domain.The interior of the fundamental domain is replicated. Parts of the shape outside of fundamental domain are cropped. It means, that the half of sphere sitting outside of fundamental domain abruptly disappears.


The rendering looks even worse, the cropping induces severe rendering artifacts

There is a simple solution to the problem. We can shift the origin of the tiling to make a shape enclosed by the fundamental domain

  pw.setOrigin(new Vector3d(-a/2,0,0));


And here is the tiling

The rendering now looks correct as well

But it is not always possible to select a good location for the tilings origin. In example below we have a union of two shapes.

The union doesn’t fit inside of fundamental domain. Therefore the shape always will be partially cropped:


The solution to the problem is to build a shape inside of the fundamental domain in a way which will compensate for unavoidable cropping: the opposite sides of fundamental domain have to pair seamlessly to each other. In this case we can place copy of another red sphere translated by the tiling basis vector (a,0,0)


Here are the drawing and rendering of the resulting tiling:



Complete ShapeJS script of the example with two shapes:

function main(args) {	
  var w = 30*MM; // scene size
  var a = 5*MM; // period of wrap 
  var s1 = new Sphere(a/2, a/2, 0, a/3);  // shape 1
  var s2 = new Sphere(0, 0.7*a, 0, a/2);  // shape 2
  var s2t = new Sphere(a, 0.7*a, 0, a/2); // translated shape 2
  var pw = new PeriodicWrap(new Vector3d(a,0,0));  
  var shape = new Union(s1, s2);
  shape.add(s2t);
  shape.setTransform(pw);  
  return new Scene(shape,new Bounds(-w,w,-w,w,-w,w));
}

After a PeriodicWrap transform is applied to a shape inside of the fundamental domain we normally obtain an unbounded shape. That shape intersects the scene bounds and as result has an open interior, which results in manifold problems in the generated mesh as is shown below with red.

In order to obtain a finite shape of specific size, we may intersect unbounded shape with some shape of specific size, for example a box:

shape = new Intersection(shape, new Box(55*MM, 20*MM, 20*MM));


PeriodWraps are a powerful method for creating many copies of your geometry. It’s also a much more efficient way to create lots of shapes instead of copying the datasources. In our next posting on symmetry and reflections we’ll explore the two and three periodic wrappings. These allow you to create some interesting patterns, similar to what you might find in nature. As a taste here are some two and three periodic wrappings:

3D Shaver – Personalize Your Shaver With 3D Printing

3D printing technology and online customization tools are opening up new possibilities in manufacturing a personalized product. And what could be more personal than shaving?

That was Philips’ thinking when it opened up its classic men’s shaver for personalization. The 3D Shaver, developed in partnership with Shapeways and Twikit and custom designed by you, is currently being offered by Philips in a limited edition trial.

3D Shaver Tool

Shavers can be configured with different handle designs and colors at 3dshaver.com. Once ordered, the custom parts are 3D printed and dyed at Shapeways’ factory in Eindhoven and shipped to Philips in the Netherlands for final manufacturing and assembly. The shaver is then packed in a custom box and shipped to you within 2-3 weeks of placing an order.

3D Shaver 4 Colors (800vers)

The 3D Shaver is exclusively available in The Netherlands. There are only 125 3D Shavers available and only two shavers can be ordered per day. A large number already have been sold, so you’ll have to move fast to get one.

We’re excited to partner with Philips on this and they have long shared Shapeways vision for the future of 3D printing; we were founded in 2007 in Eindhoven as part of Philips’ lifestyle incubator and look forward to working with them on more personalized products in the future.

Learn ShapeJS: Coins

On tap for this week we’ll print our own coinage. Don’t tell me you haven’t secretly wanted your own currency! When we first introduced cast metals it was one of the first projects I thought of. Here are the first tests I’d did:


These came out well, better then I really expected. The detail was amazing, nice weight to them and they sounded right when you flipped them. If your latin is not so good, it says “I scream, you scream, we all scream for ice cream.” Well, maybe it says that, been a long time since latin class.

In terms of what went wrong. I overestimated the height needed so the text it a bit too raised from the base. It doesn’t feel completely right in the hand, more like braille then coinage. Looking more at real coinage they have some edges(called reeds). Adding those cleaned up the sides nicely. Here is the second attempt:

This time I also printed them out in stainless steel as well as the polished metals. Steel has a minimum height of 3mm. The detail is better then I expected and the pricing is certainly nicer. It does however feel a bit heavy for a coin. I also did a test with White Strong & Flexible coins, but I can’t say I really liked them.

You can create your own coins here: Coin Example

This script uses concepts we have mostly already covered, but there are a few more details of the Image3D datasource to cover. The first is the useGrayscale method. The default operation is to assume your image is black and white. Under the covers we process this into a distance transform. We do this so that lower resolution images looks better. For greyscale imagery we can’t do the same operation, we just take your image and use it to define the height. Black represents the highest points and white the lowest. Think of this like your drawing with a black pin, your ink creates 3D geometry, the darker it is the more of it.

The second concept is the image placement options. When we create the geometry from an image it has a few modes. These are based off the setImageType and setImagePlace. The image type says whether we creating an embossed or engraved image. An embossed image has the darkest points going upwards whereas an engraving has the darkest points going downward into the object. The placement options say how the image is placed in the image box. Top placement puts the image in the upper area of the box, bottom does opposite. Both mode has the image in the top and bottom of the box. The following diagram gives a visual reference of the different modes:

Coins are fun way to start into the 3D printed metals. If you create your own coins or improve my script post into the forums and show it off.

Prioritize your Personal Self-Expression with 3D Printing

625x465_10017989_6923865_1453289826

‘Don’t be into trends. Don’t make fashion own you, but you decide what you are, what you want to express by the way you dress and the way you live.’ – Gianni Versace

Inherently, fashion is a form of self expression that has the ability to show the world who you are without having to say a word. In today’s world, we style ourselves (and our homes) with the clothing, jewelry and goods that are made readily available to us by different brands, be it large or small. Thus far, that’s worked just fine — but what about a world where you are your own brand? Where you decide what gets made, based on your own preference. Is it possible? Is it even realistic?

Overwhelmingly, yes. I envision a future where your personal and aesthetic expression are prioritized over that which is made in mass — and without a doubt believe that 3D printing is the avenue that will help us achieve this future. Why is your self expression important? Below are a few reasons.

It’s sustainable. In traditional retail, a brand will come up with designs that they believe will have consumer appeal, and then manufacture a certain number of those designs based on projections. All too often, those brands will over-manufacture a piece, only to have hundreds (or thousands) wind up sitting a warehouse — which is an effective waste of material, space and labor.

The beauty of creating your own products with 3D printing, is that the only market validation you’ll ever need is your own. Since products are produced as you order them, you have ease of mind that you’re getting exactly what you want, from an environmentally friendly source that you can trust.

It’s infinite freedom. With customization made more accessible, you no longer have to settle for the almost perfect item. Not everyone may want to design their own everything – sometimes, it’s about making custom modifications to the things that are almost what you’re looking for. Perhaps it’s a piece of wall art that would be so great for your room if only it were just a little bit smaller, or in a different color than is available.

The made-to-order nature of 3D printing means there’s infinite possibility to customize products in a way that is true to exactly what you want. Today, we already have powerful tools such as CustomMaker and ShapeJS that make it easy for anyone to make modifications to products they love.

It’s tools like these that begin to pave the way to the wave of the future, where we’ll see more software and hardware applications expanding to a point where you can customize literally any item you could possibly want.

It’s uniquely you. The most important piece of this is you. Today, you can take your passion and wear it close to your heart, literally. Whether you have a love for science, or a love for ravens – it’s all made possible with 3D printing.

We are lucky enough to be living in a world where we are finally liberated from the mass-produced constraints of our predecessors, and it has only just begun. The future will only give way for more opportunities for you to be you.

Keep Your Lightning Cables Unfrayed With This Lifehack | Shapeways Reviews

Your iPhone’s low on battery, and you’re digging through your pack looking for a lightning cable to juice up your phone, but the only one you can find looks like this:  

frayed-lightning-cable

Yep, a completely frayed, non-working cable.

BUT! There’s a way to keep this from happening. This nifty little piece of plastic by TheKre8Group lets you quickly and easily wrap your cables to keep them tidy and safe from undesirable bending and fraying.

MVI_4617.00_00_24_18.Still001

Wrapping a cable is super simple.

MVI_4617.00_00_32_21.Still002

Insert the USB end into the larger slot.

MVI_4617.00_00_36_03.Still003

Wrap the cord around, starting in the beveled channel and wrapping upwards, making sure not to double-layer any part.

MVI_4617.00_00_45_04.Still004

Once you’ve wrapped the cord, insert the lightning end into the smaller hole to hold it secure.

MVI_4617.00_00_48_22.Still005

Now, you have a simple, affordable, compact solution to help prevent expensive cables from fraying and breaking.

Check out our video review here:

Do you have a neat way of keeping your cords organized? We’d love to hear it! Leave it in the comments below, and let us know what you want to see next. Follow TheKre8Group on Shapeways here , and be sure to check out their shop here.

Follow Seth on Shapeways here

Learn ShapeJS: Volume Pattern Ring

For this week’s post we’ll create a ring based on volumetric patterns. In the process we’ll learn about blending in boolean operations and how to make wearable 3D jewelry. So first up, a photo to get you inspired!

The basic idea of this script is to cut a ring out of a volume containing an interesting 3D pattern. We learned about VolumePatterns in our ToothBrush Holder posting. These patterns fill the design space with a controllable pattern generator. We can then use some simple boolean operations to make a ring. We’ll cut the space with two cylinders. The first cylinder is the outer edge of the ring. The second will be the inner edge of the ring. Using a Gyroid pattern we get the following starting pattern:

Here is the code, the cylinder ocutter cuts the space for the outer ring, the icutter cuts it for the inner ring. The sides are then cut using 2 cutting planes.

  var ocutter = new Cylinder(new Vector3d(0,-10*CM,0), 
                             new Vector3d(0,10*CM,0),size+pattern_thick);  
  var icutter = new Cylinder(new Vector3d(0,-10*CM,0), 
                             new Vector3d(0,10*CM,0),size);
  var cutter = new Subtraction(ocutter,icutter);
  
  var body = Intersection(gyroid, cutter);    
  
  result = body;
  
  var fplane = new Plane(new Vector3d(0,-1,0),new Vector3d(0,width/2,0));
  var bplane = new Plane(new Vector3d(0,1,0),new Vector3d(0,-width/2,0));


  result = new Subtraction(result,fplane);
  result = new Subtraction(result,bplane);

  s = ringSizeToRadius(16) + 6*MM; 
  var scene = Scene(result, new Bounds(-s,s,-s,s,-s,s));
  return scene;

 

One thing you might notice is the pattern has some sharp edges. An issue with jewelry and rings in particular is they need to wear well. No-one is going to like wearing a metal ring with sharp edges. In this example we use two techniques to make the rings more comfortable. The first is to provide a liner in the ring that separates the potentially sharp pattern edges from your finger. By using a cylinder as a liner we a get a known pleasing shape that is easy to match with the requested ring size. This code shows the addition of the liner by adding another cylinder inside. The thickness of the band is specified in the band_thick variable.

  var ocutter = new Cylinder(new Vector3d(0,-10*CM,0), 
                             new Vector3d(0,10*CM,0),size+pattern_thick+band_thick);  
  var icutter = new Cylinder(new Vector3d(0,-10*CM,0), 
                             new Vector3d(0,10*CM,0),size+band_thick);
  var cutter = new Subtraction(ocutter,icutter);
  
  var body = Intersection(gyroid, cutter);    
  
  result = body;
  
  if (band_thick > 0) {
    var oliner = new Cylinder(new Vector3d(0,-10*CM,0), 
                              new Vector3d(0,10*CM,0),size+band_thick);
    var iliner = new Cylinder(new Vector3d(0,-10*CM,0), 
                              new Vector3d(0,10*CM,0),size);
    var liner = new Subtraction(oliner,iliner);
    result = new Union(result,liner);
  }
  
  var fplane = new Plane(new Vector3d(0,-1,0),new Vector3d(0,width/2,0));
  var bplane = new Plane(new Vector3d(0,1,0),new Vector3d(0,-width/2,0));


  result = new Subtraction(result,fplane);
  result = new Subtraction(result,bplane);


  s = ringSizeToRadius(16) + 6*MM;  // Hardcode to show sizes changes better
  var scene = Scene(result, new Bounds(-s,s,-s,s,-s,s));
  scene.setVoxelSize(0.05*MM);
  return scene;

 

The result looks like this:

This is better, but it still contains some sharp edges around the pattern. The second technique is to use a blend on the boolean combination operations. The default operation of booleans such as a Union, Intersection or Subtraction to combine datasources typically create hard edges. Notice how the liner and pattern seem very distinct. A blend allows you to smooth out these transitions. All booleans have a setBlend method you can use to blend the results together. The parameter is in physical units which represents the distance to smooth over. The larger the distance the more smoothing. Here is our ring now with some blending applied.

High Search Space Scripts

I classify these scripts as high search space scripts. There are a lot of non printable and non interesting rings,but buried inside are some real gems. This can be fun but it does make it challenging if you want to expose this type of creator to novice users. ShapeJS will have more tools soon that will help with the printability aspects. For the aesthetics, perhaps we can use some of the new deep learning algorithms to help us understand what looks good. I’m thinking of a user interface that shows you a bunch of random rings, you swipe Tinder style to rate them. It then uses these to train a recognizer of your style. Then it presents you news rings that are more likely to your tastes. Likely a pipe dream currently but could be something in the future. For now we’ll have to assume the user is interested enough to play with the script and find interesting patterns on their own.

Take a look at the Pattern tab on the final creator here:

This tab has several parameters available to travel through the design space. The Period,Thickness and Height parameters control the overall pattern. The Location and Rotation params move the ring geometry to different areas in the pattern. Consider this like driving the pattern around to find the right parking space. The last parameter, Blend let’s you change the amount of blending that’s used. This changes the overall look a fair bit and can also be used to get around some wallthickness issues to remove or thicken small pieces.

A few more pictures to wet your appetite. This is a close up of a printed piece:

And this is a montage of a few different parameter settings. I really like the range of different patterns you can get from this script.

I added this creator to the ShapeJS Examples page, you can find the completed script here: VolumePattern Example.

Unique Gift Ideas for the Perfect Mother’s Day

We know finding the perfect gift for mom isn’t always easy, so we’ve curated a list of unique gift ideas for you! Because every mom deserves a gift as special as she is.

Personalized Pendants

MOMPENDANT

If your mom has been hanging your drawings on the fridge since you could pick up a crayon, we bet she’ll love a personalized pendant created by you. You can make one using our pendant creator app. Check out the video below to see how.

Portraits in Porcelain

Have a photo you’re looking to memorialize in a special way? You can upload the photo and have it 3D printed in our Porcelain Ceramic with our celadon-selfie creator. These make for perfect, long-lasting and unique gifts for Mom.

Prefer to get her something one-of-a-kind designed by our creative community based around the world? Take a look at our Mothers Day Gift Guide or check outa few of our favorite unique gifts for mom.

Have you made something special that you’d like to share with us? Show us your work by tagging us on Instagram or Twitter with #3DMothersDay or post it to our Facebook page.

Learn ShapeJS: Light Switch Cover

This post you’ll learn about how to load triangle meshes into ShapeJS and a method to protect functional areas in your design. Our goal this week is to design a lightswich cover that is customized with a user image. I started this process by finding common measurements of light switches and thinking about how to 3D model it. I quickly got into wanting a script that could handle n toggles, different hole types, phone and audio connectors, it got complicated fast! Then I found some already 3D modeled versions in different model repositories and became lazy. The final form of this script takes a 3D triangle model as its base object and then overlays the user image. Let’s start with a photo of the final object to get us inspired:

To understand how we load 3D models into ShapeJS it helps to understand the internal representation we use. All datasources in ShapeJS calculate a signed distance function. This is zero on the surface of the object, negative inside and positive outside. The function for loading a 3D model from your code is called loadModelDistance. It takes the file name, a voxelSize and the maximum distance to calculate. The voxel size controls the resolution we load the model and how fast it loads. For small models I use 0.1mm, but for something larger like this model I use 0.2mm. For the distance, you want to use a distance out to the maximum place your edit the model. For our light switch cover we’ll be embossing our image up about 1mm so I calculate the distance function to 1.2mm. Think of a cloud surrounding your model, you need this cloud to intersect anything you’ll doing to the model such as adding or subtracting material. You don’t need to be super accurate about this, but the farther out you calculate it, the longer the calculation takes.

Let’s start by just loading the model itself.

var params = [
{
name: "model",
label: "Model",
desc: "3D Model of light switch",
type: "uri",
defaultVal:"http://www.shapeways.com/rrstatic/javascript/shapejs/examples/models/Light_Switch_Plate1.stl"
}
];

function main(args) {
var base = loadModelDistance(args.model, 0.1 * MM, 1.2 * MM);
var bounds = base.getBounds();

return new Scene(base, bounds);
}

For the basic light switch cover it looks like this:

Currently we support loading STL and X3D files. The X3D files currently ignore the color information and just load the geometry. When you load the model it will return an object with a bounds property. You can use that bounds property to set your scene bounds.

From there we can start adding in the user images. The way I thought about this was to reuse the Image3D datasource. This loads an image and makes 3D geometry out of it. In this case we are going to extrude it up by 1mm. One problem with this concept is it will block the functional areas of our model. In this case we need to protect the two screw holes and the square light switch rocker area. To do this we are going to model the protected areas and then subtract those from the pattern. The makeImage method takes our user image and the makePattern method subtracts out a box and two holes to protect the design.


function makeImage(path, w, h, d) {

var img = new Image3D(path, w, h, d);

img.setBlurWidth(0.2 * MM);
img.setImagePlace(Image3D.IMAGE_PLACE_TOP);
img.setCenter(0, 0, 3.5 * MM);
img.setUseGrayscale(false);

return img;
}

function makePattern(path) {
var box = new Box(12.5 * MM, 25.5 * MM, 15 * MM);
var hole1 = new Cylinder(new Vector3d(0, -30.674 * MM, 0), new Vector3d(0, -30.674 * MM, 25 * MM), 5.5 * MM);
var hole2 = new Cylinder(new Vector3d(0, 29.805 * MM, 0), new Vector3d(0, 29.805 * MM, 25 * MM), 5.5 * MM);

var img = makeImage(path, 64.16 * MM, 106.185 * MM, 1 * MM);

var holes = new Union();
holes.add(box);
holes.add(hole1);
holes.add(hole2);

return new Subtraction(img, holes);
}

You can run the full example here: Light Switch Cover Example

I think this design came nice. I also tried it in our Blue material:

One variant I tried was to cut the pattern completely through the original model instead of embossing it. Looking at the 3D model itself I really like this better, plus is was much cheaper. That said I found out quickly that looking inside an electrical box is not the prettiest of things. Seems the original designers had the right idea of covering that stuff up!

Couple of notes about this project. This current script embossed 1mm of material on top of an existing model. The model itself is pretty darn strong printed in plastic, so I feel like adding more material is not necessary. Perhaps engraving the design would work well and cost less. The second note is about costs. I looked around on Etsy and Amazon to get an idea of whether this concept would work. Typically 3D printed items are more expensive then their mass produced cousins. On Amazon I found single light switch covers ranging from 0.25 for a very basic model to $20 for a fancy model. On Etsy they range from $5 to $32. This design costs around $18 currently. I’d say that puts this in the ball park of a good concept that could compete on price and allow the user to create whatever design they want. This method is also applicable to other objects you’d like to put designs on such as a phone case. Take a base 3D model of the case, model the functional areas in the case you want to protect such as the camera and controls and there you go. Instant phone case creator!

Learn ShapeJS: Toothbrush Holder

For this weeks project we’re going to learn a new modeling technique, have some fun with volumetric patterns and then apply these to make a toothbrush holder.

Last week we talked about using 2D imagery as way to create 3D data. We’re going to reuse that technique here but in a different way. In traditional 3D modeling one of the first modeling technique you learn is called a surface of revolution. If you’ve ever played on a pottery wheel or lathe then you’ve seen this technique. Basically you take a profile and turn it around a circle to make a solid. Here we’ll reuse the Image3D datasource to read in a user provided profile. We’ll then use the RingWrap transformation to revolve that profile around a circle.

Let’s take a look at an example. This is the profile we’ll use for the toothbrush holder. For my design I wanted a solid bottom with curved in sides. The profile you see here is basically one half of the object we want. In your mind just reflect the image to the left to imagine what the finished model will look like.

Here is the solid created from that profile:

One important concept in 3D printing is wall thickness. Depending on the strength of the material you may need thicker walls. The thickness of your lines(StrokeWidth in some software) determines how much material your walls will contain. For now we won’t go too deeply into wall thickness but I wanted you to realize that you could change this based on how thick you make your lines.

The ShapeJS code to create this profile looks like this:


function makeShell(profilePath, width, height, voxelSize, blend){
var radius = width/2;
var boxDepth = 2*Math.PI*radius + blend / 2 + 2 * voxelSize;
var boxWidth = radius;
var boxHeight = height;

var image = loadImage(profilePath);
var grid = image.getGrid();
var expandOp = new ExpandOp(0,3,3,3);
grid = expandOp.execute(grid);

var image = new Image3D(grid, boxWidth, boxHeight, boxDepth, voxelSize);
image.setBaseThickness(0.0);
image.setBaseThreshold(0.5);
image.setUseGrayscale(false);
image.setBlurWidth(2*voxelSize);

var ct = new CompositeTransform();
ct.add(new Rotation(0,1,0, -Math.PI/2));
// align side of the image box with xy plane
ct.add(new Translation(0, 0, -radius/2));
ct.add(new RingWrap(radius));
image.setTransform(ct);
return image;
}

This technique is good for making a bunch of different objects such as vases, candlesticks, and wine glasses. If you pair this with a simple sketching interface that exports an image, you could make a quick authoring tool for making some nice objects. We’ll return to this idea in some later postings.

The next concept to cover is a volume filling pattern. These are regular patterns that fill space infinitely in all directions. They have many uses, not the least of which is the ability to
turn something rather plain into something really interesting. Let’s look at what these patterns look like:

Volume Patterns

The top two patterns are called a Gyroid. The specific features of a Gyroid are interesting but too much detail for here. Wikipedia’s entry has more details if your interested: Gyroid. The two specific examples you see here are the same pattern but with the Period changed. The period parameter determines in what distance the pattern will repeat. So for a gyroid you roughly think of it as how large the holes are. The other parameter is the thickness. Most of these patterns are in theory thin sheets. By adding a thickness parameter we make it possible to give them volume and give you control over how much material is used. The second row of pictures contains the SchwarzP and SchwarzD patterns. Over time we’ll likely add some more interesting patterns.

It’s now time to combine both of these techniques to create a 3D printed object. We first take a user profile to make the basic shape of our object and then we intersect it with a Gyroid to make
the surface more interesting. I added parameters to help you control the volume pattern and move the object through the volume space. Another useful control is the Blend parameter. This affects
how round or flat things look like and really changes the feel of the object.

Here are some examples using different volume patterns and parameters:

Examples

Now that we have some good models being created from our script its time to start printing them. A common practice if you have a 3D printer is to prototype the print in the cheapest material you have available. I have a small FDM printer at home so I choose to print it out using that. Since i only have one printer extruder I had to use the same material for supports and the main item. After a long session of removing supports I got to hold my first version. Success! Sadly, the supports left some tool marks but all in all, I was happy with my first version.

FDM Print

In an ideal world, I would of designed my object to not require support material. But that can be a tough problem. Instead of doing that I decided to switch materials to the SLS Nylon material offered at Shapeways. The built object sits on a bed of powder while printing so it doesn’t require any support material. The second version of my print looks like this:

SLS Print

A few design notes from this project. After trying it out a bit as a real toothbrush holder I’ve decided that having a top lip would be a nice feature. Depending on how the pattern intersects at the top you can get some pretty big crevices which the brushes like to fall into. For the final script I added a top and bottom rim option which you can use to line the shapes. I decided not to use the bottom rim as I wanted the water from the brushes to flow out.

Top Rim

The last note is I would recommend sealing these prints with something to keep them clean. If the material you use is somewhat porous(most are) then eventually you’ll get toothpaste stuck too it. I applied a coating of Krylon Crystal Clear which is an acrylic coating to seal the material. I’m hoping this makes my holder last a long time and makes it easier to clean when needed.

That wraps this week’s Learn ShapeJS posting. We covered a lot of ground today, you learned a new modeling technique and delved into the fun world of volume patterns. If you make something cool with this script please share your experiences in the ShapeJS forums. I almost forgot! Here is the example script for you play with: ToothBrush Holder

Learn ShapeJS: Image Poppers

For our first foray into learning ShapeJS, we’re going to start by using 2D Images. Millions of people already know how to use 2D image tools, so if we can leverage those skills for 3D modeling we’re in business.

The advantages I see in using 2D source material are:

  • Millions of 2D capable artists compared to much fewer 3D artists
  • Easy to source free material on the internet
  • Easy to purchase high-quality assets
  • Sketching interfaces are fun and intuitive for many

 

Image Popping

The basic concept is to use a 2D image as the source to create 3D data. You specify the physical dimensions of the base and the 2D image is extruded into the Z direction. The image of the letter R on the left creates the 3D object on the right. This is the basics of what I call Image Popping. You pop the image up into the third dimension.

Image to 3D

The complete docs for the Image3D datasource are available here: See Image3D.

So now that you can use imagery in ShapeJS let’s think about what can be made with it. The first object that came to mind for me was a pendant. By simply adding a loop or a bail/connector to the top of a 2D image, you have a quick and easy 3D jewelry project. This is the basis for the Pendant Creator, one of our 2D-friendly design apps, which is a popular first creator for those new to 3D printing. You can use our pendant creator here: Pendant Creator


My First Pendant

 

That project went well, so I decided to try my hand at something dear to my heart: books! This time I conned a friend into sketching some crystal-like patterns and used that as the source material to pop up a bookmark.

 

Transformations

That was fun, but my friends rightly pointed out that I could have done that project with a laser cutter. Now I’m sad. Looks like I need to up my making game. The next level of image popping is to transform the image in some way. All ShapeJS datasources can take a Transform via the setTransform() method. A transform is a function which maps an object to a new version of itself and can significantly change a datasource. A simple transform, called a Translation, is used to move and object around in space, i.e. to move an object one unit to the right, you say new Translation (1,0,0). Other transforms can rotate and scale (change size of) an object. A more advanced transform that I commonly use is the RingWrap transform which wraps the image around a cylinder. This allows us to easily use an image to create a ring or bracelet. We used this in our Ring Popper Creator. Here are some printed examples we’ve done using that technique. The top is the printed object and the bottom is the source image used.

 

It’s pretty simple to make. You just load an image and then use the RingWrap transformation to bend it around a cylinder the size of your finger. This technique is good for making rings. If you want to make a bracelet out of it then you might want to use another transform called Scale. A scale transform changes the dimensions of an object in any direction. For your wrist you’ll notice that it’s really a squashed shape not an exact cylinder. This example takes the ring example and resizes it for your wrist with a slight scale to make it fit better: Bracelet Popper

Tiling and Symmetry

Our final example for image popping will takes us into some interesting places. Perhaps you’ve seen the cool art done by Arabic artists. Think of Alhambra, or more modern, the work of Escher. These all use tiling and symmetry patterns to make complex and pleasing patterns. Personally I’m not a great 2D artist so I find it difficult to fill an entire canvas with interesting designs. One way to get around this is to take a simple element and then transform it around your space. ShapeJS has an extensive set of support for tiling and symmetry. A later blog post will go into much greater depth but I wanted to end this post with an example that I hope inspires you. Using a single image we can tile that around a sphere. This is called an Icosahedral Symmetry and it looks like this:

Icosahedral Reflections
By Tomruen at en.wikipedia

 

The lower corner of your image is reflected around the sphere. You get 120 copies of your image rotated into different orientations. This makes for some really cool patterns from simple images. Here is an example I made into a tea light:

Tealight

You can try out this example here: Tealight.js

Using this same technique we can also make something like a candy dish. The dish is made by keeping the lower quarter of the sphere and then a base is added to make it stable.

Soap Dish

You can try out the Candy Dish example here: Candy Dish Example

2D Images make a powerful starting point for creating 3D models. ShapeJS makes it easy to use images as the source material for some fun projects. Hopefully this blog post has inspired you to create your own objects using the Image3D datasource and some simple transformations. If you have questions about ShapeJS please join us in the forums: ShapeJS Forum