Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

1 Neutral

About DeeLan

  • Rank

Personal Information

  • Name
    Dylan Smith
  • Location
  1. Hey guys, I'll keep my original question below just for clarity of where this is all coming from. I've got 95% of the work done (and all in Python, save for an embedded hscript command or two). All I face now is two issues. Firstly, I'm using the "ombind" and "omubind" to handle the binding of my handles. Unfortunately, these functions operate on every single instance of my asset in the scene. I want them to work only on the instance that owns the parameter that was changed. Anyway to get this to work? Secondly, whenever I bind or unbind anything, the change does not take effect immediately. I have to hide then show the manipulator handle before the changes show up. Is there a way in Python (or even hscript) to refresh/ hide and show the handle automatically? -- Original Question -- I really need some help. On my asset I have a checkbox parameter and a transform handle. What I need to do is, whenever the checkbox is toggled, get the state of the checkbox and if the checkbox is checked, then bind the "tx" field on the handle to my posx parameter, and if it is unchecked, unbind "tx". So my pseudo code is looking like... whenever checkbox changes state cbState = state of checkbox if(cbState){ bind mainHandle:tx to posx parameter }else{ unbind mainHandle:tx } From what I've found so far the only way to achieve this is to write script in HScript (because apparently Python can't bind handles yet) in the "scripts" section of operator type properties. I'm quite comfortable with VEX but I have no experience with HScript and so far everything I've tried to do in HScript has failed miserably (I can't even get a simple echo command to work). Is anyone able to provide me with some example code or a tutorial or something that would show me how to achieve this? I've been digging through the documentation trying to learn but I just keep hitting walls.
  2. Hi Benne, Thanks for the advice. However the problem I'm having isn't with the parameters but the manipulator handle itself. I've updated my original question to reflect the progress I've made, but I guess the short version is that I need a way of hiding the actual manipulator handle based on a certain parameter (so exactly the same behaviour as "hide when", but on a manipulator instead of a parameter)
  3. Hey everyone, I'm building an asset and I have two questions regarding handles. Firstly (and most importantly) I need to know how to enable and disable different manipulator handles using a conditional expression. I have a primary transform handle that allows me to affect everything. However I'd like to be able to switch to a different handle that only allows partial manipulation of the transforms depending on a drop down menu. So if I change the menu to "Plane" for example, the primary handle is disabled and hidden, and different handle that allows manipulation of ONLY translation and rotation is enabled. I'm not sure how to do this. I tried some constant expressions (like '!0') in both the 'onoff' and 'input' fields, but those didn't actually seem to do anything. EDIT: I've figured out that the easiest way to enable or disable input of a manipulator handle is to create a checkbox parameter, bind the 'onoff' field of the handle (oddly tho not the 'input' field) to that checkbox and then just add an expression to the checkbox to get the behaviour I want. While this works for enabling and disabling input, it DOES NOT affect viability at all. Anyways around this? Secondly, is it possible to reference fields from the parameter window in the handles window. On a couple of my parameters I've got limits on the ranges, so I was hoping to be able to reference those limits in the handle instead of manually updating it every time I change the limit in the parameter window. Not super important but just curious about it.
  4. PBR Translucency

    Thanks for the tip. I'll check it out
  5. PBR Translucency

    Hey guys, I'm trying to make a PBR Material for some leaves in a scene, however I'm struggling with translucency. I figured out that I can change the Component Label on a PBR Diffuse node to "translucent" to get some translucency (tho oddly enough changing the Diffuse Model just makes everything render black... ). After that though I've got no idea how to control it. I'd like to be able to control exactly how translucent the leaf is, and even be able to plug in an additional map to vary the translucency. Does anyone know of how to go about tackling translucency in mantra?? P.S I'm using textures on grids instead of actually modelling the leaves.
  6. Hey Guys, I'm looking to do some basic shape instancing in COPs. I was hoping to be able to build similar functionality to the "Tile Sampler" and "Tile Generator" nodes in Substance Designer. I thought a loop might be the way to go but so far I've just been getting errors. Anyone have any tips for going about this?
  7. Substance SHOP to Material

    Damn that sucks. I guess we just have to sit and wait for this new VOP that Algorithmic is supposedly going to make.
  8. Substance SHOP to Material

    Hey Guys, I'm playing around in with the Substance Plugin in Houdini. I really want to do some Material Blending, but the Substance Plugin is only available in SHOPs, and I can't quite figure out how to get it into a Material at all. Does anyone know of a way of getting the Substance Shop into a Material Builder? Or any other way of getting a "Layer" out of it so that I can plug in into a Layer Mix?
  9. Hey Guys, I'm currently doing a project on Procedural Art, techniques, workflows, how to integrate with more traditional "hand crafted" methods etc etc. Part of the project is discussing the history and future of it. I've found a ton of articles on the History of procedural level design, but what I really need (and what I'm struggling to find) is stuff on the history of procedural Modelling and Texturing, particularly for film (though I won't scoff at anything about games haha). If you guys have any articles or papers or anything that relate even vaguely to this area, I'd love to take a look
  10. My Original Question is still posted bellow, but i have since figured out a solution to get what I want. Basically in CHOPs I have a null with a string parameter with a multi line python expression on it. This expression produces a string with all the channel names in it. refNode = hou.node('/ch/ch1/noise1') tracks = "__TEMPSTRING__" iteration = 0 trackTuple = refNode.tracks() for track in trackTuple: curTrackString = str(track).split(" in ")[0] curTrackString = curTrackString.split("<hou.Track ")[1] if iteration == 0: tracks = curTrackString else: tracks = "{0} {1}".format(tracks, curTrackString) iteration += 1 return(tracks) Just make sure that "refNode" is referencing the node you want to get the channels from and this should work for you as well -- ORIGINAL QUESTION -- Hey guys. I need to be able to the names of all the channels that exist on a particular CHOP into a string parameter field (as shown below). There is a VEX Function called "chnames" which gets me the names but then I don't know what to do with it. I've promoted the names to a clip attribute but I have absolutely no idea how to access said attribute in an expression. So my two ideas are either to... 1) Stick with the Clip Attribute and somehow reference that in an expression OR 2) Somehow execute the "chnames" VEX function in an expression/parameter field (which I don't even think is possible but putting it out there just in case) If anyone knows how to do either of these things or has another method that'd work please let me know. I'm about to explode from the frustration of trying to figure this out!
  11. @j00ey thats perfect! It doesn't at all have to be in a wrangle. I just tend to default to solving problems with VEX but in this case your method is exactly what I need! I'm gonna guess that channel data vs metadata is like the "P" attribute vs every other possible point attribute. One's the default attribute that exists and is used on every single point/channel, the others are just extras we can use. I think part of the problem I was having is the mode that the wrangle is set two. Definitely something to look into (also some more documentation would be nice haha).
  12. Hey Guys. I've import some midi files into chops. Each time a key is pressed, it creates a flat peak, and then goes down to zero. So basically I've got a bunch of channels with localised plateau peaks. What I want to do is essentially extend the tops of these peaks until a new plateau is reached, at which point I will extend that plateau out the the next one, and so on. I've gone ahead and done this in SOPs to illustrate what I'm trying to do (cause that explanation above likely made no sense). The pseudo code for what I want to do is: maxVal = value of sample0; foreach sample (excluding 0){ curVal = the value of the current sample; if curVal is equal to 0{ Current Sample Value is set to the maxVal; } else { maxVal is set to the curVal; } } This is the logic I followed in SOPs and it worked perfectly. However I cannot figure out how to do the same thing in CHOPs. My problems are two fold. 1) I can't figure out how to set the value of samples that are NOT the current one being iterated on. The way I've found so far to set sample values is using the global variable V. I tried to do it using the 'chsetattr' function, but either it doesn't set sample values or "V" is not the right attribute to use (and I can't find the correct one). Also tried setting a sample attribute on one wrangle, then on another (with iterate set to channels and samples) set "V" to the value of the attribute. Also didn't work. 2) So far I have found no way of only executing the code once (such as in a detail wrangle, which is what I used for the SOPs example). I thought setting the wrangle to iterate by "Over Channels" would do the trick, as the documentation says, "Runs the snippet one time per channel with the I variable set to zero." but in this this post Guillaume points out that this isn't the case. And even if it was I still would be in trouble because that mode does allow setting "V" or channel data. 2.5) On that note, whats the difference between channel data and attributes? One can be written the other can't. I thought attributes were just data stored on the geo (or in this case channel). Not sure why CHOPs is suddenly making a distinction. So to summarise, I need to find a way to set the values of individual samples and I need a way of executing a CHOP wrangle once per channel (like a detail wrangle in SOPs).
  13. Cloth arbitrary vel field

    @soomld would you happen to have an example scene for this? Or even a screen shot? I've been try to do exactly that all day but I've either been getting errors or just nothing.
  14. Hey Everyone. I've got a layered material. At the moment I've got the two blended materials embedded directly into the layer material (as shown by the pictures below). Instead of this what I want is something that will let me specify a path to an existing material (essentially how the "Object Merge" node works, but for materials). I tried simply promoting the layer inputs of the layer mix to parameters, but they only allowed me to connect materials via the plugs. No option to specify a path. Does any know how to do this?