Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Stalkerx777 last won the day on August 27 2020

Stalkerx777 had the most liked content!

Community Reputation

148 Excellent

About Stalkerx777

  • Rank
  • Birthday 03/02/1984

Contact Methods

  • Skype

Personal Information

  • Name
    Alex Rusev
  • Location
    Vancouver, Canada

Recent Profile Visitors

9,917 profile views
  1. Houdini UI Python Library

    @krishna avril Here you go: https://github.com/alexxbb/huilib Haven't used it in recent Houdini versions, not sure if it still works
  2. Sorry can't help you here. In Linux, I could use ldd to inspect the dynamic section of the binary and see what it wants to load, but I have little experience with that on windows.
  3. This geoisosurface tool uses Houdini dynamic libraries and therefore must have access to them at runtime. Windows searches libraries in the PATH variable, so you need to set this variable before running the program: set PATH="C:\path\to\houdini\bin;%PATH%" Hope it helps.
  4. How to get a system time in HScript?

    Better late than never
  5. Python - Callbacks help

    Have you tried removing the callback in OnDeleted event handler instead of registering it in the nodeColor function? On a side note, are you expecting your caches to pop up and go like every N milliseconds? What you're trying to do looks redundant to me, and if you have a scene with a few dozens instances of you HDA , you'll likely experience a slowdown, because global event loop runs in the main Houdini thread. You could install your event on the node itself ( node.addEventCallback ) and see what nodeEventType works for you. Or install it on the parent container (say your hda is a SOP, install the event on your_node.parent()) so each time you dive into a geo container, it'll trigger the event. Anyway, there's a lot of options
  6. Get pressButton() error raise in try block

    Unfortunately, it's not working that way. I submitted an RFE a long time ago, but they still quiet on this. But you can still get what you want: parm = your_alembic_node.parm("buildHierarchy") cb = parm.parmTemplate().scriptCallback() kwargs = dict(node=your_alembic_node) try: eval(cb, locals()) except: #handle
  7. Python: Copy wrangle to multiple geometry nodes

    wrangle = hou.node("/obj/foo/cullWrangle/") exportNodes = hou.selectedNodes() for n in exportNodes: disp = n.displayNode() # assuming n is of "geo" type w_copy = wrangle.copyTo(disp) w_copy.setInput(0, disp) w_copy.moveToGoodPosition()
  8. Python Embed HDA

    Just use "Embedded" as a file path. hou.HDADefinition.save(file_name="Embedded")
  9. Problem compiling sample HDK code

    Welcome to the community. Nope, have no idea.
  10. Event Handler on a HDA inside HDA

    Hmm, this sounds like a bug, I see no reason for the embeeded node not executing its OnCreated event. Maybe submit a bug report. As a workaround, in your top level HDA OnCreated you can manually call OnCreated event for the embedded node. (eval() the source code of OnCreated)
  11. How to load different instances of HOU module?

    This is not possible in Hython same as it's not possible to load load 2 different hip files into a single Houdini session. You have to spawn a new Hython process per hip file, but communicating between them is not trivial at all.
  12. Instead of having a checkbox for each filter, you could have a menu like parameter, with a script that lists your multiparm value, thus you will avoid messing around with checkboxes and which of them wins. As to the rest of your question, there are 2 common models of scripting in Houdini. I call them pull and push models. In a push model, you hook a callback on a parameter and that callback is pushing values to other Houdini nodes. The main shortcoming of this model is not being able to set parameter values in locked assets. It also makes it hard to debug complex setups(especially not yours) when you have no idea where a parameter value came from. In the pull model, you hook an expression on the parameter and it does the job. No problems in locked assets and no need to guess the origin of the value in it. The downside is that users won't be able to edit these parameters obviously. In your case, if the relationship between your CONTROLS and ris1 nodes is deterministic(e.g they know about each other) choose either to push to ris1 from a callback on a menu parameter on the CONTROLS or pull the value from an expression on ris1. Whatever fits better. Good luck.
  13. Right, as Tomas said a parameter expression might work for you, if not, then what you can do is in your onInputChanged handler of your hda, you would register a callback on the node's inputs. (Simplified, untested) def _callback(): pass for inp in hda_node.inputs(): inp.addEventCallback([hou.nodeEventType.NameChanged], _callback) You will need to take care of removing the callback if it's there already before adding a new one.
  14. To be honest, you've chosen the wrong place to ask basic C++ questions. 1. Look closer and you'll find the definition in the C file. 2. What do you expect it to return and why? This is your plugin entry point, Houdini calls it to register your new operator. P.S. Learning C++ via HDK is a very wrong strategy imo.