Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Neronie last won the day on July 31 2022

Neronie had the most liked content!

Personal Information

  • Name
    Emiliano Neroni
  • Location
    Milan, Italy

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Neronie's Achievements


Newbie (1/14)

  • Week One Done Rare
  • One Month Later Rare
  • One Year In Rare

Recent Badges



  1. You could also try the Geometry COP, which does a sort of projection along a specified axis and extracts alpha. Then pass that into a Trace SOP to polygonize the result.
  2. It's the viewport's default volume resolution limit. Go to the Display settings (press D while hovering over the scene panel) and either disable or increase the limit on the 3D Texture resolution tab:
  3. Just to add to what Atom said, you can use the opninputs() expression to return the number of inputs currently connected to the switch node, like so: fit01(rand($F),0,opninputs(".")-1)
  4. 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!
  5. 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!!
  6. 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!
  7. 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.
  8. Very interested in this one as well!
  • Create New...