Jump to content

graham

Members+
  • Content count

    847
  • Donations

    50.00 CAD 
  • Joined

  • Last visited

  • Days Won

    28

graham last won the day on May 11 2017

graham had the most liked content!

Community Reputation

148 Excellent

5 Followers

About graham

  • Rank
    Houdini Master
  • Birthday 01/09/1985

Contact Methods

  • Website URL
    http://www.houdinitoolbox.com

Personal Information

  • Name
    Graham Thompson
  • Location
    Vancouver, BC

Recent Profile Visitors

8,635 profile views
  1. Assign global variables with python

    You can set values with variables in them by escaping the $: node_rop.parm('sopoutput').set("\$JOB/render/\$HIPNAME.\$F.bgeo.sc")
  2. Drag&Drop Contents

    The nodes_color.py and type_extensions.py should NOT be in the same folder as the externaldragdrop.py. Houdini will use houdini/scripts to find scripts, not Python modules. Since externaldragdrop.py is a script it belongs in there. The other files (as per the instructions) on the should be in houdini/scripts/python, which Houdini will automagically add to sys.path if it exists and then externaldragdrop will be able to import those two modules.
  3. Sorry, there is a problem You are not allowed to edit your signature. Error code: 2C122/C
  4. Weird... I spent like 15 minutes on Sunday trying to figure out how to change mine and I could in no way find any settings that enabled me (or even showed me what my current one was) to change anything. All I could see was my signature on posts I had made. I also tried using the thing from posts which hid everyone's signatures and now I don't see any at all or any sort of way to bring them back :/
  5. Resurrecting this thread. Looks like the signature options disappeared again?
  6. Detecting incomplete node definitions in python

    Short of using some wrapped HDK code, I think the best bet to check for a dummy definition is to check that both the libraryFilePath() points to "Embedded" and that the definition has very little in the sections() list. For example, creating a HDA on disk from a SOP Subnet yields a definition with some expected sections: >>> asset = subnet.createDigitalAsset("dummyop", "/var/tmp/dummy.otl", "Dummy") >>> node_type = asset.type() >>> node_type.definition().sections() {'Contents.gz': <hou.HDASection Contents.gz in definition of Sop dummyop in /var/tmp/dummy.otl>, 'CreateScript': < hou.HDASection CreateScript in definition of Sop dummyop in /var/tmp/dummy.otl>, 'InternalFileOptions': <hou.HDASe ction InternalFileOptions in definition of Sop dummyop in /var/tmp/dummy.otl>, 'DialogScript': <hou.HDASection Dia logScript in definition of Sop dummyop in /var/tmp/dummy.otl>} >>> node_type.definition().libraryFilePath() '/var/tmp/dummy.otl' However, if you then destroy the definition (with an instance of the node in your scene) you'll see it now reports as "Embedded" and only has a DialogScript and Contents.gz section: >>> node_type.definition().destroy() >>> node_type.definition().sections() {'DialogScript': <hou.HDASection DialogScript in definition of Sop dummyop in Embedded>, 'Contents': <hou.HDASecti on Contents in definition of Sop dummyop in Embedded>} >>> node_type.definition().libraryFilePath() 'Embedded'
  7. Event firing when a node is Deleted ( not HDA )

    The problem is that it expects the first arg to be an iterable of enums, not just a single: n.addEventCallback( [hou.nodeEventType.BeingDeleted] , hou.session.a())
  8. add Tag{} Parameter Interface with Python

    You can do this by modifying the hou.ParmTemplate for a parameter. Consider a Float parm named "parm" that already has a tag of foo:bar set from the interface: >>> parm = hou.parm('/obj/geo1/null1/parm') # Get the hou.ParmTemplate for your parameter >>> pt = parm.parmTemplate() >>> pt.tags() {'foo': 'bar'} >>> tags = pt.tags() >>> tags["new"] = "value" # Update the tags >>> pt.setTags(tags) >>> pt.tags() {'new': 'value', 'foo': 'bar'} # Replace the existing tuple/template with the modified one. >>> hou.node('/obj/geo1/null1').replaceSpareParmTuple(pt.name(), pt) <hou.ParmTuple parm in /obj/geo1/null1> >>> p.parmTemplate().tags() {'new': 'value', 'foo': 'bar'}
  9. [novice] help with Python Script

    You are defining the function in a node but are then trying to refer to it as if it was stored in hou.session. If you either remove the hou.session prefix and call it directly, or put the code in the Python Source Editor and call it like that then it would work
  10. Other ways to look through a camera

    It's possible to drag cameras and lights onto the viewport and it will cause the viewer to look through them. It's also possible to write a shelf tool type thing and assign a hotkey to it to cause the active viewer to look through a selected camera/light.
  11. HDA - change 'Editable Nodes' via Python

    Editable nodes are stored in their own string section called EditableNodes as a space separated list of relative paths so you can basically just construct your string and add/set the contents of that section to it. hou.HDADefinition.addSection("EditableNodes", "foo bar/hello")
  12. Weird Behavior - createOutputNode

    The issue is that the parent node is in fact /obj/example. In the case of Houdini the parent node is the node that contains an operator, not an input node. Since the parent is an Object it fails because there is no xform node at the object level. As you mentioned the multiple nodes in the SOP level are a result of the node cooking multiple times, most likely when MMB on it for errors, etc.
  13. Houdini Env Variables in File Browser

    The +/x buttons in the lower left hand side just add/remove entries from the jump.pref file (usually located in $HOME/houdiniX.Y/) so you can basically copy/move that file (or create your own) and put it somewhere everyone can see and they will pick up the bookmarks.
  14. In the case of something like that (and if say modifying more than one parameter, or the ones on digital assets) you'll want to use the hou.ParmTemplateGroup from the node like as follows: >>> hou.parm('/out/mantra1/vm_variable_plane1').description() 'VEX Variable' >>> ptg = hou.node('/out/mantra1').parmTemplateGroup() >>> ptg.find("vm_variable_plane#") <hou.StringParmTemplate name='vm_variable_plane#' label='VEX Variable' length=1 naming_sch >>> pt = ptg.find("vm_variable_plane#") >>> pt.setLabel("This is a test") >>> ptg.replace(pt.name(), pt) >>> hou.node('/out/mantra1').setParmTemplateGroup(ptg) >>> hou.parm('/out/mantra1/vm_variable_plane1').description() 'This is a test'
×