A multi-material lattice fabricated by inkjet 3D printing. A gradient between the rigid green struts and flexible blue joints enables precise control over how the structure deforms and dissipates energy on impact. (Image: Charles Wade, MACLab, CU Boulder)
Tech Briefs: What got you interested in this project?

Charles Wade: I’ve always been interested in 3D printing in general, especially the design side. Growing up I struggled to understand engineering, especially math, but 3D printing provided a tactile and visual way to do it. So, that's what got me into this — I can do what I do as a computer scientist, write code, and also fabricate something in the real world that I can touch and feel.

Tech Briefs: What got you to this idea?

Wade: We had worked for a long time with multi-material 3D printers — inkjet systems as well as desktop material extrusion printers. But the problem we kept running into was the design side was really hard. The printers had a lot of capability, but it was difficult to come up with the designs for them. In this specific case, we wanted to figure out how we could better link the design tools with the actual fabrication technologies.

Tech Briefs: So, what looks special about your software is the way you can blend different materials into each other rather than having hard boundaries. Could you give me an idea of how you do that?

Wade: We make that happen by using functions, standard building blocks, because we want this to work across a lot of different systems that make objects in a lot of different ways. The best way to express how we can blend materials together is to think about it like you would do with a graphing calculator. For example, if I were going to say an object is composed of two materials and they mix together, I would describe them as two relative volume fractions: 50 percent material A, 50 percent material B. Blending is really a form of mixing. If I have two materials and I blend them together, I'm going to pick some ratio to blend them by.

Tech Briefs: But with your process, the two materials are in different locations.

Wade: Yes, that’s correct. A lot of existing design tools would be as simple as saying, here are two different objects, two different solid bodies. This is material A, this is material B. Our tool allows you to say, here are two base materials, let's go ahead and mix them together in different ratios.

Tech Briefs: So, you vary the ratio as you go from one part of the object to another?

Wade: Yes, exactly.

Tech Briefs: I read that your approach eliminates the need to write specific code for each different project. Could you give me an idea of how it does that?

Wade: We noticed that a lot of researchers, who wanted to make multi-material objects would end up writing one-off scripts for every different design. Somebody would have a MATLAB script or a Python script, and they'd sit down and write that for every single thing — there wasn't a lot of reusability. If you wanted to reuse a specific blend you couldn’t share it from one engineer to another. Our system, on the other hand, establishes a shared method for doing multi-material designs — it's basically a library, a Python library, for coding your objects. We express the methods as code rather than the traditional method of doing 3D design, where you sketch something out in 3D software. Doing it as code leverages the benefits we see in normal software engineering, where it can be shared very easily across different users.

Tech Briefs: Does a designer then have to understand your coding?

Wade: Yes, but we try to make that as easy as possible. We provide a library of basic functions and shapes. You can import existing objects, and then there are some basic operations that you can use to say, I want this material here, I want that material there, and I'd like to blend between the two of them.

Tech Briefs: It also said that you can change one small variable and that'll update the whole design.

Wade: Yes, so that's another benefit of it being code-based. Traditional tools like SolidWorks, or 3D modeling tools, tend to be very fragile. You can create variables in your design, but as soon as you start tweaking them, you find that they collapse very quickly because they just aren't meant for parametric design. But being code-based, since it's a compiled setup, it's a much more logical way of thinking about your objects. So, you can have a small set of variables that affect hundreds and hundreds of lines of code that build an object, and it will all be stable — you tweak things and it stays together.

Tech Briefs: I also read that you can apply specific mechanical properties to different parts of the structure.

Wade: Because we have the ability to create different combinations of materials, we can mix materials with dissimilar properties. For example, with polymers we can combine something very stiff with something very soft, with a whole gradient of materials in between. So, we can have compliant mechanisms that might be flexible in one region but rigid in another.

One of the application areas for that is in soft robotics. We'll fabricate soft robotic actuators — fingers for gripping things. If you think about your finger, it has soft parts, but it also has very rigid bones. So, we want to have that flexibility and the transition between these different materials to do that.

Tech Briefs: Are there other applications you're thinking of?

Wade: Another area that we have done some work in using this tool is in 3D printing pre-surgical planning models. These are models that don’t just look like, but also feel like, analogs to body parts. You can build a training model so a surgeon can practice inserting a needle into a lung. We can use different combinations of soft and hard materials to simulate the skin, the muscle, the pleura, all the different parts of a chest, for example. But we need to be able to have full control of the material properties to be able to create these designs. Because one material alone isn't going to work, we need different combinations and structures to get that kind of tactile feel.

Tech Briefs: Can you use this with different kinds of materials, perhaps metals?

Wade: Yes, the system is agnostic toward the actual fabrication modality. We've shown this with inkjet systems; we've shown it with desktop polymer systems. We haven't demonstrated it for metal explicitly yet, but there's nothing in the method that prevents that from happening. This just works with any G-code-based 3D printers. So, yes, you could apply it to a metal system. There are some different commercial systems out there now that let you mix different metal powders together as you're printing, to do alloys and things like that.

Tech Briefs: How close are you to implementing this outside of the lab?

Wade: It's an open-source project. We have several different users that are currently employing this outside of our group. We also use this tool heavily internally, but we have some outside collaborators and we're also looking at metal systems.

Tech Briefs: Anything you want to add?

Wade: One of the highlights of the project is that it is an open-source piece of software. So, we're hoping that other people in the community see it and start adopting the tool and using it. We think it can really accelerate research, especially because of the complexity researchers can achieve in designs that would take many, many more hours to do with traditional tools. We're also hopeful that some other entities, maybe on the industrial side, start picking this tool up, looking at it, and seeing they have these awesome 3D printers, and they could achieve much more with them by using our tool to improve their design practices.



Magazine cover
Tech Briefs Magazine

This article first appeared in the December, 2025 issue of Tech Briefs Magazine (Vol. 49 No. 12).

Read more articles from this issue here.

Read more articles from the archives here.