Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

0 Neutral

About mara_91

  • Rank

Personal Information

  • Name
  • Location
    Czech Republic
  1. Thanks for reply. I agree that decomposing problem into smaller ones (or step by step) is the best approach - which is what I do. And one of these steps is to be able to take some input data and being able to modify them - But houdini can do this only per-node an I want this to per-primitive. - I don't understand how can I spit this elemental ability to anything smaller.
  2. Thanks for reply, Basically we need to re-create a part o real world (for example 30x30km, few big cities..) It doesn't need to be 100% realistic (because that is impossible) but we need to use as many information as possible for example from GIS data where it contains exact shapes of footprints, sometimes even a parameters for building types, building heights, roof types...) and the missing information will be extrapolated from other data or guessed using (for example) randomization The end result will be a city, with roads and all of its details. All automatically (procedurally) generated. - Up to this point all of this is possible in houdini (which is awesome). But this city will of course contain some errors on some places. Now to fix them, users will check what parameters are being used to generate that specific problematic building and change them and re-generate that one specific building (or group of selected buildings) using these modified parameters - and here is the problem. I cannot just select one specific building (or group of selected buildings) in houdini and edit parameters for that one specific building like this: because this window sets these parameters for all the buildings (footprints represented by primitives) inside this node. So I am looking for a way how to solve this and the solution should be user-friendly because users will use it a lot (for example fixing 1000 buidlings out of 50000 ones..) Of course in special cases, if we need some landmark or somethig specific, we can swap this procedurally generated building with manually modelled one but most of the time, we would just need to adjust these parameters for procedural generation to achieve desired result since it is much faster than manually modelling everything. I believe most applications work in a way that you have some layers or groups and they contain individual items.. and if you want to change something, you just select that item and change it in properties window (let's call it layer-based approach). But in houidini, since it is unlike any other app that i used so far (meant of course in a good way ) it uses node-based approach and not layer-based approach as described earlier resulting that you tell the node how to process items its containing and cannot pick individual items from there - or at least I don't know how to do that... But given the fact that houdini is a tool for making tools and it has really endless possibilities I would assume that something simple like this could be done but since I'm still newbie to houdini, I don't know how. And I believe such functionality must exist otherwise I cannot imagine how they did for example spiderman game as shown here (yeah they use instanced buildings not unique as in my case but still they need to have some iterface for swapping these buildings or modifying ways how to scatter assets on streets etc..) or any other AAA games made with houdini ...
  3. Thanks so much for a quick and in-depth reply You are probably refering to using instances - to have a system to generate different types of buildings, then scatter them as instances and if anything is wrong, replace these buildings with different instances... That would work but unfortunatelly, all of our buildings are unique because they must fit to their unique footprints according to reality thus we cannot instantiate anything and I don't understand how this can be used in my situation That is possible but probably usable only on true/false variables. I think it would be very complicated using color-paint to define a number representing for example building height or a path to specific texture that artist wants to use...
  4. You mean doing 1st pass by generating random result and then 2nd pass to manually edit model of wrong ones? If so than that is possible.. but imagine I make a random result and then need to add 1 more floor to certain building.. Manually modelling that either in houdini or other 3d app would be much more time-consuming not to mention that the procedural code also generates interiors of buildings and makes them 2-manifold for use in destructions that we also need.. doing all of this manually would be too much work and prone to human error (in case of 2manifolds) compared to if I just selected in some gui as shown above that I want 1 more floor and procedural code will take care of all of it.. after all of that hard work has been done meaning using all parameters to procedurally generate building as close to reality have been set, then the artist can further manually-edit geometry for better photorealistic or other artistic result thought this is rarely needid in our use-cases Or maybe you are refering to doing 1st pass by generating random result and then 2nd pass where I discard wrong ones and then re-generate only the wrong ones with correct attributes? If so then for example I have 50k of buildings and 1k of them need fixing - so I separate 1k of buildings and need to fix them. But now I am in the situation I was in begining where I need to modify each building from this group of 1k builidngs with specific parameters of procedrual code..
  5. I know its a lot but it is doable and we did stuff like this in past on even a larger scale.. Because all of it is generated randomly/procedurally it doesn't mean that artist has to edit all of it - he edits only few places where he sees something is wrong - like some places where procedural code generaded an undesirable result.. But because of this, I need all the buildings/footprints to be editable just in case some of them need to be modified. since TOPs are hard to use, there is little information about them and they are slow they are out of way, modifying geometry with python gui would be very nice way to go but this is prohibited.. I'm trying to inject vex code from python to edit geometry but not luck so far.. Manually modifying values in geometry spreadsheet is possible so I'm trying to do that programatically from python but I cannot find correct function for this. So I'm left with a last resort of having each building as a separate geometry node if there is really not any elegant solution to this problem
  6. Thanks for replay Dave, sorry for late reply - I had lots of other things going on.. Your suggestion is possible but I cannot imagine an artist writing a vex code like this for 20+ parameters (like roof_type,building_height,facade_texture.. like on screenshot) for thousands (more likely 50k+ building footprints) when he wants to override default values on certain individual buildings or groups of buildings when much better approach would be to just select a footprint (or group of footprints) and then use a menu like on screenshot to comfortably edit these values Now, when I create such a menu, its changes apply to everything inside geometry node (in my case to all 50k building footprints there) and not to individual footprint that I select. For that to happen, I would need to have each building as separate geometry node which is possible but would create 50k geometry nodes and managing that is a nightmare - not mentioning that I would then lose ability to detect surroundings of each building (like when 2 buildings are touching each other at one side - so I wont put window there etc..) I see this as basic capability - being able to select something, set parameters of it where randomly suggested parameters are not correct and then let houdini's vex procedural magic do the rest... Is there really no user-friendly way how to achieve it? Even some nasty hack? For example I have working python menu, I can get primnum from selected footrpint but I cannot edit geometry from python (because this is not possible accordind to other posts) But I can modify value from geometry spreadsheet.. is there a way how make same kind of geometry spreadsheet modification programatically using python? Or generating entries like this if(@primnum==568) @height = 12; according to entries from some custom python menu and than saving them as new entries as vex in some wrangle? user anim also suggested using TOPs in this post but either I don't understand it or I don't thing it has the ability that I need + it is very slow in my testing Any help would be greatly appreciated. I really love what houdini is capable of - unlike other software that I used so far.. but I have been stuck on this for past month and getting hopless mainly because it looks so simple to do but somehow I cannot find a good solution.. Thanks
  7. local/manual edits in ForEach SOP?

    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
  8. Hi all, I would like to mention that you can use stash node and then, you can edit contents directly in geometry spreadsheet. Now, I'm having a similiar problem where I need the ability to edit individual parameters of a prim. The use case is like this: I have thousands of building footprints in one node (imported as geodata from OSM) and they contain attributes from which I generate building - like height.. and would like to fine-tune imperfections (for example modifying this said height attribute individually for each building where this is needed) so that after this attribute for that particular building is modified, the building can be procedurally re-generated to reflect changes. I am unable to find solution anywhere although this seems to be a common use-case IMHO (meaning to edit subset of geometry node) so I'm trying this thread which discusses similiar things. Ideas (if houdini really doesn't have any tool to handle this): have each footprint as separate node - not possible bc I have thousands of these footprints which will result in lots of nodes (plus I'm using lot of vex to effectively calculate other stuff like occlusions with roads.. which would be extremely slow if done as separate nodes..) use stash node as mentioned above - possible but cumbersome - can only input text or number - lacking support for combo-boxes, sliders, checkboxes.. to be more user friendly - it's expected lot of people (not devs, just regular users) will work on this and adjust large amount of these prims' attributes every day) make a python shelf tool and show a pyside2 gui based on prim that's selected where I can edit these individual attributes - I did that only to found out that it isn't possible to edit geometry this way (due to permission error geometry is read-only) - thus only way to do this is using python SOP I used python SOP, added a button that references other python SOP (so that it can be run on demand bc this is plugged into procedural code) and did similiar pyside gui based on selected prim in viewport - looks like something is working but it freezes houdini in weird way (something works, something stops working), gives me Infinite recursion in evaluation error even though I cannot find any infinite loop in my code an I cannot recover from this - even if I remove affected code houdini stays frozen and I have to restart it.. - I can share code if anyone is interested but even though this looked promising, I don't know if this is the correct approach any other ideas? Any help is greatly appreciated. I love houdini bc it is much more capable than any other tool on the market but this gives me headache for weeks now.. btw I created similiar post here if you want more info/different explanation but no replies yet..
  9. 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