My name is Bernat. I'm part of the Snap and Microlux Teams. Snap is being developed
in two different places. One is at SAP, a company, a European company with at Quateries
and Germany, the other side of the team is on the other side of the ocean in California
in the University of Berkeley, California. And today I want to talk to you about the new
extension that I've been developing for Snap. Inspired on modification of Snap that with
it a bunch of years ago, in collaboration with Eric Rosenbaum from the MIT and Duke's
co-scochets from the Pratt Institute in New York, it was a modification of Snap to generate
3D geometry. And now we've turned it into an extension of Snap. So now it's part of Snap.
You can load it right from the idea. It's not a separate project anymore.
So how does it work? As I said, it's inspired in build blocks. And I don't know if any of you
knew build blocks apart from the team members. So basically in build blocks we had a lot of different
shape primitive. You could make a sphere. You could make a cube. You could make a right. And yet
can I were discussing how we could rethink this way of generating geometry. And we came up with
the idea of having just one primitive and have it be very powerful. Have it be very versatile.
And that primitive we came up with was an extension. We did have an extension in a little
block space. It was a very crude extension, not very versatile. And we decided if we made
an extension very versatile, we might be able to generate all kinds of geometry with just
one operation. So let's talk about the video. The middle is our character. It's a cartoonish
character. And this character can move around in 3D space. It says the 3D analog to the
logo turtle. Turtles can only move on the ground on the 2D space. But beetles, they can dig
underground and they can fly. So they have the capacity to move in a third dimension. What's
extrusion? What extruding is pushing a 2D shape into the 3D world. It's generating volume
by transforming a 2D shape into a prism. Why moving the middle can generate it? You can think
of it as a point is a 0D object. So it's just a point. But with a curve you have to specify which
points are contained in this curve. We have a bunch of default ones and just the semi-circles.
So you don't have to enter the point of several circles. But if you want to create your own
surfaces, you can do so by using a custom list of points. Extremely a polygon creates a volume.
If it's a closed polygon and you extrude it, then we assume that you're trying to generate a volume,
a caped extrusion. And of course, again a polygon can also be defined as a list of points.
You can generate your custom geometry, whatever way you like. Other operations that you can apply
to extrusion are things like scaling. You can scale things in both dimensions or in
in both dimensions at the same time or in different ratios for each dimension. That's how you
can squish and elongate shapes to get different sorts of extrusions. You can also translate the
extrusion base. So the middle is sort of wearing this extruder, this header of the Play-Dow
press. But you can ask the middle to move it away from their body. And this lets you generate
different kinds of extrusion as well. This may seem arbitrary, this may seem like we just made
this up. But this operation scheme as an necessity is when we're trying to replicate shapes
from the real world or mathematical shapes or shapes that we wanted to create. And we found that
extrusion alone was good, but maybe we need it also scaling, maybe we need it also
offset to be able to generate all those shapes. So what else, if you only have extrusion,
then extrusion must be very versatile. So we also allow you to programatically generate
this extrusion basis. So you can use regular turtle geometry. That's what we're doing here.
And we're logging the positions of the snap sprite. I don't know if everyone is familiar with snap.
It's very similar to scratch. You have a stage with sprites. You have a scripting area and a bunch
of blocks. This object here can move into this space. To this space is easier to think of.
And so if I wanted to create, I don't know, a pentagon, I could just repeat five times.
You know, if I didn't even want to think, I could do 360 divided by five. And then I could
put my pent down and put my pent up in the end. And it's rather easy to create to the shapes in
snap. So the idea behind this is you will know how to create your 2D shape. So we let you
use that to the shape as an extrusion. But you'll three very simple challenges. A cube,
a cylinder in a sphere. To make a cube, let me first open that's really window. This is our
bit of here. And to make a cube, the only thing we need to do is we start extruding a square.
You can see the square here. By default, all shapes have a base dimension of one unit. In this
case, the side of the square is one unit. And I will just move one step. And there's your cube.
So this used to be a primitive in middle blocks. Now it's two blocks, but the versatility of
the extrusion makes up for it. So how would you make a cylinder here? Well, it's pretty easy, right?
You just have to extrude a circling step and move. There's your cylinder. Turns out there's
another way to think about things. Once you have zero step extrusion, but we'll see that
in the next challenge. So how would you make a sphere? Well, a sphere is kind of complicated, right?
How do I extrude something into a sphere? Well, that's where zero step extrusion comes in, right?
If instead of moving while I'm extruding, I just rotate the x axis. Let's say I tend to
grease so the angles come out. So the visions come out easy. This is what it's 36 times.
And I reset. Let me first show you what the middle does. It rotates. It does a full turn, right?
360 degrees. If I start extruding and then move zero steps after each one of these rotations
and zero steps also at the end, I get a sphere. Yeah? Because I'm stamping on space while rotating.
Does it make sense? Okay, so this is how you get some of the
primitives that we used to have in middle blocks into. Again, the primitives got a little bit more
the plus solution. It's got a little bit more complicated, but it allowed us to create
different shapes that we were not able to create in middle blocks. So personalizing the trade-off
is great. So let's see. How would we create slightly more challenging shapes such as a volume
less tube? A volume less tube would be 80 with zero thickness walls. Of course, if I
start extruding a circle and I move, as I said in the beginning, this is going to create a volume.
I don't want these two cups, right? I do not want them. By having the x scale
be very little and the y scale be very high, even higher than not five. And doing the exact
same thing. And there's your oops, what do I do again? I moved too little, right?
Let's do, oh, no change, let's set, sorry, set, set, set shapes scale. Yeah, there we go.
Okay, so there's in the tube that has actual walls. And what about the cone? A cone is an
interesting one. A lot of shapes have actually two different ways of being generated. The extrusion
way or the revolution solid way. To make a cone, you probably have thought of, you know, having
a slanted line and turning around these axis, right? Doing zero steps extrusion. It would be similar
to this cone, but with a slanted line. We could also lead with a triangle. We could have a triangle
and rotate by moving zero steps. There's your cone, right? But there is another way. The other way
is to use the scale. We start extruding a circle and now we move zero steps just to, you know,
stamp this circle in space. And now the trick is that we set the shape scale to zero.
If the scale is zero, what we have now is a point, right? So if we now move, we are extruding
this big circle into a point. And that's what a cone is, right? So if I now move one step,
there's your cone. Okay, so this, this were a few very short examples of how to think
in extrusion and 3D geometry from a first person perspective, from a turtle's perspective.
Now let me show you a bunch of examples of things that we've created and printed with this
extension. This was a classical middle blocks example that is, well, it was one of the first
things that we made with middle blocks and we printed and I thought that I would like to print it again
with a new extension. You can also design actual things. This was traditional very hard to do with
middle blocks with all this new extrusion capabilities. You can actually, this thing here is one of
the examples in a 3D card example of this book. So it's meant for us. This is also for the talking
Granada. This is a shape of a tile that you can see all over in Granada. And what we did is we
printed a mold and I had a friend of mine who is a ceramist, cut tiles and bake them in the oven
for me. So we could recreate the actual tiles that you can see in Granada.
And then this is my favorite one. It's my book and it's a sharp piece. It's a sharp inksky
fractal book and for my book shelf. And I think that's all. Thank you and I think we have three minutes
for questions.