Theoretical Speed Improvements?

   1064   3   3
User Avatar
Member
47 posts
Joined: 3月 2014
Offline
Hi all. Houdini and Houdini Engine is very powerful as you all know (my favoirite way of building anything), but the constant negative feedback I always get from all Unreal artists is that HDA based tools are too slow - they are not interactive and you have to wait too long after each parameter change. (It looks cool in promotional videos, but they are usually sped up and waiting parts are cut out so it looks very interactive.) That breaks the flow and artists don't like to use those tools. Compared to native tools built with Unreal Blueprints or Unreal C++ which are instant - even real time.
I understand why this is so - you have to roundtrip the data between Houdini runtime and Unreal, recook, send data back.. even for simple and fast operations that are realtime inside the Houdini itself.

So my question is - are there any theoretical ideas or future plans to improve the speed somehow? I don't know - compile core Houdini runtime as Unreal Plugin so there is no need for data roundtrip? Maybe something else can be done?
User Avatar
Member
118 posts
Joined: 12月 2013
Offline
Hi rendereverything,
Just curious, what type of tools are you building for your artists? I build a lot of tools for our artists, and some are slow and others are fast. I don't see a lot of blog posts or posts on here about HDAs from other studios.
Glen
User Avatar
スタッフ
17 posts
Joined: 5月 2021
Offline
This is a really great point that is frequently discussed.

Performance is very dependent on the tool in question. The more data that is being sent/received, the longer it takes. This becomes especially important with Nanite polygon counts.

We all agree it is critically important for a tool to be responsive, especially from an artist's perspective. When designing a tool, keep performance in mind and keep the amount of data transferred to a minimum. For significant tasks, like baking out an entire level, consider using PDG and process things offline - eg nightly.

There are several areas that are in the plugin or being researched including:
  • Running Houdini Engine in the same process as Unreal to reduce marshalling
  • Using UHoudini Static Mesh generation instead of RawMesh or FMeshDecription
  • Referenced Input counting so that duplicate inputs are only transferred once ( like a packed primitive)
  • Utilizing Win32 SharedMemory to map data between Houdini Engine and Unreal processes and minimize the copying.

We would also love to hear any additional ideas/approaches on this topic and welcome any discussion
User Avatar
Member
47 posts
Joined: 3月 2014
Offline
Well, the dream would be (at least initially) to be at least as fast as when in Houdini, when doing operations without a lot of data - for example, generating simple geometry or points for instancing. I.e. if parameter change and re-cook is instant in houdini, it should be almost as instant in UE.
And by fast I means - if you dial the parameter value in UE with mouse, you want to see results in real time.

Bigger data transfer would be next problem that is probably harder to solve - and is also less critical, because when creating complex procedural models, artists already expect that it will not be that fast.
  • Quick Links