Jump to content


  • Content count

  • Donations

    10.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by acey195

  1. Bumping with the recordings : EPC2018 - Innes McKendrick - Working With Change (Hello Games: No Man’s Sky) EPC2018 - Anastasia Opara - Proceduralism and Deep Learning (EA: SEED) EPC2018 - Oskar Stalberg - Wave Function Collapse in Bad North EPC2018 - Twan de Graaf and Pierre Villette - Procedural Content Generation at Ubisoft Paris
  2. Solving crossroads

    Ahh yeah ok, cleaning up data is probably often the most difficult/tedious step, so I get what you are getting at. Good luck with the rest of the project!
  3. usually what I do, when I have to do a pointcloud search and I only want to have one point affect the other (but not vice versa) is to check the pointnumber. basically, I usually do the following check: if(otherPtNum <= @ptnum) continue; //inside your loop, or whatever other logic you want/need to use to skip the code execution for this point
  4. Solving crossroads

    Nice Feike! Two things I was wondering about though: Are you doing some checks for the pillars not to go through the roads below? (as I see a couple of instances where that happens) I also not really know how those "vertical" intersections should work, where one road is connecting to the same road its overlapping (on the bottom left for instance) or what the OSM curves look like for those cases.
  5. Houdini 17 Wishlist

    Normally it should open the console the first time it prints anything, if you are printing from a wrangle, make sure your code is actually executed, like by making sure you have input points, in case you are running over points for example. Otherwise it may also print it to the (python) shell, so maybe try to restart houdini with a different desktop to make sure it isn't open already, so it should open when you try to print your first thing.. Also, from a dutch swamp ey..? me too
  6. You could add a line between the two points (with an add sop for instance) then append a measure sop. Then you could add the "perimeter" attribute to the ones visualized in the viewport, opening the menu with "d" while holding the cursor over the viewport, inside the "Visualizers" tab Or look at the perimeter attribute in the spreadsheet. unless that is what you mean by procedurally.. in that case I wouldn't really know how to do that non-procedurally. Although, I guess if you really want, you could use the construction grid to measure the distance, but you would have to align your objects in such a way that it lines up with the axes of the construction grid, which seems more hassle than its worth. Or you could build your own python tool of course.
  7. Houdini 17 Wishlist

    its there in the documentation :http://www.sidefx.com/docs/houdini/vex/functions/index.html just use ctrl+f on that page and you'll find: http://www.sidefx.com/docs/houdini/vex/functions/printf.html it will print it out to the console
  8. printf

    generally yes ;), %d will work with most "number" types same as %f, the difference between them is mostly formatting I think. For instance with %d, it will limit the amount of decimals in the output string, whereas %f will try to keep as many digits behind the decimal point as possible. There are some other tricks that you could use, such as %02d. that will pad the start of the output with zeros, so you can do a more easy alpha-numeric search for example personally, I never had to use anything other than %f, %d or %s.
  9. Try Except in VEX alike in Python?

    yeah, ok I think I see what you mean now, I would also love stuff like: setpointattrib(0, attrib, @ptnum, point(0, attrib, otherSourcePt)); to work.. (I understand its ambiguous, but some auto casting of variables mid-code-line would still be nice) The functions from Thomas are workable they will result in almost 200 lines of code to make all checks, the strongly typed way (unfortunately I cannot share the code :/ )
  10. Try Except in VEX alike in Python?

    Vex is a highly multi threaded language, I think adding try-catch/except logic would seriously slow it down. most value errors at least, will just return 0, as VEX is strongly typed. (like Atom Mentioned) Rather than crashing the node, its probably better to compare your values to 0 in some cases (and if the expected value is non-0)
  11. Reverse curve direction not working

    to check the (counter-)clockwiseness, you can enclose the primitive (in the curve sop directly, in a primitive sop or an ends sop), then check if the primitive normal is up or down. (if your curve self intersects, there obviously may be issues with this or any method)
  12. The event was a blast to be, and to present at Some people from Grendel Games made a nice write up of the event: https://www.grendel-games.com/procedural-generation/?lang=en

    not really an expert, or user of flip at all to be honest, but I did recall this showing up in the changelog, worth a try I guess?: Houdini 16.5.483 Reseeding in the flipsolver is now forced to be active when narrow band is active. This is important because the simulation can collapse with narrow band if the band of particles are not maintained properly. Thu. May 24, 2018
  14. you may also try promoting the attributes to vertex attribs, and then applying a vertexSplit node, if you actually need to split the primiitives (so you could use a connectivity sop later for instance) also continuing from 3Dome, you could also do both in one node: string grp = sprintf("cluster_%d", i@cluster); setprimgroup(0, grp, @primnum, 1);
  15. Rant about parameter expression syntax

    As I understand it, the backticks cast your value to a string. If you use backticks in a float field, it will be cast to a string and then interpreted again as a float; Because it will only accept those kind of values, but this is basically casting your value twice, so there is a risk of losing data in some cases. Since I'm one of those people of a "strongly-typed" persuasion, I kinda like how it is now But for the stuff where strongly typed is less well suited, there is always Python you can use. and you can also setup your default parameter language to Python as well.
  16. Boolean issue, non manifold edge...maybe

    Try disabling the de-triangulation feature on the first boolean SOP, or add a fuse, clean and divide sop between the first and the second one.
  17. no cross ?

    if you are doing more than one operation per line, always hard cast your variables, otherwise they will be considered as a float in some cases. This is especially true for functions that accept multiple data types. side topic, the {0,1,0} notation does not accept variables, so use set(0, x, 0) instead if you need to
  18. this was also a post of 2 years ago :P, a lot of us (including me) have already moved on to the new compilable-new-foreach-structure
  19. Dynamic Vex Variable Names?

    its possible with H14 and up using the http://www.sidefx.com/docs/houdini16.0/vex/functions/setprimattrib function along with http://www.sidefx.com/docs/houdini16.0/vex/functions/sprintf for example float angleVal; string attribName; for(int i = 0; i < 4; i++) { attribName = sprintf("angleDir_%d", i); angleVal = i; //do your math here setprimattrib(0, attribName, @primnum, angleVal); } in H13 and lower, the attributes have to exist before the setprimattrib or setpointattrib etc are used, with H14 and up, it will generate it for you or you can store them directly as an array attribute, but in some cases it may complain if the sizes of the array are not the same (at least in Python I think) in vex that would look something like this: float angleVals[], angleVal; string attribName; for(int i = 0; i < 4; i++) { angleVal = i; //do your math here append(angleVals, angleVal); } f[]@outAngles = angleVals;
  20. Houdini 17 Wishlist

    a toggle (or default) for the findshortestpath node, so when you do not output paths, that it does not delete the geometry when there are no points in the "Start Points" group, but instead sets the "Cost Attribute" value(s) to -1, like it does to all points it can normally not find a path to (when there is at least one point grouped as a start point) This behaviour is useful to do quick floodfill operations (to see if a certain point is connected by another point, while also taking into account directed primitives) Right now you have to add a: delete, switch and attribCreate node for every findShortest Path to do this safety check.
  21. Grid Subdivision Problem

    You can try overriding your crease value, and setting it to a high value (like 10) the other corners are fine, because they are convex corners, or they have split points I would think.
  22. about demo reels

    That depends on at least 2 things: what you mean by assets in this context? (models that are downloaded from online? Orbolt assets?) In both these cases its probably fine if you clearly say which parts you worked on yourself (and maybe give credit), and your own work clearly adds on top of the rest. what kind of job you are aiming for? If by assets you mean your own digital assets, then I would suggest showing them a little bit IF you are aiming for a technical job (tools/pipeline) for a more pure FX job, you can probably leave most of it out.
  23. [SOLVED]Make Fake Primitive Normal Real?

    wrangle over prims: ///// v@primNormal = prim_normal(0, @primnum, {0.5, 0.5, 0.5}); ///// then promote the attrib to points like you tried before
  24. Triangulate 3D

    concave shapes are not possible completely automatically, as you will need some control over how much how much concavity you will allow. maybe you could use a growing algorithm (not very fast unfortunately) to make sure a point only connects to the closest other point and then repeat that till all points are used. after that you'll have to convert your poly lines into closed polygons which is also not really straightforward, using stuff like intersection stitch maybe another way to go would be VDB from particle (taking the average distance between points as a radius), then convert it back to polygon and then morph the mesh to be flush with your input points again.
  25. Smooth Groups

    what I would usually do is cast it to an integer attribute and then use an iterative (feedback) loop; with 2 attribute promote nodes in there: one to convert from primitive to point, using mode (try different modes if you like) the other to convert back from point to primitive using mode and then just set it to use the amount of iterations about equal to the amount of subdivisions you use. edit: and finally of course cast it back to your group if you need.