WEBVTT

00:00.000 --> 00:13.600
My name is Bernat. I'm part of the Snap and Microlux Teams. Snap is being developed

00:13.600 --> 00:19.920
in two different places. One is at SAP, a company, a European company with at Quateries

00:19.920 --> 00:26.000
and Germany, the other side of the team is on the other side of the ocean in California

00:26.000 --> 00:33.120
in the University of Berkeley, California. And today I want to talk to you about the new

00:33.120 --> 00:39.600
extension that I've been developing for Snap. Inspired on modification of Snap that with

00:39.600 --> 00:46.160
it a bunch of years ago, in collaboration with Eric Rosenbaum from the MIT and Duke's

00:46.160 --> 00:51.360
co-scochets from the Pratt Institute in New York, it was a modification of Snap to generate

00:51.360 --> 00:56.080
3D geometry. And now we've turned it into an extension of Snap. So now it's part of Snap.

00:56.080 --> 00:59.680
You can load it right from the idea. It's not a separate project anymore.

01:02.080 --> 01:08.480
So how does it work? As I said, it's inspired in build blocks. And I don't know if any of you

01:08.480 --> 01:18.400
knew build blocks apart from the team members. So basically in build blocks we had a lot of different

01:18.400 --> 01:23.120
shape primitive. You could make a sphere. You could make a cube. You could make a right. And yet

01:23.120 --> 01:30.000
can I were discussing how we could rethink this way of generating geometry. And we came up with

01:30.000 --> 01:35.280
the idea of having just one primitive and have it be very powerful. Have it be very versatile.

01:35.280 --> 01:39.440
And that primitive we came up with was an extension. We did have an extension in a little

01:39.440 --> 01:44.560
block space. It was a very crude extension, not very versatile. And we decided if we made

01:44.560 --> 01:50.160
an extension very versatile, we might be able to generate all kinds of geometry with just

01:50.160 --> 01:56.640
one operation. So let's talk about the video. The middle is our character. It's a cartoonish

01:56.640 --> 02:04.240
character. And this character can move around in 3D space. It says the 3D analog to the

02:04.240 --> 02:11.280
logo turtle. Turtles can only move on the ground on the 2D space. But beetles, they can dig

02:11.280 --> 02:18.480
underground and they can fly. So they have the capacity to move in a third dimension. What's

02:18.480 --> 02:26.320
extrusion? What extruding is pushing a 2D shape into the 3D world. It's generating volume

02:28.080 --> 02:37.120
by transforming a 2D shape into a prism. Why moving the middle can generate it? You can think

02:37.120 --> 02:44.640
of it as a point is a 0D object. So it's just a point. But with a curve you have to specify which

02:44.640 --> 02:50.560
points are contained in this curve. We have a bunch of default ones and just the semi-circles.

02:50.560 --> 02:56.480
So you don't have to enter the point of several circles. But if you want to create your own

02:56.480 --> 03:04.400
surfaces, you can do so by using a custom list of points. Extremely a polygon creates a volume.

03:04.480 --> 03:09.680
If it's a closed polygon and you extrude it, then we assume that you're trying to generate a volume,

03:09.680 --> 03:17.280
a caped extrusion. And of course, again a polygon can also be defined as a list of points.

03:17.280 --> 03:25.680
You can generate your custom geometry, whatever way you like. Other operations that you can apply

03:25.680 --> 03:32.720
to extrusion are things like scaling. You can scale things in both dimensions or in

03:34.400 --> 03:40.320
in both dimensions at the same time or in different ratios for each dimension. That's how you

03:40.320 --> 03:47.440
can squish and elongate shapes to get different sorts of extrusions. You can also translate the

03:47.440 --> 03:53.200
extrusion base. So the middle is sort of wearing this extruder, this header of the Play-Dow

03:53.200 --> 04:00.480
press. But you can ask the middle to move it away from their body. And this lets you generate

04:00.480 --> 04:07.520
different kinds of extrusion as well. This may seem arbitrary, this may seem like we just made

04:07.520 --> 04:14.080
this up. But this operation scheme as an necessity is when we're trying to replicate shapes

04:14.080 --> 04:18.800
from the real world or mathematical shapes or shapes that we wanted to create. And we found that

04:18.800 --> 04:23.520
extrusion alone was good, but maybe we need it also scaling, maybe we need it also

04:24.480 --> 04:31.200
offset to be able to generate all those shapes. So what else, if you only have extrusion,

04:31.200 --> 04:36.880
then extrusion must be very versatile. So we also allow you to programatically generate

04:36.880 --> 04:43.040
this extrusion basis. So you can use regular turtle geometry. That's what we're doing here.

04:43.040 --> 04:47.280
And we're logging the positions of the snap sprite. I don't know if everyone is familiar with snap.

04:47.280 --> 04:53.680
It's very similar to scratch. You have a stage with sprites. You have a scripting area and a bunch

04:53.680 --> 05:01.280
of blocks. This object here can move into this space. To this space is easier to think of.

05:03.520 --> 05:11.040
And so if I wanted to create, I don't know, a pentagon, I could just repeat five times.

05:11.040 --> 05:22.560
You know, if I didn't even want to think, I could do 360 divided by five. And then I could

05:22.560 --> 05:30.400
put my pent down and put my pent up in the end. And it's rather easy to create to the shapes in

05:30.400 --> 05:37.360
snap. So the idea behind this is you will know how to create your 2D shape. So we let you

05:37.360 --> 05:41.280
use that to the shape as an extrusion. But you'll three very simple challenges. A cube,

