Jump to content
Sign in to follow this  
mara_91

local/manual edits in ForEach SOP?

Recommended Posts

Hello, I'm learning houdini and so far I'm loving it but I'm having a problem to understand a concept of manually editting something that has already been generated. I guess this could be quite a common use-case but I haven't found solution anywhere so I'm trying to seek help/guidance here:

I am working on procedural generation of buildings from their footprints. To simplify, I have a geometry node in which I have a foreach loop SOP that iterates over footprints (primitives) and extrudes them based on their height attribute.

Now, is it possible to select a specific footprint and change its height attribute so that this specific footprint will be extruded by different amount?

 

What I'm trying to achieve is that user is able to select any procedurally generated building and adjust/override its default/random parameters like height, roof type, texture... and after that - this building will be re-generated reflecting these changes (while other unchanged buldings won't be regenerated to speedup this process)

Does houdini provide such functionality? Or are there any best practices how to approach this problem?

Thanks

 

Screenshot_1.png

Edited by mara_91

Share this post


Link to post
Share on other sites
On 2/14/2021 at 4:54 AM, mara_91 said:

What I'm trying to achieve is that user is able to select any procedurally generated building and adjust/override its default/random parameters like height, roof type, texture...

you can modify attributes as you want on your footprints geo using Attribute Adjust nodes or Attribute Expression, Wrangle, ... just specify group, ideally in a procedural based on attributes they contain way like: @name=buildingA*

also your extrude doesn't have to be in forloop it should pick up your height attribute per primitive

 

On 2/14/2021 at 4:54 AM, mara_91 said:

and after that - this building will be re-generated reflecting these changes (while other unchanged buldings won't be regenerated to speedup this process)

if you want them to be independently regenerateable, you may need to do it in TOPs, where you'd have footprint for each building as a separate workitem as well as all the attributes you care about, then next step can be editing of some and next would be building generation, TOPs can be regenerated per workitem without affecting unchanged ones, it may be trckier to setup and manage though

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for a reply and sorry for my late reply 

using wrangle could work but I'm expecting to edit multiple attributes of each building so there would be a lot of code to write and having some kind of menu would be way more user friendy - I discussed this topic and this solution here as well. If you have time, please have a look at it.

 

Just to clarify, It doesn't need to be inside foreach loop it can be on the begining on the node - just a way how to define/override certain attributes (that are initially randomly generated) for certain footprint represented by a primitive inside a geometry node where many of these footprints/primitives are...

Using TOPs from PDG looked promising (from the official description from sidefx site) - I spent a lot of time on it - trying to figure out how does it work but I haven't found many tutorials on it - most of tutorials for PDG are for wedging (meaning for randomly generating multiple variants from one geometry - and then picking one of it - unfortunatelly this is not my use case).

I also found out PDG/TOPs is quite slow compared to pure vex (simple extrusion took ~5min for 5footprints whereas I'm able to genereate ~130 buildings fully with interior together with location in under 7seconds) but maybe I'm not usining it correctly..

Can you please recommend me a good source for TOPs tutorial? I was only able to find ones below:

this one together with pdf on houdini side - but it is not much in-depth and I dont understand where to manually override parameters of certain primitive + It doesn't work on h18.5 which has been confirmed by Robert Magee himself

 

and this second one looks more in-depth and even uses unity but I still dont understand where to manually override parameters for certain footprint/primitive and I would like to avoid any 3rd party programs to avoid potential problems due the setup for unity+houdini is not that easy and creates room for more problems and potential performance issues with lots of geometry in the future

 

 

Share this post


Link to post
Share on other sites

You could have a simple asset containing a group and wrangle that modifies the "height" (primitive) attribute of your footprint primitives, then in your PolyExtrude's distance have a value of 1, go to the Local Control tab and use "height" as your distance scale.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×