Log into your account to keep track of your progress. You can work through the lessons without logging in but your progress will be lost when you refresh the page.
Solaris is Houdini’s environment for interacting and authoring USD scenes and assets. USD is an optimized file format that allows for efficient workflows for teams or individuals.
This course will take viewers through the process of building USD Assets according to the ASWF USD Working Group’s guidelines. Some of the topics covered in this course are: understanding and creating variants, going step-by-step through the asset structure guidelines, learning how to use the Component builder, and working through a practical example of setting up a small scene. The goal for this course is to understand the specifics of USD Assets, and how to properly set their hierarchies for your specific needs.
In this course we will go step-by-step through the asset structure guidelines, learn how to use the Component builder, and work through a small, practical example.
Learn the concepts surrounding Variants. Variant Sets contain individual variants that users or processes can select. These variants are flexible in what they can store (materials, geometry, changes in child hierarchy). You will also touch on some of the common uses for variants.
The “Create LOD” LOP allows for the quick creation of multiple LOD variants for an incoming geometry. This provides an opportunity to have a discussion about how variants are stored in USD without needing to create a complex network.
Variants give artists the ability to choose assets from a defined set. There are two main types of variants that can be created, geometry and material. In order to create variants a user must use the Add Variant LOP. This node lets you create variants on existing primitives or new ones.
When you have LOD variants on your asset you can use the “Auto Select LOD” LOP to set the LOD based on the geometry’s distance to a camera. This is something only supported in Solaris, and needs the mentioned LOP to function. This is not a function native to the USD software however, a quick look at the code to show why.
The ASWF USD Working Group has put out guidelines for USD assets and this video will walk viewers through many of the concepts contained within. Primitive Kind, Type, and their hierarchies all help to create a well structured asset for use in pipelines.
When working with the geometry of an asset you must make sure geometries are properly imported, their primitive purposes are properly created, and metadata is created on appropriate primitives.
In this video you will create a Mtlx Shader in a Material Library, assigning that to the “geo” prim, and setting the save path for the “mtl” layer.
Payloading a layer in USD allows for geometry contained within to be unloaded in the viewport for speed and efficiency. Here you will reference in the geo.usda & mtl.usda layers, and create a payload.usda that will be payloaded from the root layer of the asset.
The class primitive is a somewhat hard to understand concept. In this section, you will create a primitive that sets an inherit arc from the top level primitive to a name-matched prim under “class”. This allows artists at any stage of the pipeline to be able to broadcast a change to all assets in a scene.
When creating an asset, it is important to make sure that certain pieces of metadata are set within the USD files. While you will only set a few specific items, you can see some customization possibilities within the USD software. The “Asset Parameters” are examples of data that doesn’t matter to the USD software but can be used by pipelines.
Previously, you learned about the benefits of setting an inherit arc to a properly named primitive under the “class” primitive. Now you will put this into practice and see how a couple of nodes can allow you to change the shader assignment to all of your instanced assets in a scene.
This chapter will continue the discussion of the “class” primitive, however you will now look at how inherits are broadcast when the assets are duplicated or referenced, instead of instanced.
Now that you understand the structure of a USD asset, you can explore using the Component Builder Workflow in Solaris to make the process easier. These nodes will not create anything structurally different from what you did before, but packages all of the previous nodes into artist friendly tools.
Making geometry variants with the Component Builder is much more straightforward than it is using the lower-level tools. In this method you can simply wire multiple Component Geometry LOPs into a Component Geometry Variants LOP, to create and name our variants.
Making material variants with the Component Builder is also more straightforward using the component builder. You will make a library of shaders using the Material Library LOP. From there, you can add as many component material nodes as you need to create the material variants.
The amazing thing about USD is that Geometry and Material Variants can be used together to create even more variant options. Using the two methods outlined in the last two chapters you can quickly create 9 variants on the asset.
Variants are a powerful way to give artists control over what kind of asset they are placing in a scene. However, you can procedurally assign the variants using an expression in a “Set Variant” LOP. This allows for randomization of the assets, whether instanceable or not. Here you will focus on instanceable assets.
Learn about the components, assemblies, and scene you are about to create. This will be a simple overview to show what the finished product will be from the rest of this course.
Bringing geo into Solaris has been covered in a previous course, but here you will quickly review some of the processes involved. You will then take a short look at how to use TOPs to process through the SOPs geo, write them to .bgeo files on disk, bring that into the component builder, and procedurally assign shaders. You will also quickly look at the procedural creation of a bookshelf for the final scene.
Assemblies are simply packaging of Components, with the possibility of adding some new geometry and materials. Here you will explore the process of manually creating 4 variants of the 2 “basket” and 2 “pillow” components. You will manually place the pillows into the baskets, and set up the required properties according to guidelines.
To create the next two assemblies for the scene, you will use loops to make variants. Each variant will scatter the same books but use different seeds in order to have slight differences while keeping our assets the same size.
This last chapter will bring together multiple elements in this course in order to make a renderable scene. You will create some scene relevant geometry, instance the Components and Assemblies onto the shelves, and then set up the scene to render.
コメント
__feisar__ 1 年, 10 ヶ月 前 |
Fantastic tutorials on USD, Peter!!
SideFX has really been stepping up the training. Please keep going!
Imconected 1 年, 10 ヶ月 前 |
One of the best resources for USD authoring out there can wait for more about animated USD's assets.
Thanks for putting this together.
conomara 1 年, 8 ヶ月 前 |
this stuff is well presented gold, and super appreciate the supporting files. thanks alot.
also thanks for referencing the guidelines doc from the working group for additional reading
Yann_P 1 年, 5 ヶ月 前 |
Hello Peter !
Thanks -again- for your videos, great source of information and "how-to" !
I have an almost not relevant question : what text editor are you using ?
I'd like to have this section folding ability when looking at usda files :)
SpeLL 7 ヶ月, 2 週間 前 |
Amazing tutorial!
Thank you very much!
jnrnkns 1 ヶ月 前 |
thanks for the great tutorial!!
and one question->
there is no .hip file included in the project files download right?
i think it would be super helpful if you could provide the .hip to be able to go into details.
e.g. where the `@sourcename` expression comes from... (in the material variants section) is it a TOPs? variable?
many thanks
jnrnkns 1 ヶ月 前 |
ok nevermind, i found the hip-file, when downloading and unzipping on windows...
maybe unzipping problem on macos?!?
PArcara09 1 ヶ月 前 |
Hey there! Glad you found the videos helpful.
The @sourcename attribute is one that is specific to reference nodes, and I believe it's created internally to that LOP. It's just a way to reference the name of the file being loaded and use that to name the destination primitive for the source USD content. No TOPs being used there. Hope that helps.
Please log in to leave a comment.