Switch Statement

043: OpenUSD: Voted Open Source's "Most Likely to be Mistaken for a Crypto Scam"

September 15, 2023 Matthew Keller
Switch Statement
043: OpenUSD: Voted Open Source's "Most Likely to be Mistaken for a Crypto Scam"
Transcript
Matt:

Hello everyone And welcome to the switch statement podcast It's a podcast for investigations into miscellaneous tech topics This is the second part of a show and tell where Matt and John discussed the merits and dubious naming of the new 3d scene format. Open USD. Hey, John.

Jon:

Hey Matt, how are you?

Matt:

I am doing all right. Ready for, for round two.

Jon:

round two.

Matt:

Um, I guess that makes it sound like a fight or something.

Jon:

ding.

Matt:

all right. So what I want to talk to you today Talk to, talk to you about, man, why is that sentence so hard for me to say? Um, is have you heard of this thing called open USD?

Jon:

Open USD, no. Sounds like a US dollar thing.

Matt:

all right. Well, you crypto bros out there don't get too excited because it is not a, uh, cryptocurrency or it's not like a digital version of. Uh, the dollar. But I do think that calling it USD was like not a good decision. Uh, it is a new open standard, for representing 3D scenes.

Jon:

Oh.

Matt:

new, this is as of like, it was announced in August of 2023. Um, and so this is something, this is a collaboration between Pixar, Apple, uh, Autodesk, you know, who they, they do Maya. So basically, there's a laundry list of basically 3D industry titans who have all contributed to this standard and open format for interchanging 3D 3D scenes. And. I spent a little bit of time, like, digging into the spec and trying to understand, uh, how it all worked. Um, it's pretty intense. I started to, uh, kind of get it building on my local machine just so I could try to, uh, poke around and learn a little bit more with their, examples. I got it, I got it building and that was about it. Um,

Jon:

Now, hold up. What are the current ways? Cause I'm aware I'm aware of two. One is like Wavefront, I think it's called. OBJ. Which is basically the dumbest, or at least I think it's the dumbest format. Where it's literally just a list of vertices. Like a list of faces, a list of vertices, a list of texture coordinates. Um, and then I'm also aware of Filmbox. FBX.

Matt:

It's interesting because I think that these are more like, and you have to correct me if I'm wrong. I think some of these have like, you can store animations in as well. Like, is that like in FBX, you can like have an animation.

Jon:

Yeah, exactly. And I think that's, that was one of the reasons I learned about FBX. Cause for the longest time I was using Wavefront. Um, in my dumb little projects, but I don't think wavefronts can represent things like armatures and, and an animation. Um, what, whereas film box can in some way, I don't, I don't really know the underlying data structure of film box, but, uh, it's capable of doing animations like you're saying. Yeah.

Matt:

to take a, take a step back just in case, like, just to be like very clear, like what we're talking about. I attempted to do this with my introduction, but basically it's like, if you are making a 3d animation, you know, you're making the next toy story you need some file format to store that information. And so basically this is just like how you go about storing that on disk. But, um, in addition, I think OpenUSD also, it's the file format, but it's also these like APIs like that describe like how you use them and how you can query. So it also describes how you're using it in memory as well. So they provide this reference C plus plus implementation with Python bindings. Um, so you can do like easy scripting and things like that.

Jon:

So it sounds like it's capable of, of representing everything from 3D models to animations to even, almost like higher level animations. Like this animated character comes over here and plays this action, this one comes over here and plays this other action. And I'm guessing sound and everything. So this sounds like an utterly comprehensive format, which is amazing.

Matt:

My understanding is like, you can represent an entire film, you know, and it'll have references out to these other, like, you know, probably other files and what have you, but like, you could have a whole feature length film in one stage and that, like, you know, you have multiple scenes and, and what have you all composed together.

Jon:

So this is basically a blend file.

Matt:

I, I think so. Yeah. I think it's, you know, it's kind of a competitor. Like, I think a dot blend file is like a good way to think about it, because I mean, obviously that also like,, implies the software that you're, you're using, I think it's like dot blend, but like one layer of abstraction below, right? I don't know what the right layer, it's, it's, I'm not sure if it's like a framework or if it's, it's, it's like a platform. That you could build these, like, tools to interact with, like, 3D, you know, scenes and what have you.

Jon:

yeah, yeah, yeah. By the way, did you say what it stands for? You

Matt:

Oh, yeah, it's, yeah, no, I don't think I did. So, USD stands for Universal Scene Description.

Jon:

Oh, nice. Um, amazing. So are all the top, like, 3D animator, like, Blender, is Blender scrambling to implement, like, a USD

Matt:

Yeah, you, there's a, there's an exporter. I think Pixar had this kind of a homegrown series of utilities in house. And then I think around the, like, maybe a little bit before 2016, they were like, all right, let's do the, work to like, get it into this one unified. System. And then I guess they got a bunch of these other like 3d houses on board. You know, blender is a part of the, uh, you know, the foundation that's, supports this format. So I don't know, It seems exciting they've made a strong showing in terms of like, this is going to be the way to represent, 3d scenes, going forward.

Jon:

Yeah, Yeah, I mean, I feel like we talked a little about standardization with the Don Norman book, Design of Everyday Things. And for an industry to standardize on something like this feels like a tremendous boost to like efficiency, communication, and, you know, just, just basically a tremendous boost to the industry itself. So, uh, I'm always excited when I hear about stuff like this.

