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

  • $JOB/ - setup on /Content/ folder to access global HDA folder
  • $HIP/
    • $HIPNAME.hip - Main file
    • /out/ - Exports
      • /`opname("..")`/
        • /`details(0,'name')`/
          • /high/ - Z-brush meshes
            • $OS.ztl - Tool (ctrl shift T)
          • /mat/ - marmoset
            • Name.tga
            • marmo..tbscene
          • $OS_lod0.fbx - Export final LOD 0
          • $OS_hi_proxy .fbx - Proxy for sculpt
          • $OS_hi .fbx - Hi for bake
          • $OS_lo.fbx - Lo for bake
          • $OS_lo_cage.fbx - cage for bake
    • /cache/ or
      • `opname("..")`/
        • /proxy/ - Saved obj for other software
        • /cache/ - Caches. (step in asset process that can be recreated)
        • /temp/- Temp cache
        • /bake/ - Bake if from Houdini
        • /mat/ - Material / Marmoset
    • /hda/ - HDA - (Better to keep hda’s in JOB/HDA/… folder)
    • /src/ - Sources
      • Gaea
      • Scans
    • /img/ - Renders and
    • /old/
    • ref.pur - References

PARTS OF MESH VERSION OF ASSET detail name Normal Divide - Clean Mehs:

  • Clean SOP helps Clean attributes:
  • Vertex: uv N
  • Point: boneCapture
  • Primitive: fbx_material_name name
  • Detail: name

  • s@nameprim = assetName
  • s@nameprim = UCX_assetName_00

Suffixes

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

  • 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
    • cu curvature, cv cavity
    • h height (range EXR)
    • p position / wp world position
    • id material id
    • m1 mask

      Houdini

FBX export: $HIP/out/`opname("..")`/`details(0,'name')`/$OS.fbx velum I/O / COPtextures

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 | 200 Houdini, Maya, Substance, Modo, Godot, Marmoset, Open GL R, Y-Up
X>Y>Z
XYZ XYZW
| 200 3ds Max, Blender, CryEngine, Auto Cad, Source, SketchUp R, Z-Up
Z>Y>X
X,-Z,Y X,-Z,Y,W
DXl | 200 Unity, ZBrush, Cinema4D. LightWave, Direct X L, Y-up
Y>Z>X
-X,Y,Z X,-Y,-Z,W
UEl | 200 Unreal L, Z-up
Z>X>Y
X,Z,Y -X, -Z,-Y,W
         

GENERAL

Houdini attributes

Base

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

Material

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

  • 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.
Name form detail attribute: $HIP/obj/`opname("..")`/out/`details(0,'name')`.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
UDIM suffix chs("udimsuffix")

Houdini nodes override

paths to files


I/O

How convert units and axies work with in H and U

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

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/depo, discarding your changes (workspace).
  • Accept Target Accepts the file local (workspace), overwriting repo/depo.

Foobar

https://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Title_Formatting_Reference https://columns-ui.readthedocs.io/en/v3.0.0-beta.2/playlist-view/title-formatting.html file:///C:/Program%20Files/foobar2000/doc/titleformat_help.html

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/...
- `$JOB/` - setup on /Content/ folder to access global HDA folder
- `$HIP/`
	- `$HIPNAME.hip` - Main file
	- `/out/` - Exports
		- ``` /`opname("..")`/ ```  
			- ```/`details(0,'name')`/```   
				- `$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("..")`/ ``` 
			- `/high/` - Z-brush meshes
			- /proxy/ - Saved obj for other software
			- `/cache/` - Caches. (step in asset process that can be recreated) 
			- `/temp/`- Temp cache 
			- `/bake/` - Bake if from Houdini
			- `/mat/` - Material / Marmoset
	- `/hda/` - HDA - (Better to keep hda's in JOB/HDA/... folder)
	- `/src/` - Sources 
		- Gaea
		- Scans
	- `/img/` - Renders and 
	- `/old/`
	- `ref.pur` - References