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


Forums

  • General
    • Lounge/General chat
    • Education
    • Jobs
  • 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 306 results

  1. Introduction to FX using Houdini - workshop

    Hey what's up guys, Only 1 week left to sign up for my fast-track Houdini workshop "Introduction to FX using Houdini". Limited student capacity! Over the course of 9 weeks and 33+ hours of tutorial content students learn how to do procedural modeling, particle-, RBD-, pyro-, FLIP- and whitewater simulations. On top of that we're going to talk about lighting, shading, rendering and we're going to dive deep into VEX scripting. I would love to answer any questions that you might have!!! Cheers, Manu Find the complete course syllabus here: https://www.cgmasteracademy.com/courses/16-intro-to-fx-using-houdini Also for more detailed information on the workshop, check out an interview that was done on 80.lv recently: https://80.lv/articles/making-first-steps-in-vfx-with-procedural-tools/ Here's a quick teaser:
  2. Move curve point with Vex

    Hello everybody, before anything I'm going to introduce myself. I am a Belgian Technical Artist working in the game/interactive software industry from some years now. I was more a environment artist after my studies, but moved to development with Unity, Unreal and native C#/C++ software development. I began to learn Houdini one year ago and having a developer background, it was more easy for me to understand how Vex is working. I now try to use Houdini at work to improve our production pipeline with Unity and Unreal. Mostly using Vex. And it is a wonderful tool. I am currently working on a river tool with heightfield and curves. I first put the curve on top of the terrain then resample the curve and project each point on the terrain with the intersect function. (I also remove points that are outside the terrain) @P.y = getbbox_max(1).y + 100; vector p, uvw; int isIntersecting = intersect(1, @P, {0,-10000,0}, p, uvw); if(isIntersecting == -1) removepoint(0, @ptnum); else { @N = @N; @P.y = p.y; } The problem is that a river always flow from top to bottom, but the projected curve on the terrain sometimes go up and down. To fix that I loop through each points and check if the current point height (@P.y) is higher that the previous point height. But it is not working as expected. First try with Point Wrangle Run Over Points if(@ptnum > 0) { vector lastPointPosition = point(0,"P", @ptnum-1); if(@P.y > lastPointPosition.y) @P.y = lastPointPosition.y; } Second try with Point Wrangle Run Over Detail(only once) int ptNumber = npoints(0); for(int pt=1;pt<ptNumber;pt++) { vector currentPoint = point(0, "P", pt); vector lastPoint = point(0, "P", pt-1); float currentHeight = currentPoint.y; //printf("%s %s\n", pt, pt-1); if(currentHeight > lastPoint.y) { vector newPos = set(currentPoint.x, lastPoint.y, currentPoint.z); setpointattrib(0, "P", pt, newPos, "set"); } } What am I doing wrong ?
  3. Hey guys, Somewhat of a newbie to Houdini here - please excuse this (hopefully) simple question... I'm trying to process a number of FBX models to establish a kind of "connectivity tree" for future animation operations. Essentially I want to divide my models into numbered visual chunks then tag them to associate them with a "parent chunk". This parent chunk would be the neighboring chunk they are primarily attached/grounded to. I plan to use this order to reveal the chunks one-by-one - so I never have a floating chunk (chunk #0 will be on the ground plane). I've got some way into this but am struggling with tying up the final stages. In the attached HIP example I divide the model into chunks with Connectivity SOP. Then I loop through the chunk pieces - for each one I make a padded bounding box and use it to group neighbor 'child' chunks that intersect its surface (feels a little hacky but seems to work). Next I'm trying to add a prim attribute to these grouped prims - basically the numerical ID of the 'parent' chunk I'm using to group them. When I run a single loop pass, things look somewhat OK but it falls apart on successive loops. I think the issue is perhaps how I'm accessing the parent chunk ID in the loop - or maybe my attrs are getting overwritten in subsequent loops? Any ideas much appreciated - if you have a better idea on general approach I'd love to hear it (I'm probably going about it all wrong) Thanks! stackTest_help.hip
  4. VEX Point Manipulation

    Hi everyone, I had put together this tutorial based on a n old experiment I had done. People kept asking about the build, but I had since lost the original project. Recently I had found an old backup, so decided to explain how I did things. You can view the article and video tutorial on ProVideoCoalition here: https://www.provideocoalition.com/houdini-vex-point-manipulation/ When I had originally made the project over a year ago, I was following along with Entagma's VEX geometry tutorial. I then ventured out on my own and starting modifying, adding my own stuff, and transforming it. Ended up creating a maze'esque grid pattern, a vertical stripe system with custom UI controls, and a nebula'esque looking design. Each build using the same geometry source object. It was a good learning exercise.
  5. Hi there, Lets say we have a bunch of packed primitives scattered in an area on the left side and a on the right side a geometry, like frustum. I want to detect all the packed primitives that even a small portion of their bounding box is intersecting with the geometry. I have one method of doing this but its not ideal, I was wondering if anyone knows an efficient and preferably with vex way to do this. Cheers, C
  6. Zahia Hadid Architechture

    Hi guys First post Ive been following a few tuts from entagma and would love any input on creating something closer to this. My Houdini experience has mainly been lighting for film but i want to branch out into more of the fun stuff. Any ideas? Damien
  7. POP Wrangle Group

    Hello, I want a second age ("myage") for particles, when they are in the group "active". Very simple? But it don't work
  8. One thing that I miss from Python(Try / Except) or XSI ICE (First Valid) is the ability to check if some code returns errors and if so, do something else that is safer. Is there a way to access the validity of something and if not do something else? Cheers
  9. Hello to all! I am currently writing a wrangle-thing in which I'm hoping to generate a random "hair" on every point and make it face the normal of said point. The way I planned it is as follows: 1. create the hair w/ random params on 0,0,0 2. rotate the hair to Normal of the point that it's "generated on" w/ rotate(matrix,angle,vertex) function 3. Move the hair to @P I'm not a hero with vector math, otherwise I'd generate the whole hair thing along a normal. I wonder if I somehow can construct a identity matrix, like one would do with the ident() function, and use that to transform the prim. Is there a way to simply rotate a primitive using something simpler than extreme vector math? sgamhar.hip
  10. Hi there. I’m having some trouble translating two parameter expressions in this tutorial using Houdini 14 to Houdini 16.5: https://player.vimeo.com/video/130386299 The first expression is for the Value parameter in a attribute create node (given the name “WIDTH”). It is meant to tapper the octopus tentacle geometry. The attribute was created as a Ramp Float (given the name “cross”), in a null node named “Cross_RAMP.” The expression looks like this: chramp(“../Cross_RAMP/cross”,$PT/$NPT,0) The second expression is meant to help centralize control for the Scale parameter in a sweep node. The expression look like this: point(“../WIDTH”,$PT,”width”,0) So the null where the ramp was created is being tapped in the attribute create node, which is being tapped by the sweep node. But it is not working. The errors I get for these offer some leads, but I’m too new to code expressions to sort it out on my own. Wading through the online documentation and trial and error has not yet proven fruitful. I could use some help. Would someone tell me the proper expression to write, either with a VEX snippet, or other such replacement code? Thanks in advance for time and efforts.
  11. I have 2 sets of points: 'parent' and 'child'. Both have the same number of points. I need each parent point to have a unique child assigned to it - no duplicates. I need to be able to animate in an active value for the parent points, so that they all become active in 3-4 frames. When a parent point becomes 'active', it needs to search for its nearest available animated point and set that animated point's id number as 'child_id'. An animated point is only 'available' if it doesn't already have a parent point, or in other words: if the child_id is currently unused. My issue comes from the VOP I've set up within a SOP solver. If there is more than one parent point becoming active on a single frame, I get multiple parent points assigned with the same child point. I need to be able to write to 'child_id' and read from it on the same frame, to make sure that I am not getting multiple parent points with the same child points (leaving some very lonely, parent-less child points ). Please take a look at my attached file. I've highlighted the important nodes, and the Find Attribute Value VOP in red is where the issue is originating. find_unique_child.hip
  12. I am trying to make a setup where I align an object orthographically and then after I do my operations move the result back to the original position. I have a working way for aligning but am sure there must be an easier way... My method for aligning now: - Create oriented bbox - Measure prims - delete all but largest, then delete 1 of the largest in order to just have 1 rectangle, 4 points - make a vector from point 0 to 1 to align with x - make a vector from 0 to 2 to align with y - make normals to align with z - in vops use the align vop to align the 0 1 vector to x then use the (rotated) normals to align with z Even though this works I assume (hope) there is a better way to find the vectors, using pointnumbers is not procedural enough imho so any tips here would be great. But then the part I can't seem to get... How do I rotate my result back to the original position? there must be a way to store the rotations and invert these or something but everything i tried didin't work. my vectormath and matrices could def use some work. ofcourse i can use a point deform but that would not be accurate enough plus i am 00% sure there must be a way to invert what i did in the first vop. Thanks!
  13. I add and subtract the same exponentiated coordinate and up to 6 is fine, but 7 and above it squashes with cube. code vector pos = set(pow(10,7),0,0) ; vector P = @P ; P -= pos ; P += pos ; @P = P ; Wondering if clamping is the only way to go... How do you deal with this sort of issue? Cheers
  14. Hey! I was going through some tutorials on growth solvers, and I noticed that a lot of them are driven by the "food" group looking to get "infected" if you know what I mean. I wanted to try and make a growth solver that workes differently, looking instead at the points that are already infected and infecting more from their perspective. A very simple summation of what I'm trying to achieve: 1. List the points around me 2. If they are food, they are candidates 3. Infect only 1 of the found candidates rinse and repeat I've put the code underneath in a point wrangle in a solver, but it doesn't work well. I tried running the command on the seperate food and infected groups but that doesn't seem to improve either. What happens when it doesn't go well: 1. nothing 2. Almost every point gets put into the infected group in 1 framespan and then the solver doesn't do anything anymore. //initialiation of radius to search for, and random seed; float radius = 0.2; float seed = 8008135; //stalking prey (finding a list of points to infect); int neighbours[] = nearpoints(0,@P,radius,5); //hopefully grabbing a random one out of the stack of many; float array_length= len(neighbours); //random number between 0 and the length of the list of neighbours; int targetp = rint( rand(seed) * array_length); //looking up point ID in list of neighbours; int point_to_infect = neighbours[targetp]; //actually infect the point, if it is food; if (point(0,"infection",point_to_infect) == 0){ setpointattrib(0,"infection",point_to_infect,1); }; I haven't any clue what's going on, I got no errors other than a little green line under the local variable "targetp" when it gets created. I've attached my .hip! It might be something else I'm doing wrong. I hope you can help me, thanks in advance, Sasbom active infection.hip
  15. Hey Came to London to work for Crowd at MPC. Here's a summary of the challenges I responded to in Houdini: At the moment, I'm looking for the next thing to hop on. Most jobs for Houdini are VFX centric and I'm mostly a generalist leaning more towards geometry, rigging and motion processing side of things. Here's some public Orbolt Assets: https://orbolt.com/search/?q=probiner Building one right now to upload, to alike the matrix one, visualize arrays of vectors: https://i.imgur.com/ZPki1XN.png Let me know if there's something fit mid-term going be it for Houdini or XSI or even just if you're around and want to have a chat! Thanks
  16. Hey Folks, I wrap my head around this and cant find any solution can somebody explain me why this is not working and how I can get it to work ? // roomsizes vector zim3 = {5.25, 2.50, 3.82}; vector zim2 = {3.65, 2.50, 3.90}; vector zim1 = {3.65, 2.50, 2.82}; vector kueche = {2.50, 2.50, 3.82}; vector bad = {2.83, 2.50, 3.74}; vector flur = {1.50, 2.50, 5.71}; vector aRaum = {1.50, 2.50, 0.96}; // create Rooms // create _LivingRoom int pos0 = addpoint(0, {-(zim3.x*0.5), 0, -(zim3.z*0.5)}); int pos1 = addpoint(0, {(zim3.x*0.5), 0, -(zim3.x*0.5)}); int pos2 = addpoint(0, {(zim3.x*0.5), 0, (zim3.z*0.5)}); int pos3 = addpoint(0, {-(zim3.x*0.5), 0, (zim3.z*0.5)}); int roomPrim0 = addprim(0, "poly"); int vert0 = addvertex(0, roomPrim0, pos0); int vert1 = addvertex(0, roomPrim0, pos1); int vert2 = addvertex(0, roomPrim0, pos2); int vert3 = addvertex(0, roomPrim0, pos3); seems very simple but I miss something... and yes i am running in Detail mode thx deHeavy
  17. Hey everyone, I'm starting my houdini journey because the company I'm going to intern at in the summer does a lot of houdini stuff. I don't want to be left in the dark, so I'm studying on my own for now. When I was at the company in question, last time, someone showed me a way to use a volume from a mesh (he used the test_rubbertoy geo) to get a intersection plane without using boolean. I remember he used some wranglers, and ended up with a grid with color data which he used to delete the unnessecary parts outside the colored intersection area. Then he somehow turned the mesh into a isosurface, to smooth it out. I've been trying this for some time now and I can't for the life of me figure out how he did it. I've had two nearly succesful attempts, one where I used the Intersection Analysis to get the intersection between a grid and the (rubbertoy -> vdb -> vdb to poly (to fuse seperate meshes together)), then filled the edges I got from that, and then remeshed, which admittedly gets me at least a flat intersection plane. One major problem is that this approach makes the normals of the resulting mesh flip upside down randomly everytime I move the intersecting mesh, which is a pain if you'd want to use it for particles or something. I tried using a wrangle to copy the point normals of the nearest points to the points of the remesh, but I haven't had much luck with that. The other thing is that since the Intersection Analysis only returns edges, the shape of the surface is not taken into account, above method only returns planes and distorted planes on surfaces. The other one I used a attribute transfer with a (mesh -> vdb fog -> wrangle to fit density to 1 everywhere -> scatter -> color {1,0,0}) to project red points from the point cloud to a grid surface, which works, but VERY slowly. one bonus with this technique is that you can blur the resulting "intersection" but its way too slow. So, what I've been thinking is this: A VBD is basically a point cloud, so there needs to be a way to compare mesh points to the points in the volume, and assign a color to those points that are close to points on the geo. I remember said someone doing something like that with a pcopen, but I don't really understand how. I think I get the method, but if someone knows something better, please say so. I've been struggling with this for a couple of weeks now. I strive to be more than a shelf tool user, at the least. Thanks in advance, sasbom
  18. Array values to points

    While trying to create a point attribute based on array values from second input, I was expecting this to work: v@Cd = v[]@opinput1_colors[@ptnum]; // only works on point 0 I also tried getcomp(), but it seems I am missing something. vector a = getcomp(v[]@opinput1_colors, @ptnum); // uses first array value on all points addpointattrib(0, "Cd", a); camera_to_screen.hiplc
  19. Replicating circular points around normals

    I am currently using cross products and matrix transformations to replicate points in circles that are oriented by normals. Are there any more straight forward ways to achieve this with VEX? int points = chi('points'); float scale = 0.02; vector up = {0, 1, 0}; for(int i = 0; i < points; i++){ vector dir = normalize( cross(@N, up) ); float amount = (i / float(points)) * $PI * 2; matrix m = ident(); rotate(m, amount, @N); dir *= m; dir *= scale; int pt = addpoint(0, @P + dir); }
  20. Dynamic Vex Variable Names?

    Hi there! Is it possible to dynamically declare variables in a for loop with the index in the variable name? Current problem: I want to store primitives with similar normal angles into an array. The maximum number of arrays would be 4 (cardinal directions) but in most cases the normals head in only one direction. Thanks in advance. Cheers
  21. Hi guys I've been fumbling around with this for ages and I cant figure out what to do. I have a bunch of points scattered over a grid with a solver running through them (exactly like the infection system that simon holemadel uses) changing an attribute named 'infect'. Not infected = 0 infected =1. What I want to do is fade the color of each point from black to white over a specified amount of time from when each point became infected. I'm falling at the first hurdle of storing the time at which an individual point was infected in VEX. Im using an attribute wrangle and I think I'm on the right track with 'setdetailattrib' function, however I cant get it to take. here's the Vex code I have been using: float @timestart; if (@infect == 1) { setdetailattrib(0,"timestart",@Time,"set"); } and I have uploaded a screen shot and the scene file. If anyone can shed some light on this it would be much appreciated. Cheers Al Set_Time_Attrib_on_points.hip
  22. Color to cloth attribute transfer

    Hi guys. I'm pretty new to Houdini and I'm really unsure of the avenue to pursue achieving this effect. Essentially I have a grid with a solver changing the color of the points over time, like the infection system Simon Holmedal used in the HypervenomII spot. I then want to use this attribute to activate the cloth solver (black not affected, white affected). I really stumble at what stage in DOPs I can implement this attribute. I tried to add POP force however this doesn't work with cloth. I played a little with the multisolver node and mask input to the gravity however I have no idea how they work. If anyone could shed some light on this it would be massively appreciated. Scenefile attatched. Cheers Al Infect_To_Cloth.hip
  23. Hi folks Im a Houdini-noob, but somewhat techsavvy nerd, tryin to learn Houdini by fiddling with it, building stuff! atm tryin to re-create the "sharing" system visualised w the gif here ( i originally created it w pflow dataops in 3dsmax, but a fine case for houdini i thought ) idea of the system is each point representing a unit with a certain amount of energy if a point have a overcapacity of energy its look if a neighbour nearby is in need of energy if a energy-wealthy point sends energy to another, its withdrawn the amount of energy the lucky energylacking neighbour receives probably a deep plunge but thought, Hey I can easily write this w vex wrangles inside a SOP solver and voila - turns out not so easy... I sort of solved the exchange of energy btw groups of points, but struggle with visualising the "sent" energy as a "extra point flying from the energy-wealthy point to the energy-lacking one... seems fx i cant assign a velocity to the extra added point, only move it by moving its position Am i taking the totally wrong approach to this or is there hope? sharing v01.hipnc
  24. I Speak Whale - Houdini Project

    Hi guys, i would like share with all of you my latest personal project i did on my spare time. Hope you like it.
  25. Hi Everyone I'm currently trying to create circular point groups, inside a voronoi fracture. My outputs are groups currently are primitives but when I conver them to points, i have to many clustered together. I'm thinking of a solution by either getting the max/min two points of each primitive inside my group and delete the other points from the group. Unfortunately my VEX skills are very limited, I seem to be declaring my max function wrong. If someone could help me figure it out that would be great, also an explanation to why my attempt didn't work/ any other solutions towards achieving the same result would be more than welcome. Cheers Example.hipnc and for any questions im trying to make a tool that creates ground slams, as you can see there's distinct circular fractures which im trying to replicate, but also make procedural.
×