Introduction to USD: Understanding Hierarchical Scene Layouts
Overview
In this video, the instructor introduces USD (Universal Scene Description), emphasizing its role as a hierarchical system for organizing 3D scenes. The session covers the creation of a USD stage, the definition of primitives, and the integration of Bifrost with USD, particularly for game development.
Key Points
-
What is USD?
USD is a hierarchical system that allows artists to layout and share 3D scenes efficiently. It enables collaboration among multiple artists without overwriting each other's work. -
Hierarchical Structure:
- USD stages consist of layers, with a parent-child relationship among objects.
- Each USD stage can contain various primitives (Prims) that can hold attributes like colors and transformations.
-
Creating a USD Stage:
- The instructor demonstrates how to create a USD stage in Bifrost, emphasizing the importance of naming conventions and hierarchy.
- A simple monster model is used as an example to illustrate the process of defining USD meshes and organizing them into a hierarchical structure.
-
Outputting USD Files:
- The video explains how to save USD files and the significance of settings like meters per unit and up axis for compatibility with game engines like Unreal Engine. For more on integrating game engines, check out our summary on Understanding USD Scale and Character Interoperability at Pixar.
- The instructor showcases how changes made in Bifrost reflect in the USD file and can be imported into Unreal Engine seamlessly.
-
Practical Application:
- The session concludes with a demonstration of importing the USD file into Unreal Engine, showcasing the preserved hierarchy and the ability to manipulate the model within the game engine. This practical application highlights the importance of How to Cast Shadows in Your 3D Scene for Depth and Realism in enhancing the visual quality of 3D scenes.
Conclusion
The video serves as a foundational lesson on USD, providing viewers with the necessary knowledge to start working with USD in their projects, particularly in the context of game development using Bifrost and Unreal Engine. For those interested in the artistic aspects, consider exploring Unlocking the Art of Color Scripting: A Comprehensive Guide.
FAQs
-
What is USD?
USD stands for Universal Scene Description, a framework for organizing and sharing 3D scenes. -
How does USD's hierarchical structure work?
USD uses a parent-child relationship to organize objects, allowing for efficient collaboration among artists. -
What software is used in this tutorial?
The tutorial primarily uses Maya and Bifrost for creating and managing USD files. -
Can USD files be used in game engines?
Yes, USD files can be imported into game engines like Unreal Engine, preserving their hierarchical structure. -
What are the benefits of using USD?
USD allows for better collaboration, organization, and sharing of 3D assets among different software and teams. -
What is a USD stage?
A USD stage is a 3D scene composed of USD layers, serving as the parent for all objects within that scene. -
How do I output a USD file?
You can output a USD file by using the save stage function in Bifrost, specifying the file path and format.
welcome back we're starting the USD part of the course now this is part one as you can see and before we even start
talking about what USD is I'm going to recommend this this link will also be provided with the video but the vast
majority of these lessons are based on this playlist there's obviously more that is to do with game engine export
but the big secret about USD is once you've got it as a USD state you can pretty much read it in anything so I
would recommend if you want to learn more about USD as well as what I'm going to show you go to that link watch that
playlist doesn't take very what is USD easiest way to describe USD is that USD is a hierarchical system for laying out
a scene that is the absolute overview and that's all it is it is a system you can use to lay out objects in
a scene which means that once you save it you can give it to any other artist you can give it to any other engine you
can render it and anything you can pass it around it's used to share the important thing to remember about USD is
that it is hierarchical it's about parents and children just like the outliner in mea
very similar to how it's laid out I should stop waffling and just get into it and show you but before we start I
need you to know that all this is is a hierarchical setup and it's you have a parent object you have a mesh in that
object a material in that object something else that object the point inst that
object they are all beholden to the parent and you you'll see that as we go as we go through here we are in the
PowerPoint and we'll be exiting the PowerPoint shortly but very quickly this is what I mean by
hierarchical a USD stage is a 3D scene composed of USD layers the stage is the parent everything is under the
stage okay so here's an example of a USD stage here are the layers in that stage so you have the bushes you have the
little houses and you have the monsters and they are all under that stage and you can read the paragraph if
you like what's really important is it allows artists to simultaneously work on the same scene make changes as they need
and try out different compositions without changing other artists that's what it's designed to do and it does it
very very well for the gaming side of things we're going to be hijacking it a bit and using it as a way to get things
out of B Frost not just Maya but bifrost and into USD I'll be teaching you USD Concepts today I'll also be teaching you
bifrost USD Concepts and they're slightly different because they are procedural USD Concepts so we'll get
into that so you can see here that we've got our stage and our layer zero this is a prim okay so the base level of USD is
Prim inside that Prim so this is a primitive Prim for Primitives that sits in layer zero it can contain other
Primitives which create hierarchy namespace hierarchy so this primitive contains the body and the
eyes can also contain attributes such as colors and transformation so you're getting colors there and transforms
there so this is where we go into bifrost and actually create ourselves a stage okay so we have our usual Happy
empty by Frost framework that we start most lessons with let's create a graph because we're going to need that first
now there's a couple of things you should probably have set up before we start working with USD and this is one
of them here this is the USD layer editor this will show you what's happening in your stage as you you can
find that in Windows USD layer editor and that will pop that up now when it comes in it'll come up like something
like that so if I close it USD layer editor and what I like to do is just drag that and put it next to my
outliner that way I've got these things over here on the side I've got lots of room for my bifrost and my parameters
things so we'll get to using this as we go through but this is how I like to do it so that's one thing that you'll need
to have up the other thing you'll need is your script editor but we'll get to that
later okay so let's create a USD stage now when I say let's create a USD stage that's kind of a big thing what we're
going to need first is things to put into the stage a mesh for example because USD doesn't exist on its own it
exists to organize other objects and in this case we want a mesh so let me import my
mesh and this is just my USD resources here's my empty BOS graph here so I've got the
monster and some things that we'll be getting to later so let's just hide everything else what we'll be working on
is the monster and because I imported its board in its namespaces I personally like to get rid of my namespaces if I'm
working on something like a tutorial so so you leave it there if you don't care but if you do this is how you get rid of
it you need to come in here and delete these mge them with the root yep not only do you get bifrost tutorials you
get a little bit of Meer as well so it's kind of a very well-rounded course don't forget to put that on your assessments
thank you so now we're back to something that looks a bit more familiar we have our monster here our monster is just a
mish this is yingying's famous monster able to be seen on YouTube and and all kinds of other places and as we do when
we start working on a Meer Meer is setting bifrost I'm going to hide it CU I don't want to see the Meer confusing
me with my bifrost gra so here are all my things I will be using for the USD video but I'm today I only want the
monster let's bring the monster in and let's just make sure that's all working there we go do we have wireframe yes we
do that's great let's turn on an lising so that I don't make everybody's eyes fall out of their head with my horrible
jagg and what we're going to do is the world's simplest USD setup okay so let's get rid of that there's our monster
monster is still there first thing we need to do is Define a USD mesh now a USD mesh is a USD Prim there are lots
and lots of different kinds of USD prims and if you have bifrost USD loaded and a USD plug-in loaded in your
mea which you should have then you're going to get all of this stuff here so I want to just
Define a USD mesh there we go here's our first USD node and this what this is doing is it's taking a Maya Mish and
defining a USD mes with it and putting through all of the things that we need to put through for that USD to work
before we start and I'm going to say this over and over and over again in USD naming is super super important if if
you have two things with the same name if you like me forget to change that name it's only going to show you one of
them so if you forget to change that name 17 times instead of 17 objects you're going to get one object so just
be aware of that what we have here is this is defining a mesh from a my Imes so it takes a mesh we put the mesh in
there that's fine I can plug this into the output I'm not going to see anything because that's not how USD
works what we have to do is get all of this into a stage before we'll be able to see
anything so I'm going to very quickly set that up now so let's change that name to body
just so we can see what we're doing so now we have a USD mesh with the name body yes the slash is important we'll
get to that in just a second when we talk about hierarchy and then I'm going to define a USD
Prim and so this is a container to hold the monster so a good name for that is
Monster you have lots of different kinds of USD PRS this is not the own this is a very short list of USD prims you'll be
using X form a lot so this is you can think of this as a container a container that holds the body and anything else we
want to put into it and just like a group in mea we can translate that container and everything
inside it will translate with it we can set attributes on that container it will set all of the attributes inside that
container so how do we get things into the container that is called a prim well that
isn't in this case I'm just going to call it an X form or transform because that's what it is we've changed our name
super important and it's not the same name is that so let's plug this into children and once we get this hooked
into a stage which is what we're about to do you'll see that this is going to become the parent primitive for the
monster before I go any further though what I would like to show you is how you can change an attribute on something so
I'm going to come down to my attribute definitions and the USD nodes and some of the arrow nodes too actually have
this little context menu which is really super helpful this shows you the the kinds of nodes that you can create here
and it will create them for you so let's go display color Define USD display color it does pretty
much what it says on the box so that's the difference between a mesh A Primitive and an
attribute okay bear with me this will make a lot more sense shortly if we want to change
the color on that and I realize we're not seeing anything in our bifrost just yet I promise it's coming we're going to
go off slide eight 0.823 and 0.4 518 and 0.543 1 those are the colors of our
body okay so once we've got that sit down we've got our our parent primitive set which is this x form here monster
this is our child primitive let's get this onto a stage so we can actually see it so that that's pretty easy we're
going to create a stage create USD stage and you've got a couple of things
to fill out here so this is this layer here is where do you want to save the USD file now I just have a I have a USD
folder which lives in my Project's default USD and I tend to put anything in there you can use a temp folder you
can put it wherever you like it's your system so I'm going to call this
monster do USD and you can see I've got some choices here USD USDA usdc usdc I believe is a compacted
binary USD is just a binary and USDA is an Sky file we'll be using this a bit later but
what's really good is that and and you can see I've got some USDA here if I save this as Monster USDA for now I'll
be able to show you a different thing that that as a tech artist you'll probably be really interested in so I
just need to set the file format I'm saving it in based on what I what I give as an extension so we'll go like that so
you can see there it is the other thing on here is layer index so you need to think about
hierarchies and you need to think about layers if the layer index is minus one that is the root layer that is the
bottommost layer always minus one is always the the root layer you can start adding to the stage as different layers
so let's add something to the stage with add to Stage right and you can see here that I've got enable that
makes sense parent path which you can manually set if you wanted to say choose a stage that you've got
somewhere else to add to for example layer index so right now this is all being added to the root layer and that's
fine for this we're learning how to do it that's all good but you may have a situation where say one of you is
working on the environment one of you is working on the props to go into that environment and another one of you is
working on something like uh animated flags that live in that environment those could all be on separate layers
and you would never touch each other's work that's how you could all work on the same file without overwriting each
other it's pretty self-explanatory stage goes into Stage and your parent primitive which is
this guy goes into the prim definitions still not seeing anything not seeing anything
because we are not outputting it so now if I output this Watch What Happens we get our
monster we get this thing turning up whatever that is and our layer editor has things in it all of a sudden this is
now a USD file so it's now a USD file cool de living in that directory that has
this mesh in it and this mesh is a child of this Prim
and this Prim is in this stage how it works what this thing is is how USD works right so I can now hide the
bifrost what I'm doing in the bifrost graph is still affecting what's happening in mea but what's actually
happening is the bifrost is going out to Mya USD so we can now open up this Maya USD
proxy and we can see all of the things we've just done
so that is our stage that's our monster that's that transform there so that's the parent of
our body you see how that works so I've got a child a parent and a stage that is the
the basic the basic basic basics of USD so there's a couple of things we need to do in here and the USD layer editor is a
Maya thing it's not a bifrost thing which means we'll probably need to get our attribute editor up here there we go
so we've hidden our bifrost my BOS lives there but we've got our attribute editor if I
select the this this layer here uh sorry if I select the USD proxy
shape which is how bifrost gets it across to mea we've got some settings here that we can deal with don't worry
about them at the moment but to start with really all you need to do is make sure that sharable is on so
that allows you to directly access the stage in the USD layer editor and set the target layer our layers disappeared
here we've just got the one layer and it's a Target that's what these circles mean and the USD layer editor is telling
me that there's edits and I need to save them now this isn't going to be a full lesson on my USD I'm just going to show
you what we need to get bifrost USD working because honestly this is the best and
easiest way I have found to get bifrost out to the Unreal Engine or Unity works with both so follow along line and there
are many many resources which I'll share with this video that will help you get a a better and deeper knowledge of Maya
USD because bifrost USD talks to Mya USD Mya USD does all the work so once we've done that our monster is missing
something our monster is blank and blind and can't see anything so let's get the eyes in this
is where I'm going to show you how you can use the hierarchy to your advantage let's go back to by Frost there we go
let's organize a little bit just so that we know what do and I'm going to use backdrops for that so we'll make a
backdrop and this is CH Prim body body of the
monster so what we need to do here is give the little guy some eyes now easiest way to do
that create a little Mish sphere this is going to be our what should we say let's make it our left eye
Okay so so we'll go through that again we're going to create the Mish sphere and we're going to Define USD
mesh now let's be careful while we go we'll call this left ey that's fine there's our
mesh and right now this mesh is going to be at 0 0 0 that's the position it's at this doesn't change that this will
take the mission at whatever position it is it is in so what I'm going to need to do is as
add a transform here so if I go create node here find USD transform and this will be
the transform for the left eye and I'm just going straight off the PowerPoint here so we're going to
go and that's going to do a scale and a translation of that eye we've got our left eye we've got our body those are
all child Primitives what I can do now is plug the left eye into the parent primitive the X form
primitive I plug that in there and somewhere we should have there we go we should have a little eye now be
nice if that was black so put down a display color like that and I'm just going to set them all to
zero nice little black eye there now we need a right eye and that's pretty easy as well so let's just grab that that and
that copy those paste them let's just change the name and of course we'll need to change
the transform because we don't want the LIF ey to be right on top of the right ey that should be as easy as reversing
that and let's plug that in to our Master again we have out with there's a but still not black we just need to put
this USD color into the attribute definitions and there we go now these are just going straight into the parent
primitive what if I wanted to make them editable I guess would make a bit more sense
to Define A Primitive just for the eyes so why don't we just call this eyes and we can put these these into the
children here like that and then just break those connections and you can see as we're
doing this our hierarchy here is transforming so here's our monster and inside the
monster is the body and the eyes inside the the eye is the left eye and the right eye what this allows us to
do is I can take another USD transform here and we can move the eyes as well we can move the eyes around a bit we can
scale the eyes and you can see here that the scale on the children 0.1 is being set actually on
the child nodes but I can scale all of those nodes up by myself there like if I want to so that's just to to give us
another another level of transformation should we want to so let's grab all of these guys put
them into a backdrop and we'll call this just like a PowerPoint child
[Music] PR eyes of the monster which you know starting to sound
like some sort of B movie but that kind of fits with the aesthetic that's pretty
good so it's at this point we've pretty much made our first USD asset it's a monster
right our next question of course is is where do we go from here how do we get this out and you can see the components
still you can see the there's the stage USD proxy shape there's the monster which corresponds to this
transform here there's the open up there's the body which is this
Mish and here are the eyes which is this so yeah our very next question is how do we output
this first thing I wanted to talk to you before we do an output I wanted to show you something else too if I select this
guy and right click print a script editor I said we'd be looking at a script
editor and there it is this here from about there
there about there down this is the USD file that it's writing out so here's mesh
body which corresponds to mes body here there are the eyes the transform
for the eyes there's the monster transform there so you can actually look at the USDA output in your script
editor just to make sure everything's doing the doing what it should and there's going to be a few things about
this that we'll talk about when we talk more about gam export you can view your USD raw file in your script editor like
this which is super super handy so the last thing to do is we need to talk about getting this out how do we output
this well we have a have a compound for that and that's pretty simple let like save us USD stage that's exactly what it
says it is it takes a stage in and outputs it again but it allows you to save it and this is where we start
talking about the game output stuff so let's go through that straight away let's let's just plug that in and
plug that in now this isn't enabled at the moment it's not going to save anything and it doesn't have a file
name so let's find somewhere to put it I'm going to put it in my USD directory you can put it wherever you like and
we'll call this monster USD lesson 8 because this is we maybe
week eight what about week eight week eight okay and we're going to make it a USDA because it allows us to edit it or
look at it or whatever is we want to do so what we have to do now is enable that it has now saved to disk if I go to
my USD folder there it is it is saved and what's really nice
is if I was to say come back to the body and let's just change this color a little bit so let's just make it a
little more blue like that and a little less green like
that come back to my USD folder and it's well you don't know what time it is it's now changed what happens
is that if you make any changes down the line here this will save it okay so you need to know some of the
settings here is that on or off where is that file going is that path a relative path
so I'll get back to that one does it have a default Prim for games these are the important
ones enable enable meters per unit this takes the me unit that you're working in and I happen to know that I'm working in
centimeters right now and it says how many meters do you want per per that unit and unreal Works in meters so I'm
going to set that to one so one me unit here becomes one meter in the USD file and then you have enable up
AIS and up AIS unreal is z axis up mea is y AIS up this is telling whatever you're outputting to inside the USD file
is telling that Prov what access is being used as up so this is now done and saved let's have a look at it in the
Unreal Engine and here we are in unreal I have just made a very basic uh level which has got nothing but
a floor plane in it and whatever unreal decides to put in for the lighting now you'll need the USD plug-in
enabled so if I go to plugins is an edit search for USD this is a plugin
from epic games so you don't need to download it or anything it comes with the engine but USD importer is the is
the plugin that we want to use I'm using Unreal 5.11 at the moment which will work fine so we 5.2 so I think even 4.9
will work well so right now we have this window here USD stage like that that's not what I wanted to do
let's put that back down here this comes with the USD plugin and lives in uh virtual production I think yeah
USD stage right there what this allows me to do is load a USD file into unreal so let's load our file file
open monster open there he is there's the monster we just built in by Frost
USD at the right size with this colors everything like that it's that easy and what's really nice now is if I go
back to bifrost and I I don't know what should we do let's make his should we make his eyes a little bigger yeah let's
make his eyes a little bigger so okay 0.2 we just make one eye bigger so it looks a little confused and let's
change the the color to a sort of greenish yellow now you
remember I had save stage setup and it's enabled so when I made those changes it's made the changes to the file if we
come back into unreal and just reload that file got one eye bigger than the other
and he's gone green this is the power of USD and this is the power of getting bifrost into
USD it's not quite a link yet it's not quite a live link that's going to take some work by epic and by aisk but it's
close and it's very very fast so just like we we output our our V animation so our flags and things this is sort of the
the guts of that system this is a static mesh that we're outputting and it comes into unreal as a static mesh so here's
monster this is the the USD I've loaded it through the USD stage and you can see here that is the prim
our hierarchy is preserved there's our body and there's our eyes our hierarchy is
preserved from bifrost and into into unreal yeah now I can delete him I can delete the whole stage like that so I
can actually take my monster USD file and just drag it into the content browser it's going to ask me where I
want to put that I'll just leave it in content for now and then it asks me what I want to import do I want to import all
of the Monster just the body so I can turn the eyes off if I want to I can choose which it what I want to come in I
can change my render context so which set of stages to use when passing which what material
purpose all of this kind of thing which you can set up in in your USD file if you like and
we'll import that doesn't look look too good just yet but here's our static Mish let's drag
that in there he is there's our static Mish there if I select that comes in as a static M component so it's all
basically been collapsed down to one mes but it does allow me to come into here go Collision let's do simplified
Collision maybe too simplified uh do autoc convex Collision might be might be better or you know
just the old fun thing where we go complex Collision is simple that we save that so now he's got
a collision mesh on him and I can presumably jump into the game and I won't run straight through
him there you go big old monster looking at me with his giant
eye so that's the the very basic USD let's let's move on from there and in the next section we're going to talk
about something very cool as well which is USD variant sets
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeRelated Summaries

