Jump to content


Popular Content

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

  1. 1 point
    I agree with you, there are lots of different types of tasks, I also didn`t expect everybody to ran the entire tasks, as it would take 2 3 days to complete the task. I have also done some i7 vs slower but dual socket xeon pyro simulation tests for 200 frames, I7 was at frame 100 where dual xeon was at frame 50, but things turn around once voxel numbers increase and dual xeon would finish the 200 frames almost 30 ahead of a single I7. In the end you would save time in a finished cache. I am a big fan of redshift also, but I don`t do render for freelance. IMHO ,in the end it comes to the price and possible future optimizations on softwares ability to multi-thread better.
  2. 1 point
    yes this was supposed to be a more single threadded collection of use cases (i'm sure the methodology can be improved), i'll update the running spreadsheet. Thank you for running the test! in related news, mr Timucin Ozger, lead FX TD for MPC, has kindly provided a through benchmarking scene file with the bonus of having a Deadline implementation: Link to the SideFX forums post: https://www.sidefx.com/forum/topic/51730/
  3. 1 point
    Hey Anthony Thanks for these, the trail dude is cool. Simple but cool. Paul
  4. 1 point
    Glad it worked! Basically to get a proper copy rotation in Houdini you need either 2 vectors ("N"(aim) & "up"(up/roll)) or 1 quaternion ("orient"(aim+up/roll)) Since quaternions are more difficult to keep track of, I usually prefer the 2 vector approach. v@N = {0, 0, 1}; The N has to be initialized first, and since Houdini uses Z forward as the default forward axis, that is the one to use here ( {0, 0, 1} ) On this line: rotate(rotationMatrix, angleInRads, {0, 1, 0}); //rotates the matrix, by the angle, around the vertical axis or if you have a custom up vector: rotate(rotationMatrix, angleInRads, v@up); //rotates the matrix, by the angle, around the up axis the matrix is converted from an identity (basically 0 rotation matrix) to the matrix that will rotate the vector in the way that you want. so it is not an identity matrix anymore at this point. v@N = v@N * rotationMatrix; // or v@N *= rotationMatrix; will apply the matrix to the initialized front vector, since in the rotate function we rotated around the up axis, the rotation will be in the XZ plane.
  5. 1 point
    First update! Also did some bug fixes. Available Here: https://gum.co/zWFNX Slight change to pricing, still 'Pay what you want' for Non-commercial but now has a (low) minimum price for indie licence. Anyone who has already picked it up should have access to both licences still.
  6. 1 point
    so isn't it simply @class=`$F-1` ?
  7. 1 point
    The "modern" way of Houdini is to try avoid using copy stamping as much as you can though. You can instead also put everything in the new forloop and loop 8 times with transform sop, once with every 45deg rotation. reference in the vid below. An even more performant method, and arguably easier, is to pre-supply the rotations into your points on the right side of the copy input. you could do this with something like the following attribute wrangle script: v@up = {0, 1, 0}; // up vector in positive Y axis v@N = {0, 0, 1}; // N vector in positive Z axis matrix rotationMatrix = ident() // create a matrix with no initial rotation; int rotationSegment = rint(rand(@ptnum) * 8); //creates a random number from 0 to 8 float angleInRads = radians(45.0 * rotationSegment); //multiply the angle by 45 and convert to radians (angle/180 * $PI) rotate(rotationMatrix, angleInRads, {0, 1, 0}); //rotates the matrix, by the angle, around the vertical axis v@N = v@N * rotationMatrix; //rotates the N around the Up vector in a random amount of steps of 45 degrees
  8. 1 point
    <?xml version="1.0" encoding="UTF-8"?> <shelfDocument> <tool name="delta_edit" label="Delta Edit" icon="SOP_edit"> <helpText> <![CDATA[ #type: tool #icon: SOP/edit = Delta Edit = """Create Edit SOP from difference between two SOPs.""" ]]> </helpText> <script scriptType="python"> <![CDATA[ def safe_name(network, name): ''' Append a digit to the name making it unique within the network. Depends on existing nodes inside the network. E.g. if the network contains edit1, edit5 and edit6 nodes, 'edit7' will be returned, ignoring vacant numbers between edit1 and edit5, the way Houdini does it. ''' digits = [n.digitsInName() for n in network.glob(name + '*')] return '{}{}'.format(name, max([0] + digits) + 1) def delta_edit(selected_nodes): '''Create Edit SOP from difference between two SOPs.''' nodes = [x.name() for x in selected_nodes if isinstance(x, hou.SopNode)] if len(nodes) != 2: return network = selected_nodes[0].parent() name = safe_name(network, 'delta') script = 'cd {}; sopcreateedit {} {} {}'.format(network.path(), name, *nodes) hou.hscript(script) delta_edit(hou.selectedNodes()) ]]> </script> </tool> </shelfDocument> I made a shelf tool wrapping this command. Usage: Select "from this state" node, shift-select "into this state" node, click the tool. Origin and target nodes should share topology. Installation: Save to $(HIP|JOB|HOUDINI_USER_PREF_DIR)/toolbar/delta_edit.shelf Launch Houdini Right-click on empty place in shelf tab, select "Edit Shelf Tab..." Find "Delta Edit" in the long list of tools, hightlight it Accept
  9. 1 point
    That's the standard workflow using the shelf tools, which should be just fine. If you want to go straight from sim --> rendered frames overnight, you can set up a dependency of fetch nodes inside a ropnet. A "Fetch" ROP simply looks for a "ROP Output Driver" to render. If you have multiple fetch nodes piped into a "merge" ROP, it will render them in order left to right. I would suggest: Make 2 Fetch ROPs and 1 Mantra ROP, and a Merge. Name them something useful (ie: "fetch_flip_particles", "fetch_surface", etc) In the first Fetch, click the dropdown and navigate to the filecache node that write the flip particles. Inside that, there's an Output Driver called "render". Select that one. In the second Fetch, do the same, but for the flip surface cache. Configure your desired mantra render settings in the Mantra ROP From left to right, wire the nodes particles, surface, render. Order counts! On the merge node, hit the Render flag button on the right. Important! There's an option that says "Frame by Frame". You will want to change this to "node by node", so that each node is dependent upon the one to the left of it to finish before it can start. Grab a beer, have a nap, and return in a few hours to comp your frames! You can do this with any cache that depends on another to be finished in order to produce desired results. I hope this helps.
  10. 1 point
    Sure, take a look at this test hipfile, but you will see nothing complicated I guess glassBattle_test_OdForce2.hip
  11. 1 point
    Hi! Just sharing another work of mine, this one took me a lot of time and I like more what this setup can achieve than the result that I got , but at least I finished. Hope you like it!!
  12. 1 point
    I've always been fascinated by procedural set modeling, so I figured I'd try my hand at modeling some tropical marine life in Houdini. I'll be posting my progress here! I have started hashing out a few basic types of coral, anemone, etc. Hoping to eventually get this all into a large scene. Anemone motion test: I apologize, but I cannot currently share hip files of these scenes since they may be used in a contract.
  13. 1 point
    There are several ways of doing it This one in particular uses the point number to control the width The polywire is the default one, just put "$WIDTH" in the "wire radius" option. The function "npoints" just returns the amount of points in some geometry, in this case, the first input (designated by the 0 there). The "(float)" part is just because Houdini wasn't being nice with the division without it
  14. 1 point
    just thought i'd share a couple of scene files (attached hopefully) on here as asked i've included a clip of the alembic character i was using so you can take it, twiddle, play about and show off your results with him too. I'd love to see what cool tricks can be done as i say the tricks really aren't anything special, and there's probably a multitude of better ways to do it but as i say i'm still quite new and fiddling with it. Most of the stuff i'm doing is via youtube tutorials, perusing sidefx & odforce and its just something i'm trying to keep on top of week to week and develop with it. Peter Quints trail tutorial trickery houdini abstract wire tutorial strobs swiss cheese youtube tutorial digital_dancers_hou_scenes.zip
  15. 1 point
    ok, here is the example file with 4 ways (cache the instance geometry first, both blue nodes ) 1. (Purple) rendering points with instancefile attrib directly through fast instancing 2. (Green) overriding unexpandedfilename intrinsic for any packeddisk primitive copied onto points without stamping 3. (Red) just for comparison Instance SOP, which is using copy stamping inside, so it will be slower than previous methods 4. (Yellow) copying static alembic without stamping and overriding abcframe in this case to vary time for each instance independently (if you need various alembics you can vary abcfilename as well) ts_instance_and_packed_examples_without_stamping.hip
  16. 1 point
    Higher speed will only give new mikrosolvers(HDK) with more optimized algorithms. But you can get a lot of different custom effects, or a small acceleration of the standard model, by removing some of the additions. I couple of years ago studied the effects of these guys, the projects were made for h10. http://dl.dropbox.com/u/4265149/microsolvers%20dev.rar