Leaderboard
Popular Content
Showing content with the highest reputation since 05/26/2025 in all areas
-
Hi @EdwinFumano, you could calculate a bunch of eikonal distances using attribute fill inside a for loop and remap them as animation: float speed = chf('speed'); float t = @Time * speed; int i = floor(t); float u = frac(t); int n = npointsgroup(0, 'start'); string att = 'dist_' + itoa(i%n); float dist = point(0, att, i@ptnum); float mask = chramp('shape', dist - u + 1.0); float fade = 1.0 - smooth(0.5, 1.0, u); f@mask = mask * fade; setdetailattrib(0, 'active_dist', att, 'set'); infection.hip4 points
-
Here are some ideas using this on curves (if I understood correctly) shift_points_along_curve.hipnc3 points
-
Studio ??? Talk to your manager right away and give these guys a job @hannes603 @konstantin magnus if they need a job.. Find Qiita website . !Advent Houdini 2020! you have Files for Infect and very Nice tricks for making those effects and much more using same Logic . Then(TIP) When you have Full Code that Works in Houdini you can Make anything in chatgpt(reverse and investigete) Now days. Have a nice Day .2 points
-
2 points
-
This could be due to the internal order of the point group. try shuffling starting points by randomly picking a point number out of the array: int seed = chi('seed'); int pts[] = expandpointgroup(0, 'start'); int iter = detail(1, 'iteration', 0); int pick = pts[int(rand(iter, seed) * len(pts))]; i@group_boundary = i@ptnum == pick; infection_multiple_01.hip2 points
-
This is what I could come up with. Uses 1 qLib node (Camera Plane ql). screen_space_velocity.hiplc2 points
-
You have a vex function called toNDC where you can use your velocity information to transform it to normalized raster coordinates. Even if it says it's only well defined in shading context it seems to work in sop as well.2 points
-
https://forums.odforce.net/topic/52360-heightfields-guided-by-pyro/#comment-238377 you have endless Way to make this .2 points
-
2 points
-
I do not think a discord is the right thing for odforce, as Marc mentioned, the info get lost easily. Even though you can search etc still is not as nice as having it in a forum.2 points
-
Are you interested in creating custom velocity fields and custom forces for your Houdini FLIP, Pyro and Smoke Simulations?? Are you interested in building custom DOP networks and custom solvers? This course on Udemy is for you! Enroll it now from HERE! https://www.udemy.com/course/mastering-houdini-simulation-custom-forces-velocity-fields/?referralCode=374420356510272B5A71 Course Overview: Take your Houdini simulations to the next level by mastering the art of custom velocity fields and forces. This advanced course is designed for artists and technical directors looking to gain full control over their simulations. Through real-world examples, we will explore a variety of techniques to create stunning motion effects using velocity volumes, custom forces, volume VOPs, and point clouds. By the end of this course, you will have the ability to craft complex, Houdini dynamic simulations that behave exactly as you envision. Whether you're working with particles, smoke, FLIP water simulations or other volumetric effects, these techniques will help you stand out in the world of VFX and motion design. What You’ll Learn: How to create custom velocity fields for unique water, particle and smoke effects Techniques for designing an ocean vortex with beautiful banding effect Crafting custom curve forces to guide particle and smoke simulations Utilizing complex geometry to generate unique force interactions Creating a particles-to-word effect using object forces Developing axis-related forces for controlled simulations Applying velocity volumes in various ways, including: POP Advect by Volume Wind forces Directional drag and full drag Advanced techniques with Point Clouds and Volume VOPs for precision control Create a curve force and axis force digital assets that can be used to control smoke and particle simulations Course Breakdown: Module 1: Ocean Vortex Effect Designing a realistic vortex simulation Using velocity banding for artistic control Fine-tuning the look of fluid motion Module 2: Curve-Driven Forces for Smoke & Particles Creating custom curve forces Directing smoke and particles along a path Controlling force strength and falloff Leveraging Point Clouds for volume manipulation Customizing Volume VOP networks for precise effects Debugging and optimizing simulations Module 3: Forces & Complex Geometry Using geometry to influence simulations Crafting intricate force interactions Case study: Real-world examples of geometric forces Module 4: Particles to Word Effect Transforming particles into text shapes Managing object forces for controlled transitions Enhancing readability and motion flow Module 5: Axis-Based Forces for Dynamic Simulations Applying forces relative to an axis Rotational and directional force applications Controlling turbulence and flow behavior Understanding POP Advect by Volume Blending velocity for natural movement Wind, directional drag, and full drag techniques Who This Course is For: Intermediate to advanced Houdini users VFX artists looking to master simulation control Motion designers who want more precision in particle and smoke effects Technical artists eager to dive into advanced Houdini workflows Why Take This Course? Learn industry-standard techniques used in professional VFX studios Gain hands-on experience with practical, project-based lessons Unlock the ability to create your own unique simulations Elevate your skills and portfolio with high-end effects using Houdini Course Requirements: Basic knowledge of Houdini A computer capable of running Houdini simulations Passion for creating stunning, controlled simulations Are you ready to take full control of your simulations? Enroll now and start mastering custom velocity fields and forces today!1 point
-
1 point
-
I'm working on a personal project starring a pasta monster, I had to create a bolognese sauce for it. I tought it could be fun for others (at least to look around in COPs). Have fun with it! bolognese_cops.hiplc I followed this article and tried to replicate what he did in Substance Designer, but using COPs. Copernicus is indeed amazing!! https://80.lv/articles/making-fusilli-pasta-material-with-substance-3d-designer-houdini The ingredients:1 point
-
How would you calculate the velocity of a moving geometry (consistent topology, static camera) in screen space?1 point
-
Thanks everyone — this thread helped clarify a lot. Just to add for anyone else running into this: yes, even for static objects, if you’re using a VDB Proxy Volume, Houdini still seems to evaluate the proxy each frame unless you explicitly manage when and how it’s updated. Disabling the Collision Guide (as Ryan pointed out) makes a huge difference, especially in viewport playback — it's not just cosmetic, it actually controls whether Houdini recalculates that VDB every frame. Also, diving into the Static Object DOP and checking out the internals is super useful. You can often lock in your VDB or pre-cache it manually if you're hitting perf issues. Highly recommend enabling the Performance Monitor too — it really does help track where the time is going if you're not sure what’s dragging down the sim. TL;DR: It's not a bug, just a gotcha. VDB-based proxy collisions are powerful but require a little setup awareness, even for static colliders.1 point
-
Put the relevant parts of the code inside a loop to offset the time and increment the mask number with each iteration. float speed = chf('speed'); int num = chi('infections'); float t = @Time * speed; int n = npointsgroup(0, 'start'); float mask_collect = 0.0; for(int k = 0; k < num; k++){ t += 1.0 / float(num); int i = floor(t); float u = frac(t); string att = 'dist_' + itoa(i+k%n); float dist = point(0, att, i@ptnum); float mask = chramp('shape', dist - u + 1.0); float fade = 1.0 - smooth(0.5, 1.0, u); mask_collect = max(mask_collect, mask * fade); } f@mask = mask_collect; infection_multiple.hip1 point
-
combine in Solver that setup and this setup. float max_age = chf("infect_lifetime"); float fade_duration = chf("fade_duration"); if (@infect < 1) { string hdapath = "../../../.."; float radius; if ((chi(hdapath + "/useradiusattrib") == 1) && haspointattrib(0, chs(hdapath + "/radiusattrib"))) { radius = point(0, chs(hdapath + "/radiusattrib"), @ptnum); } else { radius = chf(hdapath + "/radius"); } float resist; if ((chi(hdapath + "/useresistattrib") == 1) && haspointattrib(0, chs(hdapath + "/resistattrib"))) { resist = point(0, chs(hdapath + "/resistattrib"), @ptnum); } else { resist = 0; } float strength = chf(hdapath + "/strength"); int npts[] = nearpoints(0, @P, radius); float accum = 0; int cnt = 0; foreach (int npt; npts){ float infection = point(0, "infect", npt); accum += infection * strength; cnt++; } float avginfect = accum / max(cnt, 1); @infect = clamp(@infect + avginfect * (1 - resist), 0, 1); } if (@infect > 0.01) { @infect_age += 1; } else { @infect_age = 0; } if (@infect_age > max_age) { float t = fit(@infect_age, max_age, max_age + fade_duration, 1, 0); @infect = clamp(t, 0, 1); } if (@infect <= 0.01 && @infect_age > max_age + fade_duration) { @infect = 0; @infect_age = 0; if (rand(@ptnum + @Frame) < 0.91) { @infect = 0.1; } }1 point
-
1 point
-
Hey friends, Had a fellow 3d person stop by my youtube channel where I mostly sculpt random Zbrush stuff and ask for this model to be donated to the Houdini community: Which I think is a brilliant idea as I dabble with Houdini myself and love it. So here you go, have fun, would love to see some awesome things created with my humble sculpt Use it for whatever, personal, commercial. A link back to me/my channel always massively appreciated, but no obligations. Cheers! EoL PS hope this is the right section of forum to post this, apologies if not. xportPigHead_v01.fbx xportPigHead_v01.obj1 point
-
Cache out the initial sim then use this cache as an animated collision object in ANOTHER sim? --> yes, this way you can control the primary animated geo more easy1 point
-
@sipi maybe //box ndc vector offset = {0.5, 0.5, 0}; vector cameraScale = set(ch("camera_X"), ch("camera_Y"), 1); if (@group_near) @P = set(@P.x, @P.y, ch("near")*-1); if (!@group_near) @P = set(@P.x, @P.y, ch("far")*-1); vector xformpos = @P * maketransform(0,0, offset,{0,0,0},cameraScale,{0,0,0}); @P = fromNDC(chs("camera_path"), xformpos);1 point
-
1 point
-
1 point
-
interesting one, though it doesn't seems to be 100% correct for example here the normals don't follow the curvature properly adjusting the Search Radius can help, but it has to be larger than the length of a segment in the line (this can be problematic if the distribution of points are not uniform in the line (and if you can't apply resample for some reason)) but thanks, it's an interesting and simple approach indeed.1 point
-
1 point
-
1 point
-
It is cool! I will explore how you solve it, your setup is completly different than mine, your setup is totally different from mine. Could you explain a bit about your workflow?1 point
-
1 point
-
1 point
-
1 point
-
Upskilling. Tried new stuff. Demo in below link!! For More info: https://www.linkedin.com/posts/chandrakanth-santharam-6b8b3527_houdini-template-manger-10-activity-7333552173038845952-0RUG?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAWvTKwBN4lVJ6vJC07NTnwyTd6gViVRL4U Cheers!!1 point
-
The funny thing is that I tried the Target Forward Vector, but somehow failed to have success... This method is really nice, thank you very much @fencer!1 point
-
This is pretty much the same as it always has been: Who's Online 10 Members, 0 Anonymous, 89 Guests However this is a good question, what can we do to generate more excitement on the forums? Is anyone interested in running challenges? Unfortunately I have a studio to run now, which is quite all encompassing, but we're happy to support any good ideas! M1 point
-
1 point
-
1 point
-
1 point
-
you can do that with pointclouds, it's ideal for averaging out the normal directions which is probably what you want. // wrangle1 // change color by proximity to curve points int handle = pcopen(1,"P",@P,chf("radius"),1); if(pcnumfound(handle)>0){ @Cd = {1,0,1}; } // use blast nodes to separte in 2 geometries // wrangle2 // create normals from average closest points int handle = pcopen(1,"P",@P,chf("radius"),chi("maxpoints")); if(pcnumfound(handle)>0){ vector p = pcfilter(handle,"P"); v@N = p-@P; } normal_to_points.hipnc > using 1 point or 40 points for position lookup1 point
-
Houdini was getting bored doing hours of simulation, so I gave him something to play with. - Done in Houdini, script in VEX, rendered using Karma.1 point
-
Hi @virgile, you could blend positions based on their distance towards the surface: In a point wrangle with first input mesh, second input sphere: float d_min = chf('min_distance'); float d_max = chf('max_distance'); int prim; vector uvw; float d = xyzdist(1, v@P, prim, uvw); vector pos = primuv(1, 'P', prim, uvw); float mask = smooth(d_min, d_max, d); v@P = lerp(pos, v@P, mask); conform_to_surface.hipnc1 point
-
1 point
-
1 point
-
During the last 3 weeks, a did some Rnd and published my results on vimeo . Some people asked me to share my files here, so here we are i hope it will help!1 point
-
1 point
-
Hi, You can just average out all the points found in the point cloud lookup where you are coloring them, and either create new points at the computed center or store it as an attribute.1 point
-
couple of things, I focused only at SDf force as that's the way to go: - you are using Isooffset to generate SDF, which is slow and may introduce artifacts, consider using VDB From Polygons - your volumegradient is not sampling the SDF, but the default cube geo, you have to point it to your geo - your volumegradient is sampling using v, it should sample at P position - you are adding P to result of your gradient, while the gradient direction is already parallel to the tube normal, so you shouldn't mess with it more, just negating and normalizing is fine - VOP Force is old and may be slow, in your case when using RBDs consider using POP Force Instead here is the file with all the changes also has both VOP Force and POP Force approach Custom_Gravity_fix.hip1 point
-
If you explicitly cast chramp to a vector first, the 'create spare parameters button' will create a colour ramp. Eg @Cd = vector(chramp('myramp',@P.x));1 point
-
you can specify formatting in Print VOP in similar way as in printf() function, see the example ts_formatted_print_vop.hip1 point
-
First off shifting the vertex order will actually change the way the geometry is constructed. Just so you know. Adding to the post above, you can use the Primitive SOP's Face/Hull tab to reverse the vertex sort (reversing the primitive normals to boot) or shift the vertex number. Any of these shifts will keep the point order intact. If you want to reconstruct the primitive using any vertex sort driven by the point sort order, you can use the Add SOP. First press the toggle to just keep the points. Then in the Polygons Tab choose the Group option. Now your vertex order will match the point order, as messed up as you want it to be. If you have multiple primitives to reconstruct, use the Connectivity SOP to create a partition attribute and use the "By Attribute" option in the Add menu parameter. There are a bunch of other ways to reconstruct primitives from re-sorted vertices but the Add SOP is the easiest to use driven by the point order. playing_with_vertex_order.hip1 point
-
Carve SOP. Fist U : 0 Second U : 1 Breakpoints : Cut At all Internal U Breakpoints1 point
-
1 point