Jump to content

Search the Community

Showing results for tags 'foreach'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Lounge/General chat
    • Education
    • Jobs
    • Marketplace
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
    • Tools (HDA's etc.)
  • Coders Corner
    • HDK : Houdini Development Kit
    • Scripting
    • Shaders
  • Art and Challenges
    • Finished Work
    • Work in Progress
    • VFX Challenge
    • Effects Challenge Archive
  • Systems and Other Applications
    • Other 3d Packages
    • Operating Systems
    • Hardware
    • Pipeline
  • od|force
    • Feedback, Suggestions, Bugs

Found 52 results

  1. Hello everyone, this is my first post on this forum so thank you for welcoming me and please be indulgent if I'm not posting on the correct channel. I've been trying to wrap my head around an issue that I'm facing with VEX for a couple of days but I'm really stuck. My goal was to iterate through each points of a input and to create a Polyline between two points if there are close enough from each other Problem is that if point 1 is close from point 6, it will create a Polyline (so far, so good) but when my VEX script reach point 6, the invert is also true. So VEX will create a second line from point#6 to point#1... I'm trying to add some line in my script to raise a flag if a point has already been "activated" (used if you prefer) to use that as a check before creating anything. From my understanding VEX scripts are running on each points sequentially so I tried to create an attribute called "active" that I can raise to 1 every time this point has been going through my script. When I'm trying to get my attribute "active" from my foreach loop, it returns 0 if "active" has been initialized on the same VEX wrangle node but it's returning the right value if it has been set in a previous node. What am I missing here ? Thanks float radius = chf('radius'); int ptArray[] = nearpoints(0,@P,radius, 2); @active = set(1); i[]@array = ptArray; foreach(int pointNum; ptArray) { int activated = point(geoself(),'active',pointNum); printf("activated = {%g}", activated); if(pointNum != @ptnum && activated != 1){ int line = addprim(0,"polyline"); addvertex(0, line, @ptnum); addvertex(0, line, pointNum); setpointattrib(0,"active",pointNum,1,"set"); } }
  2. I am trying to rearrange all the primitive blocks using for loop but couldn't find a solution. I want to revert all the pieces back to their original place from the centroid. I used 2 transform nodes in the for each node to bring all the pieces to the origin. Now, I want to bring all the pieces back to their original position aka the first screenshot. Heres the hip file. Thank you for reading reaarange_test.hip
  3. Hi, I've created a basic picket fence setup. Each picket is positioned on a ground fence segment based on its width, as well as the segment's length. There's a curve_height that I want each individual picket to extend to. I'm currently stuck as to which part of the for-loop to put it in. The curve_height section is in the red network box. Thanks for the help. picketFence_w21_alternateHeight1.hipnc
  4. Hello, I'm learning houdini and so far I'm loving it but I'm having a problem to understand a concept of manually editting something that has already been generated. I guess this could be quite a common use-case but I haven't found solution anywhere so I'm trying to seek help/guidance here: I am working on procedural generation of buildings from their footprints. To simplify, I have a geometry node in which I have a foreach loop SOP that iterates over footprints (primitives) and extrudes them based on their height attribute. Now, is it possible to select a specific footprint and change its height attribute so that this specific footprint will be extruded by different amount? What I'm trying to achieve is that user is able to select any procedurally generated building and adjust/override its default/random parameters like height, roof type, texture... and after that - this building will be re-generated reflecting these changes (while other unchanged buldings won't be regenerated to speedup this process) Does houdini provide such functionality? Or are there any best practices how to approach this problem? Thanks
  5. Hi guys; In a "foreach" loop, how can I retrieve “iteration” value from the "metadata", to write in a parameters tab? Thanks for helping.
  6. iterate over certain points

    I have this code below: i[]@TP = neighbours(0,0); foreach(int i ; @TP) { @P.y = 1; } how can I tell Houdini to just move the points insideTP array? foreach move all the points.
  7. vex : addvertex with foreach

    What do these two lines mean? I do not understand. Please explain. addvertex(0, prim, @ptnum); addvertex(0,prim,pt); I don't konw why "ptnum" is needed here.
  8. Hi All, sorry for the heading, Its a hard one to describe lol. I have a booleanfracture piece and want to process only the middle points , then with that create geo that knows the distance to top and bottom of its local position (as the slice fracture is not a flat plane, hopefully a picture helps). Im not sure the best approach, I would start with nearpoints in some way ,finding the top points and test down for a middle storing the lowest for distance checks?? lol, well its a tricky one
  9. Hi guys, I'm a little lost on how to calculate distance between successive points (picture) of my floor mesh. I guess i have to use a "for each point" in Vex. This distance will help me to creat wall with the exact scale between angles. Thank you for your help.
  10. Hey! I'm fairly new to Houdini and have been trying for hours to work this out! I'm making a greeble tool want to be able to scatter assets on top of the greeble. The (placeholder) assets are in their own subnet and are all in the one object merge within the greeble node network. Is there any way I can randomly switch between these objects while they're in the one merge? So that then user could add more objects into the merge as well using the UI without having to edit things inside of the greeble node network?
  11. Hey all, Trying to wrap my head around this... thought it was going to be easy until I got into it. I'm tying to randomize each level in a copy transform in my setup. I get close but I end up randomizing all prims instead of each level. I attached the hipfile. jl_iterLevel_01.hip Please Help, Thanks!
  12. Hello I'm doing a RBD (bullet) sim with custom concave geo (proxies) that I pack my self using assemble. I use a scatter and copy to points to set up my inital state, run the sim. I use a dopimport, and I would like to fetch the hi rez geo. Tutorials show that if I had the high rez geo scattered the same way I could plug it and it would work straight away. However I would like, with only my points, to retrieve the high rez geo. I thought I would use a foreach and apply primintrinsics or transformpieces or even a copytopoints as seen in some tutorials like here but nothign works, my scales and pivots don't seem to work. To give you an idea of what my network looks like before the dopnet: I cross posted on Sidefx forums but it wasn't published sorry for the crosspost. If you have any info on this I'm very interested.
  13. Hi, I have attached a scene file for reference, in the scene, I have fractured a box and used a for each loop to adjust its pivot points and position and again I have used a grid and scattered point to copy it. I have used for each loop to and a copy to points node. My problem is that, all of my fractured geometry gets copied to each point, while I know copy stamp method but is there any other way that I can use to copy each fractured piece coming out of a loop randomly over the scattered points via a copy to points node. Please let me know, I have attached a file below. * Also can you please let me know how to add strings in attribute vop node, suppose I want to create a string called "piece" inside the vop node and add the id or any random number to it and combine both the values as strings and also export it as a string attribute. Thanks copyToPoints.hipnc
  14. i am trying to run over named primitives, but the for each loop seems to pick randomly for each iteration which batch to process. i want the loop to respect the sorted primitives and run over each named primitive as it is in the geometry spreadsheet. How does it pick the first batch for iteration number 0? can i change that? image 1 is before the loop,sorted primitives image 2 is inside the loop with a single pass to see iteration 0 As you can see the first batch the loop chooses to process is not the first batch as sorted before. First batch should be the one named color_229_229_0
  15. Hi, I would like to create a stack with some pieces of geometry and scale down each of them based on the previous bbox. The final look should be a pyramid based on the geometry you are using .. My problem is that I haven't been able to figure out the correct VEX syntax to use a point wrangle and read the bbox from the previous iteration. Any help out there? Thanks I attached a graph example testing.hipnc
  16. Hey guys, I never got how does a foreach works in vex (at all!), can someone please explain me this? It does the same thing as the For-Each Loop node?
  17. Running solver on multiple objects

    Hello, I want to create a fire from multiple moving objects. I tried to merge them and create a Pryo source then plug this into Pryo Solver but this was a bad solution as the bounding box is getting very large. I tried to run foreach loop on each moving object and then create a pyro source and then plug the result into Pyro Solver but the Bounding box is now tracking the first object but not all the other. If anyone have good solution for this problem please share it with me, also .hip files are very welcome if you don't need to write a long solution i can just dig inside Thanks.
  18. Hi, I'm trying to store a size of some objects into an array using 'foreach loop'. And it works in a single pass mode, but not in normal mode. And I have no idea why Try to switch single pass mode on and off and check attributes on detail stacked_boxes_q.hipnc
  19. For each POINT in each GROUP

    Hello guys I am still quite new in VEX coding and I am all day fighting with set of gravitational rules based on a membership of the points in groups. I am emitting particles, the particles are sorted to groups by 3-6 nearest points. So after couple of frames of emitting particles I have 100 groups and each groups has 3-6 points. Now I need to set some gravitational rules for every group so the points in every group will be attracted to each other just inside the group. I got stuck here. If anyone has any idea how to solve this issue, it would be perfect. Many thanks in advance. ap_ParticleGravitationalAttraction_01.hipnc
  20. Hello everyone, I come to you because I have a little trouble understanding a tutorial. Indeed I look at the tutorial "Abstract Effect a Houdini" the problem is that it is a version prior to 17 and since the node "For Each" has changed. So in the Tutorial it does as in the picture 1 to get the picture 2 I block here (picture 3) and there are plenty of node for each and I do not know which to choose. . . I tried several times but I can not get the same result. Do you have any ideas ? Thank you in advance everyone. os: sorry for my english, i use a translator
  21. DOP in for-each loop

    Hi community! I have a huge destruction scene, where I'm stuck with the ground impact dust. Basically i need to make a smoke sim on every collision with the ground. I have my impact points in place, with birth frame data as well. My guess was to make a for-each loop with a DOP inside of it for every point. It works, but every frame it recalculates the whole sim until the current frame, which is of course is not good. The scene is so huge and scattered, doing this in 1 sim would take an eternity. How can I do this in a correct way? I`m sorry, but i can not post any of the hip file. Thanks for reading this, also a huge thanks if you answer. Cheers. **edit: im on H16.0
  22. Copy to Points - Foreach

    Hey! I was wondering how to copy Geo to points using the Foreach Loop block, but without using a switch. Instead I am trying to use groups to switch between the input Geo. Unfortunately I was not successful yet. Maybe anybody has an idea what I am doing wrong here? Best, M CopyLoop_01.hip
  23. Hello Everyone! How can I loop so that the output geometry is used at the beginning of the cycle? Where am I wrong? I only get two dice, but no more .. Procedural_house_base.hipnc My result (only 2 blocks) My goal (several blocks with copying on the new ones points ) Have a good day All
  24. Hi all, I have an arrays-in-loops puzzle. I thought of a shortcut to do a thing, it doesn't seem to work, and I should move on -- except I would like to understand why it doesn't work. Minimal background: I've got some point data, I've polywired it together using Connect Adjacent Pieces, and gotten a restlength on the primitives from that. I need to set a pscale on the points before moving on to my next step. Half the distance to the nearest neighbor is good enough for now. I could use nearpoints() to figure that out (and it seems to work!), but I thought, "hey, I already have restlengths; why not just look up the shortest restlength and use that?" That turns out not to work, or at least not as I think it should. Where have I gone wrong? After my connect step, each point ends up connected to 4-20 other points by primitives with restlengths between .9 and 3.9. My first stab at this was: use pointprims() to get an array of primitives associate with each point; create an empty float array to hold the restlengths; foreach loop over the primitives, read the restlength with primattrib(), and push the result onto the lengths array; sort() the lengths array into a new array; read out the shortest length and use that to calculate a pscale. Here's the actual code: int myprims[] = pointprims(0, @ptnum); float mylens[] = {}; foreach (int myndx; myprims) { float mytmp = primattrib(0, "restlength", myprims[myndx], 0); // f@checktmp = mytemp; push(mylens, mytmp); // f@checkrslt = mylens[myndx]; } float lensort[] = sort(mylens); float shortest = lensort[0]; f@pscale = shortest/2; I think it's failing at the push statement. If I write out mytmp as a point attribute just before I push it, I get a reasonable number (commented code). If I check the stored value right after the push, I get either zero or the restlength of prim zero. If I check after the foreach loop completes, I get restlength of prim zero. So the push doesn't work. Looks like example code in the docs, but I'm missing something. Any thoughts?
  25. ForEach VEX doubt!

    hey guys, I have various primitives and those have different amount of points on them, for example each one primitive might have 10 points and other might have 20 so it varies like this, Now i want to have an attributes which ranges from 0 to 1 for each primitive just like what we get from curveu attribute in resample node. I know how to do this in for each sop but i want to do this in vex, am somehow not able to get that loop working correctly. I store the array using primpoints to get the points on that primitive and iterate that through a for loop but i am not able to get normalised value ranging from 0 - 1. Can please someone help?
×