Live CEOing Ep 756: Language Design Review of Sound & Vision and Discrete Computation for 14.0

Wolfram Language v14 design review covering image segmentation, alpha channels, and 3D texture mapping. The team debates whether segmentation should return label matrices or masks, how to integrate SAM and YOLO into RemoveBackground, and how to handle UV coordinate systems for textures like stereographic and cylindrical projections.
Chapters
You want to wait for Roger?
Okay. Hi, guys. Well, let's see. We are continuing with another version 14 design review. This is third round of our sound and vision design, so let's get started here.
You have your documentation updated as well. Recently.
How recently?
Two out. Last hour. Two hours.
Let's do it again. Okay. Okay, so. So this is this whole question about whether we should return a label matrix or whether we should do other things here.
Yes.
And image cases. Okay.
Open the page for image cases once your docs are updated. I think those examples I've added are convincing, and I agree, very useful cases for segmented images.
Okay. Okay. Let me see here. I mean, it's pretty. It's pretty opaque. Doing this. I mean, clearly just masked image on its own should give this result. Not all.
If. If you agree, we can. I think we should come back to this. Property specification consistency, maybe in an LCC meeting. I had a section on that in the design review notebook. But I think we have more than one hour between me and Charles. I don't disagree with you. I think you're right. We should simplify it. But there is some inconsistency between functions as well.
Yeah, I mean, for right now, the fact that we're able to carve out the puppy, so to speak, is really important.
Yep.
And we don't want to hide that behind a totally obscure set of options.
True. I'm. I'm okay to update this one function to get the shortcut syntax, but I rather prefer we look at all the functions that take property specification.
Right. Okay. So what this image actually, is that. That cat, that dog is a. Yeah, it's a. It's a. It's an image that's a rectangular image, but it has what? It has an alpha channel.
It has two colors separate on it.
Well, okay. I could just do. Okay, Okay. The silhouette of the dog.
And then if you scroll down in image cases, what does it do here?
What happened here?
So this was the fourth channel is the alpha.
No, I understand that, but why do these other ones show background here?
Because they still have the background red, green and blue.
So I don't understand why the alpha channel being zero.
You're thinking. You're thinking maybe we can multiply it so that it kills that data.
No, I don't understand. Why did it. Why is it white behind the dog rather than black behind the dog?
Is. Why is the alpha channel white when the dog exists?
No, no intensity. Zero intensity.
I'm saying here, why is this background? I would have thought that when you have an alpha channel that says go to zero opacity. Oh, I see zero.
You see the white background of the notebook?
Yeah. Okay. It's going to zero opacity is the basic point.
Yes.
So if I go to this and I say edge detect this puppy, and I mean puppy, literally. Beautiful. Okay. And it's not somehow picking up background, it's really doing it, taking account of the alpha channel and everything will do that. Is that correct?
I feel lucky that edge detect did this. I. I feel like we still have to make sure alpha channel handling is correctly doing this operation in every function.
Okay. All right.
That's one of those other LCC things on my list.
Well, I haven't got to.
Yep. Yeah. Right. This is like consistent, consistent. Not consistent design, consistent implementation.
Yeah. Okay, so. So what's the question here?
Yeah, there was a discussion last time about property criteria format. Do we want to add those to image components? And when I looked at it more closely, if we return a label matrix for image components, one argument and two argument, then all of a sudden, property and those other arguments require that we return something like that. One goes to value one, two goes to value two. So the structure of the output changes significantly.
So if.
What happens if we add the property argument to image components itself, not. Not to image cases, then all of a sudden we have to go from a label matrix to that list of rules.
Well, I mean, if we give, you know, something we've done quite often in recent times is if there's a property that's different, the structure of the output could be different.
Okay.
I really don't think.
The other thing, the other thing I couldn't figure out right away is that what is a label matrix? What's that default output that we have? It didn't quite fit into any property or format of any sort.
Why would we just call it label matrix?
I mean, quotes label, label matrix the property.
Yeah, I would think so. I don't know. What other things do we have that have that return? You know, manipulate label matrices.
What other functions? Select component, delete components or delete border components. Those are the ones that manipulate label.
Matrices and highlight image that uses it.
Right.
Well, so what does delete components do?
Delete border components. Deletes components that are adjacent to the border of the image. Delete small components, automatically finds a size threshold, deletes the smaller components.
I know, I mean, but I'm trying to remember, but that just does it. Yeah. I mean, it's just doing directly on the image. Forget that the label matrix is somewhere deep Inside could.
Could accept the label matrix as well. For binary images we compute connected components, but for something like Sam, we'll have to compute the connected components.
I don't, I'm sorry. This is an image to image function.
That's an image to image or label matrix to label matrix. We should have examples. Yeah, that third basic example.
Okay, great. And I see so on a pure. Okay, so what's your point now? So image components doesn't sound like something you apply to a label matrix. Could you. You could, you could presumably apply it to a label matrix if you wanted to. Why not?
What would it do?
Well, it's a segmentation thing.
To a label. But the label segmentation ones and zeros.
It'S just a black and white image and I'm kind of making this up. But, but you know, you could. Let's say it's a piece of typography and it's either black or white and it's like three letters written out. Couldn't image components on the label matrix then turn those three separate components that are all just ones initially something different? I don't know. That's not a very good idea. Never mind. That's a bad idea. I just don't really like the name image components for that function. I think it should be called, you know, image label matrix or something. Image. I mean, I just think it's. If it's really giving a label matrix, it's a much more specific thing and it's not really an image to image operation, which is what I would expect if it's called image blah.
The other segmentation functions that return a label matrix are ending with the word components. I'm like watershed components. Clustering components.
Yeah, well, they're not our finest hours. I mean, if it was image segmentation components or something, I'd be more, you know, happier with it. It's a more technical function. That's the point. This is not a function that is a, an immediate use consumer function. It's a function that's part of an image processing pipeline. I like image segmentation components. Comments on it. It's more technical sounding and it is more technical.
It's pretty long.
So what?
But yeah, Roger, I think that sounds good.
Okay.
Tells you what it means, right?
Otherwise. Otherwise, what the hell is the. You know, I mean by, by adding, by ending it with components, you're saying the convention is that returns a label matrix. So then that's what it's going to do.
Huh.
And potentially we could have an image segmentation that does something different. And has more of these kinds of things. Yeah.
Okay. Okay, now that we are here, so we talked about image cases, image contents. I think we like that. The one question there is that now we have an object detector as well as an object segmentation method. And in fact, just recently we released Yolov 8 for segmenting objects. And I was wondering, if you look at that image cases notebook in the middle, I was wondering, some kind of a method goes to a detection method, segmentation method would make sense going forward.
I don't understand, what difference does it make to the person who's picking out the puppy?
Well, it's different backends, different methods. Do you want to segment using SAM or do you want to segment using the same yolo?
I just want the puppy. How do I get the puppy? I don't care. It's up to us to figure out whether we SAM it or YOLO it or YOLO it.
No, no method you want to be exposed?
Well, no, we can expose a method, but I don't rely on that method. I mean, we got to do it the best way we can.
Sure, of course, the default will do the best. But I'm asking if we want to expose the method, should I. Should we do it as sub options of method like an association?
Why is it a sub option?
Because there's two of them. The detection that gives us the bounding box could use different methods than the segmentation that gives us the mask.
Well then you've got to give an association method, arrow associate, you know, segmentation method and, and you know, like she's done.
She's done it there. Yeah.
What's that?
That, that's on the screen.
Oh, that's exactly what you already did. Yeah, I agree.
Okay, great.
All right.
Image component detect is a function that returns a mask for the whole image. It's effectively the alpha channel of remove background, as I say there.
Well, it now has to be image segmentation component detect, which is a bit.
Long.
But.
If you open that ref page, some other name proposals we had like image component mask. Do we want to call it image segmentation mask?
Yes.
Image.
Yes.
Segment detect or segment mask? Image semantic. Text semantic. You ruled out last time correctly, so I forgot to remove that as an alternative Image segment mask. I like.
I. Yeah, Segment. Well, image segmentation mask. Yeah, but that's. I mean, do we have other functions that sort of do a whole image masking? Like this.
Image saliency filter. The filter functions that we have are doing a whole image filtering. They mostly end with filter and saliency is the only one that gives a big region.
The other ones, honestly, image segmentation filter doesn't sound totally crazy to me. What is marker? What does marker mean? Here, Specify by marker.
Marker can be a point on. On the white horse, or could be a bounding box, a rectangle around the horse, or could be multiple points on the white horse and the brown hose.
So wait a minute, so then I would get both a white and a brown.
Yeah, yeah. A mask for both of those objects. Yes, one mask that represents both of those objects.
Okay, but then, then this is really. Is a filter because what it's doing is, you know, I mean, it's a little bit weird because I could imagine something which just says, give me a horse, and it would give me a mask for the whole image, which just picks out a horse. But this is doing something different. This is saying you're giving it a place in the image and it's puffing out to the object that is so indicated. Is that correct?
Yes.
So that's a really different kind of thing. And that's not, you know, image segmentation components. It's just like, give me all the various components. Right, correct. So this is really a different thing. This is an image, you know, it's an object filter, so to speak.
Yeah, segment filter, object filter, Segment filter. Because really we don't have a notion of objects in these segmentation. These are semantically, as you identified. They're really not necessarily connected.
No, I mean, I don't know. This seems like a pretty technical function.
Yeah. As I say, in that last bullet point, I think like functions like inpaint could use it. So you may want to identify the region first and then pass it to InPaint. We have functions that take masking options. Like you have an image with uneven illumination, you want to mask.
You could imagine that that second argument could be horse.
Yes. The prompting is not ready for 14, but we're definitely. Yeah, it's in that table.
So if that's the case, if we can put a horse there as well as a position, I think image segmentation filter is. Okay.
Okay.
Roger.
Yeah, sounds good. Why do you want to call it filter instead of mask?
Because I. Because we've got other things that are called filter which do this. This exact operation, do they not?
Yeah. Image saliency filter is really similar.
Yeah. Except that it has a gray level.
And I think it's fine. I think image segmentation filter could also return with some other methods. There are very many image matting methods that return a grayscale and filter is in fact the more proper name for that function.
Okay.
Masks are usually binary.
Yes.
All right, so the question here we are injecting SAM into Remove Background. In Remove background we don't have methods, we have models. The question is that this SAM based segmentation, what should it be called? What model should it be called? Initially I named it Semantic. All of these tables are. It might be easier if you go to that Remove background new that is linked from the top of the notes because that's a more cleaned up version of it.
Where.
Sorry, the top of the notes of Remove background notebook. That was.
Well, I mean, can I just go.
Just, just. Yeah. So see those string models like blurred and bright and dark. Now I added semantic and semantic with some parameters. Which is. Which is the wrong term.
I know, crazy. I mean, but.
And it's wrong for SAM based methods anyways. But what do I call it?
Just SAM segment criteria for separating foreground and background Are.
You.
What does this mean? Blurred region.
So we could say give me the background that is blurred. Give me a background that is bright. Give me the background or foreground that's salient.
Well, the background is not salient. Give me the foreground. Remove background is. Give me only what salient.
So see the first table, we have spec for both foreground and background. And depending on images, it's sometimes easier to specify foreground characteristics. And sometimes it's easier to specify background characteristics.
Well then why don't you have a thing called unsalient?
Okay, Well, the syntax supports for both and it's really a one minus the other one. Whatever is computed.
I understand, but. But I mean we need to. Given that you're doing this and you have bright and dark, you surely should have salient and unsalient.
Huh? Sure, I can add that.
Okay. So this, I mean this is really an object based thing, isn't it? This thing here.
Mysterious what SAM is.
What's that?
It's.
It's with the mysterious. What SAM is.
Right, with the parameters again we can. We can say let. Let's call this model sam for the time being. We can't stand for.
What does SAM stand for?
Segment Anything Model.
Let's see. There's a question on a live stream from Sandal. What happens if it is semi transparent? I lost what it is, unfortunately.
I think this came when we were talking about alpha channel of sub images in image cases.
Yes.
So if we get segmentation methods that give us grayscale masks, we see through that mask some of the background and.
Maybe what Sandra is Talking about is what if the image that you're trying to segment out is itself semi transparent? Does it get tangled up? I don't think so. Because if the mask is either it's all there or it's not there.
For remove background, we're multiplying the detected background with the original. So we're usually trying not to look at anything in the masked area. The alpha channel is already masking the image.
Okay. In terms of bright, dark, whatever.
You.
Know, I feel like it's almost on object, off object, you know, where is the background? Where is the foreground? It's on this object. But I don't know. I mean, you know, also, also look.
At the parameters that I suggest that model can take, which can be position prompts. Again, like worse rectangles and stuff. Yeah, yeah. Objectness or.
Well, I don't know.
Segment.
Again, I don't know because I also don't like particularly this list. And I think I. I also think that foreground background thing is sort of wrong and I think it should be more foreground arrow, whatever. And can you have both foreground and background?
We had the idea that we could have both of them. We never implemented that they could run into each other as well.
To say, you know, foreground arrow, background arrow, and even an association, for example.
I think that's a, that's a syntax we can easily support. It doesn't clash with what we have now. Yeah, I mean, implementation wise, if we specify characteristics for both of them, they may run into each other and then we'll have to come up with heuristics how to.
Yeah, but, but okay, but with this SAM based thing, just generic, SAM means if it's an object, make it foreground.
Mm.
Right. That's what it, that's what it's basically saying.
Yes.
I mean, so I think it's objects versus non objects. That's the, you know, the background is non objects. And then it has to be objects comma, you know, I mean, do we have any other term for the things that are being recognized in image cases, for example, other than objects like horses and things?
In image cases, it's really mainly referred to as object detection.
Okay, fine. So I would say objects are non.
Objects and then non salient and non objects. You would camel case with ONS being big.
Yeah, capital.
Okay, It's fine. Seems fine to me.
Okay. And I mean for now, I guess these list syntaxes are. Okay.
Okay.
Not my total favorite, but okay. Okay.
I. I think we like this last time. So. No, yeah, no news Here.
Oh, my mouse keeps on dying. Terrible. Okay.
The fact that fine image shapes can accept label matrices, that first point also I think we talked about we'll try to get it into 14 and I think image segmentation components is gonna be a very good label matrix for that purpose. The other thing we talked about was that sort of a automatic pre processing and then with Roger, we thought perhaps a good name for such an option could be pre processing function. We already have pre processing rules that we use in Word Cloud. Seems like a good companion for that.
My gosh, I haven't. Don't we have things like pre processing functions and a bunch of machine learning stuff?
I, I. Even if we do, it's not a symbol and Julio confirmed that we can use that option in many other places as well.
Then let's have it. It's a good idea.
Okay. Edge detect with segment anything Method edges. I'm suggesting we just come back to it at least post 14. Really? Most of the time edge detection is used for segmentation or maybe for like creative effects and things like that. And it seems a little besides the point to convert the segmentation to edges at that point. So we'll postpone that. If we find usefulness for it, we'll bring it back later.
Okay.
Similar question in text recognize as I had it for image cases there as well, we have a text detector versus text recognizer. Text recognizer. So in a method option, if you scroll down a little past everything, I guess we could have a similar association of detector backends and recognizer backends. I mean, and I.
Are we really going to have these named?
That's. That was my second question. It doesn't look pretty because these are really the backend engines that we use. But how else can we be specific?
I wouldn't call it operating system, I would call it native or something.
Native. Okay.
OS native, something like that. I don't know. I'm not sure because I don't even know what that. So what happens if you just give one method option? Method arrow.
I think we can easily support that. So if you say for things like easy OCR which are supported, which are doing both detection and recognition, it can just be that one string. But for other, for other combinations we can also just pick the other one automatically.
Yeah, but I mean in. Okay, but so what's the default.
The best we can find for natural scene documents or images we are doing, we are using DB Net as a detector and our own trained recognizer, Wolfram OCR V1 and then for documents we are still using Tesseract, but with benchmarks we're doing with those easy ocr, I think we can switch to that, but I'm still waiting on full benchmark results.
Okay. Label matrix workflows.
Yeah, that's something that Roger asked me to put together just for us to see when label matrices become annoying to work with. And it's really that very long edge on the right that has bugged you when we want to combine the result of. Yeah, so we segment, get label matrix. We can do measurements on it, display it and all of that. It only gets annoying when you want to do some measurements or selection where you need both the label matrix and the image.
And how do we fix that?
Annotations, I think can help. And that's something we're going to be working on post 14, where basically the.
Label matrix is just an overlay on the image.
Yes.
Yeah, I think it's the right thing to do. I mean, I think label matrices, honestly, label matrices seem to me like Fortran like constructs, you know, and they really should be something that is just a metadata of the image. All right, are we ready to go on to the next segment talking segmentation? Charles, did you send me the next segment? Hello, Charles.
Sorry, I was on mute. You mean the notebook? I thought it was in the agenda. Okay, I'm sending it right now.
I think it is in the agenda.
Okay, I can get it. Purpose. These are centered. When are we going to get a coarse graining of graphs for display?
For big graphs, you mean?
Yeah.
Well, we've done some preliminary experiments. I don't think we have something conclusive yet.
Maybe you could share those with some of the people who work in the physics project because we need that stuff and we can build some prototypes. Make sense. I mean, I think there are many ways to do it and we might as well experiment with things, but make some WFRs, those kinds of things.
Charles.
Okay. Charles, can you, can you handle that? Sure.
I mean, is this. He seems to be too general, but.
But sure, just whatever you have. I mean, I. It's like we've got, you know, there's a whole big hypergraph effort that's being done and hypergraph visualization and so on. And, you know, I think that effort should be able to deal with coarse graining of graphs and whatever you have. I'd like to get those guys to work with, given that you're not pushing that forward, you know, this month type thing and see what they can produce.
Why, I mean. Yes. And I mean, we, we Have a significant amount actually already in the system doing the spring electrical. I mean, that's what it does, actually, behind the scene.
Great.
But it's just.
You just need to explain what you've done, and then we'll see whether people can take it further, even when you're not specifically working on this. All right, now, what do we want to look at here? The hyperbolic embedding wasn't working last time.
Yes. And it's still not working. There are some defect I'm still working on to try to figure out why it's happening.
Okay. All right, so what should we look at? Guide us through this agenda, please.
Well, from the last. Sorry, go ahead.
No, go ahead, Charles.
I mean, from the last meeting we went through everything you just pointed out, if I remember correctly, the hyperbolic embedding, you wanted to understand more as well as the spherical texture mapping. I think those were the two key points.
All right. Okay, so let's look at those. I mean. I mean, just guide me through what we need to do. I mean, this is your. Okay, so Roger or Charles, just tell me what we need to be looking at.
Yeah, so you wanted to understand more about sort of these. So if you go to the texture new page, and these are standard texture mappings. It's not the end of texture mapping, but these are standard texture mappings. And what's new is both the support primitives that don't have vertex texture coordinates.
Okay, hold on, let me try to understand this. So a texture is generally given as a rec. As a rectangular region with pixels in it. Correct?
Yes.
Okay. And that rectangular region is a UV space of some kind.
Yes.
And you've got to map that onto the surface of an object.
Yes.
Which is a story of coordinate charts and other such adventures.
Yes.
Okay, so now the question is, what are those coordinate charts? What is, you know, given? So these parameters assume that the parameters U and V vary. I don't. What do you assume from 0 to 1, from bottom left to top right type thing. Yes. Sorry. Hello? Was that a yes?
Yes.
Okay. Okay.
So part of what we wanted to improve is the documentation here, maybe to explain and maybe in some cases provide parameters.
So what we had before, this has six coordinate chart. This has. The coordinate chart is broken into six pieces.
In this case, it's reused six times.
Right. Whereas in this case, there's a single chart.
Yes.
And.
And in, you know, maybe it doesn't. Maybe the illustration is not the greatest, but cubic. It's. It's reused also six times. But they're Sort of. The question is how flipped they are.
Yep, I understand. I think that the way to indicate flipping would be to draw the coordinate, draw the pad underneath with somehow an arrow going the other way. Or alternatively to not use something which is, you know, symmetrical as the image.
Right.
I mean, if you put an arrow on the image inside the image, that might be helpful, even if it's only in those cases of the. Of the box and the cubic case. Yeah. Okay. I think I do understand this, and this is pretty nice. And I understand that if you have a thing that's the shape of a. You know, if you're mapping onto a. A dodecahedron, for example, I don't know which of these you use. I mean, what happens if I do that? If I take. If I take this. Well, if I take. Oh, Christ, my mouse died.
You. You can do that? Yeah.
How do I get that thing there?
Oops.
There, I see. Why can't I see it? Why can't I?
Well, that is an image, obviously. Just copy it.
Yeah, I know, but why can't I? Oh, because it just. Those colors are just interact badly. Okay, so there it is. So now let me say. So now I want to put this on a dodecahedron. So I say graphics, 3D of texture, of blah comma, comma, the mapping. The map. So let's say I say stereographic.
The mapping is not yet supported at this time in the prototype build. Correct use of it.
Right.
So how do I do this?
So if you close the bracket and then you put the dodecahedron and right now you do vertex texture coordinating, it goes to the mapping.
Wow.
As an option in dodecahedron.
Arrow, arrow. Oops. Well, let's start off with the stereographic.
But it's not there.
There's not one on the list.
Well, so that's why I say if it's right.
Oh, but it's not in the table.
But everything is not yet implemented. So we are still working on those. So don't expect that it will work. Or we have support of those. Additional option on data cadron.
Amazingly worked. But it. You've misspelled it.
Well, I don't know what the hell it's doing. Stereographic. I don't know what it's doing. I don't know what texture it's using. It's using some random texture map Here. Let's try for example, cylindrical. Unless nothing works. I don't understand that picture. I don't understand that. I mean, it's amusing, but I don't understand.
Looks like planar maybe if I were to guess from the. That does look like box.
I mean the cylindrical is correct. It's just that it is a cylinder. So the production as you see that it is peaking on the top.
Oh, what do you mean where's the cylinder? Is the cylinder. Which way is the Dodec Eaton wrapped in a cylinder? Looks like it's wrapped horizontally in the cylinder. And that this is kind of its. Its north pole. That gets funky. I don't understand why the cylinder comes up to triangular points at the north pole. If I go cubic here, I suspect I'll get the same as box, won't I? Yeah. Okay, so those are. You know, if I look at that face, it's deformed by the projection by the fact that it is a. Projected. Projected onto the non flat dotahedron face from the rectilinear box. Correct?
Yes, yes.
I don't know what planar does. Let's try that one. What's that doing?
It looks like it's projecting from the top down.
Yeah. But for some reason it's transparent in the middle because it goes. Okay, so for example, if I were to project that onto a cube, then the edges of the cube would have. Yeah, good. Great. That's nice. Yeah, that's what I would expect.
Try a cylinder for that guy. Because I'm unrotated too. Just because I didn't know what you did with it.
That's weird. Wonder which way got coarser. I mean, because the cylinder.
Which way is the cylinder put.
Yeah, I know it's not pointing this way, it's wrapping the other way. It's wrapping not around the equator, but around the meridian. Yeah.
Or maybe it's a much simpler explanation. Maybe it wasn't even doing that. It was not implemented yet. So it just picked planar users here.
Which you see what. What's the story with this? Might not be. It might might be just a bug. Well, you've got some test cases here. Oh boy, that's weird. Okay, I don't understand that at all. The computing based on that the shape is spherical object and if it is not, you're trying to warp a little bit. I know, I understand that but I don't understand the warping. I mean that warping is rather extreme. So let's say we go with a.
We'll try a sphere spherical. Just wondering.
Oh, because it doesn't have vertices.
Add 0000.
Oh yeah.
Maybe.
Come on.
One just here. Okay, that sort of looks spherical.
I shouldn't need those. That's a Bug, Right. That I needed those. Do you agree with?
Yeah, it's not yet fully implemented. Yep, should just work.
But that looks like spherical to me. Little bit weird there at the top.
What's that? The bottom's okay. Yeah, top.
Yeah, top is fixed.
It's just not picked up.
Try a cylindrical on that guy. Because I think that one can predict from that it's doing.
Yeah, Well, that's kind of what I would have expected, but it didn't work for the. For the. So just, just so I understand, how do I make a. How do I take a dodecahedron and augment it to just give it many more faces? How do I sphericalize it? You know what I'm saying? Augmented. What is that called? Polyhedron. Augmented polyhedron or something. What is that called?
Yeah, we have the augmented polyhedrons.
It's not subdividing. Is that subdividing faces?
Yes, some form.
Let's say we take this and. Well, let's just do the spherical case because that should approximate a sphere. Am I right? So then here I want to do this. Oh, that's bad. How do I do this? That shouldn't be that way. That should work, right?
Yes. We are still propagating the support on all graphic primitives as well as contractor. So you see.
All right. Okay. All right. What else is there for us to look at here?
I think that this was the main thing. Or did I forget something, Charles?
No, that was. That was just the main thing.
Yeah, I think that the texture thing was. Was where we got hung up.
Okay.
Unfortunately not fully.
I think what you're doing there looks nice. I mean, there's some bugs, but it looks like we. Really nice concept, really useful. And cool and lots of nice examples that can be given from it.
Yeah.
Actually, let me just try one more thing. Let me just try. So I understand what's happening. If I go to front here. I don't really know why the front is top.
That's got to be a bug. It's just got to be a bug.
That'S not implemented yet.
Oh, so front does planar or something? It didn't do. It just is what user said.
Okay, but still the orientation is somewhat funky or whatever. I mean, I do think that this question about which way is up. All of these things have a which way is up definition.
Yes.
And it feels a little bit arbitrary, but I guess it sort of has to be. But, but, But once I have the, you know, which way is up in what coordinate system? So I'm saying let's Say the cylindrical is. Is up in the Z direction, you know, which whose Z direction is it? User coordinates or what? What the heck is it? Do you understand my question?
Yeah, well, I mean it's going to be in the global coordinate system for sure.
Which is user coordinates, not screen coordinates or anything like that.
Yes, yes.
So this sphere, if I turn the sphere upside down by modifying this.
Up, up is still the same. I mean it has to be the same.
Yeah, I understand. Because it's in user coordinates. Yeah. Okay.
Well, I just wanted to add that actually most of them should in principle or will coincide with our coordinate transform because it's more a coordinate transformation between two different systems.
What do you mean by that?
That means, for example, you know, if you do coordinate transform of Cartesian goes to cylindrical, right? And you are, you know, you actually compute manually. The vector test, your coordinate, you should match. So there is an explicit transform. It's not the hand waving operation for any.
Sorry, I. I was spaced out for a minute. Could you repeat that?
So I mean, as we are working with, you know, through this, the transformation or the projection here in principle will match with coordinate transform transformation. I think that's the name of the function we have here. Coordinate transform. So for example, if you do coordinate transform of Cartesian, go to. Cylindrical. Yeah. You should get the actual formula which will map with.
Yes, I agree. So presumably any of the coordinate systems provided there would be a possible mapping.
In principle, yes.
I don't see why we shouldn't do that. I mean it should be easy to do, right? Once you have these, it's, I mean, flowing through those. What is it? Coordinate dollar coordinate systems. What is it called? How do we get.
I was talking about coordinators or the list. I'm not sure.
Oh, come on. How do we get to this? Let's see whether our vaunted search system actually works.
It's coordinate chart data, I believe.
Okay, can somebody please report this is yet another bad search result? Yeah, I can do that. Yet another. Okay, well any one of these should be usable. I don't see why not. I mean, it seems like we get it for free if we're just using this technology stack.
But.
Well, the question is, is it really useful for graphics? And there is a cost to implement it too.
Is there? I mean, I would assume that you're just going through the pipeline.
It's going on to gpu, Stephen.
I see. I have no idea. Conical might be useful. I don't know. I mean, we don't have an automatic. I mean we. These formulas are not that complicated. I mean, don't we have an automatic way to compile them to the gpu?
We.
We can look into this for the next version. Definitely.
Yeah. Okay, let me know. Given that you're saying it works just like coordinate transforms, let's have it follow coordinate transform, so to speak.
Yep, we are working on that to make sure the. Too much?
Yeah, but. Looks nice. All right, anything else we need to cover?
Nope, that's it.
All right, thank you very much. Thank you. Is that. Is that it for your teams? Roger.
Yep, that's it. That concludes 14.
Good stuff. All right, see you all soon.
See you.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






