Hello
I was wondering if doing something wrong or is just the nature of working with Houdini from Unreal, but when I control the curve of my asset the interaction is slow, takes a while to catch up, I tried some of the available assets on the sidefx website and they are slow as well
I tried to do something simpler and still lag.
I tested the asset in Unity and is WAY faster.
Is it just me or is just the nature of the system? are there thing I can do to optimize this?
thank you
Asset interaction is slow
15696 20 2- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
- chrisgreb
- Member
- 603 posts
- Joined: Sept. 2016
- Offline
There's no fundamental reason that UE4 should be slower than Unity that I know of. However UE4 has many features that can be rebuilding after every incremental cook, which can definitely slow things down. For example the navigation system and distance field ambient occlusion. Which HDA are you seeing a big slowdown relative to Unity?
Edit: If you are using curve inputs the asset will be cooked as you drag the mouse, this can cause serious frame drops in the editor if there is a lot of geometry to be generated. We recently put in an option to mitigate this: 'Cook curves on mouse release', which is in the Project Settings -> Houdini Engine -> Cooking.
Edit: If you are using curve inputs the asset will be cooked as you drag the mouse, this can cause serious frame drops in the editor if there is a lot of geometry to be generated. We recently put in an option to mitigate this: 'Cook curves on mouse release', which is in the Project Settings -> Houdini Engine -> Cooking.
Edited by chrisgreb - Nov. 11, 2016 09:52:56
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
chrisgreb
There's no fundamental reason that UE4 should be slower than Unity that I know of. However UE4 has many features that can be rebuilding after every incremental cook, which can definitely slow things down. For example the navigation system and distance field ambient occlusion. Which HDA are you seeing a big slowdown relative to Unity?
Edit: If you are using curve inputs the asset will be cooked as you drag the mouse, this can cause serious frame drops in the editor if there is a lot of geometry to be generated. We recently put in an option to mitigate this: 'Cook curves on mouse release', which is in the Project Settings -> Houdini Engine -> Cooking.
Hi,
thank a lot for the reply Chris
Yes I am using a curve and is terribly slow, it already feels like is cooking when I release the mouse anyway hehe, I'm not using the latest version, cause I don't have that option here
This is what I'm using
will try with the latest version but that seems like a weird solution to me because the lag still exist, we're just working around it.
I'll record a video testing in both engines so you can see the difference.
thank you
varomix - Founder | Educator @ Mix Training
Technical Artist @ Meta Reality Labs
Technical Artist @ Meta Reality Labs
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
Here a video showing the different performance between Unreal and Unity
http://box.varomix.net/index.php/s/xNgYEijcOsu5WlI [box.varomix.net]
the speed in unity just make's it more usable in UE4 is just, clumpsy, not really inviting.
Basically, I don't use Unity I want to use assets in UE4 but, that lag just makes it hard.
Thanks
http://box.varomix.net/index.php/s/xNgYEijcOsu5WlI [box.varomix.net]
the speed in unity just make's it more usable in UE4 is just, clumpsy, not really inviting.
Basically, I don't use Unity I want to use assets in UE4 but, that lag just makes it hard.
Thanks
Edited by varomix - Nov. 11, 2016 13:23:40
varomix - Founder | Educator @ Mix Training
Technical Artist @ Meta Reality Labs
Technical Artist @ Meta Reality Labs
- twelveplusplus
- Member
- 194 posts
- Joined: Aug. 2011
- Offline
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
twelveplusplushehe cool, glad that is still helpful, I don't use that method of aligning normals anymore
<OT>
Hey! i literally just re-watched your old videos on how to make a fence asset like that!
It's such a handy little trick to get the point normals pointing along the curve!
Love your videos, dude!
…ok, carry on.
</OT>
I use the polyframe SOP now, way easier and no error on the first or last points.
Edited by varomix - Nov. 11, 2016 18:35:47
varomix - Founder | Educator @ Mix Training
Technical Artist @ Meta Reality Labs
Technical Artist @ Meta Reality Labs
- ttvdsfx
- Member
- 173 posts
- Joined: April 2014
- Offline
UE4 static mesh building is quite slow. The code does a lot of things, particularly in regards to mesh optimization. It is a pretty major bottleneck. Like Chris mentioned, you can probably turn off some things like AO or distance fields (in project settings), that might help a bit.
I haven't worked with Unity, so I can't say how it performs there. We have a simple own UE4 mesh implementation (which we use only for prototyping) and it's pretty fast.
I haven't worked with Unity, so I can't say how it performs there. We have a simple own UE4 mesh implementation (which we use only for prototyping) and it's pretty fast.
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
ttvdsfx
UE4 static mesh building is quite slow. The code does a lot of things, particularly in regards to mesh optimization. It is a pretty major bottleneck. Like Chris mentioned, you can probably turn off some things like AO or distance fields (in project settings), that might help a bit.
I haven't worked with Unity, so I can't say how it performs there. We have a simple own UE4 mesh implementation (which we use only for prototyping) and it's pretty fast.
Thank you for you replay, I manage to make it a bit faster if I bake the lighting and change it to static, is a bit better now, will keep investigating for sure, my setup is really simple, not sure what could be cause of the lag but I do think is on the UE4 side.
Would be great if you could share that simple mesh implementation, if it's proprietary maybe say a bit more so I can try to make something similar.
Thanks
varomix - Founder | Educator @ Mix Training
Technical Artist @ Meta Reality Labs
Technical Artist @ Meta Reality Labs
- ttvdsfx
- Member
- 173 posts
- Joined: April 2014
- Offline
I think it's based on CustomMeshComponent and we actually use it in Blueprint. Unfortunately I won't be able to share it.
But the idea is, find where FRawMesh is being created in Houdini Engine plugin (in Utils file, before it's being dispatched to make a static mesh). You should be able to construct any topology from it. I believe CustomMeshComponent is a just a simple collection of tri faces.
But the idea is, find where FRawMesh is being created in Houdini Engine plugin (in Utils file, before it's being dispatched to make a static mesh). You should be able to construct any topology from it. I believe CustomMeshComponent is a just a simple collection of tri faces.
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
- chrisgreb
- Member
- 603 posts
- Joined: Sept. 2016
- Offline
A workaround that speeds up static mesh cooking is to disable the triangle-order-cache-optimization step.
This variable must be set before the MeshUtilities module loads. Humorously, It's actually commented out in the last line of Engine\Config\ConsoleVariables.ini
We'll continue to optimize the cooking performance, but hopefully this helps a bit.
edit: Be sure to un-set this variable before doing a final cook because you want the mesh to be optimized.
r.TriangleOrderOptimization=2
This variable must be set before the MeshUtilities module loads. Humorously, It's actually commented out in the last line of Engine\Config\ConsoleVariables.ini
We'll continue to optimize the cooking performance, but hopefully this helps a bit.
edit: Be sure to un-set this variable before doing a final cook because you want the mesh to be optimized.
Edited by chrisgreb - Dec. 1, 2016 15:53:17
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
chrisgreb
A workaround that speeds up static mesh cooking is to disable the triangle-order-cache-optimization step.r.TriangleOrderOptimization=2
This variable must be set before the MeshUtilities module loads. Humorously, It's actually commented out in the last line of Engine\Config\ConsoleVariables.ini
We'll continue to optimize the cooking performance, but hopefully this helps a bit.
edit: Be sure to un-set this variable before doing a final cook because you want the mesh to be optimized.
Haven't had a chance to test but just did and don't see a real speed up
my best option right now is doing a simple prototyping geometry for interaction and just toggle to full when done.
you can see what I did in this video
http://www.gridmarkets.com/varomix.html [gridmarkets.com]
varomix - Founder | Educator @ Mix Training
Technical Artist @ Meta Reality Labs
Technical Artist @ Meta Reality Labs
- eoinobroin
- Member
- 7 posts
- Joined: Nov. 2016
- Offline
Can confirm that the interaction is still as seen in the video examples posted above, even for simple proxy geometry (though that is a bit faster). Would be amazing to be able to have the same fluid interaction that Unity has, but in UE4, though I realize this probably is down to how UE4 generates the geometry, and not how Houdini Engine is working.
Edited by eoinobroin - July 16, 2018 09:11:45
- dpernuit
- Staff
- 550 posts
- Joined: Sept. 2016
- Offline
Hi,
The main underlying issue for the slow interactions is caused by Unreal creating meshes… The Houdini Engine part (sending/receiving and converting the data) is pretty fast, but the Static Mesh creation is what slows everything down.
This is something we've mentioned to Epic, and they've told us they should have a new type of mesh component soon that should address these issues.
So far, when working with curves/splines, there's a couple way to make thing easier to edit in the editor:
- using simple proxy geometries when creating the curves, then switching to a high detail geo via a toggle parameter
- Activating the cook curve on mouse release project settings is a good one too, as this will avoid cooking/slowdown when moving the CVs around.
- and finally, pause cooking while editing (Ctr + Alt + P) then resuming to get the geo.
It's also possible to use an unreal spline, so you can edit it before plugging it into the asset's input and triggering the cook.
But those still remains workarounds until we can fix this “properly” once that new mesh component is in Unreal.
The main underlying issue for the slow interactions is caused by Unreal creating meshes… The Houdini Engine part (sending/receiving and converting the data) is pretty fast, but the Static Mesh creation is what slows everything down.
This is something we've mentioned to Epic, and they've told us they should have a new type of mesh component soon that should address these issues.
So far, when working with curves/splines, there's a couple way to make thing easier to edit in the editor:
- using simple proxy geometries when creating the curves, then switching to a high detail geo via a toggle parameter
- Activating the cook curve on mouse release project settings is a good one too, as this will avoid cooking/slowdown when moving the CVs around.
- and finally, pause cooking while editing (Ctr + Alt + P) then resuming to get the geo.
It's also possible to use an unreal spline, so you can edit it before plugging it into the asset's input and triggering the cook.
But those still remains workarounds until we can fix this “properly” once that new mesh component is in Unreal.
- varomix
- Member
- 460 posts
- Joined: July 2005
- Offline
- Allegro
- Member
- 696 posts
- Joined: March 2006
- Offline
Yeah…. the UE4 responsiveness is abysmal. I've been going through the Guard Tower tutorial, and placing the sandbags in UE4 is just just … painful.
It takes roughly 20 seconds to recook the asset after I move a curve point or change a parameter on my asset.
And that's with 16 cores and a GTX 1080.
It takes roughly 20 seconds to recook the asset after I move a curve point or change a parameter on my asset.
And that's with 16 cores and a GTX 1080.
Edited by Allegro - Oct. 7, 2018 23:49:25
Stephen Tucker
VFXTD
VFXTD
- brettmillervfx
- Member
- 13 posts
- Joined: Feb. 2006
- Offline
- Mary537
- Member
- 28 posts
- Joined: Nov. 2017
- Offline
- dpernuit
- Staff
- 550 posts
- Joined: Sept. 2016
- Offline
Hi,
For the current version of the plugin, I've tried my best to optimize the mesh creation process, but as mentioned above, we are still limited/bottlenecked by the static mesh building on the unreal side.
Any further improvement could only be done by rewriting the mesh creation part of the plugin, and using different components for meshes, and this is exactly what we plan to do for version 2 of the plugin.
For the current version of the plugin, I've tried my best to optimize the mesh creation process, but as mentioned above, we are still limited/bottlenecked by the static mesh building on the unreal side.
Any further improvement could only be done by rewriting the mesh creation part of the plugin, and using different components for meshes, and this is exactly what we plan to do for version 2 of the plugin.
- craboom
- Member
- 4 posts
- Joined: April 2015
- Offline
-
- Quick Links