Memo Posted May 23, 2014 Share Posted May 23, 2014 I'm trying to learn houdini, and one thing which I'm getting really stuck at is the syntax and (apparent) inconsistency of expressions / snippets of code - or at least there's so many little idiosyncrasies that it's driving me nuts. I've looked around as much as I can in various documentations, but couldn't find a single piece of text which describes an overview of all of these things, instead the info is scattered all over the place, probably because some of these are legacy and dates back decades while others are quite new. As far as I understand: $ is for global variables (in HSCRIPT ? and python too? are there substitutes for VEX?) @ is for attributes in VEX (is it possible to access attributes in HSCRIPT?) ch is for referencing a channel (i.e. a parameter of something from the GUI?) (is this HSCRIPT? or PYTHON?) I'm still not sure what op or ` (backtick) are for or when to use them. What I'm after is a very short (hopefully not more than a few sentences per item) summary of what each of these things are, and in what context we are supposed to use them. Also, what is the context of what we enter into textfields? E.g. when I write sin($T) into the position of an object. Is this HSCRIPT? or Python? Or is that a Houdini Expression which is a whole other context separate to HSCRIPT? cheers, Quote Link to comment Share on other sites More sharing options...
dennis.albus Posted May 23, 2014 Share Posted May 23, 2014 (edited) Yes you are right. The differences in syntax can be very confusing at first. I will try to answer your questions as best and short as I can: In vex wrangle nodes you can access some global variables with the @ syntax ($F = @Frame). As a workaround you can always create a parameter and reference that in vex. In the parameter field you can specify your global variables. I'm not sure it's possible to access those attributes in HSCRIPT directly. Anyway I would recommend using Python or VEX for these purposes. ch can be replaced by opparm in HSCRIPT and hou.node().evalparm() in python op is for referencing operators instead of parameters. This can be used in string parameters which expect a Houdini operator as an Input and in several other places. The backticks are used if the expression would otherwise be used literally. This is the case in string parameters. you need the backticks to evaluate the expression first and use the result as a string. $T is an expression. Expressions are separate from HSCRIPT as you have to precede an expression with the echo command in the textport to evaluate it. I hope this information is helpful to you. P.S.: Yes, the information is scattered across the documentation, but it's all there. I suggest you try to find the stuff in the docs. You might stumble across some more interesting stuff and learn a thing or two. Cheers, Dennis Edited May 23, 2014 by dennis.weil Quote Link to comment Share on other sites More sharing options...
Memo Posted May 23, 2014 Author Share Posted May 23, 2014 Hi thanks, yes it is very useful thanks. It's still a bit confusing having so many different syntax / languages used in the same space, but I guess it's a matter of time. Quote Link to comment Share on other sites More sharing options...
kev2 Posted May 24, 2014 Share Posted May 24, 2014 Someone counted 5 languages in Houdini so which makes it frustrating for sure. I've been at it 2+ years and it constantly catches me out. Remembering the iterations of "position" alone are a nightmare. VEX seems to be the future and seems fairly straightforward but for the most part SideFX's approach to UX has always completely baffled me. Quote Link to comment Share on other sites More sharing options...
Memo Posted May 24, 2014 Author Share Posted May 24, 2014 Yes last time I tried houdini (I think it was v10), Python was just beginning to appear and everything wasn't implemented yet (documentation was full of 'coming soon'), so you still had to use HSCRIPT and oldschool $Expressions in many places. I think now it seems it's fully integrated so HSCRIPT can become obselete and I will just stick to Python for everything operational (and VEX for anything kernel based). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.