Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


LaidlawFX last won the day on October 15 2018

LaidlawFX had the most liked content!

Community Reputation

230 Excellent


About LaidlawFX

  • Rank
    Technical Director
  • Birthday 02/23/1985

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location
    Pacific North West
  • Interests
    Getting away from the computer
  1. Hello all, We are relaunching the Seattle Houdini User Group as we have hit critical mass in the Puget Sound region so we can host this events regularly. The first meetup is a smaller get together so feel free to come by if you are in the area. Thanks, - LaidlawFX
  2. HDA "on name changed"

    Hello, This should work fine in the on name change event, without the button press node = kwargs["node"] hdaname = node.name() for child in node.children(): child.setName(hdaname) print ("the child node name has been changed to {}".format(hdaname)) As a warning though this style of renaming nodes will generally cause more issues than you are trying to solve. -Ben
  3. Link toggle values

    You'll need to use a callback script if you want to actually change the toggle values. I will say depending on the complexity just disabling/hiding the parameter and in the network or code disabling with a condition should suffice. It's like a magic trick the UI does something different than the actual network.
  4. Twisting a sweep

    Hello Kalin welcome to the Forum! You can use the copy to points and skin sop to do this effect. I know I have an example of it I stashed here in this thread. It even does UVs.
  5. changing $Home location

    Houdini.env only allows you to change your personal preferences. There is an order of operations with environment variables. houdini.env is in $HOME which is equal to $HOUDINI_USER_PREF_DIR. So you can't use houdini.env to set those. You need to set those in the operating system environment or the shell before launching Houdini. Also the main reason not to set $HOME is that other programs will use $HOME, so if you change the default system variable for $HOME you may be accidentally screwing up those other programs. Where as $HOUDINI_USER_PREF_DIR is unique to Houdini. I think what you really want to be using is $HOUDINI_PATH and $HSITE, the respective two main environment variables of Houdini. You can set these in houdini.env, but you should really be setting these variables before houdini.env is called as that is your personal preference directory. $HOUDINI_PATH allows you to have a string of different project paths, so you can have $StudioTools;$ProjectTools;$MOPS;$QLIB;$REDSHIFT;& with the & representing the Houdini's install directory $HFS and $HOUDINI_USER_PREF_DIR. $HSITE allows you to have version specific tools like compiled library or version specific handling like $HIPNAME, the path is set up such as $HSITE = "p:/studio/tools/" and inside are folders for 17.5, 17.0, 16.5... HOUDINI_PATH The path of directories where Houdini looks for configuration files. HSITE The HSITE variable is a path to the site-specific Houdini configuration information. This allows a site to have a common set of defaults and files. It is, by default, in the HOUDINI_PATH between HOME and HFS. To change global configuration information, you should use this rather than editing the contents of $HFS/houdini. Like HOME, Houdini uses $HSITE/houdiniVERSION, where version is the current version number (ie: $HSITE/houdini16or $HSITE/houdini16.1)
  6. changing $Home location

    Don't change $HOME set the variable HOUDINI_USER_PREF_DIR The directory to store user preference files. The value of this variable must include the substring __HVER__, which will be replaced at run time with the current MAJOR.MINOR version string. On Windows and Linux, this defaults to the expanded value of $HOME/houdini__HVER__. On Mac OSX, it will also use this default if the directory exists, else it uses the expanded value of $HOME/Library/Preferences/houdini/__HVER__ https://www.sidefx.com/docs/houdini/ref/env.html
  7. Enforce Prototypes @ptnum

    Thanks for that. I just re-read what you said and that link you sent. Had to do a double check and it follows the pattern in cvex, too. It's been a long time since I looked at vex like this. cvex obj_geo1_pointvop1(int ptnum = 0; export int Cd = 0) { // Code produced by: bind1 Cd = ptnum; } Thanks again. Found the declaring part in the docs again, too. https://www.sidefx.com/docs/houdini/vex/snippets.html#declare
  8. Enforce Prototypes @ptnum

    Here is an example file of using @ptnum to source a point attribute that errors out when enforce Prototype is on. int id = point(0,"id",@ptnum); setpointattrib(0,"Cd", @ptnum,id); Upstream of that I have an attribute create that does a basic. i@id=@ptnum; ptnum.hip
  9. Enforce Prototypes @ptnum

    Hello, So doing some clean up on my vex code in a wrangle and I turned on Enforce Prototypes to remove a bunch of the hacks to get the code setup. The one thing I can not find out a cleanup for is to replace @ptnum with a non @ function. Is the only way to declare it prior to the wrangle as another attribute? That just seems messy. Even declaring before hands means you need @ptnum to source that attribute. Thanks, -Ben
  10. If you have a multi plane texture like a .exr, or a rendered image from mantra extra image planes you just type in the name of the channel. In the attached scene it loads up temp.exr which is a combo of the butterfly and mandril. They are on channels Cr and C respectively. With Cr typed into the respective parameter it renders that image instead. You can use mplay, to view the different channels in the .exr. temp.exr MultiChannelTexture.hip
  11. If the point count is changing then on export the selection method was not even. An alembic exported correctly will preserve geometry info from frame to frame. A method is to do a bounding box from a group sop to a blast node. You can use a delete sop straight up, but there are a lot less procedural ways to animate the size and bounds. You can try for connectivity/assemble too and see if that brings a consistent result if you are looking to remove a whole tooth. There are more options, but it really depends on how inconsistent the topology is and what part you are trying to delete. Generally speaking direct face selection is generally not done as it can often be defined as a destructive method. You can use direct face selection in a few ways, but with consistent topology.
  12. Not sure why it is called image plane at that level. https://www.sidefx.com/docs/houdini/nodes/vop/texture.html Texture Channel This specifies which color channel for multi-plane textures should be evaluated.
  13. Houdini 18 Wishlist

    Houdini's handles are implemented on a per product basis. So Maya does not have them, but Unity does. They can be implemented, but there probably hasn't been a large request. Also Houdini supports more handles types than most 3D programs so there is a bit of picking and choosing on what you want to be integrated. Generally when it comes to Handles studios implement their own custom variety. https://www.sidefx.com/docs/maya/ https://www.sidefx.com/docs/unity/_handles.html
  14. Get Parent Expression

    Sounds like you should be working in a SOP construct if you need the attributes that much. `opinputpath("..",0)`/OUT Just make sure you always have an OUT or similar designated output node. Otherwise you can go into python land find the display flag, but that is a whole different set of issues.