Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Everything posted by Neronie

  1. Deleting DOP objects in-sim

    I had somehow managed to miss your precious reply. Thank you so much! That works great. The culprit indeed seems to be deleting geo without deleting the corresponding constraints. Thanks a bunch!
  2. Deleting DOP objects in-sim

    Hey peeps! Sorry for the long post. Does anyone know how to delete DOP objects dynamically while the simulation is running? I have a dopnet with a Vellum Object and a Vellum Source attached to a Vellum Solver. The Vellum Source is set to Continuous Emission and I have an expression on the Activation parameter that spawns a Vellum Object every n frames. This works, but the sim obviously gets heavier and heavier as time goes on and more objects are emitted into the simulation. Since the objects are only briefly passing by the camera never to be seen again, I'd like to remove them to free up precious simulation resources once they're out of view. I tried setting up a SOP Solver with a wrangle that tracks an age attribute and deletes it once it has passed a certain threshold. However, it seems as if Vellum doesn't really like geometry to be deleted on the fly like that (the sim just drags to a halt and then Houdini crashes). (This is unless I missed an obvious way to remove an object from the simulation calculations, perhaps through the usage of an attribute. Setting the mass to 0 still seems to be contributing to the overall performance.) I'd like to delete the DOP object 'properly', i.e. using the Delete DOP node. I can't seem to figure how this guy works, though. I read both on the documentation and on this thread (https://forums.odforce.net/topic/25361-delete-dop/) that I'm supposed to be using dopoption expressions, which I'm really just not well versed in at all. On the forum thread anim kindly suggests comparing the y value for the DOP Object and deleting based on that. I can't wrap my head around this one, though. How does a DOP Object even have an intrinsic position? Is it its centroid, or something else? I tried giving it a shot but I can't even figure out how to give a unique name to each object, let alone masks and groups and all that nonsense. Even guru Johnny Farmfield was stumped on this one topic at the time, how am I supposed to even get close?!? Can anyone point me to a potential solution? How would you approach such a problem? [In addition, can anyone suggest a relatively recent tutorial for getting a good grasp on the interiors of DOP Networks? Stuff like the things I asked above: handling fields, dop objects, streams and other 'advanced' nonsense like that. How do you even learn this stuff?!?] Any suggestion is appreciated. Thanks everyone for the attention. Happy Houdining!
  3. Hey guys, Super new to Houdini Python scripting and I've come across a bit of a roadblock. I'm trying to build an asset to find named textures in a folder to automatically build materials with one click. What I've got so far works great. I have a button parameter on the HDA which runs the code in the PythonModule, with the following callback script: kwargs['node'].hdaModule().onButtonPress(kwargs['node'], kwargs['parm']) I'm using regular expressions to parse the file names and find the correct textures. I want to add exposed parameters on the HDA so that the user can change what string regex uses for matching if needed (i.e. 'albedo' vs 'diffuse'), and other settings (i.e. whether to load in certain textures or not, what level of detail to use) I've managed to read in the parameter values using hou.pwd().evalParm(). However, it seems as if the changes to the parameters are only read in when I'm applying the changes from the Type Properties panel. I can't seem to be able to assign parameter values to existing variables with a button press. This is what I'd ideally like to accomplish: regex_albedo = "Albedo" regex_bump = "Bump" def onButtonPress(me, parm): updateSettings() extractInfo() def updateSettings() regex_albedo = hou.pwd().evalParm("regex_albedo") def extractInfo(): [REGEX MATCHING CODE] I want the user to be able to click on the Create Material button on my HDA and for the script to parse the current parameter values, THEN execute the code to actually do regex matching and everything else that's supposed to happen. Ideally, if the parameters are empty, the script should fallback to default 'hardcoded' values. Can someone enlighten me? Thanks a bunch!!
  4. Looping FLIP Fluid Sim

    I've had decent results by creating an sdf of the simulation, mixing it with a timeshifted copy of itself so that it loops seamlessly, and then meshing it. Obviously results may vary as you wanna have the start and end as similair as possible; some blending artifacts are going to be visible. Perhaps a better solution could involve calculating some kind of difference velocity field towards the end of the sim by comparing it to a timeshifted copy of itself, and then use that to advect the present-time sim... Then blending the two results as above. Just a thought though, wouldn't really know how to set this up properly.
  5. FEM adding some tetras during sim

    Very interested in this one as well!