Search - User list
Full Version: Some questions
Root » Houdini Engine for Unreal » Some questions
arkaland
First of all I think this is a really powerful and well made tool with a lot of potential, thanks to all those who created it.

I hope my questions will be clear enough

1. If I have multiple materials on an object in Houdini, how do I get those recognized as multiple material slots in Unreal?

2. Is it possible to bake a HDA actor that is composed of instanced meshes and even keep or convert these instances as Unreal Engine instanced static meshes?

3. Is it possible to somehow keep the location of an object after baking it, or replace the HDA actor with the baked version at the same location?

4. Is it be possible to not only allow static meshes as file inputs, but blueprint actors as well? Basically to just use point locations for item placement, not to process the blueprint contents by Houdini (I think that would be impossible).

5. Will it ever be possible to use Houdini Engine at run time in shipped products? I think it would revolutionize procedural games.

Thanks for your time.
ttvdsfx
Hello! Thank you for feedback!

I will try to answer the question in order, but please let me know if I did not cover something.

1) Right now we support one material per geo/sop. We've had some recent changes in HAPI regarding materials and we will be working on material support in UE4 plugin in upcoming weeks - so the issue of multiple materials / multiple slots will be addressed

2) Instance baking is definitely on our to-do list. We are still thinking about possible approaches for this. If you can think of a good approach do let us know. As far as I know, there's no instanced static mesh asset type in UE4. One way to bake instances would be to generate Blueprint with attached instanced static mesh component and embedded instancing/instanced mesh information.

3) Baking just creates static meshes and adds them to asset browser. Location information is, indeed, lost in this case. Thanks for bringing this up - I think the option of baking and keeping the baked mesh / or replacing the actor would definitely be useful, I will add that to our to-do list.

4) You are correct; right now inputs will only accept static meshes. We haven't looked at supporting blueprints as inputs. But this does sound interesting and useful. Can you please elaborate more on ‘Basically to just use point locations for item placement’ ?

5) All I can say is that we currently don't support runtime simulation in-game with Houdini Engine. We are looking at ways to solve this problem, but the main issues are: licensing and size of required Houdini binaries that need to be shipped with your game.

Thank you!
arkaland
ttvdsfx
2) Instance baking is definitely on our to-do list. We are still thinking about possible approaches for this. If you can think of a good approach do let us know. As far as I know, there's no instanced static mesh asset type in UE4. One way to bake instances would be to generate Blueprint with attached instanced static mesh component and embedded instancing/instanced mesh information.

… Can you please elaborate more on ‘Basically to just use point locations for item placement’ ? …

Thanks for the in depth response, I appreciate it.

Yes, I think the blueprint approach would work.

Here is a screenshot with two possible additions:



These are some of my unfiltered thoughts on mesh instancing and blueprints with the Houdini Engine in Unreal:

-The user presses a bake button in the new tab from the screenshot
-Instead of a static mesh added to the content browser, it adds a blueprint to the content browser.
-The blueprint consists of a root with instanced static mesh components
-The amount of these components is equal to the number of instanced inputs on the HDA

The setup described above could also be used to allow a third file input, the one marked in red for blueprint actors, as an input for the HDA.
Instead of adding an instance static mesh component, it would add the blueprint input as child actor components to the Houdini blueprint.
The user would have to act responsible for performance here because dragging in a blueprint with a point light and spawning 1000 point lights might be a bad idea.

Example that uses the different inputs and how it might result:
A single HDA to create a landscape with 1 geometry input for a castle, 1 instanced input for flowers and 1 blueprint input for point lights:
-The landscape gets created by using the HDA and Houdini engine with sops (grid > mountain sop etc.)
-The geometry input for the castle, which is a mesh already sitting in the Unreal content browser
-The instance input is used to place flowers on the landscape
-The blueprint input is used to place 10 blueprints with point light setups around the castle

The generated blueprint would have (I think) 14 components:
-a root component
-1 static mesh component (the landscape baked by Houdini)
-1 static mesh component (for the castle)
-1 instanced static mesh component (for the flowers)
-10 child actor components (for the blueprint inputs with lights in this case)

Maybe the user could have some freedom in deciding how the result should be organized by having the outputs separated,
but in theory it could result in a single blueprint.

But point lights is just one example. When blueprints can be used for inputs, entire gameplay events, post processing volumes, particle systems etc. could be
procedurally spread across the landscape this way with Houdini. A procedural building could now have scripted elevators by using blueprint inputs instead of just an elevator mesh.

Thanks for reading, I hope I was eloquent enough to convey some of my thoughts.
If there are some fatal flaws in my way of thinking about this or if it's all way out of scope, please let me know.
damian
What you're talking about is already possible in Unity and has proven quite useful - definitely a valid suggestion for UE4.

The only note I'll make about your proposal is to say that you probably want the Blueprint input option to be for the Houdini Instanced Inputs, not the Houdini Inputs.

