USD

[[21-01-01-Pipes]]

https://youtu.be/H-RYtuacUlM


Karma

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.

  1. Locals / Sublayers - A file on disk stacked with strenght order. Combine like photoshop (sublayers per department or steps like geo, mat… )
  2. Inherets - Like C++ classes. (keep insances alive). manage materials.
  3. VariantSet - Variant is single named variation of VariantSet (primitiv located in scene graph) / lod, variations… - For switching between items in a collection.
  4. References - Add a new item to your scene
  5. Payloads - - References with optional deferred loading. Optimization’s (not to load until they are needed)
  6. 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:

  1. 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
  2. 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.

  1. 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
  1. Use auto fill - will create folder and import SOP mats
    • Material network > browse to mat context and choose existing materials even from SOPs
    • USD Path Prefix >
  2. 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
  3. Add new by hand
    • Material VOP - path to material ../../mat/NameOfMyMat
    • Material Path - we can name
    • Geometry 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
-