Jump to content


Popular Content

Showing most liked content since 04/12/2021 in all areas

  1. 9 points
    I had a go. I'm positive there's an easy way to do this in mops, but I'm a masochist and enjoyed the challenge of doing this from scratch. Definitely look into mops if you want to do more of these kind of things! The vex looks a bit scary, but its mainly a few ramps controlling when and how the chunks get moved: get a horizontal ramp from the bounding box run it through a few channel ramps, each ramp controls a different part of the effect; eg a ramp that tells the noise to start at 0, go to 1, then back to 0, while another ramp determines when the pieces morph from word A to word B, while others control scale add time to the ramped values, clamp it, so that it slides through the words modify the transform of each chunk. make chunks from word A start with a scale of 1, then scale to 0, while word B does the opposite word A chunks start with no rotation, then gradually start to rotate while they scale down, word B does the opposite finally blend (lerp) the positions from word A to word B, adding some animated noise in the middle bit as they move. The cross-fading of scales hides the transition between word A and word B. voronoi_morph_v03.hip
  2. 6 points
    How to create a procedural mushroom model in SideFX Houdini. Video: Original thread: Latest file version: https://gumroad.com/konstantin_magnus
  3. 4 points
    Hi! I just released Simple Tree Tools 2.0. This is a huge update! Please enjoy https://gum.co/SimpleTreeTools
  4. 4 points
    Hey guys, I started making a very simple pathtracer with vex in sopland. I'll add basic reflection and refraction, and keep it very simple as it is made as an "educational tool" to help students understand how pathtracing works under the hood. Once I'll have finish I'll share the file here if some of you are interested. I added an "animation" in which we can see the different paths a ray takes : the primary path (in red/blue in the video), the next event estimation path (in black/yellow), and the diffuse bounces (in magenta). I'll also add the next event estimation for the diffuse bounces, and of course when it will be implemented, reflection and refraction paths. Here's a little video of the animation, and a very non-converged render https://streamable.com/37kxua (I think I have a bug in the global illumination I'll fix it tomorrow). Cheers,
  5. 4 points
    This would be a MOPs way to do it... less VEX but a few more nodes involved to get the scale fake working as intended. If you could guarantee an equal number of chunks on both sides of the equation, it'd be easier to blend transforms from A to B via MOPs Apply Attributes, but it's hard to guarantee chunk counts with voronoi. voronoi_morph.hip
  6. 4 points
    It's been a long and illustrious carreer. I think this website has been going for ~23 years now. Time flies when you're having fun
  7. 4 points
    @Max_Steven combine, maybe you gonna find some tricks FlowerDETaIL.hiplc
  8. 4 points
    I'm not leaving anytime soon. It was 2002 when I found this place, I was a lurker for a few years before making and account and saying a word. I think it was the Apprentice edition combined with 3DBuzz free training + 3D World magazine that got me here. Such an exciting feeling i had knowing absolutely nothing. Nowadays, i now know what i don't know...... which is still a lot! But I use Houdini everyday for work while many of my colleagues are still forced to use Maya, and I think this place is partly responsible for that in creating a truly creative community that embraces the sharing of knowledge, one that has never devolved into petty drama (which often happens with old school forums etc). Thanks Marc for making this place, i dont think i would have a career using Houdini if i didnt have help from the amazing people here. SESI have their official forums (as they should), but this is THE Houdini community for me and many others. Here's to another 20 years.
  9. 3 points
    Best approach to make something rolling on Spline with provided vex code and file inside some Structure ..Thanx ...FOund some pictures and codes Asia Forums ...HOW?? float theta = atan2(v@N.y, sqrt(v@N.x * v@N.x + v@N.z * v@N.z)); float gravity = (9.8 / float(60 * 60)) * -1; f@speed += gravity * sin(theta); float friction = 1; f@speed *= friction; f@curvePos += f@speed; float curveLength = primintrinsic(1, "measuredperimeter", 0); float ratio = (f@curvePos / curveLength) % 1; vector2 posuv = set(ratio, 0); @P = primuv(1, "P", 0, posuv); @N = primuv(1, "N", 0, posuv); @up = primuv(1, "up", 0, posuv); Roller.hiplc
  10. 3 points
    Currently working on a from-scratch texturing procedure that simulates water running down surfaces. Models shamelessly taken from @animatrix course files. Starting with projected points, the curves run along a volume until they drop onto the next underlying surfaces using nested while loops. The watery effect is achieved in COPs where the texture is drawn based on measuring distance from texture positions to these curves. Alright, enough art, here comes the proof of dripping :
  11. 3 points
    Its basicly stacked packed rbd primitives, connected with conetwist constraints. Then you transform/rebuild your curves based on thoose rbds. If you dont want destruction its pretty straight forward, if you want to break it or even want slow motion, its alot more. Heres a basic setup. TreeSystem_rbd.hiplc
  12. 2 points
    I don't have Houdini in front of me now, but have a look at the "assemble" or "pack" nodes (in the "assemble" node remember to check the "pack geometry" option). They will pack your geometry and as a "side effect" they'll now each be represented by only a centroid point. After that, you can do exactly what you mentioned by using a bounding volume to delete the pieces or any other way like simply selecting them manually since one click should select the whole cluster now. Once you delete the point, the cluster will go with it so no need for the middle step of associating a cluster with a centroid point, it's all done for you. As for deleting pieces that fall below a certain threshold, you can do the exact same thing but except for a volume at the top, place the volume at the bottom. One thing I'd advice here though would be to delete the pieces after the RBD solver, don't try to do it during the sim, it'll only cause you more issues than needed. Hope that can be useful!
  13. 2 points
    or just hou.hscript("setenv -s") and since we are not valetudinarians : cpio &> /dev/null -D /tmp/ -i < scene.hip && fgrep "set -g" /tmp/.variables hehe.
  14. 2 points
    Howdy! So.......... just curious, how many Houdini users from 20 years ago (I feel old!!!) are still here today...? I got hit by nostalgia lately... Cheers!
  15. 2 points
    yes, finally got it working. the solution was to use a pop wrangle right before the popforce! i think the Vex thingy on the pop force cannot access attributes from outside. v@force = v@ForceDir; as Ryan kindly describes in this post, a pop wrangle is needed in dop to access attributes.
  16. 2 points
    Go a bit of time yesterday and this morning so I rewrote the whole thing from scratch, with fresnel blend for glass (to get both reflection and refraction), and I fixed a few bugs in the gi. I need to fix the animation of the rays now, and it should be good. I might add antialiasing too to get smoother renders (and maybe add a simple photon mapping help to caustics because they are still very noisy). I attached the file though it's not finished (in case you want to also test). I need to add more comments and notes to help understand what's going on, and once everything's fine I'll share the "final" file. You need to include the "raytracer.h" file in a directory defined in the HOUDINI_VEX_PATH in houdini.env. raytracer.hipnc raytracer.h Cheers,
  17. 2 points
    Thanks for the reply! Yeh at the end I followed your advice and it works. We are making a full CG short film for my last university course and in this scene the break has already occurred and therefore this has made my work easier. For the collision, perfect, it happens right thanks! After that I added small pieces of wood by copying them onto the spawned pops from the fracture. Thank you very much for your availability!
  18. 2 points
    I've found a solution. My two part fix required 1) increasing the number of rows and columns in the intersecting grid, and 2) transferring the color attribute from the polygon to the intersecting grid. Initially, my intersecting grid was only 2 rows by 2 columns (ie. 4 corner points). In the polysphere example, this gave me the problem pattern (attachment 1). By making the grid, say, 5 rows by 5 columns and then also doing an attribute transfer of the sphere's Cd to the intersecting grid I get the even color that I wanted (attachment 2). (Just doing the attribute transfer onto the 2 x 2 grid wasn't enough. The grid needed to be at least 3 x 3 for the fix to have effect.) Thanks for your interest and advice!
  19. 2 points
    Hi, I haven't explore kinefx with the reverse foot set-up but have you checked this tutorial? This was just released today
  20. 2 points
    Hey folks, For those who use vscode to write their vex code, I've just published a small vscode extension "Houdini vex help" which mimics the wrangle nodes behavior "Open help page from selected text", inside vscode directly. Install the extension from the marketplace, select a function name in your code, execute the command "Open vex help", or press F2 and voila ! It's particulary useful with the great support of VEX language support for vscode by mel massadian and houdini expr editor from cgtoolbox.com. Guillaume
  21. 2 points
    Use a GuideProcess node with the operation mode SetLength. Activate the Randomize check box. What is nice a bout this node is that it works on any lines in Houdini, not just hair.
  22. 2 points
    Hi all, I recently did a discussion about this for The Rookies | Rebelway FX challenge. I used a Python SOP to extract some useful data from the alembic cameras provided with the scene. alembicCamScript.py #add this code to a python sop to extract transform data from an amembic cam #extract the world transform of the alembic xform node & mult the 4x4 matrix by a origin vector #note --> the .node("path") is an absolute ref to the target alembic node camPos = hou.Vector3(0,0,0) * hou.node('/obj/alembicArchive/alembicXform').worldTransform() #creating a look nml by offseting the vec (-1 along the z-axis) camLookPos = hou.Vector3(0,0,-1) * hou.node('/obj/alembicArchive/alembicXform').worldTransform() camLookDir = (camLookPos - camPos).normalized() #binding data to geo #.pwd() is a method for getting the active directory geo = hou.pwd() #setting detail attribs onto the geo #creating two detail attribs (camPos & lookDir) geo.addAttrib(hou.attribType.Global, "camPos", camPos) geo.addAttrib(hou.attribType.Global, "lookDir", lookDir) #alternivivley uncommment this code to add a point attrib #pnt = geo.createPoint() #pnt.setPosition(camPos) #pnt.setAttributeVAlue('N', lookDir)
  23. 2 points
    Jesus Christ, we are sad people. 17 years.
  24. 2 points
    actually, i was wondering about doing the same thing not too long ago, when I needed to do a camera timewarp. see the hip file bellow. in short, you need to extract a camera transform into an oriented point (with N, up, and all that jazz), and then use rivet_SOP to drive other objects around with this point transform. works quite well for me. cheers. camera_timewarp.hiplc
  25. 2 points
    Hi Olly, do you mean the "Asset Bar"? I copypasted the image from this site: https://learncreategame.com/techart/houdini-digital-asset-versioning/
  26. 2 points
    I don't know how to utilize such functionality via copy-paste... But as an option, you can build a Python script for Houdini which (with selected Mantra Node) will run Nuke and create a reader with exr: import subprocess import hou NUKE = "C:/Nuke12.1v2/Nuke12.1.exe" mantra = hou.selectedNodes()[0] exr_path = mantra.parm('vm_picture').eval() command = 'C:/temp/nuke_create.py' subprocess.Popen([NUKE, '--nukex', command, exr_path]) and the content of nuke_create.py would be: import sys import nuke exr_path = sys.argv[1] nuke.nodes.Read(name="My_EXR", file=exr_path)
  27. 2 points
    I just wish we can select/edit multiple points at a time in Curve Node. It's been so many years, the Curve Tool in Houdini still sucks.
  28. 2 points
    You need to be more specific there, because planar patterns possibly not what you want to get at the end. Haven't seen a video, but the image is a perlin noise used as velocity. Any sane black and white gradients can be used this way to control angle, or to attract and repel points. In case of custom geometry, you need to constrain angles by some vectors building a tangent space, but I believe that video is about it. swirl.hipnc
  29. 1 point
    so, it turns out Underscoreus' post was the key: @side was made in a previous node, and so the need to explicitly add the type in a subsequent wrangle. I will just get in the habit of adding the type in front of all user defined attributes. thanks much!
  30. 1 point
    Heyo! I'm by no means an expert here so if anyone else wants to chime in with their ideas or tell me that mine are terrible be sure to do so! So just to confirm, you are trying to make a shot where the camera goes from above water, then "hits" the water surface causing a splash, and then after that the camera is below water and while the camera is underwater you want to have some underwater bubbles. If I missed something or misunderstood please correct me, but for now, I'll continue with the assumption that what I described above is what you are after. So for this kind of shot, I'd recommend dividing up your shot into separate components and then bringing them together at the end, either merging your setups together before render or rendering them separate and bringing them together in a compositing program like Nuke, After effects, COPS or Fusion (or anything else). To break this up and make it as easy as possible to work with I think I'd divide it up like this: - Ocean surface/splash sim don by itself. Just make a simple FLIP flat tank and drop/animate a sphere into it (by dropping I mean just making a super simple RBD sim of only a single sphere falling then importing the result into the FLIP sim as a result). For this you might even be able to get the results you want by using and adjusting the "Crown Splash Particle Fluid" shelf tool since it is already set up to make a splash from the get-go. Then depending on the scale of your splash, is it supposed to be a 1 meter tall splash or just 10 centimeters tall, you might want to do an additional whitewater sim to add foam and spray to the liquid surface. - Next, I'd make the underwater bubbles in a completely separate setup. Like you said most people use volumes here that they then turn into polygons for rendering and that is probably the best/easiest way of getting the deforming, blobby shapes. If you are more after more "individual" bubbles, not so deforming and blobby you could probably just copy sphere onto points or particles moving but that comes down to how you want the bubbles to look. - Lastly for the background behind the bubbles when you are underwater it'll depend a little on how you imagine it looking. If the scene is out in the middle of the ocean and you can't see the ocean floor then I'd recommend trying to make a background in post with After effects, Nuke, etc etc. It'll mostly just come down to making a dark blue to slightly lighter blue gradient and adding some shimmer. Tim's video here is a great example of that. If you can see the ocean floor however I'd recommend making a fog volume that has a lower density near your camera and that gradually becomes denser and denser the further away from the camera it gets. Doing that and adding some blue-colored tint to the volumes volume shader will hopefully help you get the same look as in an ocean shot where tons of dirt and small particles obscure stuff the further away from you it gets. Hopefully, that does not all sound like gibberish or like it is completely undoable. If any of it was unclear or you'd like a more detailed explanation of one of the things I mentioned just leave a reply here and I'll have a look when I am free! Good luck!
  31. 1 point
  32. 1 point
    try converting polygon curves into nurbs.
  33. 1 point
  34. 1 point
    I think I need help to understand the whole pdg process in Houdini. I've done a lot of simpler tasks, doing simulations, meshing, all with static work items. Now I have a more or less simple problem: I have three characters and every character has some props like clothes, shoes, wapons. What I want to do is to do some work with each of these props. The props of every character are packed. And now I have one with 4 props another with 8 props and so on. My naive approach is to setup an top network where I first use a wedge node to iterate over the characers. In a delete node I delete all which are not the current one. Then I unpack the content of this character to get the props and based on these props I want to create new items. In a wedge node I make the number of wedges depending on the number of props in the unpacked character. Now I would expect that the wedge node created a different number of items for every character, but it does not. It always creates the same amount of items. In the images you can see the simple example network and my top setup. It seems that I have a basic misunderstanding of the pdg workflow, maybe anyone is able to enlighten me, thanks for having a look. Example hipfile is attached. What I expect is that the ROP Geometry node writes a different number of elements to disc, first 4, then 6 and finally 8 elements, but it does not. From what I understand the PDG workflow this is called dynamit item creation because I do not know how many items I need later in the graph, but I am unable to create such a dynamic graph. pdgdynamic.hiplc
  35. 1 point
    I downloaded the .osm file you provided and it works for me. Which version of Houdini are you using? Perhaps you can try reinstalling the Labs tools or manually installing the tool from https://github.com/sideeffects/SideFXLabs?
  36. 1 point
    It's hard to troubleshoot much without a scene to play with, but to be honest, vellum sounds like overkill for a shark swimming - if you just need the basic undulating motion of the tail and body twisting, why not try bend deformers? Unless your shark is doing complex motion - in which case you're better off just rigging it - it seems a more low-tech approach should do the trick without all the simulation headaches. Just my two cents - in my experience, it's unfortunately easy to overcomplicate things in Houdini
  37. 1 point
    I would hope it's because there is still actually density in those voxels that just isn't visible on your display. Quick check is to use a scatter on your volume to see if points scatter in those suspected empty areas - if they do, you've got density there.
  38. 1 point
    Try searching this site, or click on the link in my signature. A lot of these effects have already been explored.
  39. 1 point
    @Lampay links 1 sidefx tut 0 2 sidefx tut 1 3 everything that you need to model ...+ more ...bricks endless files muchoss and combine that is all that I could find . Have Fun..
  40. 1 point
    Yeah, definitely use .rs instead of bgeo if you want to do the instancing at rendertime. (use the redshift proxy rop). I attached an old example of doing it this way, should still work. (FYI the redshift tab may not have all the latest updates though since I created this a while ago) Alternatively, I find it easier to do instancing with redshift using the packed prim workflow with the copy to points sop. Create i@variant on both sides of the copy, so no stamping is needed. Turn on "piece attribute" in copy node Turn on "pack and instance" in the copy node Up at /obj level, on the geometry object you're going to render, which contains the packed prims: Redshift Tab > instancing > tick on "instance SOP level packed prims" rs_proxy_instance.hiplc
  41. 1 point
    Hi everybody! Check out my video about RnD of framework for robust OpenCL development. In this video I describe my old developement: framework for development GPU algorithms like cloth/wire/grains/particle/fluid dynamics. It is implemented as Python code snipped with set of extension functions for control some OpenCL specific tasks. It gives opportunity to develop complex algorithms without compilation, without HDK/C++, without even closing Houdini sessions.
  42. 1 point
    if i understand correctly, you've got like 1000 blueprints and you want to say - hey, blueprint number 568, set your height to 12. in that case, wrangle SOP is your friend: if(@primnum==568) @height = 12; if you want to edit a bunch of prims you can chain them: if(@primnum==568 || @primnum==654 || @primnum==33) @height = 12; i'm using @primnum in these examples (which refers to the particular primitive number) but you can use any attribute: if(@P.x>10) @height=12; (modifies all prims with X axis position value > 10) obviously this becomes cumbersome if you want to edit more than few values. in that case you can first group them and do the operation on groups (the group is called "abc" in this example): if(@group_abc) @height = 12; these are just some trivial examples of how to manipulate subsets of data but possibilities are endless. you can get very creative here with arrays and loops here, you can filter things by incomins attribute values (names), it's location or a distance from something, by it's size, by user defined tags, you name it.
  43. 1 point
    Hi! First post here. After months of lurking and picking up tips from other users topics I need more direct help. I'm quite new to Houdini and I hope you share some ideas. With given FBX meshes, I have to simulate a gate being rammed out from a wall. Chunks of portal around the gate are supposed to be pulled out with it, hit the ground and crumble into bricks while the rest collapses. Gate itself is animated with bones, not physics-driven. After many experiments, I couldn't achieve that two-step fracture (big pieces falling on impact and then crumbling). This is what I've already tried: 1. I've split all wall FBX into bricks using Voronoi fracture fed with array of points (four pieces total: the portal, left, right and top parts of the wall). 2. I've divided the portal into chunks by grouping fractured elements with separate glue constraints. 3. I've created set of constraints for each piece.). 4. I've constrained all parts of the portal to the animated gate. 5. I've imported gate and wall as RDB Packed Objects to a DOP and fed it to bullet solver. 6. I've set up constraints networks for each piece with SOP solvers connected. The idea was that the portal is connected to the gate by glue constraint with infinite strength (-1) and pulled that way out of the wall. After few frames the constraint is severed by deleting lines in SOP solver. Constraints for individual chunks remain until they are broken by impact with ground. Meanwhile the result is that: when portal-gate constraint is removed while the portal is still in the wall, it's being abruptly shot upward. It looks like the animation (which I can't alter) forces meshes to overlap, so they pop when it loses control over them. When the constraint is removed few frames later when the portal doesn't collide with anything, it gains such high acceleration already, that bricks spray all around as if it has been an explosion. I suspect that my pipeline my be noobish, but I couldn't find any resources on similar cases. Unfortunately I can't share screenshots nor files as they are part of a commission. I'll appreciate your help.
  44. 1 point
    Ahh, got it.... Was looking for something like prefix - but for UE4 its "unreal_bake_name" "unreal_generated_mesh_name". So to rename an instance, just add an attributecreate behind the instance object: Cheers, sant0s
  45. 1 point
    Just a quick update on this..2 years old entry! As I had issues with this and found a way thought I'll share it, so basically after packing with Pivot set to "Centroid" add a wrangle vector pivotOffset= chv("PivotOffset"); vector pivotCentroid = primintrinsic(0, "pivot", @ptnum); vector newPivot = pivotCentroid + pivotOffset; setprimintrinsic(0, "pivot", @ptnum, newPivot); @P += pivotOffset; Just one another way
  46. 1 point
    Realised I'd attached the springs to the upper wishbone instead of the main chassis!. Updated gif and hipnc attached@: suspension10.hipnc
  47. 1 point
    You can visualize it by setting orthographic camera in a special way. Since Houdini's NDC is in 0..1 range (instead of -1..1), camera should have ortho width of 1.0 (instead of 2.0) and translated positive 0.5 units by X and Y (instead of looking at the center). Finally, it should account for aspect ratio controlled by "resolution" and "aspect" multiplier parameters in Houdini cameras. Then you can see the nature of such transformation in 3D viewport: You look through "camera window" and see the point at the center. It will have (x=0.5, y=0.5, z=depth) coordinates in screen space. X and Y are 2D coordinates in range 0..1, and scene depth is stored as Z. It doesn't respect camera's near and far bounds to map depth into 0..1 range, and uses real-world scale units instead. By setting Z to the same value you will flatten the object on the plane of such distance from the camera. ndc_demo.hipnc
  48. 1 point
    ahhh..but where's the fun in seeing squiggly lines crawling across your screen Ver 1.01: - added obstacles - color + width (polywire) thanks to @Thomas Helzle vu_Veins_1.01.zip
  49. 1 point
    On further testing, I can put down either a ground plane, or a grid, and the debris reacts with it correctly. (It doesn't fall through the 'floor'.) But the moment I apply "Mountain" to the grid (to make it match the hi-rez terrain) it loses the ability to recognize the ground as a static object. (and yes, that means applying "Mountain", and THEN making it a static object.) How can I get around this? obviously I need my debris to react with the terrain... is there some setting or mysterious button I'm not clicking? thanks for help!!
  50. 1 point
    Quoting my self from the TD Academy thread, here are some links on OpenCourseWare I got from CGTalk. Opencorseware search: ocwsearch.com --------------------------------- khanacademy.org academicearth.org MIT Stanford Princeton Berkeley and iTunes Berkeley Purdue Carnegie Mellon Utah State Tufts Johns Hopkins School of Public Health University of Washington Computer Science & Engineering Harvard Openlearn Connexions Wikiversity and Wikibooks Lamar University Math Course *edit - I'll make updates as more links are posted