Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by j00ey

  1. Thanks very much Geoff - I can't believe I didn't think of that myself!
  2. Hi Jiri Thanks for the note. I'll try other drivers and see if that changes anything. I'm currently using 6.3.17-3 and I'm also on Windows 10, H18.0.287 I just opened an old scene and I can pan but not zoom so something's definitely been switched around... I just tried the stroke SOP and I'm also getting constant 1.0 pressure - stroke_angle is constant 0.0 and stroke_tilt is constant 90.0. Likewise H17.5 works as expected
  3. Easiest way is to promote your attribute to detail, set to maximum - set the new name to eg max_layer and don't delete original attribute - then do something like the following in a wrangle: [assuming it's a prim integer attribute called 'layer', set the wrangle to run over prims] if(i@layer == detail(0, "max_layer", 0)) removeprim(0, @primnum, 1);
  4. Nuke vs COPs

    There are things you can do in COPs very easily that are a real headache in Nuke and also many things you can't do at all I think, but I've been bitten a few times by relying on it and it then bugging out on me at the last minute.
  5. Create Crisp Edge Bevel Style look

    ok, here's a pure COPs method pattern_pure_COPs.hiplc
  6. Create Crisp Edge Bevel Style look

    Here's one way of doing it, though I imagine you probably mean a pure COPs method. If I get time I'll try and make you one. heightfield_to_COP.hiplc
  7. In case it's useful to anyone else, I figured out from imagemagick.org that I could just add -tile 4x1 to the command string in and it does exactly what I was after
  8. I am a newcomer to TOPs. I watched the 17.5 release videos a few months ago and a few tutorials but I haven't had chance or need to investigate properly until now.. I'm developing a system to render some scenes from 4 - 5 cameras, the output of which will play on 4 - 5 monitors so I thought an ideal way to do tests would be in TOPs - render all the cameras, partition the renders by frame and then put them through Image Magick, then FFMpeg to get an idea of all the content playing on the screens next to each other. The attached image shows my 4 camera set up inside of Houdini - I basically want to replicate that but as a movie I can watch in real time and send to people. I have hit a brick wall trying to get the Image Magick TOP to do the montage - I don't want the images in a grid, I want them in a row. Is this possible? Presumably with the right command string it is but I'm drawing a blank. Many thanks
  9. snap viewport image

    I always forget that!
  10. snap viewport image

    You can flipbook a single frame then in MPlay first do Render/New Sequence then go to Windows/Sequence List and you can toggle between multiple flipbooks. I've never actually needed that for stills but I use it all the time for comparing animations. There are various display options for comparison.
  11. Vellum strut setup

    I'm not a vellum expert but if you turn up the bend stiffness on the cloth constraint [as opposed to the struts] to say 50, the behaviour is similar
  12. find points and cut.

    This is a bit of a naive test but see if it helps chop_up_shape.hip
  13. inline vop

    I haven't looked at your scene but in the amended one of mine you've disconnected the enumerate SOP so there's no id attribute to bind, so it will always be zero and the conditions in the inline VOP always evaluate as false
  14. inline vop

    At a guess I'd say your loop isn't executing
  15. inline vop

    Also it's a good idea when you're testing things and figuring out what's going on in your shaders to work at the top level of a material network, not inside a material builder because you can assign anything as a material. What I usually do is make a null, call it 'test' and assign that as a material, then just plug things into that to test
  16. inline vop

    For a start you have id set as a vector output, and you're binding it as a vector too. It's an integer. I haven't really got time to try and unpick the logic of your for loop but it seems to me you're trying to run before you can walk. Houdini is telling you via the colour labels what's an int, float, vector etc. You need to be able to recognize them and know what data types you need to use to get what you're after. Don't overcomplicate with for loops, learn about basic stuff first like setting outputs in your inline VOP, writing to them, reading in geometry attributes, manipulating them and then outputting them.
  17. inline vop

    I hadn't actually read your code properly earlier but again you're setting a condition which can never be true. You initialise a variable id as zero, then you say if it's between 2 and 10 set the Cd variable, but it's always zero. For the id workflow I mentioned you need to read in the id from the geometry, in your sample scene you've set it as an output, and as a vector. Attached is a sample scene. inline_colour_by_id.hip
  18. inline vop

    Can you upload your scene and I'll have a look?
  19. inline vop

    Yes that should work. A good way to check what variables you have access to for free, put down a globals VOP and look at the list. If you want to use primnum, just give your geometry an attribute that mirrors it, eg id. You can do that with an enumerate SOP, or manually in a wrangle just put for instance: i@id = @primnum; then you can bind that in your shader and use it
  20. inline vop

    There are a few issues with this. Firstly, I don't think you have access to primnum inside a shading context. You can use something like id and bind that to do the same thing. But assuming you did that, it would be an integer, not a float. And this condition can never be true - a float can't be greater then 0.5 and also less than 0.45. ($primnum > 0.5 && $primnum < 0.45) Regards the declaration thing, you can actually write f@value=1; f@value = 2; because that's setting the value of a geometry attribute but you can't declare it twice - replacing f@ with float will throw an error.
  21. inline vop

    From what I can see in that screengrab it looks like you've got an output called pntList, in which case your line should read : $pntList = set(1,1,1); if you put 'vector' before it you are declaring it, and it's already declared. [Anything you put in your list of outputs is declared automatically]. Just like in a wrangle in SOPs if you write : float value = 1; float value = 2; you'll get an error, that should be float value = 1; value = 2; By the way, if you're setting a vector with constants you don't need to use set(). You can just write $pntList = {1,1,1}; Use set() if you need to set it with other variables, eg: float valueA = 1; float valueB = 2; vector values = set(valueA, valueB, 0);
  22. inline vop

    You can't make an output variable called pntColorList AND declare it in the body of your code. If you add the output and then change the line vector $pntColorList; to $pntColorList = 1; it won't error. Same goes for $pngList
  23. inline vop

    You can name your variables however you want to, you just have to make sure they match up if you want to export something for use outside the Inline VOP [but in the same VOPnet]. There's no @ syntax in Inline VOPs so @Cd will throw an eror. $Cd is fine. Can you put up a sample scene with your error in it and I'll take a look at it?
  24. inline vop

    There's no @ syntax in inline VOPs. If you want to export Cd, add it to the output section as a vector, then in your code you can refer to it - $Cd.r = $sUV; Presumably dPdt is declared somewhere above your snippet..? If not that will throw an error too. You don't have to use the $ prefix for variables that are only used internally in the Inline VOP but if you don't and you have more than one Inline in the same network using the same variable name, you'll get errors too.
  25. Understanding rand()

    It's not usually desirable to have a random number that changes every time it's evaluated, in general you want the same result every time you feed the function the same seed [in your case $F]. What I usually do is as merlino suggests, but I usually add 'seed', 'min' & 'max' parameters to the node [or a control null somewhere] and reference them, eg : fit01(rand($F + ch("seed")), ch("min"), ch("max")) If you do really want a different result every time you could write a python expression in the seed field to, for example, return the time.