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 bakefileA.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 SOPcache/
- Main cache for sim / step in asset process / easy recreated vs source cachetmp/
- Temp cachebake/
- Bake if from houdini
/hda/
- HDA - (Better to keep hda’s in JOB/HDA/… folder)/src/
- Sources/ /
- zBrush
- Gaea
- Scans
/img/
- Renders andref.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) / albedoa
opacitya
/ alpha (fill)rg
roughnesssc
specularme
metallicnm
normal /wn
worldnormalao
ao (2.2) /bn
bent normalth
thicknesscv
curvatureh
height (range EXR)p
position /wp
world positionid
material idm1
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 recognizeds@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
- Unreal: Material name.
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 animations@tag
- string in new scatter, treei@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 thepath
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 | ||
---|---|---|---|---|
![]() |
Houdini, Maya, Substance, Modo, Godot, Marmoset, Open GL | R, Y-Up X>Y>Z |
XYZ | XYZW |
![]() |
3ds Max, Blender, CryEngine, Auto Cad, Source, SketchUp | R, Z-Up Z>Y>X |
X,-Z,Y | X,-Z,Y,W |
![]() |
Unity, ZBrush, Cinema4D. LightWave, Direct X | L, Y-up Y>Z>X |
-X,Y,Z | X,-Y,-Z,W |
![]() |
Unreal | L, Z-up Z>X>Y |
X,Z,Y | -X, -Z,-Y,W |
Collision
Sop level
s@name
prim = assetNames@name
prim = 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
- Instal
- HQueque Client
- HQueque Server
- go to services > properties: login to network
- go to localhost:5000
- Share forlder
- folder properties: advance sharing, - permitions:
- hqserver.ini
- to jest config, can send mails, folder configs
- licencje
- Houdini
- Taget HFS
-
$HQROOT - basic path
Linux setup
Run Houdini on ubuntu
source houdini_setup
The Houdini 19.0.589 environment has been initialized.export LD_PRELOAD="/lib/x86_64-linux-gnu/libc_malloc_debug.so.0"
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/… |