Pipes

Related notes: [[DTA]]

Projects

  • Single source of truth. One place to keep data / docks / bugs
  • Create libraries - Build modular asset files. Keep them in USD
  • Iterative pipeline are better because you have more chances to do something good.
  • Iterate faster - Simplicity > speed > quality > innovation
  • tactical > operational > strategic goals

Startup config:

  • Paths:
    • Project / Job paths and dependences
  • Scale:
    • set up scale and orient (ie: forward axis)
    • pivot & transform for: copy to points / bake by parts separation. (rest)
  • Names
    • divide to parts textures: by type / material name
  • Shaders
    • Texel density
    • second uv / shader usage
  • Time:
    • FPS rate in software’s
    • Sub steps / Sub time in solvers

Bottlenecks:

  • Switching paradigms (tools and workflows). Exporting / Importing files
  • Not standardized naming convention / scale …

Environment

NAJLEPIEJ BY BYŁO PRZECHOWAC W DETAILU NAME

  • $JOB/ - setup on /Content/ folder to access global HDA folder
  • $HIP/
    • $HIPNAME.hip - Main file
    • /out/ - Exports
      • /`opname("..")`/
        • /$OS/
          • $OS_lod0.fbx - Export final LOD 0
          • $OS_hi_proxy .fbx - Proxy for sculpt
          • $OS.ztl - Tool (ctrl shift T)
          • $OS_hi .fbx - Hi for bake
          • $OS_lo.fbx - Lo for bake
          • $OS_lo_cage.fbx - cage for bake
          • fileA.png - Export / in same folder as spp/sbs
        • /marmoset/ (easy to have export path with source file)
          • marmo..tbscene
          • marmo_nm.png
    • /hou/ or
      • `opname("..")`/ / GEO OBJ SOP
        • cache/ - Main cache for sim / step in asset process / easy recreated vs source cache
        • tmp/- Temp cache
        • bake/ - Bake if from houdini
    • /hda/ - HDA - (Better to keep hda’s in JOB/HDA/… folder)
    • /src/ - Sources
      • / /
      • zBrush
      • Gaea
      • Scans
    • /img/ - Renders and
    • ref.pur - References
    • /old/
   
Name from attribute $HIP/`details("../filecache1","attribute1")`.fbx
offset 0010-0260 $HIP/name.`padzero(4,$F-10)`.png
range loop 0000-0250 $HIP/name.`padzero(4,$F%251)`.png
range loop 0050-0300 $HIP/name.`padzero(4,($F-50)%251+50)`.png
hold first $HIP/name.`padzero(4,min($F,250)`.png
hold last $HIP/name.`padzero(4,max($F,1)`.png
clamp $HIP/name.`padzero(4,clamp($F,1,250))`.png
Save with name form attribute: $HIP/obj/`opname("..")`/out/`details(0,'name')`.fbx
UDIM suffix chs("udimsuffix")

Suffixes

[NAME] _ [part] [subpart] _ [_scele (tiny/small)] _ [version] _ [verison low/mid/... ] Asset_A1_small_V1_001

  • Mesh Parts
    • A B C D
  • Version
    • V1_001
  • Maps Channels
    • cd diffuse (2.2) / albedo
    • a opacity a / alpha (fill)
    • rg roughness
    • sc specular
    • me metallic
    • nm normal / wn worldnormal
    • ao ao (2.2) / bn bent normal
    • th thickness
    • cv curvature
    • h height (range EXR)
    • p position / wp world position
    • id material id
    • m1 mask

Houdini

Houdini attributes

Base

  • v@N (vert) -
  • @P, v@rest, v@Cd, i@id, @Alpha (point)

Material

  • s@shop_materialpath (prim) - only material parameters of those belonging to the /nodes/shop/principledshader shader are recognized
  • s@fbx_material_name (prim)
  • @material_override

  • s@shop_materialpath (prim)
    • Unreal: Material name. s@unreal_material
    • Painter: Textures set cannot paint across different meshes in painter
    • Zbrush: ??Polypaint ?? groups / colors < mask in painter

Manage

  • s@name (prim) joints names, differentiate parts ! (( (points): RBD same name = same object. “piece*”))
    • Zbrush: Subtool
    • Painter: Separated obj in painter Bake by mesh // - @name (prim) - mesh name ! can bake by mesh name !!!
    • Unreal - s@name (prim) = UCX_assetName_00
  • i@class (prim) - , reserved to connectivity // connectivity / delete small pieces / nodes.
  • i@id (point)- particles, ctrl points for animation
  • s@tag - string in new scatter, tree
  • i@variation - copy to point / new scatter

