Jump to content

toadstorm

Members
  • Content count

    438
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won

    31

toadstorm last won the day on January 25

toadstorm had the most liked content!

Community Reputation

343 Excellent

About toadstorm

  • Rank
    Illusionist

Contact Methods

  • Website URL
    http://www.toadstorm.com

Personal Information

  • Name
    Henry
  • Location
    San Jose, CA

Recent Profile Visitors

6,140 profile views
  1. 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.
  2. How to rotate constraints

    There must be a good reason why this works, but hell if I know what it is. Nice find!
  3. 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
  4. 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.
  5. 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
  6. 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.
  7. Change Scene Orientation (Y/Z up)

    hou.setPreference("viewport.orientation.val", "Z Up")
  8. 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
  9. 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.
  10. 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.
  11. 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).
  12. 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.
  13. 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?
  14. 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.
×