Blueprints cannot easily be imported into Houdini as an asset input and that's what happens with the inputs in the Houdini Inputs tab. The Houdini Instanced Inputs tab, however, does not send that data into Houdini Engine. All it does is replace what the asset originally instanced with what the UE4 user selected - all within UE4. Houdini Engine has no clue this happened.

Therefore, if you want to “instance” a bunch of blueprints on points generated by your asset, you'd want to select that blueprint as an instance override in the Houdini Instanced Inputs tab.
Gerbrand
+1 on this
I'm new to both Houdini and Unreal, but I found this to be a problem right away.

“3) Baking just creates static meshes and adds them to asset browser. Location information is, indeed, lost in this case. Thanks for bringing this up - I think the option of baking and keeping the baked mesh / or replacing the actor would definitely be useful, I will add that to our to-do list.”
ttvdsfx
Hello,

I am posting an update regarding some features mentioned in this thread. We have added support for Blueprint baking - this will generate a Blueprint and create / attach necessary static mesh and instanced static mesh components as well as bake / create necessary static meshes.

We also added support for multiple materials per object - these now will properly show up in the UI as well as should properly be marshalled back into Houdini (as face attributes) - should you choose to replace generated Houdini materials with native UE4 materials.

We looked into adding support for Blueprint inputs - but I have a few workflow related questions. If your Blueprint has multiple pieces of geometry, which one is used as an input? Same with instancing Blueprints. Should all of geometry be fused into one piece before being used as an input in this case? I agree with Damian's point that Blueprints as inputs do make a lot of sense in case of instanced inputs (and in fact it would make sense with all kinds of other objects, such as lights, etc) - when data is not sent back across to Houdini Engine, but remains purely on the UE4 side.

We've also logged RFE #70436 for an option to bake and replace actor in a scene with baked static meshes / blueprint instance, keeping the original transformation information.

Thank you!
kgoossens
Sweet, started to play with this. I'm hoping to have the blueprint instancing available soon.
DASD
Is it possible to just bake out placements to the World Outliner?

Once the blueprint is baked it seems completely static - I don't seem to be able to add, remove or adjust placements. Would Lod-ing work with the blueprint solution? How does it compare performance-wise to simple placements in the World Outliner?

- This is all very important for a project I am working on.

If it is possible to bake to the World Outliner, is there a way to automatically group into folders based on groups or an attribute, or something?
ttvdsfx
Hello; I am not sure what you mean by adding / removing / adjusting placements. If you open blueprint, you can pick individual attached components and adjust their transform, then save blueprint. It is not possible to instantiate baked blueprint into world outliner at this moment, but this should be relatively easy to add. We currently do not create LODs for generated meshes. There's also no grouping of baked resources at the moment - we are planning to add this post release.

Thanks.
DASD
When I bake to blueprint, I get a blueprint and the objects that are instanced into the content browser. Then I can pull the blueprint into the scene to get it into the World Outliner and move it around as a whole.
When I examine the blueprint I don't see any nodes or code that I could influence. So, once the blueprint is baked, I cannot make any changes to instance placements, right? I cannot grab any of the instanced placements and delete them or move them around. I can only grab them all at once, right?
Is it even the correct workflow to just pull the blueprint into the scene/world outliner?

- On a sidenote: Currently my procedure always crashes the Houdini Engine in Unreal. I have to cache everything in Houdini and then I essentially use the engine to import to Unreal and bake. Are there known common crash conditions with Unreal Engine?
ttvdsfx
Once you bake blueprint you should see attached components. For instancing, we will create InstancedStaticMesh component and we will attach it to blueprint. On that attached instanced static mesh component, you will see parameter called Instances, where all individual instance transforms are. You can adjust these, save and recompile the blueprint. I don't believe you can adjust individual instance item transforms through blueprint viewport editor. This is UE4 behaviour.

For the moment that is the only workflow; we are planning to add spawning of blueprint / replacement of HDA on bake directly into the world post release. This has been logged as RFE #72336 .

I am not aware. Could you please attach a sample asset so I can reproduce / look into this crash? Or file a bug with us.

Thank you!!
ttvdsfx
Update for this, thread, work on #72336 has been completed: blueprint / replacement of HDAs directly in the world.
DASD
In what build will that be?

As far as I understand, the advantage of using #72336 is that the baked object(s) are exactly at the position in the scene, where they were placed when the user tweaked the HDA's parameters in the UE4 scene. And the HDA (instance) in the scene, on which the user tweaked the parameters, gets deleted, too.
Is that it?
ttvdsfx
That's correct. Basically if you do not want to keep Houdini objects around. It should be in today's build of either 15.0 (15.0.329) or 15.5 (15.5.99) .
DASD
Is 15.5 (15.5.99) publically available? (I use Houdini Indy.)
ttvdsfx
To be honest I don't know. You would probably have to ask in other sub-forums. I am not sure who has access to our 15.5 alpha builds. Sorry
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB