Jump to content

Search the Community

Showing results for tags 'wrangle'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General
    • Lounge/General chat
    • Education
    • Jobs
  • Houdini
    • General Houdini Questions
    • Effects
    • Modeling
    • Animation & Rigging
    • Lighting & Rendering
    • Compositing
    • Games
  • 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 37 results

  1. VDB to "tidy" geo

    Hi Been watching the Hive Siggraph vids specifically the procedural game level building At 40 mins 28 sec in there is a corridor that looks interesting and i can replicate a lot of it (because of the way it is described) but i cant understand how the vdb is so clean. On the left it is just possible to see a convert vdb node connected to what looks like a wrangle of some kind? Does anyone have some insight into what would be happening in this wrangle to get such clean geo? I have no idea... Thanks for any input Dave
  2. Hi, Can someone help, and explain why after translating a cube up in sops, on the geometry node to postion a box on top of another box. then making it a RBD object. then simply add a deactivate object from the shelf tools, why my pivot and object change position when I jump into dops. Perhaps Im missing something silly here, anyone help please? thanks in advance.
  3. Hey all! I'm pretty stuck in a rut trying to think my way through what I want to accomplish with a brick tool I've been working on. Currently I can feed in a box, tube, or an L-shaped box that I've modeled and I can get well stacked bricks around the perimeter. What I'm stuck on is then taking this and adding in holes for windows/doors/etc. Similar to what is seen here: https://letshoudini.wordpress.com/2016/06/19/031-procedural-modeling-for-destruction/ What I want to be able to do is copy a pre-fractured brick to the points, like the simple box I have now in the attached hip file, with rotations to help vary the layout a bit. Thus, should I boolean out holes from the mesh after generating bricks? Maybe taking into account where windows are (will be) and then not placing brick points there? (then I would have to have half bricks to copy). Not sure the booleans would behave as I want to be able to instance high detail geo to the pieces after simulation. The solution in the link looks to be a boolean as the simulation then only runs with simple bricks clustered to add some interest to their breakup (https://letshoudini.wordpress.com/2016/09/18/037-earthquake-building-collapse-rd-01/). I don't think I'm seeing this problem clearly right now and would really appreciate some nudges in a direction to help grease the logic wheels! Hartman- BuildingForDestruction.hiplc
  4. Hey guys, sorry for my english There is a way in Houdini to detect the collision and have a organic style deformation without dynamics to avoid the intersection of the meshes? I have some geometry groups (tentacles based on curves) in a single object, so, I thinks is possible with volumes and a vex expression with if and else, but I'm not so good with vex, i'm still learning. So, using a foreach loop , maybe converting the mesh into volumes and use a scatter to have the surface and inside points to detect their position, how can I import in a wrangle the groups and their points info to create this type of action? I know the message but i don't know how to write it, some ideas? Thank you
  5. Point Wrangle inside foreach loop

    I'll get right to it. I am running a foreach loop on a bunch of prims. For each prim I scatter a number of points. Still within the foreach loop, I run a point wrangle on those points. In the wrangle I run intersect on each of the points and if one hits I want to set an attribute on the prim (foreach loop peice) that the points were scattered on. In the end I don't need the scattered points, I just need the prims output with the attribute @keepage. What I cant figure out is how to set up the forloop so that this works.
  6. Hello! Sory for my English I'm trying create geometry with AttribWrangle node in Detail mode. I use addpoint, addvertex and addprim nodes. When I created some points how could I get access to them into the node? For example, I created point pnt0 = {0,0,0,}. And now I want to create point pnt1 which is close to pnt0: int X = 3; int pnt0 = addpoint(0, set(0,0,0)); int pnt1 = addpoint(0, set()); - and here I want to get position of the first point and add X to each coordinates. Is it possible?
  7. Looking for some help on setting up a Wrangle that would curl a curve by rotating the last point in the curve around a point centered on the previous point, and doing that all the way down the chain so you get nice curls happening. Been trying to work this out but I'm missing some knowledge here when it comes to looping through points per primitive, and also I'm not sure how to rotate a point with the rotation origin starting on another point. Basic idea is that given an @N and an @up vector on the curve, it will rotate each point about the previous point's @P using cross(@N, @up) as a rotation axis, by some user defined degrees/rads number. The code would have to (far as I'm thinking so far) loop through all prims, and then loop through all points in each prim, rotating each one around the previous point.
  8. Hello guys. Could anyone help me with syntax. Im relatively new to VEX. I need to get total number of points of geometry that connected to second input of wrangle. I tried something like int maxp = @opinput2_numpt; but it always returns 0. Would appreciate help.
  9. I am looking into installing VEX syntax and Exhelp for Sublime text and that is easy and nice, but I realized I don't know of a good way to actually connect Sublime text to Houdini. Copy pasteing the code between Sublime text and Houdini everytime I want to test something seems like a pain. It would be so inconvinient that I wonder whether Sublime Text would be worth the effort. So how do you use it? Is there a way to hook Houdini and Sublime Text up to each other for a direct connection?
  10. Hello wizards! I have a question about point wrangle SOP. Is it possible create a matrix, and use that matrix in copy SOP as a transform ? In the file attached, i build all axis that i need for create a matrix, and rotate the copies with "roll_on_path" ramp parameter, but until now, no way. If someone have an idea... a big Thanks
  11. Hey guys. I'm pretty new to the houdini world, and I've been experimenting a lot of things. Is there a way to get the RGB values of scattered points using attrib wrangle? Im not too familiar with the VEX syntax, so Im having a hard time figuring it out. I have random colours signed to a scatter node and some geometry copied on to the points using a copy node. I want to limit scatter the geometry based on the colour of the scattered point. Thanks!
  12. Attribute randomize issue

    I just installed Houdini 15.5.683 for Ubuntu 16.04 and I gave a quick look to see how different was from windows version. The first issue that I encountered is with attribute-randomize sop, that gives me a strange error (VEX related). I tried the same setup in windows and everything works smooth! maybe is a ubuntu specific bug? there's someway to fix it, because this sop is essential to me. thanks in advance ps. I navigated inside the attribute randomize sop to find the actual line error.
  13. Temporary variables in VEX Help

    Hi I'm new to this wrangle node programming, I've been busting my head over why this doesn't work for three days, it's so simple therefor i must be missing out on some general vex concepts. If anyone can please point me in the right direction that would be greatly appritiated. I have a bunch of points on a grid and their moving up and down via noise. I am trying to set up a point attribute that has a value of 1 when a point if moving up (positivly in the Y axis) and a value of 0 when a point is moving down (negativly in the Y axis). This attribute is called Direction, I'm computing the logic on temporary VEX variables and then writing them out to the attributes. Here's how it looks like : // 0 is going down, 1 is going up, -1 means the point has no direction // on the first frame they have no direction so the points just take their current heights so they can use them for comparison on the second and every other frame int temporary_Direction; float temporary_Previous_Frame_Height; if(@Frame == 1) { temporary_Direction = -1; temporary_Previous_Frame_Height = @P.y; } else { temporary_Direction = @Direction; // ------------> this is where the problem is (this is here so that the temporary variable get's the value of the currently proccesing point every frame) temporary_Previous_Frame_Height = @P.y; if(temporary_Direction == -1) // If the point has no direction { if(temporary_Previous_Frame_Height < v@P.y) // If it's going up { temporary_Direction = 1; temporary_Previous_Frame_Height = v@P.y; } if(temporary_Previous_Frame_Height > v@P.y) // If it's going down { temporary_Direction = 0; temporary_Previous_Frame_Height = v@P.y; } } } // Out_Values i@Direction = temporary_Direction; f@Previous_Frame_Height = temporary_Previous_Frame_Height; // Out_Values The problem here seems to be when I declare "temporary_Direction = @Direction", for some reason on the second frame when I read @Direction the value wich is given to temporary_Direction is 0 instead of -1 wich was given to every @Direction on the first frame. Temporary_Previous_Frame_Height updates just fine but temporary_Direction doesnt. Also writing "if(temporary_Direction == -1)" doesnt seem to work either. Is my thought process even slightly right here, what am i doing wrong, are temporary variables created in vex something that exist globally and in order to use them per point we need to read each point's values or are temporary variables something that exist for every point. Also why do i have to give values to all attributes every single frame or else they will reset to 0 (hense the Out_Values section). //////////////////////////// Update Thank you everyone for replying. I've tried out the time shift sop and it work's fine now( I dont even need the Previous_Frame_Height attribute anymore). I've updated the main post with the original hip file and the one with the time shift sop. Learning about the time shift sop is great, but i would still like to improve my thought process on writing code. It would be greatly appritiated if someone can take a look at the original hip file and possibly shed some light on the problem. I've added notes inside the original hip file for clarity. Any help would be appritiated Thanks in advance Original.hip Time-Shift SOP.hip
  14. Hi, Is there an possibility to have @ working to create write attributes in a vex function? Something similar to the following function void test() { i@test_attrib = 10; } The reason I want to avoid setattrib is that it is much slower as implementation. Are there any other idea's? does the *.vcc compiler optimize the setting of attributes? Cheers
  15. Hello, Trying to read a vector array from another point at a certain index. From my understanding of Houdini something like this should work. vector tempArray[] = point(0,"vectorArrayAttrib",pointToReadFrom); vector v = tempArray[index]; Unfortunately this method is returning an empty array from the point() function. If this is not the right way to go about doing this please let me know. Any help welcomed. Thanks.
  16. Hello,I'm attempting to create the slitscan/timeshift effect. I'm creating a vector array in a for loop, each loop has an attrib from map and a wrangle that appends Cd to a vector array. It works when the attrib from map is always reading from the same file. When I change the attrib from map file read expression to anything that has to do with $F or the meta nodes iteration Houdini crashes. I have a test scene that has documentation and even nodes setup to create test frames to work with.If it is a matter of the way that multiple files cannot be read at once please let me know. If someone knows of a better way to read from multiple files at once and/or achieve this effect please let me know. I'm aware that after effects has this effect and uses gradients to determine which frame to look up color from. While that method is great, I'd like to be able to write the gradients/lookups in vex to achieve results. Any help greatly appreciated. -T concept_025_slitScan_v001.hiplc
  17. How to write for loop in vex

    Hello guys, I know how for loop works in c++ but i am not able to write in vex .Can anyone explain me how to write for loop with simple point and color example . Thank you
  18. Hi, is it possible to access the points I create in a wrangle with the addpoint function in the same wrangle? I have an attribute wrangle that only runs once. Within that wrangle I made a for loop where I create points. Then I want search for neigbouring points within the points I created so far in the same loop. I could store the positions in array and loop through the array of the positions I stored so far within the loop, but that can get pretty slow. I hope I explained this well anough. I there any way to do this or should I have another approach for this?
  19. Custom Group SOP in VEX

    Hi guys, here are the files I used for the last Vancouver Houdini User Group in case anyone wants to take a look. My presentation was about writing the Group SOP in VEX and trying to optimize it. I wrote everything in a wrangle, and it works great as a preset in a point/prim wrangle. I also made a Digital Asset, although it's not a VEX operator because I couldn't figure out how to make it work purely in VEX because I need to use the group bindings from the Wrangle and I'm not sure how to implement that in VEX. Anyways, the OTL is just the wrangle with the parameters promoted. In the presentation file you can take a look at the speed tests of the Group VEX vs the Group SOP. The difference in performance is pretty similar if you have a few points/prims, but once you go above 1 million the performance difference really starts to kick in. The Group VEX becomes exponentially faster than the Group SOP the more points you have. The difference can really be seen when you group by object and when you group by volume. I also made those 2 modes work with primitives. Here are the files in case anyone wants to take a look at the code. Feedback is greatly appreciated! group_vex_jeronimo_maggi.hipnc vhug_presentation_jeronimo_maggi.hipnc group_vex_jm.hdanc custom_group_sop.vfl
  20. Hi Pretty much the title In VOP I can use the "Import Primitive Attribute" node to do it, but I'm not sure what's the recommended way to do the same in a wrangle. I noticed that the IPA node is actually just a snippet, which obviously answers my question, but I was wondering if there was a more straightforward (a.k.a shorter) way to do the same Thanks EDIT Someone answered my question and apparently just using @primnum works in wrangles. However, now I'm more confused. I created a sphere and put a f@test = @primnum; in a point wrangle, the results are some numbers, but what do these numbers refere to?
  21. Hi I am trying to rotate a volume so it aligns with the original geometry. (align along x axis - convert to volume - revert back to original place) I tried setting the primintrinsic, but the pivot point is shifted relative to the original geometry, there is a way to specify the desired pivot for the matrix? Any ideas? Thanks) volume_rotate_v01.hip
  22. simple cloth tearing for fun

    Hi there!! I have been using odforce for a while now, but this is my first post! I have just been playing with cloth tearing using the SOP Solver to calculate stress by analysing the distance between points and removing them based on a threshold. Just did it for fun! Any thoughts, comments or opinions would be great! Or maybe it will help someone... HIP file is attached. cheers G stressTest_GraemePhillips.hipnc
  23. Hi, I am fairly new to houdini. I have attached a scene here, I have animated a box to move through the Ocean Wave in X direction and I want it to follow the Y transformation of the point from the ocean wave so that it looks like it is interacting with the wave below. I want a VEX method please. My file picks up the transformation of a single point but it does not updates the points while the box moves so the Y transform remains intact with the first point that it picks up at the beginning. So please look at the attached file and please let me know how to overcome it. And please if anyone can suggest me a good source to learn VEX language for houdini from the beginning. And I know python language so will I have to learn Hscript or Python is a perfect substitute? box_move.hip
  24. How can i import attribute to geoself() geometry from second input of wrangle node if i don't know type of this attribute. I write function: parameters: native_input = 0 (first input of wrangle node) sample_input = 1 (second input of wrangle node) attribs = string like "attrib1 attrib2 attrib3" native_ptnum = number of point in current geometry where i want create attributes like in second input sampled_ptnum = number of point from second input where i want sample attribute. but cannon import any array attributes like "Cd" and etc... This function correctly worked only if attribute is not array (type = 0 or 1 or 2) :((( void sampleattribs(int native_input; int sample_input; string attribs; int native_ptnum; int sampled_ptnum ) { foreach(string aname; split(strip(attribs), " ")) { aname = strip(aname); if ( haspointattrib(sample_input, aname) ) { int atype = attribtype(sample_input, "point", aname); if (atype==0) { addpointattrib(native_input, aname, int(0)); int value = point(sample_input, aname, sampled_ptnum); setpointattrib(native_input, aname, native_ptnum, value); }; if (atype==1) { addpointattrib(native_input, aname, float(0)); float value = point(sample_input, aname, sampled_ptnum); setpointattrib(native_input, aname, native_ptnum, value); }; if (atype==2) { addpointattrib(native_input, aname, ""); string value = point(sample_input, aname, sampled_ptnum); setpointattrib(native_input, aname, native_ptnum, value); }; if (atype==3) { int def_value[]; addpointattrib(native_input, aname, def_value); int value[] = point(sample_input, aname, sampled_ptnum); setpointattrib(native_input, aname, native_ptnum, value); }; if (atype==4) { int size = pointattribsize(sample_input, aname); string typeinfo = attribtypeinfo(sample_input, "point", aname); float def_value[] = {}; for(int i=0; i<size; i++) append(def_value, 0.); addpointattrib(native_input, aname, def_value); setattribtypeinfo(native_input, "point", aname, typeinfo); float value[]; resize(value, size); int success = -1; //value = point(sample_input, aname, sampled_ptnum); //printf("%d\n", sampled_ptnum); //foreach(float v; value) { printf("%f", v); }; setpointattrib(native_input, aname, native_ptnum, value); }; if (atype==5) { string def_value[]={}; addpointattrib(native_input, aname, def_value); string value[] = point(sample_input, aname, sampled_ptnum); setpointattrib(native_input, aname, native_ptnum, value); }; }; }; };
  25. The most powerful wrangle operator due to the sheer fire power of the HDK. Performance increase can vary from a few times to thousands of times depending on the scenario.