Houdini Height Fields
Height fields were introduced in H16 and are 2D volumes that make complex terrain lightweight. There are new tools for height fields (type hf in the tab menu) and much to explore.
Highly recommended resources:
-
Example of scatter on a heightfield
EXAMPLE FILE FAQ/HeightFields/hfScatterExample.hipnc
-
Tips for painting/sculpting a heightfield
EXAMPLE FILE FAQ/HeightFields/hfTips.hipnc
-
Delete
parts? Try clip, cutout by object, or crop (with or
without object)
EXAMPLE FILE FAQ/Terrain/hfClipOrCutoutOrCrop.hipnc
Note: As of Houdini 19.0 and up, there is a SideFX Labs node that should be used instead of the older workflow.
Unreal Engine:
- My Summary of Steps for Houdini 18.5
- Heightfields in Unreal — SCAD Alumna Bianca Lopez shows you how to bring Houdini heightfields into Unreal (not version 18.5; a Labs node is now available for 19.0 and up and should be used instead)
Unity:
Recommended places for data:
- Open Topography — recommended as of April 2023
- If you find references in forums to terrain.party and MapBox.com (including a Labs MapBox, unfortunately those are no longer available). It appeared mapbox was moving to gl/js but for now, use Open Topography (checked on 4/30/2023 Houdini 19.5.303
Cool to try:
- Download a map (maybe your home town) from Open Topography
- Create a geo node, dive inside, create a Height Field
File node — read in your
file.png - Increase the setting on the Height Scale
Quick sample:
Height fields store 2D data but are treated as a volume (i.e. height). There are no polys — don't convert unless you want them to bog down your session. They use the GL tessellation shader on the video card.
Since they are volumes, you can use volume tools with them: volume blur, re-sample, etc. They are tile-based as well. Volume Compress will reduce memory footprint (similar to how it is used for pyro). It is possible to create another matching volume and merge — e.g. height and rainfall.
Useful nodes: Height Field Visualize · Height Field Wrangle (really a volume wrangle) · HF Copy Layer
In the Collisions tab there is a Terrain Object — the Bullet solver is aware of height fields. They are a new type of primitive to work with 2D data. The teal input is for height volumes, not polygons.
Fun things to try:
- Add geometry by projecting onto an
existing terrain (height fields can't be "bent," but
this provides a cave workaround) —
EXAMPLE FILE caveWithStalagmites.hipnc
- HF Layer has a third input you can use as a mask. Sinusoid
noise (turn center off) can be useful for creating
slopes —
EXAMPLE FILE terrainExample.hipnc
Some interesting results from others:
Karma: If you use SOP Import you can
check the box to have it convert on import to render
Redshift:
- You can convert (using Convert Heightfield) — be sure to check Bake Point Colors
- To keep your heightfields lightweight, the recommended approach in the Entagma tutorial (timestamp 15:29) — taking the images into the Redshift shader with a little COP manipulation, similar to what you do with Unreal
Mantra: No need to convert to poly.
If you are having issues with uvquickshade, you can also use a layered material.
When adding displacement, beware that the IPR render may not keep up with auto-update — use mplay render.
To create a mask attribute you can bind, use HF Copy. Use these much like grouped UVs — chained, NOT merged.