Jump to content


Popular Content

Showing most liked content since 04/16/2022 in all areas

  1. 7 points
    Hi guys, I'd like to share my latest personal r&d project of creating procedural assets. Still work in progress. Cheers, Shawn
  2. 6 points
    Hi @bentraje, you could map the surface curvature to the height field. The erosion of the landscape can then be transferred back for displacement. https://procegen.konstantinmagnus.de/height-field-erosion-on-meshes
  3. 4 points
    You can achieve this by writing this sort of code inside a Primitive Wrangle: string cam = chs("cam"); float near = 0; float far = -0.01; vector pnear = fromNDC ( cam, set ( 0.5, 0.5, near ) ); vector pfar = fromNDC ( cam, set ( 0.5, 0.5, far ) ); vector dir = -normalize ( pfar - pnear ); vector n = normalize ( primuv ( 0, "N", @primnum, 0.5 ) ); if ( dot ( n, dir ) < ch("threshold") ) i@group_fresnel = 1;
  4. 4 points
    Hi Burton, you could also use the clip node driven by the distance towards the curve along with a time mask for cutting: https://procegen.konstantinmagnus.de/plasma-cutting-along-curve
  5. 3 points
    Iteratively resampling a voxel field and visualizing the VDB tree as cubes might also be an option: https://procegen.konstantinmagnus.de/cubify-meshes
  6. 2 points
    ejr32123 is correct. You want a constant shader on the top of the sidewalk, but you want proper lighting on the fractured interior faces. A larger issue you'll have is when the pieces break and move the lighting on the top surface should change. The shadows should change, the diffuse and specular lighting should change. But how do account for this if the lighting is baked into the projected image? No easy answer as far as I know. People often make a copy of the original image and try and remove specular and shadows in the hopes of creating a diffuse texture map that can be used with a principled shader. Photoshop or gimp seem the most obvious tools to do this, but I believe that there are some photogrammetry solutions that have some automated mechanisms for doing this. Once this is done you'll need to reproduce the lighting in cg so that it matches the photo. You'll probably need to render a shadow pass for areas where your cg debris is supposed to cast shadows on the constant surface. Then it'll probably take some love in compositing to make it all work. Hope that helps
  7. 2 points
    Hi, You can create a point group to contain all points before the Clip SOP and then invert this group:
  8. 2 points
    @bentraje just use groupfromattribboundary SOP on PRIM 'Cd' endless control.
  9. 2 points
    Thanks for the responses. @Librarian I couldn't quite directly use it since I guess the code is for the mat context. That said I think I get the overall logic. I think its doing Method #2 in the code below. @animatrix The code works as expected. ========== Also just for reference. People from slack group also helped me. Here are the results. Same goal just different execution. Method 1 (from bcarmeli) vector @cdir; vector @raydir; matrix camMatrix = optransform(chs("camera")); //get a matrix with the camera's transforms. @cdir = cracktransform(0, 0, 0, {0,0,0}, camMatrix); //extract out the camera position as a vector @raydir = normalize(@P-@cdir); //get a vector to project pointo from camera f@facing_ratio = fit11(dot(@N, @raydir),0,1); if(@facing_ratio>chf("threshold")){ @group_mygroup = 1; } Method 2 (from David Torno) vector cam = getpointbbox_center(1); //Option 1: Get dir per point vector dir = normalize(@P - cam); //Option 2: Get single point centroid //vector c = getpointbbox_center(0); //vector dir = normalize(@P - c); float d = fit11(dot(@N, dir), 0, 1); if(d > chf("threshold"))i@group_mygroup =1; Will close this thread now. Thanks for the help!
  10. 2 points
    Take a look at the shapematch constraint. It's suitable for rigid bodies. That way you don't have to leave vellum. Vellum_RBD_interaction_v0001_yader.hiplc Vellum_RBD_interaction_v0001_yader.mp4
  11. 2 points
    After months of hard work, the new bonus content for Pragmatic VEX: Volume 1 is finally out! Existing users immediately received access to the updated content as soon as it went live. The new trailer also features the new content: Enjoy!
  12. 2 points
    KineFX uses vertex order to set hierarchy. A reverse SOP will flip the hierarchy. Make sure it's wired in before the first rig doctor. Once you add a rig doctor, additional attributes are added that define parent and child indices and local transforms are calculated using that hierarchy. Adding a reverse SOP after that won't have any effect.
  13. 2 points
    Lot of tuts online. I.e:. https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjj-LXCo5j3AhWYRPEDHYJ8CesQtwJ6BAgGEAI&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dw0eGwlGyTjE&usg=AOvVaw2Mb6kBuuYNbW8BSCJjfmGZ https://www.cgcircuit.com/tutorial/how-to-fix-particle-stepping-in-houdini?utm_source=youtube&utm_medium=social&utm_campaign=how-to-fix-particle-stepping-in-houdini https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjj-LXCo5j3AhWYRPEDHYJ8CesQtwJ6BAgQEAI&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DriUx1ILoedc&usg=AOvVaw1kdearygh3nJWPunWjhFHX Was just the first three after a google for "Houdini particle stepping". I am sure you will find a lot more online. Also try to change your popsetup before changing the subseps.
  14. 2 points
    My first instinct would be to project the 2D font onto the box surface before extruding it. Also keep in mind that all fonts are not created equal. In this example I switched to Arial because the default font produced jagged artifacts. ap_carve_letter_equal_extrusion.hipnc
  15. 2 points
  16. 2 points
    Hi Naim, you could displace grids and stick them to a sweeped curve: hair_microscopic.hip
  17. 1 point
    I never thought I would say this but, what about using metaballs?
  18. 1 point
    That's look really cool Tesan, you finally find our way out to what i could see
  19. 1 point
    I see a few things wrong, or I wouldn't setup my sim that way. Don't link your div size to the rasterize node. Use the div size of the Pryo Object to drive the particle separation of the pyro source. The rasterize node derives its voxel size from pyro source. Don't animate the cutoff on the disturbance, instead animate the Disturbance scale up and down. Turn off all shape tools except Disturbance until you dial in your look, then toggle that one off and take the same approach with turbulence and confinement. Dial them in one at a time. This helps isolate what controls contribute to the final look.
  20. 1 point
    Hi, If your geometry's topology is uniform without poles unlike the one I am using, here is one way you could do it: function int [ ] getPrimNeighbours ( int input; int pr ) { int allprims [ ] = { }; int hedge = primhedge ( input, pr ); for ( int i = 0; i < primvertexcount ( input, pr ); ++i ) { for ( int f = 0; f < hedge_equivcount ( input, hedge ); ++f ) { int hedgeNext = hedge_nextequiv ( input, hedge ); int primindex = hedge_prim ( input, hedgeNext ); if ( primindex != pr ) append ( allprims, primindex ); hedge = hedgeNext; } hedge = hedge_next ( input, hedge ); } return allprims; } int firstprim = chi("first_prim"); setprimgroup ( 0, "prims1", firstprim, 1 ); int allprims [ ] = array ( firstprim ); int lastprims [ ] = array ( firstprim ); int index = 1; int primcount = -1; while ( primcount != 0 ) { string groupname = index % 2 ? "prims2" : "prims1"; int newprims [ ] = { }; foreach ( int pr; lastprims ) { int connected [ ] = getPrimNeighbours ( 0, pr ); foreach ( int c; connected ) { if ( find ( allprims, c ) < 0 ) { append ( allprims, c ); append ( newprims, c ); } } } lastprims = newprims; foreach ( int pr; newprims ) setprimgroup ( 0, groupname, pr, 1 ); primcount = len ( newprims ); ++index; }
  21. 1 point
    TOPs do the same. You just have to set up some nodes yourself to print out the job info.
  22. 1 point
    Turn on "all frames in one batch" on your top. If you don't have this turned on your sim will have to compute preroll for every frame it's processing
  23. 1 point
    I think I sent an RFE for this years ago.
  24. 1 point
    Sorry Matt, I accidently set it to 'draft'. It should be available now. It's just a for loop iterating over the vdb resample-node.
  25. 1 point
    dl_cube_subdiv.hipnc There's probably smarter ways to do this.
  26. 1 point
    "Spark Shooters" is probably a pretty good description, I think they show up in pretty much every Michael Bay movie that has some sort of destruction. They look like just tons of sparks being emitted like you suspect, like hand-held sparklers you can buy at the store, but tons of them (and flying).
  27. 1 point
    @Librarian Thank you, I found
  28. 1 point
    On smoke object guides tab temperature checkbox. You'll get temperature plane colored from red(hi temp) to green(low temp). In temperature tam you can adjust min/max and find your range, need to sim few frames with low res.
  29. 1 point
    Wow it worked like a charm. How come I overlooked this! Thanks a ton Stalkerx777 Cheers!
  30. 1 point
    It's easier to use a String type parameter (with a menu) for this instead of ordered menu. This way, eval() will return a string.
  31. 1 point
    Asia . Active Scale Deform ASia546.hiplc
  32. 1 point
  33. 1 point
    Hey Alex, sorry I didn't see your reply back in August. Thank-you for this! I was just revisiting this thread to see if there were any comments that would help me resolve some issues with the previous .asCode() method that I encountered when running our tool on things like the new SOP level pyro solver. The hscript method you posted circumvents the problem nicely! Definitely going to be switching to this going forward!
  34. 1 point
    You could create a curveu attribute and add the primitive number to it. This does not consider varying curve lengths though. ap_km_etch_font_into_grid_u.hipnc
  35. 1 point
    The lerp approach does work, but it adds a lot of noise to the system. As you discovered, modifying points after the simulation can lead to a collision artifacts. There was a mention in the Luma Pictures video about modifying velocity before it enters the popnet. I noticed your setup is multiplying velocity by 5 inside the popnet. Try returning inherit velocity back to the default of 1 and multiply velocity by 5 before entering the popnet. This may improve collision results and require less post-sim fixup.
  36. 1 point
    Hello Prasanth, I had made some changes in the emitter and the pop sim and its works well for me 1) i changed the sphere into a semisphere (in reality its like a sprayer so i used semisphere as one side emitter) 2) created a vel using the semisphere 3)jitter birth time to positive and interpolation method to match topology (**** highly recommend you to use match topology when the geometry points and the emitter points before sim are same ******) and added some variance in velocity i hope it might help for you, if you have any doubts please reach me out Have a nice Day ap_Color_Smoke_nagoor_version.hipnc
  37. 1 point
    Asia . humertrack_a01Velsmok.hiplc
  38. 1 point
    Hi, Depending on if you want to keep the quotes or not, you can do something like this: s[]@array = split ( replace ( chs("array"), "\"", "" ), "," ); or: s[]@array = split ( chs("array"), "," );
  39. 1 point
  40. 1 point
    We have a default biped, actually a few. What about the same for vehicles? A default, car character/rig, and semi-truck with a trailer. Use those new vehicle assets in a self tool for the Crowd simulator that demonstrates traffic, lanes, and stop-lights.
  41. 1 point
    You can make a fog volume from the tube, negate it and source it into the Divergence field.
  42. 1 point
    Shortens edges and line segments by an inset distance. Optionally takes the point scale attribute into account. The shortening distance can be limited to a rest length. konstantin_shorten.hdalc
  43. 1 point
    I'ts This File ..When was The Challenge On think Procedural I Found that on GitHub ...Or You using Something Else .. https://github.com/chloesun/wfc_houdini
  44. 1 point
    Thanks kleer, I figured the null workaround but just thought this should be an obvious feature in any package involving animation... Still Houdini rocks
  45. 1 point
    ver 3: added Container option...for wall collisions. vu_SimplePacking3.hipnc
  46. 1 point
    just checking...how do you know the fuse didn't work ? to me, Fuse does work... If you are checking by using Explode...then Explode separates the prims by name..it doesn't mean the geo is physically separated. So in my test, if you disable delete_name....the Explode works, if you clear out name, Explode does not work. Next test, if you disable fuse...and the Explode is using Auto Detect...then even if name was deleted....it will as the last option (per helpcard) use connectivity to separate the pieces....hence showing Fuse does work. vu_egg_voronoi.hipnc
  47. 1 point
    Of course! Thank you Joe, that worked.
  48. 1 point
    I have no idea if this is any use to you but here's a scene that shows condir in action (with condof set to 2). The first .gif (condir.gif) has both position and rotation constrained whilst the second has just rotation. The constraint axis is Y. In the first gif you can see how movement is only allowed along Y and rotation is only allowed around Y. If you go into the pointwrangle and change the constraint to rotation only you get the second .gif where movement is allowed anywhere but rotation is still only allowed around Y. This scene does not work properly prior to version 16.0.642 as a bug with condir was fixed from that point onwards (i.e rotation about x was the same as rotation about z). hard_hinge_daryl.hip
  49. 1 point
    blast the 'inside' group -> divide 'remove shared edges' -> ends 'unroll' voronoi_edges.hipnc
  50. 1 point
    Yeah I've submitted it. Cusping/unique'ing the points on the receiving geo does fix it, which is unexpected. But whatever I'll just roll with that for now until I hear back from SideFX. Thanks guys M