Jump to content

Search the Community

Showing results for tags 'vex'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • 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 742 results


  2. Hey there! I'm trying to assign a 'MatID' prim attribute value based on incoming data. I'm currently importing data from a JSON file which has an array called 'primMatID'. There are 10 entries in this array and they are being read into Houdini as separate attributes; primMatID[0], primMatID[1]..... primMatID[9]. Using an attribute wrangle, I'm assigning the value of each of those 'primMatID' entries to the 'MatID' attribute on a specific prim/face of a simple model (eg pentagon). I've only been able to achieve the first four, inappropriately treating the 'primMatID' entries as vectors *blushes* in a vex wrangle, but obviously vector4 is the biggest there is, so the fifth through tenth entries of the JSON array cannot be captured with this approach. For the attached image, is it possible to transfer the primMatID[4] value of 8 to prim 6? Any help would be greatly appreciated! Thanks in advance.
  3. Hi, Learning VEX and this is simply out of curiosity since I'm trying to build an intuition for how houdini works under the hood. I know I can read a vector from say point 5, like so: vector test = point(0, "P", 5); printf("%f", test); {0.091506,0.482963,-0.091506} Is there a way I can directly access only a component, like P.x with the point function? To my surprise, substituting "P" with "P.x" doesn't work, i.e: float test = point(0, "P.x", 5); printf("%f", test); 0.000000 I know I can access it via variable indices in the first example like vector test = point(0, "P", 5); printf("%f", test[0]); 0.091506 but it doesn't seem to work within the function. Neither "P.x" nor "P[0]" works. Is there a good reason for this? Grateful for any input you may have! GG
  4. Hi guys, As you can see in the image below, I have some scattered points on a grid and there are some points near a curve that are selected. Now I need help on how to create a "Normal vector" on each scattered point, that is toward (pointed to) the nearest point to the point selection. Thanks for helping. VEX_temp_01.hip
  5. Snake Nokia Game

    Houdini was getting bored doing hours of simulation, so I gave him something to play with. - Done in Houdini, script in VEX, rendered using Karma.
  6. Houdini.School | Loops

    "Loops" is my latest Houdini.School class covering process loops like for, for-each, while and do/while loops. I'll illustrate numerous examples that will focus on SOPs, VOPs, VEX, COPs, and LOPs. Learn more about the class and enroll here: https://bit.ly/hsloops
  7. Remesh using only VEX

    Hello to everyone! I'm creating this topic just to see if someone is able to break down the remesh node in VEX. The point is to achieve a faster result using a wrangler or more as a substitution for the remesh or polyreduce. So here you have some questions: 1. Is it better to use the original mesh (deleting and modifying the mesh) or creating a new one (generating points)? 2. Is the source code used in the remesh node faster than any script that could be written in VEX? If you find a way or you have an idea about how to do it, don't hesitate to share it with the community!
  8. Hi all, I have a single poly prim with 1+polys ontop/inside, I would like to remove the smaller ones from the larger one (think bool) ideally not using a bool operation (but may be unavoidable) and using VEX, my current approach would be to extract to points and knowing the small prims figure out a way to rebuild a prim from these . (easy right ?) and suggestion welcome. Curt
  9. Hey guys, So today I tried getting a point's .y position but it gives a value of 0 for some reason. In the attached picture you can see the code that I tried to run. When I use the "P" then it gives the correct vector for the position, but when I want to just get the .Y value(should be something around 1), it stopped working. Is it because I can't use the "P.y" expression in the point function?
  10. Hi All, Quick question, Objective: I have two points (could be any orientation), If the distance is greater than "x" meters ( in world units, 0.5m in this example) I would like to add an additional point 0.25 Meters along the vector (eg.from first point two second point direction) is there a VEX function for this? cheers
  11. How does one deal with multiple paths in POP Steer Path I would like to be able to assign a list of possible paths to each agent particle instead of all the particles following all the paths. Currently I set up multiple sops and multiple agent groups but that's not very scalable. Cheers
  12. I hope to get the nearest position on a surface or line that is somewhere along the inverse normal, searching in a range of angles (a cone if you will). If this can be done in vex that'd be ideal (I've messed around sop loops and group stuff but that as expected gets very slow). Too aid with the question there is an expertly drawn diagram.
  13. 3@transform = set( {-0.146396,-0.0727609,0.0550026},{0.0605058,0.000363445,0.161525},{0.0682531,-0.156387,-0.0252152} ) ; -- Instance with @transform p@orient = quaternion(3@transform); DELETE @transform attribute -- Instance with p@orient Different Results of orientation! If I instance the point with p@Orient converted from 3@transform using quaternion() , the orientation is flipped . It seems that I get the same p@Orient value with ident() and ident() * -1 . Is it the problem? How can I obtain the correct p@orient ? Thank you for reading my question
  14. Hey guys. I want to display info of each LOD on parameter editor panel and I got it work in Houdini, but when I use this hda in UE, all detail scripts turn to be strings rather than values, and horizontal layout of labels messed up, too. Is that because UE don't support runtime vex in label parameter?
  15. whenever I try to use pcfind() I get perfect circle shaped sampling I tried to break this pattern by adding noise to P position in pcfind() as such : if(intpointgroup(0, 'infected', @ptnum)) { @myArray = pcfind(0, 'P', @P+v@noise, radius, max_pts); } *noise was generated in vex using voplib.h but somehow it just shifted the start position, not the sampling pattern itself. (I still get clean circle shape sampling) is there another way I can break this pattern in one wrangle? I've used attribnoise to P and rayed it back to get a similar result, but it messes up the rest position and doesn't feel right sorry for horrible English and thank you in advance!
  16. Circle tagents

    Goal: Looking into tangent lines between two circles and trying to convert this function into vex. The code is originally in Java but looks like it should be easily converted to vex but I'm getting errors with my attempt below. function float[] common_tangent_line(x1, y1, r1, x2, y2, r2) { // Compute the common tangent line of two circles: (x1, y1) - r1 and (x2, y2) - r2 // Return in the form of line equation: ax + by + c == 0 delta1 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) - (r1 + r2) * (r1 + r2); delta2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) - (r1 - r2) * (r1 - r2); p1 = r1 * (x1 * x2 + y1 * y2 - x2 * x2 - y2 * y2); p2 = r2 * (x1 * x1 + y1 * y1 - x1 * x2 - y1 * y2); q = x1 * y2 - x2 * y1; results = []; if(delta1 >= 0) { l11 = { a: (x2 - x1) * (r1 + r2) + (y1 - y2) * Math.sqrt(delta1), b: (y2 - y1) * (r1 + r2) + (x2 - x1) * Math.sqrt(delta1), c: p1 + p2 + q * Math.sqrt(delta1) }; l12 = { a: (x2 - x1) * (r1 + r2) - (y1 - y2) * Math.sqrt(delta1), b: (y2 - y1) * (r1 + r2) - (x2 - x1) * Math.sqrt(delta1), c: p1 + p2 - q * Math.sqrt(delta1) }; results.push(l11); results.push(l12); } if(delta2 >= 0) { l21 = { a: (x2 - x1) * (r1 - r2) + (y1 - y2) * Math.sqrt(delta2), b: (y2 - y1) * (r1 - r2) + (x2 - x1) * Math.sqrt(delta2), c: p1 - p2 + q * Math.sqrt(delta2) }; l22 = { a: (x2 - x1) * (r1 - r2) - (y1 - y2) * Math.sqrt(delta2), b: (y2 - y1) * (r1 - r2) - (x2 - x1) * Math.sqrt(delta2), c: p1 - p2 - q * Math.sqrt(delta2) }; results.push(l21); results.push(l22); } return results; }
  17. Near point constantly updating

    I feel like the answer is going to be simple but I have been hung up on this for a while. I am finding the nearpoint and storing its vector as a lerp target. That part works fine but as the rest position moves I want it not look for a new closest point until distance from rest to the last nearpoint is x far away. Instead of constantly looking for the closest point. The final effect I am going for is to have the sphere move across surfaces and have the lines act like tendrils walking. point_reach_003.hiplc
  18. Hi! This is my first post to this wonderful forum, my teacher recommended it to me since I'm the only one in my CG-course to want to work with Houdini and the autodidactic approach can be harsh sometimes I was following the classic "vex isn't scary"-tutorial on for loops and decided I wanted to try to make the "infected" points also move into a new position within the foreach-loop after they've become infected, which worked fine. But then I tried to create a float parameter that blended the initial position of each point and the new position, so that you are able to see them moving towards the center as they became infected, and got completely lost in the sauce. Anyone know how to write that in VEX? I attached the file with directions. Looking forward to spending time within this community, you guys are awesome! FORLOOPS_VEX.hipnc
  19. Delete Duplicate Packed Geo

    I've got a lot of geo being imported into my scene and it turns out there are many duplicates. Does anyone have any neat ideas how to whittle them down to a single instance? I've packed them and then I was thinking of building an array of point positions for everything and then removing all but one instance of said position. Any ideas? Cheers
  20. Hello Houdini vex wizards! I'm having a lot of difficulty trying to come up with a solution for this one myself. As the title mentions, I'd like a single point to be created for just one frame and then disappear again - I would also like this to happen at random time intervals as the frame number increases. For example the point will flash on for 1 frame, then maybe nothing for 10 frames, or nothing for 2 frames, then another point flash and so on. I'm not very good with time related things in vex, but would love to learn more about random time stuff if anyone has any ideas?
  21. Hi, im build a Maze generator with vex. But i went into an issue by setting up the right iterations. I developed the code in a solver sop because it was easy for me to understand whats happening. But now i want the code iterating till the maze is finished. So I want the iterations to be driven by a condition, for example (and not by frames). Does anybody know how to make a recursive version of the code, so i will be able to setup a condition? function int[] nunvisited(int inpoint){ int pushed[] = array(); foreach(int n; neighbours(0,inpoint)){ if(inpointgroup(0,"visited",n)!=1){ push(pushed,n); } } return pushed; } function void movefor(int cpoint){ int neighbours[] = nunvisited(cpoint); int randbour = int(rand(cpoint+25)*len(neighbours)); int npoint = neighbours[randbour]; //add point to visitedlist array int visitedlist[] = detail(0,"visitedlist"); push(visitedlist, npoint); setdetailattrib(0,"visitedlist",visitedlist,"set"); //enable visited group setpointgroup(0,"visited",npoint,1,"set"); //disable current group setpointgroup(0,"current",cpoint,0,"set"); //enable current group setpointgroup(0,"current",npoint,1,"set"); //color setpointattrib(0,"Cd",npoint, {0,0,1}, "set"); //add line int l = addprim(0,"polyline",cpoint,npoint); setprimgroup(0,"line",l,1,"set"); } function void moveback(int cpoint){ int list[] = detail(0,"visitedlist"); int lastindex = len(list)-2; int ppoint = list[lastindex]; //delete point from visitedlist array int visitedlist[] = detail(0,"visitedlist"); removeindex(visitedlist,len(list)-1); setdetailattrib(0,"visitedlist",visitedlist,"set"); //disable group setpointgroup(0,"current",cpoint,0,"set"); //enable group setpointgroup(0,"current",ppoint,1,"set"); setpointattrib(0,"Cd",ppoint, {1,0,0}, "set"); } if(len(nunvisited(@ptnum))<1){ moveback(@ptnum); }else{ movefor(@ptnum); }
  22. VEX

    Hey! my name is Abdulwadod I'm an FX student and i'm kind of new to houdini my question is how to get the same fallof that attribtransfer node had when using a distance threshold you know this bandwidth threshold param i'm trying to do the same thing in vex using wrangle node but it just give me a linear transition i wanna to just transfer a color so i wanna it to have a fallof when doing it using point cloud in vex.
  23. Does code in vex have better perfomance than use nodes? If yes, should I use vex as much as possilble?
  24. Hi. I try to controll bend stiffness_drop_off inside vellum contraint property. But when I turn on stiffness dropoff no changes appear during simulation. If I turn it on inside vellum cloth within bend properties It works but whener I make changes with vellum constraint properties nothing works. Any help?
  25. Hi I wonder if someone can explain why the following code won't work? Basically just trying to take an emitted particle and reposition it if it overlaps with existing geo. The code runs fine but doesn't reposition the point at all, wondering why. Thanks! v@ptemp = @P; int npts[] = nearpoints(1, @ptemp, @pscale); int lent = len(npts); float seed = 1; while(lent){ @Cd = {1, 0, 0}; @ptemp = set(random(seed), random(seed+1), random(seed+2)); seed++; } @P = @ptemp;