So was going along with this UE4 tutorial on world outliner using tiled heightfield maps and had a few issues, namely below - is what Houdini produces when exporting a tiled heightmap (or black tiles). Flip Y on or off in Unreal is still a garbled mess. Anyone have any idea or has successfully done a tiled landscape in Houdini to UE4?
I'm exporting tiles via a heightfield output node.
Is there a better way? What's the upside to Heightfield Split or making an HDA? Can an HDA heightfield possibly be more efficient?
Also Unreal wants very strict naming conventions - name_xNumber_yNumber but the heightfield output node doesn't offer that - anyone know a code to fix that? Not sure what to do as you're forced to use Houdini's built in tile naming and don't want to rename 16-64 tiles manually.
Both the naming issue and the heightfield output tiling issue are known bugs. I'll let you know when they are fixed.
Unfortunately, using a HDA and a Heightfield tile node to export the data to UE4 through HEngine will not solve your issue for two reasons:
- the heightfield tile node doesn't have an option to share the edge vertices between the landscape tiles, so there will be a missing strip between each landscape. Trying to fix this by using padding on the tile node will create overlaps.
- The world composition workflow in UE4 really needs image files inputs, whereas an hda will populate a level with one or multiple landscapes.
Both the naming issue and the heightfield output tiling issue are known bugs. I'll let you know when they are fixed.
Unfortunately, using a HDA and a Heightfield tile node to export the data to UE4 through HEngine will not solve your issue for two reasons:
- the heightfield tile node doesn't have an option to share the edge vertices between the landscape tiles, so there will be a missing strip between each landscape. Trying to fix this by using padding on the tile node will create overlaps.
- The world composition workflow in UE4 really needs image files inputs, whereas an hda will populate a level with one or multiple landscapes.
The Heightfield output issue was fixed in the latest daily build (16.0.694). Still no x_y naming convention for now, I'll post an update here when that RFE has been added to the build.
dpernuit - the heightfield tile node doesn't have an option to share the edge vertices between the landscape tiles, so there will be a missing strip between each landscape. Trying to fix this by using padding on the tile node will create overlaps.
Is there a fix for this aspect of heightfield export if the heightfield is exported as image tiles?
lloydwood Is there a fix for this aspect of heightfield export if the heightfield is exported as image tiles?
As of 16.5.254:
The Volume Resize SOP and HeightField Tile Split SOPs have Tile Lower Overlap and Tile Upper Overlap parameters. The Tile Upper Overlap defaults to 1 for HeightField Tile Split reflecting the usual case of an expectation that the result will have duplicate points along the seam when converted to polygons. It should be set to 0 for the previous behaviour.
Does this mean you can NOT use Houdini HDA's with Tile Split nodes with World Composition? IE - you would HAVE to export the tiles and layers as bitmaps then import as opposed to importing an HDA with layers automatically assigned to the landscape material?
I'd prefer not to manually hook up a few hundred landscape layer bitmaps as masks and also getting the tiling ratio is a chore - it's derived from the Unreal components ie - tile by 4033 etc but then there's the padding issue to resize the UVs by to get the layers to match.
Unfortunately, HDA containing tiled landscapes (via the Tile Split nodes) won't work with world composition:
When imported in UE4 via the plugin, they will give you properly sized/placed landscapes, with layers, and thanks to the upper/lower tile overlap parameters Chris mentioned above, without any overlap. But the World composition system in Unreal only works with image files, and wont accept Landscape Actors.
(our original goal was to try to hook up tiled heightfields directly to World composition, but until it gets some form of update, this wont happen as the system really expect manual user interaction…)
The only solution you have is to bake out the Heightfields to image files via the heightfield output node, using the x_y naming convention expected by Unreal.
Unfortunately, HDA containing tiled landscapes (via the Tile Split nodes) won't work with world composition:
When imported in UE4 via the plugin, they will give you properly sized/placed landscapes, with layers, and thanks to the upper/lower tile overlap parameters Chris mentioned above, without any overlap. But the World composition system in Unreal only works with image files, and wont accept Landscape Actors.
(our original goal was to try to hook up tiled heightfields directly to World composition, but until it gets some form of update, this wont happen as the system really expect manual user interaction…)
The only solution you have is to bake out the Heightfields to image files via the heightfield output node, using the x_y naming convention expected by Unreal.
Ok thanks. I tried doing it via level streaming (not world comp) per tile and did have overlaps even with the upper and lower overlaps as well as distorted height values and offsets as though it recalculated the origin based on height for each tile vs. the whole scene and didn't match when aligned. Is there a work around for level streaming and not using world comp possibly?
Hello, I am also experiencing problems with the method outlined above:
dpernuit Hi, When imported in UE4 via the plugin, they will give you properly sized/placed landscapes, with layers, and thanks to the upper/lower tile overlap parameters Chris mentioned above, without any overlap. But the World composition system in Unreal only works with image files, and wont accept Landscape Actors.
I have a source Landscape, which is seamless, and HDA's which select a tile, and generate the appropriate landscape chunk in Unreal. However, I am getting seams between tiles. Which I believe may be related by the different vertical scaling applied automatically by Houdini to each landscape.
If both tiles were brought in by the same HDA, then the seems shouldnt be there.
If you need the two separate HDAs, then you can try forcing a common range conversion by using the ForceMinMax values setting in the project settings. In Project settings > Houdini Engine, under marshalling: enable Marshalling landscape force min/max values.
Alternatively, you can also try to enable the “Marshalling landscape use default unreal scaling” option.
What version of H are you using? Could you send me the HDA you're using? Converting two landscape tiles separately could result in seams, but not as big as the one you have. The two tiles also seem to overlap which normally shouldnt be the case, they should just “touch” each other.
I did some more investigation on that, and it seems that a regression was introduced recently that made the tiles to be 1 pixel too wide/tall… This is what caused the tiles to overlap, and created the seams.
I've committed a fix for that, it'll be in tomorrow's daily build of the plugin.
If both tiles were brought in by the same HDA, then the seems shouldnt be there.
The seams were there even in the same HDA but it turns out it was because I was I introducing the tile split too early, (before erosion to be precise) this meant the result were just not aligning, I guess due to the approach used for erosion. Itd be nice to be able to erode tiles Individually and get results that match if using a tiled approach as it's a bit more flexible.
dpernuit If you need the two separate HDAs, then you can try forcing a common range conversion by using the ForceMinMax values setting in the project settings. In Project settings > Houdini Engine, under marshalling: enable Marshalling landscape force min/max values.
Alternatively, you can also try to enable the “Marshalling landscape use default unreal scaling” option.
I tried both of these settings but didn't seem to be able to get them to match perfectly when using separate HDA's. I think using separate HDA's is the only way to work with streaming levels in unreal at the moment. Correct me if I'm wrong. It would be much better if the tiled output hooked directly into world comp, but I believe there are some difficulties in doing this at the moment?
dpernuit What version of H are you using? Could you send me the HDA you're using? Converting two landscape tiles separately could result in seams, but not as big as the one you have. The two tiles also seem to overlap which normally shouldnt be the case, they should just “touch” each other.
I'll happily send you the HDA's and a lightweight UE4 project containing them and their intended implementation.I might be mistaken but it seems like there's currently no easy way to get live updates for tiles that comprise massive landscapes.
Thanks a lot for taking an interest in helping me and discovering the regression. I'll see if that helps. I updated today to 17.0.459, but these issues were present on build 17.0.436.
I'm currently away from my computer but will send you the files when I get back.
Both the naming issue and the heightfield output tiling issue are known bugs. I'll let you know when they are fixed.
Unfortunately, using a HDA and a Heightfield tile node to export the data to UE4 through HEngine will not solve your issue for two reasons:
- the heightfield tile node doesn't have an option to share the edge vertices between the landscape tiles, so there will be a missing strip between each landscape. Trying to fix this by using padding on the tile node will create overlaps.
- The world composition workflow in UE4 really needs image files inputs, whereas an hda will populate a level with one or multiple landscapes.
I modify the houdini engine code, now it can create ALandscapeStreamingProxy form houdini heightfield split node. I think the houdini engine should support this, streaming level is very important for parallel edit.
I modify the houdini engine code, now it can create ALandscapeStreamingProxy form houdini heightfield split node. I think the houdini engine should support this, streaming level is very important for parallel edit.
Hi, this is pretty amazing. I wonder if anyone @sideeffects will pick up on this and talk to you.
Now that 17.5.208 supports an attribute to change landscape actors to streaming proxies, what would be the ideal way to implement world composition? I believe I need to create a empty landscape actor in my persistent level which the proxies reference. But I'm not sure how I would do that. Then secondly, every proxy would need to be placed in it's own level. Which will also break the HDA link in the persistent level.. Only way I see this happening is with a python script inside UE4. Anyone here who is still experimenting with this and succeeded?