Members

440

34

• Website URL

• Name
Henry
• Location
San Jose, CA

## Recent Profile Visitors

6,372 profile views

• Rare
• Rare
• Rare

353

1. ## An Even Longer-Winded Guide to Houdini Instancing

I updated my old guide to Houdini instancing with a lot more math background, some updated techniques (especially around the Piece Attribute and Attribute from Pieces), and a bunch of information about varying material properties in addition to shapes and transforms. Here's the new link: https://www.toadstorm.com/blog/?p=942 Feel free to let me know if there's anything I've missed or gotten wrong (aside from the Solaris stuff, I'll get there eventually when I actually can sit down and use Solaris in production).
2. ## pop rbd scale over time

Note that you don't need to do this anymore as of Houdini 19! You can just set `scale` or `pscale` point attributes during the simulation. They'll scale the transforms relative to the `resttransform` that's automatically generated on the first timestep of the simulation.
3. ## houdini mops axis

Hey, sorry I didn't see this topic sooner. If you want to adjust the pivot point of a packed primitive, try using MOPs Pivot.
4. ## How to rotate constraints

There must be a good reason why this works, but hell if I know what it is. Nice find!
5. ## How to rotate constraints

I'm honestly not entirely sure why the hard constraint isn't enforcing rotation well enough, but the cheap workaround would be to use a Glue Constraint Relationship instead. Set s@constraint_type to "glue" with a f@strength of -1, then use a Glue Constraint Relationship DOP in place of your Hard Constraint. This will force both objects to solve as a single physical object. You also don't need multiple DOP objects for this system to work. As long as you set the i@active and i@animated attributes correctly on your static and active pieces, you can solve everything as a single DOP object and simplify things a little. 002_toadstorm.hip
6. ## HDA based on another HDA

Right-click, go to "Show in Asset Manager", then in the Asset Manager right-click and select the "Duplicate" option.
7. ## Vellum sim on part of KineFX skeleton

Here's a simple example. You need to use a Vellum constraint type that supports orientation, which generally means you want to use hair. Once the sim is done, convert the orient attribute to the KineFX-supported 3x3 transform matrix like this: 3@transform = qconvert(p@orient); Then input to a Bone Deform and you're done. vellum_kinefx_toadstorm.hip
8. ## lava flow question

FLIP comes with built-in options for dual rest fields now... they've been there for a few years. My post is really old, but the concept behind dual rest fields hasn't changed... it's actually pretty similar to how flow map shaders work, if you're into shaders. You can find the options under Particle Motion > Rest on the FLIP Solver DOP.
9. ## Change Scene Orientation (Y/Z up)

hou.setPreference("viewport.orientation.val", "Z Up")
10. ## pop rbd scale over time

If you want Packed RBDs to grow over time, you need to do two things: scale up the transform intrinsic attribute, and force the solver to recalculate collision geometry. You can do all this in a Geometry Wrangle or POP Wrangle, it's faster than a SOP Solver. matrix3 xf = primintrinsic(0, "transform", @ptnum); scale(xf, 1.02); setprimintrinsic(0, "transform", @ptnum, xf); i@id = -1; // force collision recompute
11. ## rotate in 90° steps

in a point wrangle: vector axis = set(0,1,0); float angle = rint(fit01(rand(@ptnum), 0,4)) * 90; p@orient = quaternion(radians(angle), axis); this creates an axis/angle rotation and sets it to the p@orient attribute, which copy to points reads natively. you could also try MOPs Randomize, it has a Step parameter that can lock to specific degrees.
12. ## MOPs v1.5 now available

I'm actually working on an operator that can help procedurally fold up polygon geometry, along its edges. It's going to be a while before it's art directable enough, though. You can follow my progress on Twitter. No, MOPs Reorient creates a kind of orientation offset attribute (p@mops_orient) that the rest of MOPs will use when computing rotations. It means you can change the local orientation axes of packed primitives without having to unpack and repack, which can save a considerable amount of time on heavier scenes. There's an example file included with MOPs that shows how the node is meant to work.

14. ## string attribute to redshift material

No, but you could use that string attribute with a Material SOP to override any promoted material parameter. For example, if you made a string parameter "map" in your material and then channel linked that parameter to the texture path of an RS Texture VOP, you could use the Material SOP to override this parameter with any geometry attribute (the s@material_override attribute defines these overrides).
15. ## MOPs v1.5 now available

@vinyvince I don't currently have an operator that will place the pivots on specific edges of a packed primitive, though MOPs Reorient can set the local orientations of fractured primitives to match the primitive N of your original polygons. There's an example file included that shows how this works... you voronoi fracture a piece, pack it, then use MOPs Reorient to set the local frames such that the pieces will move directly "outwards" when translated in local +Z. MOPs Pivot can be used to adjust pivots of packed primitives, but it would be tricky to set them precisely to a specific edge unless you computed that position per-primitive ahead of time and set it as an attribute.
×