Hello guys, maybe this is a basic question but I've not been able to find the right node to do it:
I'm instancing a static mesh asset in Unreal Engine, using the unreal_instance attribute inside of Houdini. Now, I'd like to know the size of the asset in order to do some math in Houdini. However, since the static mesh is an instance, I do not have any real geometry in houdini, and hence I cannot extract any information about it.
Do you guys know any workaround to do this?
Thank you in advance!
Getting the size of instanced geometry
2868 8 1- Egalestrenge
- Member
- 9 posts
- Joined: Dec. 2021
- Offline
- Eetu_Mainframe
- Member
- 28 posts
- Joined: Dec. 2019
- Online
You could either load the source .fbx into Houdini and analyze that, but that needs some way for you to match the two -- or you could hook the Unreal staticmesh asset as an input to your HDA, and that way you can get the unreal geometry into Houdini.
Or a combination of the two, set the staticmesh input on your HDA to bring in just the reference (cheap and fast) and that should give you the path to the source .fbx
Or a combination of the two, set the staticmesh input on your HDA to bring in just the reference (cheap and fast) and that should give you the path to the source .fbx
- Egalestrenge
- Member
- 9 posts
- Joined: Dec. 2021
- Offline
Thank you for your reply!
Indeed, that was my first approach. However, in the end of the process I need to instance the UE asset (and only that asset) using the Unreal_Instance attribute obtaned from the (since I want all the instances to have the collissions, Nanite, materials and other properties setted in the static mesh inside the editor).
That's the idea! But I think here is the main problem, right? AFAIK you cannot import with an HDA both asset geometry and reference at the same time. The moment you bring to Houdini an object with an Unreal_Instance reference attribute (either with Input or Object Merge), the geometry you get is empty, right?
Or is there an option of importing an object as a geometry with the instance reference attached to it? Because if that is the case that should solve all my problems!
Eetu_Mainframe
You could either load the source .fbx into Houdini and analyze that, but that needs some way for you to match the two -- or you could hook the Unreal staticmesh asset as an input to your HDA, and that way you can get the unreal geometry into Houdini.
Indeed, that was my first approach. However, in the end of the process I need to instance the UE asset (and only that asset) using the Unreal_Instance attribute obtaned from the (since I want all the instances to have the collissions, Nanite, materials and other properties setted in the static mesh inside the editor).
Eetu_Mainframe
Or a combination of the two, set the staticmesh input on your HDA to bring in just the reference (cheap and fast) and that should give you the path to the source .fbx
That's the idea! But I think here is the main problem, right? AFAIK you cannot import with an HDA both asset geometry and reference at the same time. The moment you bring to Houdini an object with an Unreal_Instance reference attribute (either with Input or Object Merge), the geometry you get is empty, right?
Or is there an option of importing an object as a geometry with the instance reference attached to it? Because if that is the case that should solve all my problems!
Edited by Egalestrenge - Jan. 17, 2022 05:54:46
- Eetu_Mainframe
- Member
- 28 posts
- Joined: Dec. 2019
- Online
Egalestrenge
Or is there an option of importing an object as a geometry with the instance reference attached to it? Because if that is the case that should solve all my problems!
I'm not sure exactly what you're looking for, but can't you parse the instance reference from the
unreal_actor_path
or unreal_input_mesh_name
?(I was originally thinking of it the other way round, if you could import just the reference point with the source file attribute, you could load the fbx and get the dimensions. But I remembered wrong, in reference mode the source file attribute is not added.)
- Egalestrenge
- Member
- 9 posts
- Joined: Dec. 2021
- Offline
Thank for your quick response!
My bad, I didn't explain it very well in the first post. I'm trying to do something very basic: I have a 3D grid and I'd like to instantiate UE assets in each grid position. The idea is to instantiate the asset such that its size is similar to the size of the grid cell. Say, for instance, that I have a grid of boxes, each box of size 1x2x1 meters. Then, I'd like to instantiate the asset inside of each box, scaling it such that the bounding box of the asset is 1x2x1. In order to do this, I need the original size of the asset, and then scale in x,y,z accordingly.
The asset is loaded to the HDA via a geometry input, where the input settings is "import imput as reference" in order to use the asset path inside the HDA and instanciate it in the box points using the unreal_instance attribute. At this point I do not have any geometry, just the path, because "import imput as reference" only show the asset path (i.e., not the actual geometry of the asset). By "parse" you mean I can get the geometry of the asset from the asset path?
Thank you?
Eetu_Mainframe
I'm not sure exactly what you're looking for
My bad, I didn't explain it very well in the first post. I'm trying to do something very basic: I have a 3D grid and I'd like to instantiate UE assets in each grid position. The idea is to instantiate the asset such that its size is similar to the size of the grid cell. Say, for instance, that I have a grid of boxes, each box of size 1x2x1 meters. Then, I'd like to instantiate the asset inside of each box, scaling it such that the bounding box of the asset is 1x2x1. In order to do this, I need the original size of the asset, and then scale in x,y,z accordingly.
Eetu_Mainframe
can't you parse the instance reference from theunreal_actor_path
orunreal_input_mesh_name
?
The asset is loaded to the HDA via a geometry input, where the input settings is "import imput as reference" in order to use the asset path inside the HDA and instanciate it in the box points using the unreal_instance attribute. At this point I do not have any geometry, just the path, because "import imput as reference" only show the asset path (i.e., not the actual geometry of the asset). By "parse" you mean I can get the geometry of the asset from the asset path?
Thank you?
Edited by Egalestrenge - Jan. 17, 2022 11:29:41
- Eetu_Mainframe
- Member
- 28 posts
- Joined: Dec. 2019
- Online
Here's a quickie example of what I meant. You can bring in the geo, and use its
Attached HDA takes input meshes via a world outliner input, and outputs a grid of random instances, each scaled to fit 1x1x1 meters.
unreal_input_mesh_name
attribute to reconstruct a valid instance reference string. Essentially just s@unreal_instance = "StaticMesh'" + s@unreal_input_mesh_name + "'";
Attached HDA takes input meshes via a world outliner input, and outputs a grid of random instances, each scaled to fit 1x1x1 meters.
- Eetu_Mainframe
- Member
- 28 posts
- Joined: Dec. 2019
- Online
The above system does have the obvious drawback of needing to have the objects to be instanced in the same level.
For bigger systems I've used an "library level" which just has all the objects to be used as instances, and an HDA that they are all connected to. The librarian HDA stores the library of things as a .bgeo to disk - in the above case it would just have points with the instance reference paths and bbox sizes as attributes. In the actual level another HDA would read the library .bgeo and distribute the instances as it sees fit.
For bigger systems I've used an "library level" which just has all the objects to be used as instances, and an HDA that they are all connected to. The librarian HDA stores the library of things as a .bgeo to disk - in the above case it would just have points with the instance reference paths and bbox sizes as attributes. In the actual level another HDA would read the library .bgeo and distribute the instances as it sees fit.
- Egalestrenge
- Member
- 9 posts
- Joined: Dec. 2021
- Offline
- eetu
- Member
- 606 posts
- Joined: May 2007
- Offline
-
- Quick Links