 Sometimes it's easier to draw lines. Sometimes it's easier to sketch. Needs to be dynamic. You want to be able to make an adjustment to your decision, because rarely are people placing incorrectly immediately every time. Want it to be fast enough that you're not sitting there waiting. And that's supposed to be border precise. And what I mean is where you draw the line is where the boundary is. So you're not limited by the topology underneath. Predictable and stable, meaning what you see in your visualization is what you get when you actually get the result and stable and doesn't crash. So I made this little chart of how I consider all these. And our custom solution, I think, ended up being pretty well, except that it's all in Python. And so its stability is dependent on the intelligence of its developer. So that's fair. Everything else, I have some videos that we don't need to watch. But that outlines some of the difficulties in each of these. So those are there for your reference. But the short version of those can be summarized here. And why I decided to invest so much time and effort into just one step is because there's so many requirements not handled by the built-in Blender tools. However, with one exception. So the sculpt mode limitations are good enough that it's still extremely valuable to leverage sculpt masking for segmentation. And this was solved with add-ons before. And I've got some references in the notes of the slide that you can check. But this is becoming built into trunk, especially in the 2.8 sculpt branch where you can paint a region and then split it off. And so I'm really excited about the direction that that's headed. In this example, we're using a custom modal operator to leverage Blender's sculpt masking tool to segment pieces of a mesh. So it's great in that it's very quick. I believe this is also graphics card optimized. The brush behavior. We're going to skip this because of time. Short story, you paint it and you get that region out. We'll watch this on mute. And I'm hoping we can fast forward a little bit. So I already demonstrated. And this is freely available on my GitHub account. This is the base operator that I then skin and add the UI to to use in our prescribed workflows. But this is kind of my prototype of a segmentation module and how I'd like it to work where you can sketch, you can draw, you can paint. And the big thing, which if I had a toolbar here, I would, by the time I get there, it's just going to be there, where you can paint your regions. And then after that region is painted, the border is interpolated. And you can move freely between painting and sketching and boundary marking. So in that case, we're boundary marking. Well, we're committed now. So I'm wondering if it's actually streaming slowly. Or if that's just how slow I work. I think we're definitely having a. OK, we're going to have to, we'll cover that at the end if there's any more questions about that. And then the second thing I wanted to talk about was offset surfaces. And these are so common that, I mean, they're just like a fundamental part of making 3D printed orthotics and things. And the main ways you can do that, you can manually extrude your geometry. You can use the solidify modifier or the displace modifier. And that's kind of what's built in. And then the big problem with it is self-intersecting geometry. And occasionally you get little edge artifacts. So in this situation, this is the solidify modifier. And anywhere you have convex and concave geometry close to each other, you get these self-intersections, which make the mesh virtually unusable in 3D printing or Boolean operations. And so we solved that by using a volumetric approach, which you can't create self-intersections. And we use Metaballs. And I know I've got some Metaball fans in here. So that link right there is a link to Alex's presentation about the basics of how they work, because he has a great introduction. So we can skip this video. That's kind of about Metaballs and jump right to the results that we get and kind of how we did it. So on the left is our solidify modifier. And on the right is our Metaball-generated offset surface. And it's great that we don't have any self-intersections. But beyond that, we have some things that we really have to wrangle to make them behave. So the offset surface, kind of the thickness of it depends on how closely you pack the Metaballs together. So if you're trying to get a precise offset, you can't just add the same radius of Metaball, or you won't get what you expect. It's a little bit non-uniform, because we're just jamming a whole lot of spheres all over the surface. And so we do some smoothing and some raycasting and correction to try to get it as uniform as possible. But most of our applications, we don't need extreme precision on being exactly a certain distance offset from the anatomy. You'd like to get it within a 10th of a millimeter, but beyond that, in this case, it's not necessary to go beyond that. And the other thing is that the borders are a little bit rounded. So the Metaballs here, it's hard to create a very stiff squared off. Result, which for my application is fine. That's actually a bonus, but if you're just characterizing it, that could be non-desirable. So how do we scatter these Metaballs? In a way that gives us a result that we want is I take the mesh patch that you create with your segmentation, and then I use the dynamic topology detail flood fill operator to evenly distribute points. And generally that works pretty well. And the way I control that is if you plot one over your Dyntopo resolution versus the average edge length, so I just took some models and made a little scatter plot. And it looked pretty linear, so I stopped there. And so I use this little equation to pick my Dyntopo resolution based on my target edge length. And then the target edge length is your target spacing between Metaballs. Okay, so then I've repeated the same process, but with the offset surface based on the edge length. And so then I can kind of, I've got two little equations that I can play with and get approximately even offset surfaces. So I've been doing, I first started with that in 2016, and then just been slowly improving that. And I would have presented it earlier, but I wasn't able to get to the conference, so. Because the punchline at the end of this is that all this work's about to be completely made irrelevant by 2.81, which I love. So it's great that we did it. It got us three years of doing something that wasn't possible otherwise. So we use this to hollow 3D printed models. So you save, and this stuff is a couple of dollars per milliliter. So you save a lot of costs by hollowing these out. We use MetaBalls to create these print rafts. So like this raft back here allows you to stack a lot of models on the build platform and print them in a different way. So we use it, we really abuse MetaBalls, and I love them, but soon they won't be as necessary. Okay, I'm gonna pause here. It's 4.30, and if anyone's going to, I think there's another talk in the theater, I was gonna pause and let anybody out who's had enough. And yeah, thank you. All right, so I've got a few more slides for the people who want to stay. MetaBalls doesn't guarantee that you don't have something to say. Okay, it makes it highly unlikely. I mean, we have this with different kinds, because we have different kinds of data for what we are producing is being emissions, and it depends on the resolution. So if we really try to nail every single little aspect in your data, you are going to get agreed, okay. That's fine. For completeness, that's true. So the comment is that if you try hard enough, you can get self-intersections with MetaBalls. And that's, okay, so at this conference who I'm watching is listed there, so check that out if it's interesting. Some of the areas where I think 2.8 and 2.8 with add-ons, I mean, offset surfaces are gonna get extremely easy with the open VDB remesh modifier. So offset, sorry, solidify modifier plus VDB remesh, done. So it's gonna be fast, it's gonna be built-in, very scriptable, so all my MetaBalls, but the thing it can't do, to my knowledge, is if you make a hollow object, so it has thickness, but it's got an interior void, VDB will keep it solid. So our hollowing of 3D printed models is still gonna require MetaBalls. Okay, and jumping back to my goals when I set out. We're definitely accomplishing number one, the feedback has been good. We're less than a tenth, sometimes a 20th of the cost of some of the same softwares that can do these night guard designs. We've supported the Blender Foundation, and I wanna talk a little bit about the other things that we've made that we've released. So it was a super, super honor to have my logo up there on the screen in the keynote this morning next to a lot of big names, and what we do is we contribute 10% of our off-the-top sales. So before costs anything, 10% goes straight to the Blender Foundation, and I think that's pretty significant considering the amount of work it takes. So the question is, is it gonna be sustainable? I don't know. The first two years are it's enough to continue the hobby, and once you reach a steady state, we'll see if we can actually keep people paid, keep developing, and at the moment it's been completely rewarding from the project point of view, and we'll find out. So that's the only question mark on the goals. And now let's show some cool stuff, so let me... So these are some of the add-ons that we've developed that are freely available, and who I worked with, and when we did it. So I think I'd like to show the MetaBall sculpting, the particle sculpting, and then maybe Polytrim and the segmentation, or what y'all wanna see, or if we wanna, so we've got 12 minutes before we probably need to clear out for the next presenter, maybe 15 if we're depending on how eager they are. So I'll pause and ask, is there anything that from what I showed particularly interests you? Or do you wanna leave it up to me? Okay, here we go. Yes, so my users are predominantly dentists and dental lab technicians. Many who have zero 3D experience sometimes, sometimes a little if they came from a commercial package. Okay, so the question was how hard is it to convince dentists? I don't really don't do any marketing, so most of my convincing is done, it's pre-filtered, people who come to me have already convinced themselves, so I don't know. My big struggle is someone who really wants to, is training them and getting them to where it is user friendly and where the effort is worth, becomes worth it in the time savings. The reason we wanna design these appliances like this is the traditional method. There's so many places for error, model, plaster, a polymerization of the acrylics that shrinks, so it's a real bear of a procedure even though it's very simple. It's time consuming and it shouldn't be that expensive of an appliance, it's a piece of plastic, so with 3D printing, we've made it a lot more predictable. The fits are better, so we're getting there. They're not as durable, so usually the convincing happens ahead of time, so by the time they get to me, I'm not trying to tell someone why or how, why they should be doing something. I'm saying if you want to do this, here is one way how, so that's it. One more time? No idea. We have about 400 customers and I don't know how, I know about, we have probably 20 hardcore users using it frequently in a production environment. Another group of people who use it occasionally and another group of people who purchased it, maybe tried it, forgot about it, their printer broke, they didn't like it. It depends on your interpretation, so right now I have a flag where it's not for clinical use, but what a doctor does in their own practice is unregulated. Now for an occlusal, a bruxism appliance is, they have a code, but it's not classified, like a class one, class two, or a class three device, so if you were to try to use these devices to treat sleep apnea or do anything where you jump into that class two, then yes, definitely. Right now the area is gray, so we say, not for clinical use, what you do with it is up to you, you'll notice there were no clinical pictures. It's an academic and modeling application. Yeah, it's impossible to validate. Oh, and we need, y'all need to see what I'm seeing. So here we have an offset surface and then 3D teeth, and we want to blend those together in some way that looks kind of like something natural. So the first thing I'll show is our particle sculpting tool. So here we can sketch out a line and meta balls are distributed across it. And this is my favorite one. So we have a paint brush, and if you see those little particles in there, that will allow you to just paint offset surface onto whatever's underlying. We can fuse that and then come back and continue to paint on top of it. As we change the radius of the brush, particles are filled in, and those particles are evenly spaced, so that solves the packing problem. And we can, if we change the particle size and make it really small, there we go. Now we've got a super dense packing, although that might be overwhelming the, there we go. So overwhelming the solver. And then you can play with the resolution and everything. But now we've got kind of a nice interactive, and if we come back and turn this up, we can delete. So this is kind of my prototype for how I envision a volumetric sculpting application. So I use this to add wax around the teeth and use this to, so if we come back and we want it to simulate the gingiva, the gums around this tooth, we would do something like this, kind of paint here, and then that starts to look kind of like gum tissue. And if you actually, I plan to customize this where you can paint these meta balls onto the individual teeth ahead of time and then rearrange the teeth and the meta balls follow it, so you get these dynamic volume calculated, almost parametric gingiva. All right, so that's that. So can you heal bad meshes? So yes, I have a, yes, with an asterisk. So I have a meta ball remesh kind of thing where you just scatter it, you take the mesh result and then you snap it back. So that really just becomes, so open VDB remesh handled. You can use, open VDB does not close meshes actually very well. So you should use the traditional remesh which will close holes, but will not create good topology for self intersections and then VDB remesh it and then you're good to go. You have to do it at high res to keep the detail. So sometimes some decimation afterwards. Segmentation of what? Gotcha. So the pink is a, the pink is an offset surface from an optical scan of an arch with no teeth. So some, and the teeth are 3D scans of existing plastic teeth that are then processed into dentures. So another difficult task is arranging these teeth. If these teeth represent real objects that you're then going to snap into a 3D printed base, you can't have collisions between your teeth and your arrangement. And so you either have to go and check manually or in our case. And this add-on is also available from the Blender Market. My colleague Chris Gearhart, he worked with me for me for a summer. That's kind of part of our model is I am hiring people to create assets that I want to use selfishly for my corporate business. But then we release the assets to be used for other things. So the segmentation module, this physics module, the wax, everything I've shown outside of the workflow is available for at least for examination and it's not really supported, but I'll answer emails but you can get the code and play with it. And so that's part of the sustaining the ecosystem. Okay, we gotta show this. So what we've got right here is an animated loop with the physics engine running. And so when I grab and move these teeth, they are going to prevent self-intersections. And this is an older version so there's a little bit of stuttering. But what this ultimately will allow for is, imagine my curves, my splines that I was drawing earlier, you can get a proposal of where you want your teeth and then use the physics solver to make sure that your digital proposal is reproducible with real objects. So I'm pretty excited about that because the same thing happens for an orthodontic modeling. If you're trying to move teeth, you can't move a tooth through itself. So we can imagine a system where you're planning the rearrangement of the teeth and you're solving the physics collisions along the way so that you don't create an impossible trajectory for the tooth in your treatment. Again, that's something I can't touch because you're definitely in a regulatory space if you're trying to sell a product. But from a research point of view, it's have at it. Okay, I think those are probably the two biggest ones I wanted to show. And I guess if we hide everything, I can show at 1044, we probably need to let the next presenter come in unless there's something burning that you saw from before that you wanna know more about. Oh yeah, okay, I have to return for a wedding. So I'm leaving early tomorrow morning. So if you wanna talk to me in person tonight, tonight. But email all my information's on the Blender Conference presentation page. Thanks John.