05:41.280 --> 05:48.880
a cylinder in a sphere. To make a cube, let me first open that's really window. This is our

05:48.880 --> 05:56.800
bit of here. And to make a cube, the only thing we need to do is we start extruding a square.

05:57.920 --> 06:03.440
You can see the square here. By default, all shapes have a base dimension of one unit. In this

06:03.440 --> 06:11.440
case, the side of the square is one unit. And I will just move one step. And there's your cube.

06:12.080 --> 06:17.120
So this used to be a primitive in middle blocks. Now it's two blocks, but the versatility of

06:17.120 --> 06:24.240
the extrusion makes up for it. So how would you make a cylinder here? Well, it's pretty easy, right?

06:24.240 --> 06:30.400
You just have to extrude a circling step and move. There's your cylinder. Turns out there's

06:30.480 --> 06:37.600
another way to think about things. Once you have zero step extrusion, but we'll see that

06:38.640 --> 06:45.040
in the next challenge. So how would you make a sphere? Well, a sphere is kind of complicated, right?

06:45.040 --> 06:50.880
How do I extrude something into a sphere? Well, that's where zero step extrusion comes in, right?

06:51.520 --> 07:01.520
If instead of moving while I'm extruding, I just rotate the x axis. Let's say I tend to

07:01.520 --> 07:09.120
grease so the angles come out. So the visions come out easy. This is what it's 36 times.

07:10.960 --> 07:18.480
And I reset. Let me first show you what the middle does. It rotates. It does a full turn, right?

07:18.560 --> 07:28.480
360 degrees. If I start extruding and then move zero steps after each one of these rotations

07:28.480 --> 07:36.160
and zero steps also at the end, I get a sphere. Yeah? Because I'm stamping on space while rotating.

07:36.160 --> 07:40.320
Does it make sense? Okay, so this is how you get some of the

07:41.280 --> 07:47.440
primitives that we used to have in middle blocks into. Again, the primitives got a little bit more

07:47.440 --> 07:50.880
the plus solution. It's got a little bit more complicated, but it allowed us to create

07:50.880 --> 07:56.000
different shapes that we were not able to create in middle blocks. So personalizing the trade-off

07:56.000 --> 08:04.000
is great. So let's see. How would we create slightly more challenging shapes such as a volume

08:04.080 --> 08:17.360
less tube? A volume less tube would be 80 with zero thickness walls. Of course, if I

08:17.360 --> 08:23.760
start extruding a circle and I move, as I said in the beginning, this is going to create a volume.

08:24.480 --> 08:31.840
I don't want these two cups, right? I do not want them. By having the x scale

08:32.640 --> 08:40.320
be very little and the y scale be very high, even higher than not five. And doing the exact

08:40.320 --> 08:48.320
same thing. And there's your oops, what do I do again? I moved too little, right?

08:49.280 --> 09:07.280
Let's do, oh, no change, let's set, sorry, set, set, set shapes scale. Yeah, there we go.

09:08.480 --> 09:16.720
Okay, so there's in the tube that has actual walls. And what about the cone? A cone is an

09:16.880 --> 09:24.480
interesting one. A lot of shapes have actually two different ways of being generated. The extrusion

09:24.480 --> 09:34.800
way or the revolution solid way. To make a cone, you probably have thought of, you know, having

09:34.800 --> 09:42.000
a slanted line and turning around these axis, right? Doing zero steps extrusion. It would be similar

09:42.080 --> 09:48.800
to this cone, but with a slanted line. We could also lead with a triangle. We could have a triangle

09:50.080 --> 10:00.720
and rotate by moving zero steps. There's your cone, right? But there is another way. The other way

10:00.720 --> 10:08.960
is to use the scale. We start extruding a circle and now we move zero steps just to, you know,

10:08.960 --> 10:15.840
stamp this circle in space. And now the trick is that we set the shape scale to zero.

10:17.120 --> 10:22.400
If the scale is zero, what we have now is a point, right? So if we now move, we are extruding

10:22.400 --> 10:29.760
this big circle into a point. And that's what a cone is, right? So if I now move one step,

10:29.840 --> 10:39.600
there's your cone. Okay, so this, this were a few very short examples of how to think

10:40.160 --> 10:47.200
in extrusion and 3D geometry from a first person perspective, from a turtle's perspective.

10:47.200 --> 10:52.080
Now let me show you a bunch of examples of things that we've created and printed with this

10:52.160 --> 10:59.680
extension. This was a classical middle blocks example that is, well, it was one of the first

10:59.680 --> 11:04.240
things that we made with middle blocks and we printed and I thought that I would like to print it again

11:04.800 --> 11:12.080
with a new extension. You can also design actual things. This was traditional very hard to do with

11:12.080 --> 11:19.280
middle blocks with all this new extrusion capabilities. You can actually, this thing here is one of

11:19.600 --> 11:27.280
the examples in a 3D card example of this book. So it's meant for us. This is also for the talking

11:27.280 --> 11:36.320
Granada. This is a shape of a tile that you can see all over in Granada. And what we did is we

11:36.320 --> 11:42.880
printed a mold and I had a friend of mine who is a ceramist, cut tiles and bake them in the oven

11:42.880 --> 11:46.800
for me. So we could recreate the actual tiles that you can see in Granada.

11:49.840 --> 11:55.120
And then this is my favorite one. It's my book and it's a sharp piece. It's a sharp inksky

11:55.120 --> 12:03.280
fractal book and for my book shelf. And I think that's all. Thank you and I think we have three minutes

12:03.280 --> 12:07.680
for questions.