Uv

  • v@uv (vert)
  • v@uv1 (vert)
  • i@udim=1001; (prim)
  • i@island=3; (prim)

Unreal

  • s@unreal_input_mesh_name (prim)
  • i@unreal_nanite_enabled = 1 (detail)
  • s@unreal_material (prim)

Character FBX

  • @boneCapture (point) on the skin geometry - defines the skinning weights.
  • @clipinfo (point) Current animation range and sample rate as well as the original animation range and sample rate of the imported animation.
  • s@name (point) - unique name across all points used for identification. (only used if the path point is missing).
  • @path (point) hierarchical path of FBX node that corresponds to the point. It is created when FBX files are imported by the FBX Animation Import or FBX Character Import nodes. This path is used to identify where to export the point transforms.
  • @scaleinheritance (point) specifies the scaling behavior when performing local transformations. See combinelocaltransform and extractlocaltransform
  • @transform (point) 3×3 matrixworld transform for the point. While the world position of the point is still P, this transform encodes the world transform’s rotation, scale, and shear components.

I/O

How convert units and axies work with in H and U

Convert

  • H to Reality capture: x:+90 y:+90 to fbx.
  • ZBrush vs Houdini: +X in zbrush = -x in houdini
    Hand / DIR Vector conversion formula Quaternion conversion formula
Gl Houdini, Maya, Substance, Modo, Godot, Marmoset, Open GL R, Y-Up
X>Y>Z
XYZ XYZW
B
3ds Max, Blender, CryEngine, Auto Cad, Source, SketchUp R, Z-Up
Z>Y>X
X,-Z,Y X,-Z,Y,W
DX Unity, ZBrush, Cinema4D. LightWave, Direct X L, Y-up
Y>Z>X
-X,Y,Z X,-Y,-Z,W
UE Unreal L, Z-up
Z>X>Y
X,Z,Y -X, -Z,-Y,W

Collision

Sop level
  • s@nameprim = assetName
  • s@nameprim = UCX_assetName_00
Object level
  • UCX_* - from houdini need to be in separated containers named UCX_nameOfGeoContainer. - object level (make container !!! and ROPnet > fbx)

Houdini Import

Character FBX

  • SOP Character FBX Import - keeps textures hierarchies blendshapes cameras
  • SOP File - fastest
  • Labs FBX - slow like file menu import


Gaea

to HOudini » .exr / .png (raw dont work as heights)


Painter

  • single texture sets !!!!!! with multiple materials https://youtu.be/KbP7Pp2UeR4?t=975

  • maski / vertex color ?

    • maski
    • bazowy kolor ??? raczej niepotrzebny

Hou to painter

UDIMS
tile within same

Substance

(*.spexp - E:\Documents\Allegorithmic\Substance Painter\shelf\export-presets)

Workflow:

  • Subtool 1 to nazwa główna pliku. subtool = file name

Export

  • Zplugins>FBXExport>. Export polygroups as mats.
  • Use GoZ!

ZBrush

  • ZBrush vs Houdini: +X in zbrush = -x in houdini

Marmoset

  • Zbrush groups ???? HOW TO ???

Unreal

Unreal Import

  Default Adam def VA3   SK PP2  
Skeletal Mesh - -     On -  
Generate Missing Collision v ?       -  
Staticm MeshLODGroup   -       -  
Vert Color Ignore Repleace Repleace     Repleace  
Remove Degenerates v v   x   -  
Building Reversed Index Buffer v v   x   -  
Generate Lightmap UVs v -       -  
One Convex Hull per UCX v ?   x   -  
Combine Meshes -     x   -  
Transform Vertex to Absolut v ??? On x   ?  
Import Mesh LOD’s     depending on Houdini -   -  
Normal Import Import N   Import N & Tang Import N   Import N  
Normal Generation Mikk         -  
Compute Weighted Normal v     x   -  
.              
Transform ident ident       -  
.              
Convert Scene v   On x   On  
Force Front XAxis -         x  
Convert Scene to Unit -         -  
Override Full Name v   On x   -  
.              
Material   -       -  
Reorder mat to fbx v   On     -  

with skeleton - update skeleton reference pose - !!!!!!!!! important


Speed Tree


