Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


toadstorm last won the day on August 25

toadstorm had the most liked content!

Community Reputation

14 Good

1 Follower

About toadstorm

  • Rank

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location
    Los Angeles, CA
  1. Copy Stamping alternatives?

    For something like rotation / orientation, copy stamping doesn't make sense because transforming instances or packed primitives is something the Copy to Points SOP can do just using template point attributes, no stamping or For/Each loops required. If you check the docs for copying and instancing here, you can see that by providing either an N and up attribute or an orient attribute to the template points, the Copy SOP will automatically apply those transformations to each copy. Setting those attributes is sometimes less intuitive than using the familiar Transform SOP, though, so here's a bit of VEX code to help you out. You could put this in a Point Wrangle to convert user-friendly Euler rotations (like what you see in a Transform) to a Copy SOP-friendly orient quaternion: vector R = chv("rotate"); // you could replace this with a vector point attribute with Euler values! vector4 orient = eulertoquaternion( radians(R), 0 ); p@orient = orient; If you were in a situation in which the shape of each copy needs to be varied, then Sepu's video above is the right choice. You'd want to use a multithreaded For/Each loop to vary each copy. FWIW, I have a big guide to this whole question of instancing here: http://www.toadstorm.com/blog/?p=493
  2. Inflate Cloth using JUST Cloth

    i hate to break it to you dude, but cloth IS fem. look inside the solver.
  3. Inflate Cloth using JUST Cloth

    you could try approximating cloth with pop grains. check out the granular sheets example for ideas on setting up constraints. then just apply a force on the points pushing outwards and hope your constraints will deal with it. you could break constraints in a sop solver if you need popping action.
  4. krakatoa style rendering

    mantra's not the best at rendering lots and lots of points; it has a much better time with volumes. you may want to consider using a cvex volume procedural to load all of your tiny points and create density at rendertime in your shader, using a point cloud lookup. if you want very fine detail, you'll still need a ton of particles, so look into point replicate or maybe use a gap filling algorithm to create new points where they're needed. then decrease your shader's point cloud search radius to as small as you can go before you start losing desired density.
  5. You can possibly use SOuP for Maya to extract your vector attribute and bind it to a color set that can be read by mental ray. The arrayToPointColor node can extract this information. See this link: http://www.toadstorm.com/blog/?p=240 Also if your attribute types are set correctly, Houdini should export Alembics with readable color sets. Check this thread: https://www.sidefx.com/forum/topic/38939/?page=1#post-178403
  6. Thanks for doing this, Alessandro! Great to see you as always.
  7. Fluid sim along a surface?

    If you want to move points along a surface based on texture UVs (not per-primitive parametric UVs), you need to do a little magic with xyzdist() and primuv(), or XYZ Distance VOP and Primitive Attribute VOP if you prefer. Convert your UV attribute to Point type, then use a Point Wrangle to move your point position to v@uv. Don't forget to store your original point position in the Wrangle, or via a Rest SOP. Then give each of your particles a goalUV vector attribute. Then use xyzdist() to find the nearest primitive # and parametric UV to your distorted surface. Store that primitive number and UV coordinate on your particle as point attributes (posprim and posuv are what particles use internally for sliding). Then move your mesh back to world space using a Rest SOP or a Wrangle, and use the primuv() function on your particles to find the "P" attribute based on posprim and posuv. This should return the nearest point on the surface given the goal UV you defined earlier. I'm attaching a .HIP to make it a little easier to read. goal_to_uv.hip
  8. pop grains accumulation

    Hi, I'm trying to create a sort of sand-in-hourglass effect, where piles of sand accumulate over time from a steady stream. I'm using the POP Grains DOP to try to accomplish this, but the particles don't seem to want to stack. I'm relatively new with this particular solver so I'm not entirely sure what the approach is for accumulating piles like this. Can anyone point me in the right direction? Thanks!
  9. Bullet: RBD sim as collision object for second sim

    I actually just ran into this problem recently, and a colleague of mine came up with a pretty quick solution. Inside your DOPnet, use a File DOP to write out your .sim files. Then you can just read them back into another DOPnet and they will collide as normal with other objects in your scene (one-way of course).
  10. modify data with bullet

    Perfect! That's exactly what I needed to know. Thanks!
  11. modify data with bullet

    Hello again, I'm trying to do a controlled destruction with the Bullet solver. I have a glue network set up so that I can have pieces break off and eventually split into smaller pieces. The problem is that the destruction in this case isn't forced by an actual impact... I want the pieces to just drift off. I was hoping to use a Modify Data DOP to somehow fool the pieces into thinking they've suffered an impact, but I can't seem to make it work. I was editing the "glueimpulse" value in the Position data for each piece... I know this works for the RBD solver, but nothing is happening in Bullet. The glue weight is zero, except for the cluster glue weight (which is -1). Is there some other way to convince the chunks to break apart without an impact, but have the clusters stay together initially until I break those links manually in the glue network? I just don't want to have to surgically break off each large chunk in the glue network and then start breaking those down into smaller chunks completely by hand.
  12. bullet exploding woes

    This is so weird. What about the Drag Force would cause such a strong reaction?
  13. bullet exploding woes

    I just can't seem to convince the bullet solver not to explode. I have some geometry that I've pre-shattered in SOPs, no clusters or anything, and I'm trying everything I can do run the sim through bullet to no avail. I want to use all the nice glue network constraints that RBD can't do, but I have no idea how to prevent bullet from exploding. I've searched through several threads saying that I need to make sure all my pieces are convex hulls, but I don't know how to iteratively generate those. When I look at the collision geometry generated by the bullet solver, nothing seems to be overlapping, but inevitably a few tiny pieces shoot out of the simulation and then everything explodes within 2 or 3 frames of the simulation starting. I've tried increasing substeps and collision padding, and nothing changes. What can I do to prevent this from happening? I'd even suffer through RBD slowness if I could have fine control over gluing objects together, but I can't find any information on how to do that. I'm attaching a .HIP if anyone wants to take a look and tell me what I'm doing wrong. Thanks in advance. Using Houdini 12.5.469. shatter.zip