Leaderboard
Popular Content
Showing content with the highest reputation since 10/09/2025 in Posts
-
untitled.mp4 something like that ? just create veloctiy from the center and control the intensity by age ramp3 points
-
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
-
I know this is an old post but for anyone looking for answer https://www.instagram.com/p/CpKmOwVD2t_/2 points
-
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.inc1 point
-
1 point
-
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
-
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
-
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 far1 point
-
1 point
-
Hey, I think I ended up using VDBs and VDB blend. Metaballs would also work potentially. T1 point
-
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.hip1 point
-
1 point
-
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 man1 point
-
1 point
-
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 kids1 point
-
1 point
-
1 point
-
Hey guys I've updated the original breakup example with h19 version. voronoi_test.7z.txt1 point
-
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
-
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
-
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
-
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
-
To select the end points of a polyline simply count the connected neighbours: neighbourcount(0,@ptnum)==11 point
-
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
-
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
-
@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
-
1 point
-
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
-
(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
-
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? Juraj1 point
-
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
-
1 point
-
1 point