Jump to content

rot/orient attributes not carried over to Unreal when instancing Blueprints?


Recommended Posts

Hi everyone!

I made an HDA that generates a level.
Got a couple of blueprints in Unreal I need to spawn.
This works fine when I use the unreal_instance as point-attribute with the spawn-points.

Since I want to rotate the blueprints instances as well, i added a rot point-attribute (also tested with orient) to the points - but this doesn't seem to carry over.
Works fine inside Houdini when I test it with proxy geo (e.g. boxes)
Every instance of the blueprint Unreal though has the same rotation.

Am I doing something wrong here?



Link to comment
Share on other sites

Actually there is one problem...

I have vertex-attribute normals on the generated geometry, so the shading looks the way i want.
For instances, the normals need to be point-attributes.
Obviously i can't have both - if i remove the vertex-attributes, the instance rotation works, if i keep both, everything twists weirdly...

Is it possible to have both - vertex and point normals?

Link to comment
Share on other sites

Your instance point cloud and your instanced geometry should be two separate pieces of geometry on import so that you do not have this issue.

My best guess is you are using the SOP based method with copy to points node to instance? If so try the the object based method. The object based method is less prone to have these type of errors as the elements are separated into different contexts and represent what you will see in your third party DCC more logically 1 to 1. In your HDA do it at the object level with a subnet. Include a geometry node that contains your point cloud data that is non-renderable i.e. shut off the display, and object merge that into a instance object. Then use the instance attribute to point to the different geometry nodes you want to import. This is a bit more production friendly as it is easier to automate the import of these object level instances, and also set each set of attributes independently.

Link to comment
Share on other sites

Oh man...
My Houdini knowledge obviously is pretty basic.
Lemme see if i can sum that up...

I use a SOP approach, yes.
I made multiple SOP HDAs to create a "level generator" - split up by their purpose and from basic to advanced.

My basic construction elements are pretty simple like:

  • Floor generator
  • Pillar generator
  • Floorboard generator
  • ...

These are used be the 2 main geo generators:

  • Room Generator (creates a room based on a curve)
  • Wall Generator (creates walls that are not a closed curve - to split up the room)

My final HDA is the "Level Generator".
This SOP imports a CSV File that contains data how to build the room (curve points) PLUS where to spawn objects (blueprints in UE4)
I attached a screenshot to show an overview of the multiple HDAs.

I actually don't know how do do this in object level...
Do i need to create 2 Nulls in my Level Generator - one with Geo and one with a pointcloud and "object-merge" them into object level?
And create a new HDA over this? I need a couple of parameters from each HDA (like material, Cd, etc.) as well.

Maybe I'm thinking in a totally wrong direction here?






Link to comment
Share on other sites

Oh... or do i "copy" my level generator graph and split it up?

-> Create 2 GEOs at Object level
-> Copy the graph into both of them
-> One creates geo, one create point cloud
-> Select both GEOs (in Object level) and create a subnet/digital asset?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...