Deborah R. Fowler
Houdini Height Fields:
Posted Sept 24 2017
Updated Sept 30 2019
Updated April 27 2020 with a few additional sample files
Updated Jan 31 2021 with more detailed Unreal instructions
Updated April 30 2023
Height fields are new in H16 and are 2D volumes that makes complex terrain light weight. There are new tools for height files (type hf in the tab menu) and much to explore.
Highly recommended places for information:
- *NEW 19.5* https://www.sidefx.com/tutorials/the-complete-a-z-terrain-handbook/
- https://www.sidefx.com/tutorials/green-mountains-terrain-overview/
- Jeff Lait's H16
Masterclass on Height Fields (out on Sept 20)
- SideFX documentation on Height Fields including an video overview
- https://www.sidefx.com/tutorials/heightfields-for-crowds/
- What is new in H16 for terrain
Quick Examples
- example file with scatter on a heightfield
- tips for painting/sculpting a heightfield
- delete parts?
Try clip, cutout by object, or crop (with or without object)
In game: note there is a SideFX LABS node now (19.0 and up) that should be used instead
- My Summary of
Steps for Houdini 18.5
- Heighfields
in Unreal - our own SCAD Alumna Bianca Lopez
shows you how to bring Houdini heightfields into Unreal! (not
version 18.5) - note there is a LABS node now (19.0 and up) that
should be used instead
- Heightfields into Unity (May 16, 2018) have to view this but this may come in handy!
Recommended places for data:
- Open Topography - https://www.opentopography.org/
- terrain.party
USGS HeightMap from anywhere on Earth (this site no longer
functions)
- under the SideFX Labs there is a
node called mapbox (tested 4/30/2023 and it failed to download
the height map, did download color and osm file)
- create an account at www.mapbox.com
- create a geo and dive inside, type Labs MapBox
- type in your API key from the website, click look up, select the area on the world map, click download
- (they tend to be large images, so give them time to
download)
- what you see on the screen will be what appears in Houdini
- you can also type in different lat/long/zoom and refresh to
get another terrain
My brief notes from the above mentioned masterclass. As of
4/30/2023 in 19.5.303 with the dailies lab tools this only
downloaded color and osm maps. To be further investigated.
Looks like mapbox is moving to mapbox gl js. For now use Open
Topography.
Height fields are storing 2D data but are treated as a volume
(ie. height). There are no polys (and don't convert unless you
want them to bog down your session). They use the gl tesselation
shader on the video card.
Since they are volumes, you are 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 ie. height and rainfall.
height field visualation node
height field wrangle (really a volume wrangle)
hf copy layer
In the collisions tab there is a terrain object as 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.
Some interesting results from others:
So cool to try:
1. Download a map (maybe your home town) from terrain.party (was
working when this file was downloaded, no longer functional)
2. Create a geo node, dive inside, create a height field file
node - read in your file.png
3. Increase the setting on the Height Scale
(Here is a quick sample with the Saskatchewan River in
Saskatoon)
Fun things to try:
Adding geometry by projecting onto an existing terrain (height fields can't be "bent" but this provides a cave workaround)
caveWithStaligtites.hipnc
HF Layer has a third input that you can use a mask. Also Sinusoid noise (turn center off) can be useful for creating slopes.
terrainExample.hipnc
Rendering:
If you are having issues with the uvquickshade, you can also use a layered material - example file here.
(when adding displacement, beware that the ipr render may not keep up with autoupdate, use mplay render)
Note that to create a mask attribute that you can bind you can use HF copy, use these much like you would grouped uv's ie. chained NOT merged
In Mantra, no need to convert to poly but ...
In Karma - if you use sop import you can check the box to have it convert on import to render https://www.sidefx.com/forum/attachment/33d009e374aabde92b198ad718b8617d972cde3d/
In Redshift
- you can convert (using convert heightfield) and be sure to check "Bake Point Colors"
- however, if you want the advantage of keeping your heightfields lightweight, I would recommend the Entagma tutorial at time stamp 15:29 taking the images into the Redshift shader with a little COP manipulation (similar to what you do with Unreal). https://www.youtube.com/watch?v=aPcN4jt2_hA