Jump to content

acey195

Members
  • Content count

    533
  • Donations

    10.00 CAD 
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by acey195

  1. You could suggest to this artist to put the tools made, on Orbolt too. There you can download any tool, in any kind of licence type, since that is Side-Effects, managed.
  2. Multiply vectors to a plane (Trigonometry questions)

    I'm quite fond of this function: http://www.sidefx.com/docs/houdini/vex/functions/planepointdistance.html pretty sure you would be able to use it in your case (not completely sure how it will operate at the corners, but on the straight bits I imagine it should work pretty well)
  3. 17.5 Launch Event Presentation

    Normally there's more available in indie than core (minus render resolution / profit cap) also if you are talking about PDG, they show demovideos of it in Unity, which would be an exact usecase for Houdini-Indie, so I would sure hope so (disclaimer: have yet to watch the video later today)
  4. Beginners question: Array attributes? What is binding?

    Hey! Yup, they are like n-dimensional vector attributes. Binding with @, will generate the attribute for the output if it did not already exist, or read it if it does. One difference between using binding, and using attribute import, is that you can update the attribute throughout the code multiple times with binding. On the other hand, using for example the point() expression, will always fetch the value of the attribute of the input (and not the intermediate value)
  5. if you average the cross products of the vector of the edge directions of the corners: cross(normalize(pos1-pos2), {0,1,0}) and cross(normalize(pos0-pos1), {0,1,0}), you should have your vector (or the anti vector not sure from the top of my head)
  6. Yeah Konstatin's version is basically a worked out version of my ramblings. Forgot to note that the dot product of 2 vectors is equal to the cosine of the angle between those vectors, making the code kind of convenient @konstantin magnus Just realised you got this technique from the genius himself too (in the other thread)
  7. that would work for the straight bits, but for the corners you would have to increase the magnitude by which you move them to maintain the angles. from the top of my head.. I think it was dividing the offset by either the cosine of the angle, or the cosine of half the angle. So an offset at the corner, at 45 degrees would be 1/cos(45deg) which is 1/0.70710678118 = 1.41421356237 if my memory serves me right. Which makes sense, as that is the square root of 2, and pythagoras and stuff
  8. Set N points to same Y position

    when running over points, you should be able to do this in a single line of a wrangle : v@P.y = floor(float(@ptnum)/3) * 2; //if you want 2 y units between every group.
  9. Change a curve basis in VEX?

    No probs, but yeah we would also make happy use of such improvements :), so thanks to you too!
  10. Change a curve basis in VEX?

    Hey, Also tried adjusting stuff similar to this with NURBS. My fear is, that the setprimintrinsic() function only actually works on a couple of the intrinsics, and not all of them unfortunately.
  11. Mesh Border Mask

    assuming the shape is flat (it has to have boundaries) you can also do the following: Use a divide sop to remove shared edges (toggle at the bottom), though it looks like on the left image this may already be the case. Put an "primitive" or "ends" SOP and set the mode to "unroll" (easier to find in the ends sop), you should now have the boundary line. then you can do the rest in an attribute VOP or wrangle, for example: (input the main geo in the first input, and the boundary in the second) f@falloff = xyzdist(1, v@P); v@Cd = f@falloff;
  12. Well for the scatter node, the density scale is measured per m^2, so if you use a measure SOP to measure the area (it will be set to perimeter by default) you can then use an attribute promote SOP to promote the area from primitive to detail, using the "sum" method. you now should have the total surface area as a detail attribute. Then you can fetch that attribute, and divide it by the size of your bark pieces, times some kind of smudge factor and put that as the density in you scatter node. That should give you a reasonable filling in
  13. This is a very complicated problem, if the data you start with is not already pretty good. If you can also make something like that work well at different resolution scales, you are a super genius. The most straightforward way would probably be to use a lot of smoothing (using various constraints) in combination with fuse nodes progressively increasing in fuse range.
  14. Lambda SOP

    This looks awesome But isn't this sort of what the invoke sop does? although that does have the constraint that you need to call a compiled block (with all the constraints of that)
  15. Hey All, Moving to H17 has been great so far, including a lot of the UI improvements that came in both H16.5 and H17 One thing does annoy me though, is the node information (or middlemouse button) of nodes with errors. Is there any way to get rid of this unused space in the UI? I don't really want to have to scroll down in the error message to read it, or to screenshot it, when I need to notify colleagues. (and if you use middle mouse button, you can not even do that) Thanks! Twan
  16. Get rid of subdivide artefacts

    Basically, you want to avoid triangles as much as you can, so maybe an extra intermediate edge (ring) on the cap might work, or you could try making the cap quads by connecting across, rather than going to the center (or a combination of both)
  17. "Make circle" SOP?

    well, once you have the average position, you can look at all the vectors from the center to the original positions, adding up the cross products of each set of 2 of those vectors (flipping them if they have a dot products smaller than 0) if you normalize that resulting vector, that should be the average plane orientation. afterwards you could use this VEX function to layout all of your points on that plane: http://www.sidefx.com/docs/houdini/vex/functions/planepointdistance.html yay maths ^^
  18. I would do the following: Create a convex hull Measure the distance between the mesh and the hull Constrain the smoothing, based on this distance. Possibly you want to do this in an iterative loop, smoothing in smaller increments, re-evaluating the constraints every iteration.
  19. Also, for object aligned boxes, I would generally loop over the objects, just use the Box SOP and then in VEX, do a intersect along the Normal (z), Up (y) vector and crossproduct(N, up) for the x axis, to get the scales.
  20. In this case you just type the name of the HDA name (not label) where it says: 'geo' I believe
  21. Also note that the "0" as the argument, refers to the input number, you can also use 1,2,3 to access the other input nodes (or even -1, -2, etc if you use spare inputs)
  22. How to selects a point ID using VEX?

    Because of how Houdini deals with ints, you can also do that (if your "whatever" fits on one line of code)
  23. trying to understand how arrays work

    Hey, didn't have time to check the file, but I have a hunch you used the setdetailattrib(0, "foo", yourArray); and then tried to read from it. This you cannot do inside the same wrangle. all the functions that write attributes, are only applied in the output of the node, not in the local data. so if you want to keep using it, use "yourArray" instead of "detail(0, "foo")" this restriction is not there for bound attribs like: "@foo" to your other question, of course. You can for example use the group parameter at the top of the node, to only process a subset (or a single) of your primitives
  24. For-Each Numbers Node Houdini 17

    Everything in the old foreach subnets can be done with the new ones, in slightly different ways (which will make more sense/are more flexible in the long run, than the old one) if you want an introduction to the new foreach logic, you can always watch Jeff's tutorial:
  25. trying to understand how arrays work

    you can use setdetailattrib() http://www.sidefx.com/docs/houdini16.0/vex/functions/setdetailattrib something like: int yourArray[]; /* stuff to build your array */ string selection = sprintf("selectionOfPrim%d", @primnum); setdetailattrib(0, selection, yourArray); note that, if this is what you actually want to do, its better just to save it as a prim attribute of course. if you just want one attribute, then run the wrangle in detail mode and build rebuild the logic to work with that. (you'll need to change the way you read and write your data)
×