[[21-01-01-Pipes]]
https://youtu.be/H-RYtuacUlM
USD
http://www.usdmanager.org/about.html
Root layer stack Paradigm
- Primitives: fundamental building blocks / hierarchical structure. Primary container object.
- Properties: named * typed data on primitives / attributes & relationships. Secondary container object.
- Paths: (Namespace) precise locations in the scene hieratchy / primitives & properties (like a file paths on disk)
- Layers: bundles of primitives and other properties / vontains opinions / in-memory & ment to be saved on disk
- Layer Stacks: ordered collection of contributing layers (sublayers)
- Root Layer Stacks: foster collaborative workflows / common scene description / no one has to build their scene
.
- Stage Scene (loadeld file / composed)
- Model - Everything that contribute to asset with exclusive ‘kind’ type.
- only group model prims can have oyher model children.
- A prim can only be a model id its prim is also (group) model
- No prrim should have exact kind ‘model’.
- find with calls in vex:
usd_ismodel()
usd_kind()
python:UsdPrim::IsModel
UsdModelAPI::GetKind
- Primary container object: Primitives and Attributes (secondary).
- Primitives can contain other Primitives creating a namespace hierarchy on stage
We always work ‘against/relative’ to stage.
- Worls vs local space (tarnsforms, velocity/acceleration, motion blur)
- Duplicate date (e.g. subdiv settings/topology attributes) vs writing to sparsley
- Use stage mertrics (fps/shutter sample count/material binding) to drive SOP settings.
ASWF Asset Structuring Guidelines
Kind
A method of defining hierarchy on primitives (like tag) help define role in hierarchy. In most pipelines should be automated. authoring: (like in sop import / configure primitive). Can help in selection. (can change behavior’s type in selection RMB menu)
- All geometry is one component
- Nested groups and component - Auto set: xform as group / geometry as component - component only on root levels
- Nested assembly group and components - for dense hierarchy tree.
- should be class primitive and models will inherent from it.
/Models <group
/Characters <group
/CharacterA <assembly (ready to put in to scene)
/Skin <component
/mesh
/Addons <component
/mesh
/CharacterB <assembly (ready to put in to scene)
/Props <group
/Props1 <assembly (ready to put in to scene)
/mesh ??
/mesh ??
Component
Cannot contain groups or asemblies! Only able to contain Subcomponents. (most of time when import sops or smaller assets.)
- component models are publishable assets that keep their geo behind a payload
- most nasic asset published in a USD
Subcomponent
An important primitive inside a component (e.g. a door pivot)
Assembly
An important group. Usually a published asset or reference to one.
(ready to put in to scene)
Bring togheter other componenets
- Assembly models are publishable assets which reference components or other assebly assets
Group
Can contain components, groups, or assemlies. Most flexible.
Properties ?
Selectors
?? Selectors:
- Leaf geometry - Leaf - ‘end of a hierarchy branch’ no childs
- Component
- Subcomponent
- Model
- Group
- Assembly
- Point Instance (top level)
- Point Instance (leaf)
Purpose
configure primitive node.
Layers
Need to export
can set in SOP import
or Configure layer
#### Variant layers can be stored separat files or all in one layer
- one file - reduce num of layers / somple management
- multiple - easier for tools or pipelines (like for layout lop in solaris)
I/O
Save control:
- Implicit - will save layer on usd path . so path not set. Not clean. Better have controll.
Save Path
Composition arc
LIVRPS hierarchy:
Opinion strength ordering in each LayerStack- overrides permissions when merging you can use same asset and it will use one with stronger opinion.
Locals
/Sublayers
- A file on disk stacked with strenght order. Combine like photoshop (sublayers per department or steps like geo, mat… )Inherets
- Like C++ classes. (keep insances alive). manage materials.VariantSet
- Variant is single named variation of VariantSet (primitiv located in scene graph) / lod, variations… - For switching between items in a collection.References
- Add a new item to your scenePayloads
- - References with optional deferred loading. Optimization’s (not to load until they are needed)Specials
- materials tweaks - Inherits with some special properties.
Formats
refer to geo in hierarchical way. Can be extended by plugins to use other formats
.usd
- [binary] or [ASCII]
.usdc
[binary] Crate files. -Compressed, faster to access. Best for large geo.
.usda
- [ASCII] human readable format. For debug and experiment, can open like usd
.usdz
- Support for collection of files in zip (like mesh and textures)
File Structure
file.usd > payload.usdc > geo.usdc / mtl.usdc
- payload » what to show / load
Variant layers: separate file vs all in one layer
Setup Asset file inside USD !!!!!!!!!!!!!!!!!!!!!!!!!
Make scene with light to use all the time.
1) componentgeometry: import fbx file > https://youtu.be/HgEwvTjmrgE Outputs:
- required - for render
- proxy - viewport
- simproxy
2) component material
3) material library
- to 2op of componentmaterial
- setup material x 4) component output
- name it
- thumb it
- SAVE TO DISK
!!!!!!! now we have usd file. how to update ???
BRING BACK SAVED FILE
1) file node
- import usd file 2) edit
- i.e: editMaterial node.
- drag material from tree to node param details panel.
SOP
Authoring geometry for USD use:
- In SOPs:
- name - Can drive Assemblies / Groups / Components
- path Primitive attributer - Can drive Assemblies / Groups / Components
- geometry Prim groups - USD Sub-component (geometry faces subset) useful but not part of composition ark
- In LOPs: Load context: Use referencing vs … ?
References
- sub layering tree. Adding new props. multiple input can import same asset only as ref.Sublayers
- attaching as a branch
## SOP <> USD
19:
Asset import
Add asset to library
### Component nodes
can quickly setup constructed asset
18.5:
Usd like packed primitives
In SOP:
- SOP geometry prim groups
- Organized by 2 attributes `@name` + `@path` (prim) - with name in the end: `s@path = "/basicFolderForSolaris/" + s@name;` so path will be: /Folder/name (`/` is important)
- s@path = "/Barrels/next level/ name" + s@name; - name change tree ROOT !!
- s@path = "Barrels/next level/ name" + s@name; - name change tree RELATIVE PATHG !! (import path prefix in import sop LOP now is dynamic)
In LOP:
- USD Assemblies, Groups, Components
- USD SubComponents, limited, only for materials .
### [usdexport] SOP
nested assembly, group and components.
Assemble SOP & geo SubsetGroups
IN SOPS: Assemble SOP can help with exporting to lops. > create groops. » In LOPs Subset Groups (are attributes of primitive. )
https://youtu.be/DI09YJLZ_6k?t=1472
LOP
Solaris Viewport
Stage
- node view.Scene Graph Tree
- Outliner with scene graph compose tree.- Scene Graph Path /
- Primitive type: - xform, mesh /
- Vatiants /
- Kind - assembly, group, component. ()
Scene Graph Layer
-Layout Asset Gallery
- Asset Library
Input
[SOP Create] LOP
- subset groups like attrib / groups for assign materials
##### Load Layer
Open disk file
##### Sub Layer
Open disk file or merge
[SOP Import] LOP
Load From Sops.
- Load as reference checkbox.
- Packed Primitives how to pack primitives.
- Create point instancer - grab prototype. much optimised !!!! with much of points. (or for sim)
- Native Instances - (prototype + huge hierarch blue instances )
- Xform - kill instances
- Unpack - kill instances without nulls
- Kind authoring
- Layer save path - good to set a destination
$HIP/..usd
.
Subset groups to preserve groups !!!
[SOP Scene Import] LOP
Import all from SOPs
[Stage manager] LOP
by drag and drop.
[Reference] LOP
Variants
Add Variant to existing primitives
Loop for adding variants.
- Primitive path - set path to primitives u want to make variants for,
Set Variant
Set one —
SOP Modify LOP
USD Configure SOP
Collection
Collection LOP will author a collection primitives. like selction set. - will be saved in file. (overal usd) Can add material to collection.
Geometry subsets
-
scale well, can attach materials
Materials
Material Library
Assign material
Material Variation
https://youtu.be/EcMq_DH-DnM
Out
Configure Layer
- Write asset to disc.
USD ROP
- Write to disc
Manage
Prune
Isolate (Primitive pattern)
Merge
Will create separated layers
Configure Primitives
- Purpose: Render(tylko w karmie)/Proxy(tylko w hydrze)/Guide
Procedurals
Add Variant
Material
Way to assign material:
- SOP path & name prim attributes > USD Assemblies/Group/Components
- SOP Geometry Prim Groups > USD Sub-Components
Material Library
We can assign material to whatever level of hierarchy
- Save with asset or alone ? - Zmienić materiał Path z - materials na barrel
- Use auto fill - will create folder and import SOP mats
Material network
> browse to mat context and choose existing materials even from SOPsUSD Path Prefix
>
- To assign geometry to created library in
Geometry Path
- drag and drop geo from: Scene graph tree to get explicit path
- write a filter ie;
*geo*
to assign by name
- Add new by hand
Material VOP
- path to material../../mat/NameOfMyMat
Material Path
- we can nameGeometry Path
- as in pt 2.
material linker
??? more artistic visual than mat assign (For procedural)
Assign Material
Same less options
[Layout] LOP node
- brush
- edit
insertion points
! nod allow to move edits upstream !
instance
stage manager > to folders collection > (name from folder) instancer > %foldername )and add point inside !_
1) scene import - import all < will be slower you need bake it and read in later. - u can filter
2) not portable because have no folders so
- destination path >> JAKIŚ_GLOWNY_FOLDER (see prev in scene graph tree)
- later be more specyfic and build hierarchy of your needs
we will divide by layers
LAYERING:
Sublayer LOP node <
1) import rest pose
2) sublayer anim
it will update only differences !!! (po prawej a wieksza opnie )
can set OPINIONS by: layer position
@Cd >> W USD: displayColor
MAT:
1) Mat lib
- matx subnet. >> mtlx standard
- BEFORE PLUGIN BASE COLOR: convert jpg to aces ACES: karma_OCIO_transform Utility - Linear - sRGB >> ACES - ACEScg
- BEFORE PLUGIN NORMAL:
- mtlxgeometrycolor - vertex color // or geompropvalue z parametrem displayColor (Cd in sops)
-
2) assign mat
-primitives: drag geo from scene graph
- material path:
- drag material from scene graph
LIGHT:
USD WORKFLOW !!!!!
1) reference < otworz
x) usd rop < zapisz
...?
VARIANTS:
- like lod i mozesz zmieniac
-