Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 10/09/2025 in all areas

  1. untitled.mp4 something like that ? just create veloctiy from the center and control the intensity by age ramp
    3 points
  2. Hi, insert an attribute wrangle into connection wire of the rbd bullet solver sop first input, copy and past this code: vector centroid = getbbox_center(0); vector vel = normalize(@P - centroid) * ch("scale"); v@v = vel; It should work in your scene without other changes.
    2 points
  3. I know this is an old post but for anyone looking for answer https://www.instagram.com/p/CpKmOwVD2t_/
    2 points
  4. Hello, to be easier on the eyes, I've created a flat dark and light theme, and thought I'd share it... Definitely still work in progress, I've also put it on Github here: https://github.com/mruegenberg/HoudiniFlatThemes To install, just copy the files to `houdiniX.Y/config` folder (create the config one if it doesn't exist), usually located in your home directory. Partially based on some other themes floating around the web (e.g UIDarkFlat.hcs UIDarkFlat_NodeGraph.inc UIDarkFlat_NodeGraphCommon.inc UIFlat_basic_colors.inc UILightFlat.hcs UILightFlat_NodeGraph.inc UILightFlat_NodeGraphCommon.inc
    1 point
  5. https://procegen.konstantinmagnus.de/circuit-networks
    1 point
  6. Hey Hannes, sorry for the late response. I only got to take a look at it today. It looked through the setup and it's really nice. Thank you very much for the time and help! It s truly appreciated!
    1 point
  7. Thanks! Looking good. I also tried transferring the attribute before the sim but the problem I had with this, is that doing it this way results in a wrong timing of when the inflation happens. That's why I tried doing everything inside the solver. You can see it on the yellow merge you added. Since the small sphere is intersecting it gets the attribute earlier than it would during the sim. This results in it inflating to soon, although its technically not close enough in the sim. Does it make sense? xd But in general that's working now, so thank you very much!
    1 point
  8. Cells_v06.hipnc i mean the pressure group works in a sop solver. also the infect attrib works on the small ball.. guess you had too less stiffness on the pressure constraint to noticed the effect. also you need to trasnfer the impact to the small ball right.. looking cool so far
    1 point
  9. This is not the same effect but thank you.
    1 point
  10. Hey, I think I ended up using VDBs and VDB blend. Metaballs would also work potentially. T
    1 point
  11. Or you use VEX to apply UV coordinates onto the roof: // VERTEX WRANGLE float s = ch('uv_scale'); vector up = {0,1,0}; vector nml = normalize(prim_normal(0, i@primnum, 0.0, 0.0)); vector tang = normalize(up - dot(nml, up) * nml); vector bitang = normalize(cross(-nml, tang)); vector pos_rel = v@P - prim(0, 'P', i@primnum); float u = dot(pos_rel, bitang); float v = dot(pos_rel, tang); v@uv = set(u, v, 0.0) * s; Align each polygon to the bottom left corner of the UV space: // VERTEX WRANGLE string geo = geounwrap(0, 'uv'); vector size = getbbox_min(geo, itoa(i@primnum)); v@uv -= size; roof.hip
    1 point
  12. There're many ways to control motion, fade over time, power, curvature, distance from a boat and so on. Ripple source is important first of all, not just one spot, but boat edge, leading area and so on, need more work here for a good result. Mask by curvature as an example. wave_v03.hip
    1 point
  13. After a couple of hours of testing, I found that blending the deformation in, instead of adding it, helped stabilize the simulation. For whatever reason, all the deformations had to be under the waterline for this to work. wave.hip This is what it looks like with a boat, in case this is useful to future people: Thanks for the reply Fencer. It does look fine, but in my testing on the boat deformations, that dip becomes very chaotic after 200 frames. But, help is always appreciated man
    1 point
  14. topic posted in wrong channel, pls delete
    1 point
  15. Thank you guys for the support! Finally, with your help, I have an asset that I can use to promote my other crazy project, "The Secret Code of Superheroes" workbook for 4-6 yo kids
    1 point
  16. Oh sorry, just notice "0000.jpg, 0010.jpg, 0020.jpg, 0030.jpg" sequence. Upgrade to this. You can even do all string paths on object level and store in attributes (pageA, pageB), then just bind in shader.
    1 point
  17. Try with Snipper. book_flip_pages_002.hipnc
    1 point
  18. Hey guys I've updated the original breakup example with h19 version. voronoi_test.7z.txt
    1 point
  19. 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.
    1 point
  20. This seemed to work; I had a tops @foo attribute array with 1,2,3,4, and in a for loop i could accees it and get the index with evals("@foo."+detail(-1,'iteration',0)) Where the metadata node was wired in as a spare input.
    1 point
  21. I spent a fair bit of time trying to figure this out today so I figured I'd post a quick tutorial for posterity. The only other guides and info I could find were specific to getting pscale and Cd into C4d for Redshift. Nothing on orientation or other attributes generally. Long story short: - Unless your attribute is explicitly typed (i.e. Vector, Quaternion, Matrix instead of 3flt, 4flt, 9flt) C4d will read it as a float (or "Real") - Orientation is handled by the "Alignment" TP channel, so you need to convert your @orient to a matrix3 before export Hope this saves someone else some time.
    1 point
  22. Yes, definitely put your custom VEXpressions.txt in the user directory, much safer than editing the original file. The user directory VEXpressionl.txt file will get automatically appended to the SESI version, so only add the custom expressions starting from a blank file (not a copy of the SESI version).
    1 point
  23. To select the end points of a polyline simply count the connected neighbours: neighbourcount(0,@ptnum)==1
    1 point
  24. YEEEEEEEEEEEEEEEEEEEEEEEEESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS At long last...I've worked out the preset for this Select Ends: (First/Last of a prim, will work on non curve too...but would probably be next to useless, try the pig ) groupexpression/snippet Ends (or First/Last) vertexprimindex(0, @vtxnum)%(primvertexcount(0,@primnum)-1)==0 As you can see, No, you don't need to use a for each prim loop...just a groupexpression.
    1 point
  25. Zombie thread alert. I figured I'd share this solution for folks that come across this thread in the future years later like I did. The Ends SOP node can be used to delete the loop so the curves are open instead of closed. Set the Close U parameter to Open and it should work.
    1 point
  26. @merlino once again, thanks for the valuable info! I'll share a more advanced setup I managed to create by diving a bit deeper: In SOP level I assigned float values to points and created a vdb from points with said "mult" volume primitive. Then I used the sopscalarfield node to read those values and in the gasfieldwrangle I multiplied my "press" scalar field (created by copying the values of the pressure field) with the "mult" scalar field values. This way, I can use "press" field as a control field for any gas force such as disturbance... And the "mult" field serves as a mask for the "press" field. Watchout for the "Default Operation" default value, as it is "Set Initial" and, in case you have an animated volume you may want to swap to "Set Always". Otherwise it won't update the field.
    1 point
  27. 1. After you add noise to the parameter (example expression: "noise($T, 0, 0)"), Shift+Click on the parameter field to open Animation Editor. It will show the graph you are looking for: 2. Noise in 1D/2D/3D can be visualized in many ways using SOPs: visualize_noise.hipnc
    1 point
  28. Ok I was able to auto-solve this by creating an orient attribute and a rest orient attribute to maintain the original noise flow. The orient attribute is created from a polyframe with N and up followed in a wrangle matrix3 m = maketransform(@N,@up); vector4 q = quaternion(m); p@orient = q; p@rorient = q; v@rest = @P;
    1 point
  29. (Dirty) LookAt: attribexpression/snippet Lookat 2nd Input (@P - getbbox_center(0)) * lookat(getbbox_center(1),getbbox_center(0)) + getbbox_center(0) Why dirty ? coz it's manipulating points....not actually transforming the object I used the Pighead as an easy object for illustration. By default, the pig is looking down on its Z axis...so if you are using a pointy object (ie. cone)...point your object down its Z axis first...
    1 point
  30. Hello, I am trying to remove overlapping polygons - I want to do so by computing distance to other polygons using xyzdist(). So I want to specify primgroup which will contain all, but current primitive, so that It is not returning distance to itself. According to documentation, I should pass group string which matches general SOP syntax. So for polygon number 240, primgroup parameter should be "* ^240". When I pass this parameter to the function, it returns -1 in found primitive - no primitive found. I think that the error is causing by this primgroup parameter. If I pass for example "*", then there is also no primitive found. How can I use patterns to define group inside this function? Like 0-50, *, ... This is from the docs: The name of a primitive group or a pattern to generate a primitive group. Uses the same semantics as a SOP group, so empty strings will match all primitives. Any ideas how to make this pattern working? Juraj
    1 point
  31. Hi, thanks! It works. int prim; vector uv; int firstPt = primpoint(0, @primnum, 0); vector firstPtP = point(0, "P", firstPt); string grp = "!* ^"+itoa(@primnum); float dist = xyzdist(0, grp, firstPtP, prim, uv, 0.0000001); if (prim != -1) v@Cd = {1,0,0}; However performance is much slower then the previous way. Instant cook vs 4 seconds in this case, maybe using this primgroup parameter is not that efficient. I am still curious about this syntax !* ^240 - how would you explain it? * ^240 means: check against everything, but primitive 240 ! means inversion, like in blast sop: delete non selected, so wouldnt it negate the * symbol? Like that: !* == (nothing) However, if I leave out !*, then it doesn't work. Hmm...
    1 point
  32. I just gotta share this for inspiration - I could watch this for hours...
    1 point
  33. 1 point
×
×
  • Create New...