Jump to content


Popular Content

Showing most liked content since 03/11/2018 in all areas

  1. 5 points
    Hey all We've noticed an increase of people posting HDA's and other general tools in random forums around the site. To help everyone we thought it would be beneficial to open a forum dedicated to the sharing of these so they can live in one place and be browesable: http://forums.odforce.net/forum/71-tools-hdas-etc/ Let us know what you think. There is also the option of opening up a commercial tool repository where you can sell HDA's, tutorials etc. Let us know if this is something that you'd like to see. Thanks Marc
  2. 3 points
    I know this is a bit late, but I missed this thread and felt like I should comment. Firstly, this topic amuses me since I think I could count on two hands (maybe some toes) the amount of times we've had to lock threads in the 20 years this site has been running. So the assertion that we're trigger happy thread lockers is a bit of a stretch. Now it may be that some of the very small number of locked threads belonged to some people in this thread, and if that's true then I would suggest taking a look at your online etiquette and perhaps adjusting a few things. You should note that we have very few rules governing each forum, where most other forums on the internet have a laundry list of do's and don'ts for posting. The reason for that is that we have an amazing community of professionals who actually like to help each other produce great work. Healthy debates are certainly welcome, but personal attacks are not. tl;dr: If the topic descends to the equivalent of "no, you!", "heck you!" etc, then it is looked at as a lockable entity. Don't want that to happen? Don't behave that way. M
  3. 2 points
  4. 2 points
    Ok, what about something like this... Place this code in the Pre-Frame Script field of the rop_geometry1 node. Remember to switch code processing from the default of Hscript to Python. It basically scans the input folder on every frame change and uses the frame number as an index into the retrieved list. It re-writes the file1 input path and the rop_geometry1 output path to match the current file being processed. The results are stored in a folder named results, so you will have to manually create that. Quite a bit of hard coding, but it does seem to work. Just don't rename nodes and populate the input and output paths to match your folders. USAGE: Click Render on the rop_geometry1 node. # Process a series of .OBJ files. import os input_path = r"F:\Keep\Models\Rocks" output_path = r"F:\Keep\Models\Rocks\result" def returnFilesLike(passedFolderName, passedFileExtension = ".obj"): result = [] for file in os.listdir(passedFolderName): if file.endswith(passedFileExtension): result.append(os.path.join(passedFolderName,file)) return result lst_files = returnFilesLike(input_path, ".obj") l = len(lst_files) if (l>0): frame = hou.intFrame() if frame <= l: # Frame is within range of object count in this folder. file_source = os.path.split(lst_files[frame])[1] file_node = hou.node("/obj/geo1/file1") file_node.parm("file").set(lst_files[frame]) file_dest = os.path.join(output_path,file_source) rop_node = hou.node("/obj/geo1/rop_geometry1") rop_node.parm("sopoutput").set(file_dest) ap_re_process_folder_of_OBJs.hiplc
  5. 2 points
    I can't see any benefit to the Houdini community at large in allowing slapfights between users to continue unmoderated. On-topic disagreements are one thing, but when people start getting heated and making things personal it doesn't do anyone any favors. This is a Houdini user's forum, not Facebook.
  6. 1 point
    Try int iteration = detail("op:../repeat_begin_attributes","iteration"); You need to put op: before your path, full or relative.
  7. 1 point
    hey thanks for update. I picked it up/purchased so I can see how it is done.
  8. 1 point
    I don't think Houdini 16.5 supports multiple GPUs for OpenCL yet. In your houdini.env file you can specify which one to use. HOUDINI_OCL_DEVICENUMBER = 0 {or 1 to default to your 2nd GPU} Use Goggle search instead of this website search for more results on the topic.
  9. 1 point
    Hello fellow Houdniks, FMX is around the corner again and of course there will be another user-meeting this year. od-lunch will be on Wednesday April 25 during the official FMX lunch break from 1PM-2PM. I made a reservation for 20 people at the restaurant “Logo” directly inside “Haus der Wirtschaft” (the FMX venue). Please RSVP here: http://meetu.ps/e/F11Q0/vSmyz/f Looking forward to seeing you again! Cheers Oliver
  10. 1 point
    Here is one way to do it using wire constraints. See attached. wire_constraint_example.hip
  11. 1 point
    Cool! I did something like this when I was starting in houdini, but I like your method better. My setup never could support the larger gear rotating slower, which is the entire point of gears. haha Nice work.
  12. 1 point
    FIRST POST!!! \o/ Ok, I had to get that out my system, lol. This topics is literally where I spend a majority of my time in Houdini. I'm very happy for this thread. So many libraries of studios HDAs cleaning and maintaining.
  13. 1 point
    Maybe try increasing the VDB collision resolution on the USB model? On particlefluidsurface node try increasing Influence Scale. Or lower Voxel Scale? I put together a short tutorial a while back on morphing between fluid shapes. Maybe there are some tips in there to help you out?
  14. 1 point
    NodeGraphPro.incNodeGraphPro.incGotcha ! With the new graph the background pref of the network view are in a new pref files. C:\Program Files\Side Effects Software\Houdini 16.5.378\houdini\config\NodeGraphPro.inc edit this line : GraphBackground: GREY(0.5) NodeGraphPro.inc houdiniPro.zip
  15. 1 point
    You should be able to get what you're looking for with a combination of Attribute Transfer/Sop solver to activate your pieces based on where the wheels are skidding, and the detailed boolean sim setup from the Applied Houdini Rigids IV (though I haven't watched it, so I'm not sure if you can use *exactly* the same methods and stuff). You can import the animation of your car, isolate the wheels of your vehicle, give them a red color and give your ground a black color. Fracture the ground/cliff area. As the wheels skid across the ground, they leave the red behind, and everything with a red value > some threshold will receive an "f@active" attribute value of 1. In the RBD sim, those pieces will then respond to forces and such, and you can have a gravity force and/or some custom point velocities to throw the pieces around in a fun way. Or you could use constraints (glue, or better yet cone-twist might look cooler since it will allow for some flexing and twisting before the pieces break away fully) to keep the pieces held together, and as the car skids over, the constraints start to weaken and break, causing them to crumble down. Here's a few links that might help: CG Wiki:: Houdini DOPs - A little over half way down the page has some RBD stuff, and different ways of activating them. CG Wiki:: Solver SOP - Everything on this page is important. CG Wiki:: Attribute Transfer - These examples show how transferring attributes work. Deleting glue constraints with color The Applied Houdini rigids I & II should give a good foundation, and I know in IV he does some cool stuff with the boolean sop which looks pretty nice. I hope the rough description helps a bit as I can't post a hip at the moment. Those links should help, and I'll try to throw something together when I get home if there's time. It helps to have a general direction to follow, since the scope of houdini can be quite large.
  16. 1 point
    So no recorded tutorial but I did finally get around to finishing this. It's not super complicated, you should be able to pull it apart and figure out how it works. https://gum.co/shells
  17. 1 point
  18. 1 point
    I have two spheres in the scene, a large one and a small one. The large one emits smoldering density while the small one attracts density and gobble it up with a sink. The gas is directly drawn to the target. I would like it to spiral as it approaches the target. Does anyone know how to achieve a spiraling gas target effect? ap_smoldering_black_hole_031218.hiplc
  19. 1 point
    That option is new in 16.5 though, he might not be using it.
  20. 1 point
    Cheers, I guess that makes sense. I've ended up using a scale that is 10x bigger than the real values, and I'm getting results that I'm fairly happy with. I have had to put the buoyancy to some crazy high values to get the smoke to rise quicker, but looking back at it, I probably should have just adjusted the timescale a bit to compensate for the size. Here's a really quick slap comp of the smoke on top of the shot (just taken from a flipbook). Currently there are some substepping artefacts near the sources but I will increase the substeps for the final sim. Any crit on this would be greatly appreciated! Password = "wire"
  21. 1 point
    Cool. P.S. It says the name at the bottom of the left side identifier. Best of luck on your work.
  22. 1 point
    it don't have a representation as far as i know (see the collision webinars for more information) so just leave that Use Heightfield checkbox ticked and turn on display geometry
  23. 1 point
    yeah i and j are most obvious test cases...here's my modded logic if (abs(i@textindex - i@opinput1_textindex) > 1) { @name = "word"; } greater than 1 is for white spaces...
  24. 1 point
    so what I did is after Heightfield Project, I convert heightfield to polygon, then add that as a Terrain object. then in DOP...paradoxically, it displays correctly but now your object is a polygon and not 'heightfield'...how is it treated under the hood, I don't know..
  25. 1 point
    oddly, if you DISABLE Use Heightfield, you'll see a representation (not very accurate tho) with an extruded bottom...who cares about the bottom really...but you can see the top that's all that matters...
  26. 1 point
    If you're using the Principled Shader it's on the displacement tab. If you're building your own shader it can be added there or changed at the object level per object with a parameter.
  27. 1 point
    Hi, displacement flicker may appear for many reasons. hard to tell without inspecting the scene. anyway if you're doing some displacement mixing on shader level, it is quite easy to get a displacement that is impossible to render artifact-free (polygons may cross each other, or may get extremely distorted, etc). one thing that might help thou is turning on "Render polygons as Mantra subdivision". you can find that on objects' Render parameters tab. edit: after seeing the video it looks like it is just a problem of insufficient dicing. I suggest turning on "Render polygons as Mantra subdivision", adding "Re-dice displacements" object render parameter and you might also want to try "Uniform measuring" for Dicing on your Mantra node if you still see flickering (you might want to bump up Shading quality to values more than 1 with Uniform measure).
  28. 1 point
    sorry, took me a while, cause it was stressful at work. Thank you dedeks. Exactly what I needed, i hoped there would be a solution coming with houdini already. but so, a new hda it will be. Thanks.
  29. 1 point
    For the Locomotion Orient parameter on the Agent ROP, you should specify another joint (like the upper leg) - the orientation is extracted based on the vector from the locomotion joint (hips) to that joint. If you preview the clip on the Agent SOP with Apply Clip Locomotion turned off, you want the character to face in a consistent direction so that you can blend between clips correctly. Also, the number of blend frames for the transition was set to 20, which is far too high given how short the turning clip is.
  30. 1 point
    I would like to see some Mograph type tools. I know Rohan Dalvi created some, still it would be nice to have them native inside Houdini
  31. 1 point
    Ok, this was a nice learning project, a lot of things can be improved, but i'm done with it and i'll share the source code, as i promised. Hope this will be useful for learning purpose. Happy New Year! YouTube Source code
  32. 1 point
    my approach using one liners... vu_CurveLerp.hipnc
  33. 1 point
    Here is some method: fit_circles_to_curves.v4.hipnc
  34. 1 point
    Welcome to the forum Dixon. No worries the wishlist, is just a wishlist. Submit RFEs, or BUGs directly to SideFX. Eitherway like I said you can keep the old contexts, and you can certainly use managers for context specific nodes, for those who prefer that work flow. Not all of us can handle change There are plethora of ways of handling these issues as handles in different nodal packages, nuke, substance, and several other proprietary packages. Most of it is just based in good UX design. Also SideFX needs to clean up a lot of their 1600+ nodes. There are many duplicate nodes the age old blast sop and delete sop issue, and especially when you account for all the contexts so say null obj and transform sop. They have merged contexts in the past like pops to dops, and shops and shop/vops to material. Also you can just color the connecting wires, and node differently so that is obvious what wires into what. Plus add some subtle shapes for each context. You can add apiece of info to each wire to define the context, that way in your case with file node you can have one file node that is aware of it's context already. So if a file nodes is connected to a sop context it just shows the sop specific options just like the visibility settings. If you are tabbing from an output of a node from the previous context then you just show the nodes that can actually connect to it. Additionally you can have a more advanced tab menu options, like a circular menu, where the first radial is the context for those using mouse, and for those typing the name it be the same. Maybe additionally add splash of color to the tab menu for each context. The current drop down menu tab as far as UX design already fails when you get to sops, dops, and vops if you are scrolling the wheel in ALL it's already too many options, so they design could already use an overhaul. The viewport Radial menu http://www.sidefx.com/docs/houdini/basics/radialmenus.html are already a step in the right direction. Still needing a lot more love, but in the correct general direction. Especially with all the verbification of nodes, this strips out the underlying code from their materialistic surface level detail of the node making it easier to do.
  35. 1 point
    You can always create a group of points that acting like a mask selection. Edit your mesh (edit sop) followed by a simple vop or vex node (with original mesh as second input). and set your mask selection to the second input May be an HDA will be more handy with a parm set to the edited points and another one to the mask selection pts May be a little confuse but here a simple file mask_pts_001.hipnc
  36. 1 point
    Congratulations, SideFX -- and a priceless still frame! Best of luck for the future and keep innovating!
  37. 1 point
    The latest production build of Houdini brings exciting new improvements to the licensing and render restrictions on Houdini Indie while also adding a powerful new UV Flatten tool and important refinements to FBX import and export. The Houdini Indie program has been a successful initiative designed to provide indie animators and gamedevs, who have a gross income less than $100K USD, with access to the features of Houdini FX with very few restrictions. In response to feedback from the Houdini Indie community, SideFX is increasing the render resolution limit for image sequences from 1080p to 4K x 4K in order to facilitate the generation of high definition imagery, which is especially important for artists creating VR content. SideFX will also be issuing a supplementary license to all Indie users to allow them to install Houdini on a second computer/laptop, or to work in dual boot mode. The use of these two licenses is restricted to a single artist, who can only use Houdini Indie on one of these computers at a time as per the EULA. With these added features and the recent addition of third party rendering, SideFX has set a new annual price for Houdini Indie of $269 USD for a single year or $399 USD for a two-year term. LEARN MORE...
  38. 1 point
    Houdini Digital Asset to visualize arrays of matrices attributes. https://www.orbolt.com/asset/prb::MatrixDisplay::1.0 Cheers
  39. 1 point
    added project files, note that in interaction_forces.hipnc I used a technique for calculating eigenvectors which was a bit overcomplicated, I updated the technique in curvature.hipnc but did not update the particle sim setup yet interaction_forces.hipnc curvature.hipnc
  40. 1 point
    Hi, I played around your scene a bit. This is the result. I also ended up changing your extrusion expression using exp() instead of pow(). The gist of it was to do 2 iteration phases. 1 is ahead, and the other is behind. Then just blend between those two. The challenging part was to create the attributes needed to specify the iteration level, and the blending amount (check the blend_and_iter wrangle node for how I processed it). Although this seems to chug to slow when there's already too many polygons to process. I wanted to place it inside a compiled block, but polyExtrudes are not yet compilable. H16.5.268 NC - Subdiv_Test_v2.rar
  41. 1 point
  42. 1 point
    A friend asked SESI this just yesterday. They said it's missing from the docs (and they will add it). It's done with hou.HDADefinition.save() hou.HDADDefinition.save("blackbox.hda", some_node, compile_contents=True, black_box=True)
  43. 1 point
    By creating @name attribute per word. per_word.hipnc
  44. 1 point
    how about... Letters with effector.hiplc
  45. 1 point
    Sounds like a typical space colonization task. spacecol_zombie.hipnc
  46. 1 point
    Rows order is is another quite painful issue outside matrix creation scope. This will also work: mat = set(normal, up, binormal); mat = set(normal.x, normal.y, normal.z, up.x, up.y, up.z, binormal.x, binormal.y, binormal.z); All set function signatures, obtained with vcc --list-context CVEX command: float set( float ) float set( int ) float set( vector4 ) float set( vector ) float set( float[] ) float[] set( matrix3 ) float[] set( matrix ) float[] set( float ) float[] set( vector4 ) float[] set( vector ) float[] set( float[] ) float[] set( int[] ) vector2 set( float ) vector2 set( float; float ) vector2 set( int ) vector2 set( vector4 ) vector2 set( vector2 ) vector2 set( vector ) vector2[] set( float[] ) vector2[] set( vector2[] ) vector set( float ) vector set( float; float; float ) vector set( int ) vector set( vector4 ) vector set( vector2 ) vector set( vector ) vector set( float[] ) vector[] set( matrix3 ) vector[] set( float[] ) vector[] set( vector[] ) vector4 set( float ) vector4 set( float; float; float; float ) vector4 set( int ) vector4 set( vector4 ) vector4 set( vector2 ) vector4 set( vector ) vector4 set( float[] ) vector4[] set( matrix ) vector4[] set( float[] ) vector4[] set( vector4[] ) matrix2 set( matrix2 ) matrix2 set( matrix3 ) matrix2 set( matrix ) matrix2 set( float ) matrix2 set( float; float; float; float ) matrix2 set( int ) matrix2 set( vector2; vector2 ) matrix2[] set( matrix2[] ) matrix2[] set( float[] ) matrix3 set( matrix2 ) matrix3 set( matrix3 ) matrix3 set( matrix ) matrix3 set( float ) matrix3 set( float; float; float; float; float; float; float; float; float ) matrix3 set( int ) matrix3 set( vector; vector; vector ) matrix3 set( float[] ) matrix3 set( vector[] ) matrix3[] set( matrix3[] ) matrix3[] set( float[] ) matrix set( matrix2 ) matrix set( matrix3 ) matrix set( matrix ) matrix set( float ) matrix set( float; float; float; float; float; float; float; float; float; float; float; float; float; float; float; float ) matrix set( int ) matrix set( vector4; vector4; vector4; vector4 ) matrix set( float[] ) matrix set( vector4[] ) matrix[] set( matrix[] ) matrix[] set( float[] ) int set( float ) int set( int ) int[] set( float[] ) int[] set( int[] ) string set( string ) string[] set( string[] ) bsdf set( bsdf ) bsdf[] set( bsdf[] )
  47. 1 point
    UV Unwrap does the same prior to packing, I think. I wonder why there is no checkbox to disable it. uv_projection.hipnc
  48. 1 point
    Hi, here is my project file for assembling effect I showed in my previous shot. It's not perfect and it needs some improvements. Juraj project_forum.zip
  49. 1 point
    I'm sure you can't do it without an additional data. For example, is it possible to retain transform matrix on points of original geometry? Then yes, just multiply it by inverse. Dealing with object transforms is the most straightforward way, and you need only transform, simple box with some snapping techniques with desired transform is fine. Extract Transform OBJ. There is another nice method I didn't found in Houdini, maybe it will fit you. If you have at least two triangles, or any arbitrary 3 points transformed, of before-transform and after-transform states (for example, if you store rest position or if you could recreate it more or less exact), then you may easily calculate transform matrix between them using triangles's "local spaces" created from triangles's sides. Here the code for Primitive Wrangle (I used "0" as group, it runs only for first polygon) with two identical geometries on inputs, where second is arbitrarily transformed. // Create a basis from points of triangle. matrix3 basis_from_triangle(vector p1, p2, p3) { // Axes vectors. May not be orthogonal. vector X, Y, Z; Z = p2 - p1; X = p3 - p1; Y = normalize(cross(Z, X)) * length(p2 - p3); return set(X, Y, Z); } // Calculate rotation matrix rotating triangle ABC into triangle DEF. matrix3 rotation_between_triangles(vector a, b, c, d, e, f) { matrix3 basisABC, basisDEF; basisABC = basis_from_triangle(a, b, c); basisDEF = basis_from_triangle(d, e, f); return invert(basisABC) * basisDEF; } // Calculate transform matrix transforming triangle ABC into triangle DEF. matrix transform_between_triangles(vector a, b, c, d, e, f) { matrix transform = ident(); matrix3 r = rotation_between_triangles(a, b, c, d, e, f); transform *= r; translate(transform, d - a * transform); return transform; } 4@transform = transform_between_triangles(point(1, "P", primpoint(1, @primnum, 0)), point(1, "P", primpoint(1, @primnum, 1)), point(1, "P", primpoint(1, @primnum, 2)), point(0, "P", primpoint(0, @primnum, 0)), point(0, "P", primpoint(0, @primnum, 1)), point(0, "P", primpoint(0, @primnum, 2))); Now, transform points using Point Wrangle with second input as geometry, simply getting first primitive's transform attribute. @P *= matrix(prim(1, "transform", 0)); Or, being contemporary, Deformation Wrangle, because it is exactly why it was created. pos *= matrix(prim(1, "transform", 0)); It will properly transform attributes you need to have transformed. With Point Wrangle you need to use other wrangles to transform vertex normals or other attributes. Actually, for normals only there is special checkbox on Point Wrangle, and sometimes it works. betweentria.hipnc
  50. 1 point
    This should work too (VEX only): vector min, max; getbbox(min, max); vector center = (min+max)/2;