Category Archives: Customization

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

Our favorite customizable phone cases

Earlier this Fall we ran the CustomMaker phone case challenge and were blown away by the quality of submissions. Talking to cadycarlson, who designed one of of favorites, had this to say about making her design for the challenge:

“This was a really fun project for me. I mainly design jewelry but have made a few accessory items in the past, so making a phone case was a great challenge! Growing up in Tulsa, Oklahoma, the recurring combination of Neoclassical Revival and Art Deco architecture/motifs has a hand in the inspiration for most of my designs. My city boasts one of the largest collections of Deco architecture in the nation; we even have several residences and buildings designed by Frank Lloyd Wright and Bruce Goff.  

Another aspect of this competition that I loved was the employment of CustomMaker — it’s so wonderful to put personalization into the hands of the consumer so they can be a part of things.”

From rolandgs:

“The competition rules stated use of the CustomMaker tool. I tried to use it to it full potential. So use both text and image engraving, but also include a non-rectangular field, with a template. I feel this method should be integrated with the tools interface because it allows for more interesting use of the tool. The template I made can be found in the images on the product page.

The Art Nouveau style is a bit of an long time fascination I have. It seemed to suit the design goal, framing an image in an elaborate way independently of the frames content.

Strangely enough there wasn’t much sketching involved. The orb filled crescent was generated using some math I found. Just Google ‘art nouveau crescent’, First hit actually. I made a print of the design thus far and sketched some borders on it, evolving to the end result.”

Art Nouveau Phone Case Sketch

rolandgs sketch for the design

 

Keep an eye out out for more Challenges in our forums and on our blog.

Introducing Pendant and Keychain Creators

Although 3D printing technology has come a long way, the learning curve for 3D modeling and 3D software is still a little steep. We hear from a lot of people that one of the barriers they’ve faced with 3D printing starts with the design process. They want to have something 3D printed, but the idea of using 3D modeling software is too overwhelming. Today we’re excited to announce the launch of our Keychain Creator and Pendant Creator, two new apps that aim to break down those barriers and enable more people to create amazing things! Now we’ve made it easier than ever for anybody, even those who little to no design experience, to create beautiful, unique 3D printed products.

pendant-keychain-blog-email

Making your pendant or keychain is simple. If you’re familiar with our 2D to 3D Creator, these are both very similar. With just a few steps, you can create a keychain or pendant customized to your liking.

  1. Upload a 2D design or use one of our templates
  2. Customize your design by choosing your desired size, thickness, backing, etc.
  3. If you want, add a loop for a necklace chain or key ring
  4. Click “Create Pendant” or “Create Keychain”
  5. Pick your material and order!

To get started, check out our pendant tutorial, keychain tutorial, and for advanced users, our grayscale tutorial.

How To Make Custom 3D Printed Bic Brander

In this blog post Shapeways community member James Herndon teaches you how to make a custom Bic Branding Iron that snaps onto a Bic lighter from a 2D image using Shapeways CustomMaker.

Screen Shot 2015-09-09 at 11.20.51 AM

You don’t need a 3D printer, just an image, an image editing program like Pixlr and Shapeways.com to print your brand in real steel.

Disclaimer:
Yes, this is a branding iron, they get hot! Don’t do anything stupid with one of these, like burn yourself or an animal! If you do, please don’t blame me! :)

Step 1: Find your image

Picture of Find your image

First of all you will need to find or create a black and white image for your branding iron.
When you upload your image the black areas will be extruded by 1mm, the white areas will stay in place. You should avoid any Gray scale or color images as they won’t produce as clean of a final brand but you can experiment if you want!

Step 2: Use Autodesk Pixlr to reverse your image (your Iron should be a mirror image of the final brand)

Picture of Use Autodesk Pixlr to reverse your image (your Iron should be a mirror image of the final brand)
2015-08-29_2134.png

Almost every image will need to be reversed before uploading, that way the brand comes out the right way

This is super easy with Autodesk Pixlr, a completely free online photo editing program,
Navigate to https://pixlr.com/editor/ and choose to open an image on your computer or by inputting a URL

Then just click “Image” and then “Flip canvas horizontal”

Step 3: Use Pixlr to Invert your image and crop it if needed