Configs

Houdini

  • Windows: C:\Users\username\Documents\houdini20.0 / C:\Documents\houdini20.0
  • OSX: ~/Library/Preferences/houdini/houdini20.0
  • Linux: $HOME/houdini20.0

Documents directory:

  • Desktop /desktop/AB.desk
  • Radial menu /radialmenu/ABModeling.radialmenu
  • theme /config/theme.hcs / inc  » ZEN
  • color palete /config/colors.def
  • Recipies /otls/Recipes.hda

Inside Houdini

  • Menu options
    • default handle aligment: World
    • standard tumblig wievport
    • secure selection off
  • Presets/Sops:
    • cachce node: / path / dont override $OS with name
  • add paths to ‘Open file dialog’
  • add ‘render flipbook’ outpout: $HIP/$HIPNAME.jpg

Software directory:

  • 123.py - default scene change

Environment

  • .env file
  • PDG_IMAGEMAGICK=/Applications/ImageMagick-7.0.8/bin/magick
  • PDG_FFMPEG= ""
  • CURVES IN EDITOR: python2.7libs fcurves.py 3 files / HSITE = ""
  • HOUDINI_EXTERNAL_HELP_BROWSER = 1

Packages

  • newer is /houdini19.0/packages/ folder - can be many files
    • create .json file

DefaultScene

  • C:\Program Files\Side Effects Software\Houdini 19.5.534\houdini\scripts
  • Houdini 19.5.xxx/houdini/scripts/123.cmd or create: 123.py with python code: hou.hipFile.merge("..path/to/default/file/file.hip") hou.hipFile.merge("//moth/library/houdini/DefaultScene.hiplc")

HQueque

  1. Instal
    • HQueque Client
    • HQueque Server
  2. go to services > properties: login to network
  3. go to localhost:5000
  4. Share forlder
    • folder properties: advance sharing, - permitions:
  5. hqserver.ini
    • to jest config, can send mails, folder configs
  6. licencje
  7. Houdini
    • Taget HFS
    • $HQROOT - basic path

Linux setup

Run Houdini on ubuntu

  1. source houdini_setup The Houdini 19.0.589 environment has been initialized.
  2. export LD_PRELOAD="/lib/x86_64-linux-gnu/libc_malloc_debug.so.0"
  3. houdini
  • sudo apt update
  • sudo apt install ffmpeg
  • sudo apt install imagemagick

P4

  • Accept Source Get clean file from repo, discarding your changes.
  • Accept Target Accepts the file local, overwriting repo.

Atom

ctrl + t = search file names
ctrl + f = search
ctrl + shift + f = in whole project
ctrl + / = show tree

http://fxnomemo.blogspot.com/2021/04/houdini-workflow.html

Using file cache with rop geo TOP. with sequences choose automatic

Naming Conventions

  • camelCase, CapitalCamelCase - in pascal
  • flatcase
  • caterpillar-case - css
  • snake_case - c
  • MACRO_CASE, UPPER_CASE - (C preprocessor macros)
  • COBOL-CASE, TRAIN-CASE -
  • python vars
  • code names (hard to see space)
  • Use _ to separate parameters in names.

Syntax - red green yellow
Semantic - green=go, red=stop
Paradigm - If red and no traffic then allowed to go

code = syntax / structuring / understand = machinery


Pivot Painter 2. hierarchy:

2 groups ?

POINTS:

  • point names
  • N GEO:
  • point name
  • uv
  • group: branch
  • group: leaf

==============


OLD

Exports, Cache  
Maps Bake $HIP/`opname("..")`/export/bake/${OS}/${OS}_$(CHANNEL).tga
Game  
TextureSheet / MorionVector seqence $HIP/`opname("..")`/export/bake/${OS}_sequence/
TextureSheet / MorionVector $HIP/`opname("..")`/export/bake/
Heightfields $HIP/`opname("..")`/export/heightfields/$OS/
Vertex Anims ROP $HIP/`opname("../..")`/export/vat_$OS
Niagara $HIP/`opname("..")`/export/niagara/$OS.hbjson
Impostors $HIP/`opname("..")`/export/${OS}_impostor/sequence/${OS}.$F4.exr
Impostors $HIP/`opname("..")`/export/${OS}_impostor/${OS}_beauty.exr
COP  
COP image $HIP/`opname("..")`_cop/${OS}.exr
Embeded assets opdef:/Sop/…