Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


markingleukc last won the day on March 14

markingleukc had the most liked content!

Community Reputation

12 Good

About markingleukc

  • Rank
  • Birthday 06/17/1993

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location
    New York

Recent Profile Visitors

973 profile views
  1. Move pivot to center of other node?

    Ah okay, then I would use expressions such as below to calculate that point without having to do a merge. Add these to the pivot translate of the 'rotate' xform node. And vice versa for 'rotate1', just edit the path of the second centroid function. (centroid(opinputpath(".", 0), D_X) + centroid("../rotate1/", D_X)) / 2 (centroid(opinputpath(".", 0), D_Y) + centroid("../rotate1/", D_Y)) / 2 (centroid(opinputpath(".", 0), D_Z) + centroid("../rotate1/", D_Z)) / 2
  2. Move pivot to center of other node?

    Looks like a dependency loop. In the 'rotate' xform node you're referencing the centroid of 'transformall' - which is downstream. edit: Looking at your original file, $CEX $CEY $CEZ in the pivot translate of 'transformall' seems to work fine for giving you a pivot between the two boxes. They only seem to evaluate to 0 using the old dollar sign variable syntax. Use the following expressions in the pivot translate of 'transformall' to get the equivalent in hscript which evaluates correctly. Then use the 'transformall' rotation controls to rotate the two boxes together. centroid(opinputpath(".", 0), D_X) centroid(opinputpath(".", 0), D_Y) centroid(opinputpath(".", 0), D_Z)
  3. Yep, you got it Although instead of using three separate attributes, you can use '@id+123', '@id+456', '@id+789' for the x, y and z random seeds (or any other values you see fit). The rand() function just uses the seed you give it to generate a value from 0 to 1.
  4. Creating a primitive out of a stream of particles

    Add an attribute to your source points to identify where each particle has come from. Your first popnet will by default give you an 'id' attribute already, so use add an 'attribute rename' sop to change this to something like 'parent_id' (otherwise your new popnet will overwrite it). Then after the second popnet, use the parent_id attribute in the add sop to connect up those groups of points. Check the attached hip file To make it a tube, add a polywire sop at the end. pop_lines.hip
  5. I made this HDA to streamline the process of versioning caches. It will automatically produce a file path and file name for your cache, and load it back in once it is exported. You can flip through different versions easily by using the version slider, or using the 'Create File Node for This Version' button and wiring the file nodes up to a switch node. You can write detail attribute strings to store notes about the cache such as simulation parameters - very useful when referring back to old sim caches. At the moment this is a non-commercial HDA. Download link down this page beneath the video. Get at me with thoughts, comments, questions etc. SOP_MI_version_filecache.hda
  6. I wonder why the cloud preset uses 'clouddensity' instead of just 'density'... My bad Thanks for the help StepbyStep, your file works nicely! Using the instance obj is a lot easier to understand than having to deal with material stylesheets
  7. Can I possibly do it with material stylesheets..? http://www.sidefx.com/docs/houdini/shade/stylesheets.html
  8. Thanks! But I'm trying this method and the geometry doesn't get instanced when I use a material SOP. Even though the same shader is selected, the geo is only instanced when it's selected on the geo node at obj level. It seems like this should work though, am I missing anything obvious?? clouds_v002.hipnc
  9. I'm attempting to make a cloudscape time lapse and need to find a way to efficiently create the cloud volumes. My solution so far has been to build the clouds themselves from spherical 'puffs' and to instance those puffs onto points at render time. My issue with this method at the moment is I can't find any way to have control over per-instance variations (beyond transforms, mostly looking for varying density). I have attached a file that shows a basic setup. Cache the frame to your local drive and make sure the instancefile attribute path is set to the cached file location correctly. One solution to my problem could be to cache multiple cloud puffs at different density values, and use different instancefile paths. But this will get heavy quickly as I need hundreds of frames to make up the time lapse animation. I'm hoping to find a method similar to how you would do regular copy stamping, using pt attributes to drive variations in the instanced geo. But obviously copy stamping is too heavy for my purposes. Any ideas/thoughts would be greatly appreciated! clouds_v001.hipnc
  10. I have 2 sets of points: 'parent' and 'child'. Both have the same number of points. I need each parent point to have a unique child assigned to it - no duplicates. I need to be able to animate in an active value for the parent points, so that they all become active in 3-4 frames. When a parent point becomes 'active', it needs to search for its nearest available animated point and set that animated point's id number as 'child_id'. An animated point is only 'available' if it doesn't already have a parent point, or in other words: if the child_id is currently unused. My issue comes from the VOP I've set up within a SOP solver. If there is more than one parent point becoming active on a single frame, I get multiple parent points assigned with the same child point. I need to be able to write to 'child_id' and read from it on the same frame, to make sure that I am not getting multiple parent points with the same child points (leaving some very lonely, parent-less child points ). Please take a look at my attached file. I've highlighted the important nodes, and the Find Attribute Value VOP in red is where the issue is originating. find_unique_child.hip
  11. get dop hitpath data in vex

    if(s@hitpath == "op:/obj/geo1/popnet:0"){ @Cd = {0,1,0}; } else{ @Cd = {1,0,0}; } Use s@hitpath to make sure the if statement is testing against a string attribute. And use quotes to define your path. I've included a file of my own that has particles changing color depending on their collider object. collision_behaviour.hip
  12. Shader Tutorails

    The SideFX shading masterclasses would be a good place to start: H15 Masterclass | Shading Houdini 16 Masterclass | Custom Shading
  13. You can pin pieces to the ground using the active attribute. Check my answer and file attachment in this thread: http://forums.odforce.net/topic/32264-wood-like-voronoi-fracture-need-help/?tab=comments#comment-177943 In the file, got to /obj/box/ and look at the set_active node to see how I set active and inactive pieces.
  14. merging multiple constraints in DOP

    For multiple RBD packed objects, you need to make sure all pieces have a unique name inside the sim. Say I want to use a fractured box and a fractured sphere in the same sim: I fracture a box with voronoi and pack with an assemble node, the name attribute will be piece0, piece1... etc. I do the same with a sphere, but that also gives me piece0, piece1... etc. in the name attribute. Having duplicate name attribute values in the RBD sim will not work as we expect. You'll have to rename the pieces using the sprintf function like so: s@name = sprintf("box_piece%d", @ptnum); From there you can make your constraint networks, and give each object's constraints a unique name e.g 'sphere_constraints' and 'box_constraints'. You can merge the constraint networks in SOPs for a neater DOP network, but it's not necessary. I have attached a file for you multiple_rbds_with_constraints.hip
  15. Problem with active and passive objects

    Best way to set the active value imo is to do it in SOPs before importing your geo to DOPs. And I always use a SOP solver of I want to change my active value over time in the DOP, instead of the 'active value' node. I set the active value using your color that you had set using the attribute transfer. And I moved the dop import node to the end of the network, so that it would carry through into DOPS. You don't really need your for loop, it's just duplicating points that are already there from your packed geometry. test_fixed.hip