Understanding USD Scale and Character Interoperability at Pixar
In this session, Paul Kanuk from Pixar discusses the significance of USD scale and character interoperability in animation production. He provides insights into Pixar's transition from traditional animation systems to USD, the challenges faced, and the future of character interoperability in various software environments.

How to Cast Shadows in Your 3D Scene for Depth and Realism
Learn to enhance your 3D scenes with shadows for added depth and realism in this quick tutorial.

How to Save Configuration Presets in Stable Diffusion Forge UI
Learn how to save configuration presets in the Stable Diffusion Forge UI for effective text and image processing.

Creating Game Designs with Stable Diffusion and Photoshop: A Comprehensive Guide to Jungle Piics
Learn how to design a match-three game using Stable Diffusion and Photoshop, from logo creation to game assets.

Creating Spaceships Using Photoshop and Stable Diffusion: A Step-by-Step Guide
Learn how to design impressive spaceships with Photoshop and Stable Diffusion. Enhance your digital art skills!
Most Viewed Summaries

A Comprehensive Guide to Using Stable Diffusion Forge UI
Explore the Stable Diffusion Forge UI, customizable settings, models, and more to enhance your image generation experience.

Mastering Inpainting with Stable Diffusion: Fix Mistakes and Enhance Your Images
Learn to fix mistakes and enhance images with Stable Diffusion's inpainting features effectively.

How to Use ChatGPT to Summarize YouTube Videos Efficiently
Learn how to summarize YouTube videos with ChatGPT in just a few simple steps.

Pag-unawa sa Denotasyon at Konotasyon sa Filipino 4
Alamin ang kahulugan ng denotasyon at konotasyon sa Filipino 4 kasama ang mga halimbawa at pagsasanay.

Ultimate Guide to Installing Forge UI and Flowing with Flux Models
Learn how to install Forge UI and explore various Flux models efficiently in this detailed guide.