Jump to content


Popular Content

Showing most liked content on 09/06/2017 in all areas

  1. 3 points
    hi there. you can read the 'packedfulltransform' primitive intrinsic attribute of your packed primitives to get translate and rotate values from the primitives. you can then run these values thru your chops and apply then back in a primitive vop or wrangle. here's a vop example. -b C4D_mograph_rebuilding_bb_01.hip
  2. 2 points
    I am working on a way to use one object to dent or impact another object, with a ripple effect around the impact area. The color red is available to create a group out of the impact area. Here is what I have so far. There is a small jump in the result which I have not figured out how to solve yet. ap_matte_vdb_dent_with_ripple.hiplc
  3. 2 points
    So, I just found out, that OpenVDB's Houdini implementation has a node for exactly this purpose From node's docs:
  4. 1 point
    We could add that. It looks like the leaderboard functionality in the other thread might be a bit more difficult (aka, unlikely ;)). One thing to check out though is the Q&A boards on the staging server: http://staging.odforce.net/forum/ and see if that helps with some of the things you're looking for? The Q&A forums are a bit of a shift from what we currently have though, so it might be a bigger conversation
  5. 1 point
    More info here: http://simonfarussell.com/The-Creatures-of-Prometheus
  6. 1 point
    Underscore is a valid character inside variable names (e.g: $HOUDINI_PATH), you need curly braces to enforce word boundaries. Or use non-valid characters as delimiters like "." as suggested default. Evaluate string with MMB to see if it is correct.
  7. 1 point
    Ok guys, got all the parts today and took me a few hours to assemble. Spoiler: 7900x still gets it's ass kicked in multithread cinebench: 2371 points (but i knew that before buying it) the rest of the benchmarks get more interesting. I'll post an update tomorrow...
  8. 1 point
    This can be more complicated than it seems to the user - The devs on the SideFx forum write that multithreading grain sizes and core counts affect different use cases within Houdini.
  9. 1 point
    The way I handle this is to create extra attributes for each agent inside the crowdsource setup area, near the end of the network. Then reference those inside the crowd_sim node. This way you simplify the crowd transition step. I'll place each crowd transition in VEX code mode then simply reference the attribute to determine if the transition flag needs to be set. // RELAY STAND RUN if (s@agentgroup == "relay"){ i@trigger = i@relay_start_trigger; } So the set of attributes you assign to your agents depends upon the type of simulation you are conducting. For instance vehicle traffic would have a different set of attributes compared to a combat system. Here is an example of a staggered start time based upon a custom float. // Each agent begins with a staggered start time based upon it's id. i@trigger = f@stateduration > f@sf_start_time; In a combat system I wrote here were some attributes I assigned to my agents inside the crowd source node. // The final name of your Crowd Trigger node becomes an attribute name here. // If you add more crowdtriggers to the network make sure to zero them here as well. // Clear all crowdtrigger flags. i@crowdtrigger_idle_walk = 0; i@crowdtrigger_walk_attack = 0; i@crowdtrigger_walk_defend = 0; i@crowdtrigger_walk_dying = 0; i@crowdtrigger_walk_hurt = 0; So I would name my crowd transition nodes like the trigger flags. Inside the crowd sim node I would drop down a crowd transition node and name it "crowdtrigger_idle_walk". All this node will do is transition from idle state to walk state. This simplifies crowd triggering because then each crowd trigger node has the same exact VEX code inside it. int success = 0; string attribute_name = "crowdtrigger_" + "`$OS`"; int attribute_value = pointattrib("op:/obj/crowd_sim:crowdobject/Geometry",attribute_name, i@id, success); if (success) { setpointattrib(geoself(), "trigger" , i@id, attribute_value, "set"); } else { printf("Problem fetching attribute [%s] %d.\n", attribute_name, attribute_value); } You build the attribute name off of the node name (i.e. $OS global), then fetch the point attribute from the agent point then set the i@trigger to the attribute value. This way you can simply set values to the attributes on the points and the next frame the they will be relayed to any trigger states. This also allows you to set values on other agents, in the case of a kill state when one agent defeats another. So how do all these values get updated? To make all this work you need to add in a render loop which takes place in a pop wrangle which runs every frame. Here is some example update code that would run in a pop wrangle. // UPDATE CODE. string handle_path = "op:/obj/crowd_sim:crowdobject/Geometry"; // Path to our database of attributes. vector goal_location = point(handle_path,"P",i@relay_id); // Fetch the point location in the scatter. float relay_distance = length(goal_location - @P); // Get distance between my location and the relay location. setpointattrib(geoself(), "relay_point_distance", i@id, relay_distance, "set"); // Assign this location to an attribute on myself. All this code really does is calculate the distance between current location and a goal location and store the result back upon itself. Then a crowd transition will review that value on the next frame. // Transition to stand when I am close to my goal location. if (f@relay_point_distance < 0.25) {i@trigger = 1;} else {i@trigger = 0;} Feel free to check out my video tutorial on constructing a relay race using the crowd system. In the video I demonstrate a setup such as I have described above.
  10. 1 point
    Hello, since last week i can play with houdini again to keep going my tests ... and bellow , some of my latest hip files from this video: torus+wrinckles+.hiplc stick man rbd+ .hiplc bubbles- rbd+cloth-2.hiplc
  11. 1 point
    In this tutorial we will go over how to set up optimized pyro clustering with oriented DOP containers in Houdini given a piece of geometry moving through a scene. This process will lower simulation time and be more efficient when saving to disk because there are fewer voxels. Link to Tutorial -> https://gum.co/TqUNR We first go over how to get things set up quick and easy and in the second half of the tutorial we make further optimizations using VEX. We'll look at how to rewrite cluster points to do exactly what we need it to, which includes rewriting the resample sop using VEX. An intermediate tutorial for those looking to speed up their pyro workflow and learn some VEX. Includes the scene file! Hope to see everyone leveraging these optimizations in the future and squeezing in those extra few iterations before deadline! You can reach me at trzankofx@gmail.com for questions or comments.
  12. 1 point
    Radial Joiner...all you need to do is to align your geo to X axis first...then feed it in to the Joiner...a million times faster and cleaner than Boolean. No, I won't waste my time uploading to orbolt then wait for approval...rather watch grass grows... vu_radial_joiner.hdanc
  13. 1 point
    attached is another method plus a version using curves. can´t you just use the geometry cop instead of actual rendering the scene? hth. petz. overlapping_holes_2.hipnc