was planning on transfering some texture painting techniques to houdini for a while now which i never did because i like the realtime feedback that you get from 3d painting applications.
but it also takes some time to get to the point where you can start painting. cleaning geometry for export, generating utility maps, exporting the end result can take some time. which is fine for hero objects, not so great for entire cities or complex mechanical objects. on top of that i rarely need a brush for the base setup, if its a hero object i might touch it up in the end.
the speed increase from mantra to karma is pretty nice. slowly packaging up small hda's. i am still shifting stuff around, besides... not all stock nodes work yet with karma, displacements are also still an issue.
basic workflow
so the masks do not use any uv's. they are based on normals, world position, occlusion, curvature and thickness. this lets you construct general purpose shaders on light testing geometry - like a shaderball - and apply the material to a different asset. works nicely with similar looking objects - coming from a shaderball and applying it to a house might be a bit extrem tough...
diffuse
- base diffuse layers: metal, wood, fabric etc
- secondary diffuse layer: paint, text, aging, rust, grunge
- masks define specific features: leaks, mold, grunge, paint chipping
- mix between base and secondary colors using the masks
- apply wear and tear grunge patterns ontop
- mask out parts that reveil the base material (scratches, chipping, etc)
roughness and metallic channels
- mix relevant layers using blending modes and / or masks
so the masks do not use any uv's. they are based on normals, world position, occlusion, curvature and thickness. this lets you construct general purpose shaders on light testing geometry - like a shaderball - and apply the material to a different asset.
works nicely with similar looking objects - coming from a shaderball and applying it to a house might be a bit extrem tough... the favela houses are not subdivided, the curvature harsh and mostly flat... your results may vary. the main pitfalls are the texture map scaling settings - if you are using uv based texture maps - and parameters like curvature threshold, occlusion distance and the sorts might need adjustments.
the favela houses are not subdivided, the curvature harsh and mostly flat... your results may vary. the main pitfalls are the texture map scaling settings - if you are using uv based texture maps - and parameters like curvature threshold, occlusion distance and the sorts might need adjustments.
shaderball
- 2 model variations. use the path attribute for importing into lops
utility hda's
seed slider randomizes parameters between a user defined range. using this for the favela buildings - isolate walls that need a window, scatter points onto the measured poly, divide the area size by the window count, copy stamp the hda onto the points, source points control seed, max width and height parms.
- warp: domain distortion - for braking up patterns
- remap: grade node similar nuke's logic
- color: constant with metal presets, colorize the input, randomize hsv
- solo: bypass the network to isolate nodes
- pbr validate: visualize the limits of your pbr range
- layer blend: mix, multiply, screen, divide, add, minus, difference, lighten, darken, overlay, hard / soft / vivid / pin light, linear burn, color dodge, color burn
masking hda's
cutter tool that aligns itself to the longest edge of a poly. useful for brick walls, rooftops, upres messy topology etc. i have seen more stable nodes, but it was good enough to bricker an entire city... roughly 400 buildings.
- wear: occlusion based dirtmap
- iso: mask by normals, thickness and curvature
- pat: scratches, dot splatter, voronoi noise, lines
texture map hda
- texture file node that picks random files out of a sequence.
- randomizes the position, rotation and scale between min and max values
resources
criss turner blog: domain distortion examples, grade / fit node explained