Welcome to od|forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


  • Content count

  • Joined

  • Last visited

  • Days Won


Community Reputation

97 Excellent

About acey195

  • Rank
  • Birthday 01/10/1991

Contact Methods

  • Website URL http://www.twandegraaf.nl/

Personal Information

  • Name Twan
  • Location France

Recent Profile Visitors

5,736 profile views
  1. Just saw your interview on cgsociety, just wanted to say it was an awesome read
  2. if you want to check the updated values in the same node that you changed them in, the only way is to use binding: printf("%d\n", @attribute1); // prints old value @attribute1 = 1337; //new value printf("%d\n", @attribute1); // prints new value //setprimattrib(0, "attribute1", @primnum, 1337); // will only be applied AFTER the node is cooked, not internally, so you can not fetch the value afterwards. // this is done with regards to "parallelizability" as with setprimattrib() you could potentially adjust the value of of a different primitive than itself, // that becomes problematic if multiple calls of the code try to adjust the same primitive attribute. /* /////////////////////////another option: float currentValue = prim(0, "attribute1", @primnum); printf("%d\n",currentValue); // prints old value currentValue = 1337; //new value printf("%d\n",currentValue); // prints new value setprimattrib(0, "attribute1", @primnum, currentValue); */ Note that with binding, you can only load and write attributes of the same class that the wrangle is running in currently (the "run over" parameter) so running over points, you will load and write point attributes with bindings for example.
  3. https://80.lv/articles/ Technical articles on game dev, including Houdini
  4. Yesterday 80Lvl released a new post: https://80.lv/articles/procedural-technology-in-ghost-recon-wildlands/ It covers some of the design processes that were used and how Houdini assisted in them. The project itself has been a blast to work on! </plug> So I hope you like the article
  5. Well if the points are already fused it is fine, but as soon as Houdini is redrawing primitives it could remove certain edges from an edge group, in certain cases.
  6. Assuming you are using the H16 Boolean: you probably want to scroll down and enable some of the checkboxes of the "Output Edge Groups" in particular "A-B Seams" is probably one you want to use. You can also use it to output a multitude of Primitive groups, which you could manipulate with nodes like "Group Promote" then you can simply feed in the "abseams" group or a custom (edge)group in your bevel sop instead of hand-selecting the groups in the viewport. Keep in mind that certain operations, such as the "fuse" node may remove elements from edge groups.
  7. I think you just have to add "raise" in front of the line to get what you want : raise hou.NodeError(‘your error message’) raise hou.NodeWarning(‘your warning message’)
  8. with H16 what you can do is just rename your "perm" attribute to "segment_length" (or "num_segments" alternatively) and enable overriding attributes (should be enabled by default I think)
  9. there is a connectivity SOP :P, you can use the attribute that that creates to assign a color. alternatively you can color the points in your "point wrangle" and transfer the color in the "copytopoints1" node.
  10. For creating static values, attribute create is still the faster way, but if you want to have different point values based on certain conditions, wrangles are much faster than the old H-script code.
  11. In old versions (earlier versions of H13, I think) it happened with mantra nodes, removing those and then recreating them got the file size back to normal, for a time at least :P.
  12. Glad you figured it out, no problem at all
  13. so like a "slalom"? using a solver?
  14. I'm pretty sure this can actually be done in vex. are you talking about rotating points around a certain position, or rotating a vector itself (for instance a N value of a point)? for the first one, I would think you would need to go 3 steps: -save original position, and temporarily move the point to a position so it is relative to {0, 0, 0} as the rotation axis. -rotate the point around the origin. -add the original position back. for rotating normals, if you want to make them rotate around a single axis, that should be simple enough with matrices, or even atan2 + cos + sin maths. If you want to expand that for multiple angles, I guess you just have do a rotation over the perpendicular axis, and use that as the axis for the primary rotation. Then finally you could "randomize" the rotation speed by layering a couple of sine functions on top of each other for instance.
  15. int nearbyPts[], pt, connectingPrim; nearbyPts = nearpoints(0, v@P, chf("range")); foreach(pt; nearbyPts) { if(pt <= @ptnum) continue; connectingPrim = addprim(0, "polyline"); addvertex(0, connectingPrim, @ptnum); addvertex(0, connectingPrim, pt); } Did that from the top of my head, but I think that should work for you. copy paste it into an attribute wrangle running over points.