here's 2 ways of doing it, one approach using the copy SOP and one fancier way of doing using a VOP SOP which is super fast when you have to deal with tons of objects. Credits go to my buddy Kalman who showed me this technique a while ago!
cheers,
Manu
Found 433 posts.
Search results Show results as topic list.
Technical Discussion » Foreach - Copy By Group To Points
- asnowcappedromance
- 512 posts
- Offline
Technical Discussion » Metal tear tutorial
- asnowcappedromance
- 512 posts
- Offline
have a look at the attached file, it's using a lattice to deform the mesh.
I'm at work and busy right now, tearing the mesh should be possible, just throwing out some ideas. Have each point on the mesh know it's nearest particle neighbours on the first frame (nearpoint expression or point cloud lookup), store the distance to those points and once that distance exceeds a threshold then you can break the points into vertices and do some vop sop calculation to get vectors that move the split up points in opposite directions.
I'm at work and busy right now, tearing the mesh should be possible, just throwing out some ideas. Have each point on the mesh know it's nearest particle neighbours on the first frame (nearpoint expression or point cloud lookup), store the distance to those points and once that distance exceeds a threshold then you can break the points into vertices and do some vop sop calculation to get vectors that move the split up points in opposite directions.
Technical Discussion » Metal tear tutorial
- asnowcappedromance
- 512 posts
- Offline
totally possible,
you could do this effect easily with cloth, have a look at the crumpling and tearing masterclass (I believe that's what it was called), they have some example files that can point you in the right direction !
Alternatively you might be able to precut your geometry and achieve the same effect using the spring SOP and combine it with a VOP SOP displacement, would be fast and not too hard to setup!
best,
Manu
you could do this effect easily with cloth, have a look at the crumpling and tearing masterclass (I believe that's what it was called), they have some example files that can point you in the right direction !
Alternatively you might be able to precut your geometry and achieve the same effect using the spring SOP and combine it with a VOP SOP displacement, would be fast and not too hard to setup!
best,
Manu
Houdini Indie and Apprentice » Fluids vs 9.5, 10.0, 12.0
- asnowcappedromance
- 512 posts
- Offline
well I don't see a reason why you should be using an obsolete version of Houdini, it's most likely your display driver, it's been set by default to GL3 in Houdini12 which is not supported by a lot of graphic cards.
Thus try change your 3d viewport (edit>preferences>3D viewport) and see if that fixes the issue, updating your graphic cards drivers wouldn't hurt as well.
cheers,
Manu
Thus try change your 3d viewport (edit>preferences>3D viewport) and see if that fixes the issue, updating your graphic cards drivers wouldn't hurt as well.
cheers,
Manu
Houdini Indie and Apprentice » How clear RBD from an object?
- asnowcappedromance
- 512 posts
- Offline
Technical Discussion » List Primitives inside bounding box
- asnowcappedromance
- 512 posts
- Offline
unfortunately there's no way of accessing a primitive's groups directly, like rdg said you have to do it the other way around:
>>> geo = hou.node('/obj/grid_object1/boundGroup').geometry()
>>> foundGroups =
>>> groupList =
>>> bound = geo.findPrimGroup(“boundGroup”)
>>> bound
<hou.PrimGroup boundGroup of geometry in /obj/grid_object1/boundGroup>
>>> for g in geo.primGroups():
… if g.name() != bound.name():
… groupList.append(g)
>>> for i in bound.prims():
… for j in groupList:
… if not j.name() in foundGroups and j.contains(i) == True:
… foundGroups.append(j.name())
>>> geo = hou.node('/obj/grid_object1/boundGroup').geometry()
>>> foundGroups =
>>> groupList =
>>> bound = geo.findPrimGroup(“boundGroup”)
>>> bound
<hou.PrimGroup boundGroup of geometry in /obj/grid_object1/boundGroup>
>>> for g in geo.primGroups():
… if g.name() != bound.name():
… groupList.append(g)
>>> for i in bound.prims():
… for j in groupList:
… if not j.name() in foundGroups and j.contains(i) == True:
… foundGroups.append(j.name())
Technical Discussion » List Primitives inside bounding box
- asnowcappedromance
- 512 posts
- Offline
a cheap and quick way would be to blast the prims that you've selected with the bounding box and type this in your textport:
/ -> cd /obj/grid_object1/
/obj/grid_object1 -> echo `primgrouplist(“./blast1”)`
/ -> cd /obj/grid_object1/
/obj/grid_object1 -> echo `primgrouplist(“./blast1”)`
Work in Progress » Vornoi Fracture Problem
- asnowcappedromance
- 512 posts
- Offline
it's quite easy, just turn the box on creation into a polygon mesh and give it some more axis subdivisions, that way the cookie SOP is less likely apt to fail. Then you can revert your fuse SOP distance threshold back to defaults and the Voronoi works just fine.
cheers,
Manu
cheers,
Manu
Houdini Indie and Apprentice » Erosion
- asnowcappedromance
- 512 posts
- Offline
I held a class on the spring SOP a while ago, here's a neat and efficient way on how to do stuff like that, have a look at the scene file. Of course you can speed that up a lot, haven't spend too much time optimizing it and you can combine it with common particle effect approaches, like point cloud erosion over time.
cheers,
Manu
cheers,
Manu
Technical Discussion » while loop cooking forever
- asnowcappedromance
- 512 posts
- Offline
I actually ran into the same problem a few days ago, but my while loop was setup correctly, meaning I had a condition which would break the loop at some point, but Hou would get stuck while executing the vex code.
Well after lots of doublechecking I finally found out it was my 3D viewport which froze Houdini, try switching it from GL to Hou11 or to another GL version, if you're while loop is set up neatly maybe this will do the trick.
best,
Manu
Well after lots of doublechecking I finally found out it was my 3D viewport which froze Houdini, try switching it from GL to Hou11 or to another GL version, if you're while loop is set up neatly maybe this will do the trick.
best,
Manu
Technical Discussion » Multiparm Groups
- asnowcappedromance
- 512 posts
- Offline
Technical Discussion » limit point transformation to 2 axis only.
- asnowcappedromance
- 512 posts
- Offline
my friend Alessandro Nardini suggested that I could solve the problem in local camera space, so I figured a way on how to do it:
create a orthographic camera that's parallel to the boxes top face.
Take the boxes rest position and the animated position, plug them into an extract transform node on Obj level in order to parent the camera to the box.
In VOPs, toNDC will help you to extract both u,v of the camera's coordinates so you can compare those attributes of the undeformed / deformed geometry, calculate a difference and move the points back into place.
I learned something really cool today
cheers!
create a orthographic camera that's parallel to the boxes top face.
Take the boxes rest position and the animated position, plug them into an extract transform node on Obj level in order to parent the camera to the box.
In VOPs, toNDC will help you to extract both u,v of the camera's coordinates so you can compare those attributes of the undeformed / deformed geometry, calculate a difference and move the points back into place.
I learned something really cool today
cheers!
Technical Discussion » limit point transformation to 2 axis only.
- asnowcappedromance
- 512 posts
- Offline
Hi there,
so I got a problem and don't know how to solve it in VOPs.
I got Box A (black) and use the face center points to calculate the local coordinate system.
Now Box A gets transformed (red box) and I want to limit the transformation of each point to only 2 Axis of the local coordinate system created by Box A.
In this case (see attached picture) I want to affect only the green and blue direction vectors.
Thanks,
Manuel
so I got a problem and don't know how to solve it in VOPs.
I got Box A (black) and use the face center points to calculate the local coordinate system.
Now Box A gets transformed (red box) and I want to limit the transformation of each point to only 2 Axis of the local coordinate system created by Box A.
In this case (see attached picture) I want to affect only the green and blue direction vectors.
Thanks,
Manuel
Houdini Indie and Apprentice » rigging tutorials
- asnowcappedromance
- 512 posts
- Offline
on 3dbuzz.com you can find a whole series on rigging, called “Houdini technical rigging”. I never went through those tutorials, but 3dbuzz usually delivers high quality, technical oriented tutorials, I always enjoyed watching theirs.
http://www.3dbuzz.com/xcart/product.php?productid=68 [3dbuzz.com]
best,
Manu
http://www.3dbuzz.com/xcart/product.php?productid=68 [3dbuzz.com]
best,
Manu
Houdini Indie and Apprentice » Copy Stamping w/ Timeshift and Switch node stamping issue
- asnowcappedromance
- 512 posts
- Offline
Houdini Indie and Apprentice » Copy Stamping w/ Timeshift and Switch node stamping issue
- asnowcappedromance
- 512 posts
- Offline
I might be mistaken, but to me it looks like a glitch in the matrix. Your stamp expression is correct and you don't kill particles so your point count doesn't change. I don't know why, but particle #3 hits the ground at frame 196 and at frame 197 its hittime*$FPS changes to -24. Don't really have an explanation for this.
Any other opinions on this ?
best,
Manuel
Any other opinions on this ?
best,
Manuel
Houdini Indie and Apprentice » Detailed cracks with Voronoi
- asnowcappedromance
- 512 posts
- Offline
robonilla
Manuel:
Just yerterday I was watching your stuff on Vimeo, you have amazing stuff there! Thanks for the tip, I will look into that, but I understand how I can easily apply that to a plane for lets say a wall… but in case of a sphere or a more complicated figure how would you approach it? Im gonna think on that and see what I can come up with. Thank you
glad you like it, unfortunately that stuff is a little outdated, can't show my latest reel due to copyright
As for your question, I never tried it for more complex geometry, but it should be possible considering your object is hollow and you still extrude it inwards after you're done with the fracturing detail. The solution would be the same but you'd have to test the points (that you applied the noise to) if they're inside or outside of the original object and then calculate a vector to the nearest primitive and shoot the point (with a Ray SOP) against it, in order for the point to land on the surface again.
After you extruded inwards you should be able to fill the remaining inner hollow shape with geometry and break that again (this time with standard voronoi, don't need that much detail, it's just a matter of filling the volume with geometry).
In the end it always depends what you need. It could be a combination of the above mentioned techniques. In production, there's never a out of the box solution. Common workflows are to prebreak the geo with custom tools or to simulate with low-res geometry and link high-res fragments back to the lowres. There was a nice introductory tutorial on digital tutors a while ago, if you're not too familiar with voronoi, it's worth checking out !
Houdini Indie and Apprentice » Detailed cracks with Voronoi
- asnowcappedromance
- 512 posts
- Offline
One nice trick that Jacob from Image Engine presented on the last VHug meeting is to voronoi fracture a plane, group the edge and the outlining points of the fragments, resample all edges and then apply a noise only to the points that are not in the group you just created. This way you can add detail to the fragments and extrude them afterwards to get depth.
~ Manu
~ Manu
Technical Discussion » Using groups or masks to control Pyro effects
- asnowcappedromance
- 512 posts
- Offline
you should be able to do that using one pyro solver.
Seperate the parts in SOPs (grouping or isolating with delete/blast SOP) and use two different source volume SOPs with different density and noise settings. Then in DOPs you can import the sources with 2 different nodes, merge them and feed them into the pyro solver. In those source nodes you can again control the density, fuel and velocity of each source.
best,
Manu
Seperate the parts in SOPs (grouping or isolating with delete/blast SOP) and use two different source volume SOPs with different density and noise settings. Then in DOPs you can import the sources with 2 different nodes, merge them and feed them into the pyro solver. In those source nodes you can again control the density, fuel and velocity of each source.
best,
Manu
Houdini Indie and Apprentice » Object scaling based on distance between points
- asnowcappedromance
- 512 posts
- Offline
you can use the distance() expression to calculate the distance between point A and point B, something like this:
distance to next point:
if( $PT < $NPT -1, distance($TX, $TY, $TZ,
point(opinputpath(“.”, 0), ($PT+1), “P”, 0),
point(opinputpath(“.”, 0), ($PT+1), “P”, 1),
point(opinputpath(“.”, 0), ($PT+1), “P”, 0) ), 0 )
distance to previous point:
if( $PT > 0, distance($TX, $TY, $TZ,
point(opinputpath(“.”, 0), ($PT-1), “P”, 0),
point(opinputpath(“.”, 0), ($PT-1), “P”, 1),
point(opinputpath(“.”, 0), ($PT-1), “P”, 0) ), 0 )
once you have those 2 attributes you can add them together to get a scale attribute. But be aware, if you're going to move your points it's not going to be that easy, you're going to have to move the pivot as well (posA+posB)/2 in order to place the objects correctly!
cheers,
Manu
distance to next point:
if( $PT < $NPT -1, distance($TX, $TY, $TZ,
point(opinputpath(“.”, 0), ($PT+1), “P”, 0),
point(opinputpath(“.”, 0), ($PT+1), “P”, 1),
point(opinputpath(“.”, 0), ($PT+1), “P”, 0) ), 0 )
distance to previous point:
if( $PT > 0, distance($TX, $TY, $TZ,
point(opinputpath(“.”, 0), ($PT-1), “P”, 0),
point(opinputpath(“.”, 0), ($PT-1), “P”, 1),
point(opinputpath(“.”, 0), ($PT-1), “P”, 0) ), 0 )
once you have those 2 attributes you can add them together to get a scale attribute. But be aware, if you're going to move your points it's not going to be that easy, you're going to have to move the pivot as well (posA+posB)/2 in order to place the objects correctly!
cheers,
Manu
-
- Quick Links