Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


toadstorm last won the day on October 12

toadstorm had the most liked content!

Community Reputation

335 Excellent

About toadstorm

  • Rank

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location
    San Jose, CA

Recent Profile Visitors

5,849 profile views
  1. 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.
  2. 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
  3. 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.
  4. Change Scene Orientation (Y/Z up)

    hou.setPreference("viewport.orientation.val", "Z Up")
  5. 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
  6. 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.
  7. 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.
  8. string attribute to redshift material

    --oops wrong thread--
  9. 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).
  10. 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.
  11. Yeah sorry typo on my part, the tag would look for texpath and not tex. You shouldn't need an extra file extension... handle that in the attribute string. Maybe try setting absolute paths instead of $HIP and see if that helps?
  12. Arnold can use special tags in parameters to reference attributes, so what you first need to do is create that attribute. If you want to do this in VEX without getting Python involved, you just have to name your textures sequentially (tex1.tif, tex2.tif, tex3.tif, etc.) and put them in one folder. Then in a primitive wrangle, you can generate a random integer between 1 and the number of textures you have, and construct a path string, like this: int num_tex = ch("texture_count"); // the number of textures you have float rand = fit01(rand(@ptnum), 1, int(num_tex)); int randint = int(rint(rand)); // round and cast random value as integer s@texpath = sprintf("/path/to/textures/tex%g.tif", randint); Once you have that attribute created, in place of a texture path in your material network you can use the tag <attr:tex default:/some/default/tex> and Arnold will read this tex attribute at rendertime.
  13. MOPs v1.5 now available

    Hey everyone, A new stable version of MOPs, v1.5, is now available. This encompasses a broad range of new features and bugfixes introduced since v1.4 last May. You can view the whole changelog and download the release here: https://github.com/toadstorm/MOPS/releases If you're new to MOPs and don't know what it's about, check out the Houdini HIVE presentation on MOPs from May 2020: Thanks to everyone who's helped out by submitting bugs, suggesting features, and of course buying MOPs+.
  14. Separating objects by colour

    The minimum and maximum values you were using to fit your ramp weren't a good input range for remapping your SDF values. I exported the sampled values to a temporary attribute ("test") and then used those values as the starting point for remapping. Once you have the color values working, the Partition SOP creates groups like you'd expect. Vol_worms_curlnoise_v03_toadstorm (1).hipnc
  15. Separating objects by colour

    The Partition SOP has a preset for grouping primitives based on their Cd attribute; check the dropdown presets on that node.