Note: Because this is an ongoing series, viewers will not receive a certificate of completion.
Skill Level Intermediate
- [Instructor] Welcome, I have my exercise file open already. In this video, we're going to be looking at the Chromodoris plugin for Grasshopper. Specifically, I'm using version 0.0.9, which is the initial release of Chromodoris. And you can download Chromodoris from the food4Rhino website. Chromodoris is interesting because it uses voxels to generate mesh surfaces. In a prior video we looked at the intralattice plugin for generating space filling lattices, we're going to do a similar process here with Chromadoris. You'll see that the results and the speed of the calculations are very different. So, to start us off, I have a volume here. It's a Brep volume. So I have a top surface, a bottom surface, and then the edges are lofted to create a closed Brep. Chromodoris, I'm going to first create a voxel solution using sample voxels. And I'm going to build an isosurface using the voxel solution. Then I'm going to smooth that isosurface. So this is our Chromodoris workflow, these three components. In order to do the voxel solution, I need a whole bunch of points, the points of the samples that the voxels are built around. And voxels are like little boxes. So, you can imagine you're creating a grid in the 3-dimensional space of the model, and then for every cell within that grid, you're saying is this inside or outside of the model? And it uses the point sampling to determine what's inside and outside. So, let's create some points within this Brep. I'm going to go to Vector, Populate Geometry, and that gives me points, but I want to create a space filling lattice within this Brep. So, I actually want to use these points to create a voronoi pattern, and then I'm going to populate the edges with a denser set of points. So, I go to mesh, 3d voronoi pattern. And we're using voronoi just because it's an interesting lattice structure, the nodes will have different numbers of connections, so this would be difficult to do using a system like intralattice, where you need a lattice that is consistent, that is the same throughout the space. So, now we have a bunch of cells, we're going to clip those back. So, I'll go to intersect. And this is the solid intersection component. We'll plug in our cells from our voronoi pattern. And then we'll plug in the original Brep, clip them back. And this calculation is the one thing in the script that will take a second or two. So, 6.7 seconds to calculate that intersection between the voronoi cells and the original Brep. Now, I'm going to get the edges of these cells. So, put a surface, Brep edges. Now, I have all my edges, I want to sample these edges to get points. So, I'll go to Curve, Division, divide by length. I'm going to grab a slider here. Let's set this slider to go from three to six. I want to make sure I don't make values that are too small, because it will generate so many points Grasshopper could crash. Now, you can see even with a value of four, I have about 8,500 points. So, that gets really small, the number of points goes way, way up. So, now I have a series of points, I'm going to plug those points, and we'll flatten them first. We'll plug those points into our voxel generator. Now, the values I care about for the voxels, I need to specify the voxel size, I need to specify the effective range. So, the voxel size is how big the boxes are within the grid. And the range is how far away from each voxel the algorithm looks to determine, or enclose the volume of voxels. So, I'm going to grab a math, and multiplication. So, I'm going to plug the length value that I'm using to generate the points into the voxel size. So, the voxel size matches the spacing of the points, and that means we'll get a fairly efficient voxel solution. Then, we're going to multiply that length times 2.5. And this is something you can play around with, but generally, if you're going to change the size of the voxels, you're probably going to change the effective range as well, so, we'll have those two things dependent upon each other. So, plugged into the effective range, and we get a bounding box, the box represents the grid. Everything inside of here is being considered in the voxel solution. Let's plug that box in, we'll plug in the voxel data into our isosurface component. And here we want to say what value is the sample at. Basically, where do we set the boundary between inside and outside within this grid. So, grab another slider. We'll set this to be about 20. Sorry, not 20, .2. And here we have a lattice, and if we want this to get smaller we can just adjust the sample value up and down, but we do need to be closed, right? So, if we make the sample value too high we'll get holes in the mesh. You can also adjust the size of the voxels. So, if the voxels are big we get a very coarse mesh, if we adjust the size down we get a finer mesh. So, we can adjust that voxel size down. And then adjust the actual sample value. So, now we have a mesh here, and we can plug this mesh into our smoothing algorithm. And the last slider we need will set the number of iterations that we smooth. Set that to like, six. So, here is our smoothed lattice. And there's a lot of control you have here, and you can see I can actually adjust this on the fly, and see it changing, which is pretty amazing. It's amazing in that these two components are solving one is generating the mesh lattice, the other is smoothing it, in milliseconds. So, this Chromodoris workflow is extremely fast in comparison to some of the other tools that let you fill a space with a lattice and then mesh it.