Picture of Use Pixlr to Invert your image and crop it if needed
2015-08-29_2057.png
2015-08-29_2100.png
2015-08-29_2101.png
2015-08-29_2101_001.png

If you found the perfect black and white image but it’s backwards, you’ll need to Invert it in Pixlr

To do this, just duplicate the background layer and change the new layer’s mode to “invert”, that’s it!

If you need to add white space around your image, just increase the canvas size by a few pixels with the center as your anchor. (do this if your brand gets distorted at the edges, you’ll know what I mean later when you go to make your branding iron)

If you need to remove space around your image just use the crop button in Pixlr.

Note:
If you have a rectangular shaped image then you may need to rotate your image in Pixlr as well.

The 3D base models all have the longest edge of the rectangle running left-right, so if you have a tall skinny image, you’ll want to rotate it by 90°.

Step 4: Upload your Image to Shapeways

Picture of Upload your Image to Shapeways
2015-08-29_2141.png
2015-08-29_2142.png

If your image is mostly circular or square shaped follow this link:
http://www.shapeways.com/product/QM8964MKH/custom-…

If your image is mostly rectangular shaped follow this link:
http://www.shapeways.com/product/TC8DA2SUM/custom-…

If your image is a skinny rectangle follow this link:
http://www.shapeways.com/product/6DKX33L4Y/custom-…

Next just click on the “Choose File” Button and pick the image you made earlier!

Step 5: Order your brand, wait and burn!

This step is easy! Just click the “Add to Cart” button on the right and follow the process to order your Custom bic branding iron!

Shapeways will then 3D print your custom brand in Stainless steel and it should arrive in about 14-18 days worldwide!

After it’s arrived you just attach it to a Bic World Class lighter and then light it up for about 60 seconds or so (every brand is different)

Be sure to practice on some scrap wood first! Getting a good brand takes practice and you don’t want to mess up your 1951 Mickey Mantle rookie bat with a sloppy batman brand. (really though, that’s a dumb idea, if you have a Mickey Mantle bat just don’t brand it at all).

Have fun!

 

Get in the MOOD and support this new Kickstarter campaign

Today, a new Kickstarter launched to raise money for revolutionary customizable sunglasses. Federico Vitiello quit his day job in November to re-invent something that already existed: A pair of sunglasses. MOOD is a pair of sunglasses with one frame and infinite design combinations. Inspired by the legos he loved playing with as a child, Vitiello created a kit that allows one to customize their sunglasses to fit their mood.

IMG_2941

Vitiello has set out to raise $50,000 on Kickstarter to produce the first batch of MOOD sunglasses. The glasses themselves are printed at Shapeways using our Strong and Flexible Plastic. With each pair, you get a set of MOOD bricks, comprised of letters, numbers and symbols, that are optimized to look great on the sunglasses and allow you let your imagination run wild.

As Vitiello says:

“Our say on our fashion products ends the moment we choose to buy them. We wear things that someone else designed for us. We don’t wake up every morning and design our t-shirt for the day, and we definitely don’t reimagine that shirt as our day progresses. Yet clothes and accessories are part of our personality. They are our form of expression. Before we open our mouths or shake hands, we’re already communicating through what we wear. What if we could move from being mannequins and choosers to become creators and designers? What if we could do that with the most important accessory, the one closest to our eyes?”

IMG_2949

Check out the Kickstarter here if you’re interested in donating!

 

Shapeways and ROCCAT team up to provide customized gaming gear

ROCCAT-Logo_Standard_Horizontal-a_Slogan_black

Today we’re excited to announce a new partnership with ROCCAT that will enable gaming enthusiasts to customize gaming gear and create ROCCAT devices unique to them.

Based in Germany, ROCCAT produces innovative, high-quality products for the gaming community. Their input devices, headsets and accessories precision along with eye-catching design and their products are consistently ranked as world-class in the industry. With this partnership, ROCCAT is able to offer a new level of aesthetic by allowing customers to customize 10 of their button sets and have them 3D printed by Shapeways.

All of the products are designed with a focus on customization, so you can use our CustomMaker feature to personalize your pieces and make your ROCCAT device unique to you. You can also extend the functionality and aesthetics of your device using these custom 3D printed parts.

As of launch, their shop has 10 customizable pieces but the number will continue to grow and gaming enthusiasts will be able to personalize and buy even more accessories.