Matt:

I started to read through, the specs. And one, one of the things that concerns me a little bit is like, It feels a little bit like, in order for it to represent, Any 3D scene, it had to be so general. Like, what worries me is it's like, It starts to get so general that like, does it, is it even useful as an interchange anymore because it's like, you know, you need to be using it in this, in the same way as someone else, because if you're not using it in the way that the other thing expects, like they might not even be able to consume it. You know what I mean?

Jon:

Yes. Yeah. I'm actually, this was something I've been struggling to like, think of a way to put into words. Like. Because there's so many different paradigms, like approaches to 3d modeling. And I'll just start with two examples. Cause they're the first ones I think about, like, there's this sort of representing individual vertices, which I feel like a lot of 3d animation studios do choose that approach. But there's also this kind of like functional approach where you're representing 3d models as like. You know, mathematical equations, like 3D geometry that's sort of Boolean added and subtracted from one another. And it does seem like having this format that everyone has to adhere to, especially for something like 3D animation, which is this vast collection of so many different, like, parts of the overall pipeline, you're sort of enforcing that everyone adhere to these paradigms, which seems... You know, potentially dangerous.

Matt:

Well, it's what's interesting is. When I was reading through it, I found that, I guess I was expecting things like mesh, but like, there's not, you know, there's not like a mesh in there. Um, there's, you know, they have this concept of a prim, and this is like this very general thing. It, like, it represents an entity, like a kind of conceptual entity that exists like at any point in time in your scene.

Jon:

What's it called? A prim?

Matt:

Prim, P R I M, like primitive.

Jon:

Oh, primitive. Okay. I was thinking like prim and proper.

Matt:

well, yeah, I mean, it is spelled the same way. They talk a lot about value resolution. So when you have an animation, you need to like resolve what the value of, the X coordinate is at a particular point in time.

Jon:

Yeah.

Matt:

what they said was the value resolution is the strongest opinion wins. And so there's, there's the, the system of opinions where like like, it's basically a precedence of opinions about what a particular value should be. And if it Sounds very hard to understand, it's because like, I don't completely understand how that works,

Jon:

it sounds like quantum mechanics.

Matt:

I mean, you're getting at an interesting point. It's like, it feels like very hard to reason about like what the value of anything would be when like anything could have an opinion about what the X coordinate should be. Um, What I would say is like, it seems like a lot of what they're offering is this framework for. defining how to resolve, like what the value of some animated quantity will be at a particular point in time. So it's like, it's kind of at, at a different layer than like purely geometric representation, because you can have assets, and I think with an asset, you could refer to like anything

Jon:

Yeah.

Matt:

At least when I was reading, there was nothing that would preclude you from having both like a NURBS asset and, uh, you know, like a, points and vertices mesh.

Jon:

Right. Or even like a particle effect or something where it's like Sometimes it's not even, like, kind of real in the 3D space. It's like some kind of screen space rendered thing or or whatever. I wonder if

Matt:

right. I think that this basically just describes all these numbers and like references to assets. And then it's actually up to like some other system, you know, it's basically like, okay, you're going to have all these numbers and they're going to be changing in exactly the way that you've set them up over time.

Jon:

Yeah.

Matt:

And that's it. You can efficiently query what any of these numbers will be at, you know, in a particular context. but that's up to you to, to figure out how that should look.

Jon:

Yeah. Okay. So, and you mentioned this, but it's like, they're not just defining a disk file storage format. They're also defining these APIs. Which sounds where, that sounds like where you get a tremendous amount of value. We were actually just discussing quotes. We recorded the quotes episode right before this, and Edgar Dykstra has an awesome quote. The purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.

Matt:

Mm hmm.

Jon:

And I think that can kind of apply to this. It's like you have these prims that you can... You can discuss prims at their abstract level without talking about these kind of implementation details of it, which adds all this complexity instantly. You can kind of avoid that complexity and discuss things at that level, which is so valuable.

Matt:

if I'm using your point about abstraction,. I feel like I'm at the point where I have this very vague, abstract sense of what all these mean, and I need to get a better understanding by actually like seeing an example of a real scene and how people are expressing things.

Jon:

Right. Have they chosen an icon for this yet? Because I hope it's the like dollar floating away emoji.

Matt:

Uh, I don't think they have an icon. Let's say,

Jon:

there's no way that I am going to, like, break the linkage of, USD to U. S. dollar in my brain. Like, whenever I hear USD, it's U. S. dollar.

Matt:

Yeah, that was a debatable, decision. I would say like, talk about a big one to alias yourself with.

Jon:

Yeah,

Matt:

Um, their logo right now is pretty, boring. It's just a series of rectangles.

Jon:

Nice. Classic. That sounds like the type of logo some, you know, forum, Yeah, some committee that's creating a disk file storage format would come up with. So it. doesn't surprise me.

Matt:

All right. Well, I think that's all I got for OpenUSD. It's definitely something I intend to, uh, to dig more in. I want to learn, learn the nitty gritty

Jon:

Yeah, I love it. I'm going to start exporting my blender work in open USD,

Matt:

dude and everything's going to break. Because nothing probably supports it actually yet.

Jon:

but it will.

Matt:

see you next time.

Jon:

see you next time.