Jump to content


Popular Content

Showing most liked content since 10/11/2017 in all areas

  1. 5 points
    I'd looked at this problem a few weeks ago, got 90% the way there looking at some other odforce posts, this inspired me to finish it. The idea is to first calculate the angle between each curve segment, then apply it in a for each loop so each segment is rotated by the total of all the previous segment angles, at the correct pivot point. curve_unroll.hip
  2. 4 points
    Yes,. well Potentially as a FX artist who mainly makes tools / codes / programs etc. which is always needed, But I would say you have less chance of becoming an actual fx artist if you ONLY have previous experience within Houdini coding and no actual 'FX' or simulation knowledge, - If I were you with what you've said I would learn code as much as you can (Vex/Python/C++ may even be useful to add to your CV) - And then do whatever simulation practice you can to show FX or concentrate on making optimized/streamlined Houdini tools which really aid the FX or any other process's. (Essentially in my eye if you want to go to work as a FX artist or TD and produce simulations/renders (explosions/fire/magic etc.) as well as some technical stuff (coding etc.) you need some simulations in your reel to a good level. Otherwise with coding alone I think you may struggle to get more artistic jobs and live in the world of programming/coding (Pipeline TD's/Coders etc) which is if that's your aim no problem! BUT if not make sure to try and produce whatever simulations you can using what you have. (PS; ive been told by senior artists and recruiters often rendering isn't always necessary especially if the simulation itself is very good or accurate and presented well (something to consider when you have a lower end pc spec etc. not rendering can save a lot of time) Hope this helps just my opinion on the matter
  3. 3 points
    node_type = hou.objNodeTypeCategory().nodeTypes()['bone'] for x in node_type.instances(): print x Using instances() should give you the bone nodes in the scene..
  4. 3 points
    If you know VEX, you can use an attribute wrangle inside a solver. Here is a rough sketch.. Set up a (quadratic) spiral: float rounds = (@numpt - 1) * 0.5; float grad = 1 - ( @ptnum / float(@numpt - 1) ); float spiral = (rounds * $PI * grad); @P.x = cos(spiral); @P.y = sin(spiral); @P *= grad; Unroll the curve inside a solver: int pt = int( ceil(@Time) ); float amount = ( radians(@Time % 1.0) * $PI * 2.5 ); matrix m = ident(); vector axis = set(0, 0, 1); vector offset = point(0, "P", pt); if(@ptnum > pt) { @P -= offset; rotate(m, amount, axis); @P *= m; @P += offset; } To get the wavy curve, merge it with a trail SOP running on the last point. Useful links: http://forums.odforce.net/topic/24056-learning-vex-via-animated-gifs-bees-bombs/ http://www.tokeru.com/cgwiki/index.php?title=The_solver_sop Example file: spiral_moving.hipnc
  5. 3 points
    Assemble creates Packed Fragment primitives, while Pack just creates Packed Primitives. A Packed Fragment refers to a portion of an underlying shared geometry. In this case, all the packed fragments will refer to the same geometry, just different parts of it. The viewport can then draw this as a single mesh. But when you pack to Packed Primitives, the parts of the geometry you are packing from are extracted into new geometry for each packed prim. When the viewport goes to draw this it sees 7000 separate meshes. This takes much longer to draw as the overhead of sending 7000 batches is a long higher than sending a single batch. It's this overhead that slows things down a lot.
  6. 3 points
  7. 3 points
    Few tips and tricks to manipulate gas simulation. 1. Independent resolution grid. E.g. Overriding vel grid size independent to a density grid. 2. Creating additional utilities. E.g. gradient, speed, vorticity and etc which can be used to manipulate forces. 3. Forces via VEX and some example snippets. smokesolver_v1.hipnc P.S. Some of this technique are not Open CL friendly though.
  8. 2 points
    Hello, I've try something for you. The 'attribwrangle_between_points' is placing point between itself and next point. I've tried to comment the scripts but let me know if its clear enough. Gab. forOdForce_02.hip
  9. 2 points
    Hello, by raising your sphere division, your sim is more accurate but i takes more time to compute... and sometimes, the result is still not perfect ... and it seems you are in this case. if i were you, i would keep your sim as it is , and after that, i would make some adjustements with sop point nodes to reduce overlapping. bellow 2 variations of the same method. have fun with your muffin ! ++ testme-sop adjustements-ok++.hipnc
  10. 2 points
    Set "Local scaling" to "Use Local Feature Size" to have more accurate solidembed. In "box_object1" set "Division size" to 0.05 or less. Change substeps to default 4 and 2 for collision.
  11. 2 points
    The problem seems to be that you are not keeping both sides equal. When you convertvdb for one side, make sure you match the settings on the other (i.e. Convert Fog to SDF). Also, turn off that vdbresample unless you plan on resampling the other side too. It worked fine for me after that, no more exploding velocity.
  12. 2 points
    Filament like structure, combination of Smoke Solver, VDB Advect Points + Volume Rasterize Particles. smokesolver_v3.hipnc
  13. 1 point
    is there away to control the force along the curve want the force on the end of the curve is much higher than beginning of the curve, iam using Cruve to drive it by curve force, btw curve is not converted to poly or Volume hipfile Fluid_Juice.hip
  14. 1 point
    Why would you set the rotation on a point-by-point basis? Just run an attribwrangle on detail, which stores one attribute for the whole geometry: f@uv_rot_y = 24.67; And access the attribute inside the uvtexture node´s rotation with a detail expression: detail(0, "uv_rot_y", 0);
  15. 1 point
    Thank you, Gabriel, it is a perfect solution. Trying to understand how it is done, awesome breakdown.
  16. 1 point
    I think the more important question is why do presenter almost always have a mustache.
  17. 1 point
    Thanks for this solution. I always though that solvers where more accurate and I was doing some bad setup.
  18. 1 point
    Hello, I have been using your foliage tool for a while and I really am satisfied with its results. However, I mainly work with lower resolution geometry in my asset pipeline and it can be rather tricky to create realistic looking low poly trees with the tools available. So recently I have been trying to come up with a way to extend the product to generate low poly trees for use in real-time visualization projects, games and use in much larger distant forest scenes. In the interest of improving the flexibility of the tool for everyone, I would like to give you my design document for this solution. You (the creator of this tool) have my full expressed permission to use the design however you like. Thank you for the wonderful product. FoliageAtlasHoudini.pdf (Edit: Just after posting I realized there might be some minor issues with the "Only Branch Ends" and "Delete Point Chance" options in the curve maker and the Noise and Smoothing in the tree/grass maker since it would come after the card setup node. one possible solution would be to feed the branch starting point data through these nodes as another input and apply the same rules and procedures, then before feeding the data back into the card finalize nodes second input. As for the UVs you can generate all of the cards and run the bake rig and tree cards through a UV layout node after being generated but before being scattered (this should work as long as the low poly bake geo and tree cards and the same UV island space.)
  19. 1 point
    The new beta on the houdini github seemed to do the trick https://github.com/sideeffects/GameDevelopmentToolset/tree/Development
  20. 1 point
    Yes, see Geometry Data parameter type and a new Stash SOP
  21. 1 point
    Hey Atom. I would usually do something like this in maya, but I did have a crack at doing it in Houdini. It uses curves to define the shape instead of a boolean. You still get ngons and tris around the borders of the shape, but theres not of that weirdness in the center. Its a bit janky (only had about 10 minutes to do it), but with a bit of love (and maybe some VEX) I'm sure it can be cleaned up into something workable even_quads_v1.hipnc
  22. 1 point
    Oh, wow. Useful info, didn't know it would fail in that way with the frame being off. Good to know! The bounding box min/max I've always had to set. The UE4 shaders they give you to copy I think are just generics. Once you have one in your project you can just make material instances and set the settings according to that particular export.
  23. 1 point
    Once IFD file is on disk, you don't use Mantra ROP, but render with command line: http://www.sidefx.com/docs/houdini/render/batch#mantra Also on a wider context: http://www.sidefx.com/docs/houdini/render/ifd_workflows hth, Szymon.
  24. 1 point
    Hi Gabriel Thank you for your help. That is exactly i was looking for. I understand it now.
  25. 1 point
    import hou settings = hou.ui.curDesktop() \ .paneTabOfType(hou.paneTabType.SceneViewer) \ .curViewport() \ .settings() dispset = settings.displaySet(hou.displaySetType.DisplayModel) dispset.useFadedLook(not dispset.isUsingFadedLook()) In theory it should work, but not for me on 16.0.705.
  26. 1 point
    Sorry for the delayed response, just now happened to see this. I hope you found a solution. So, for my setup, I'm wiring the Dynamic Parameter (which is for particle systems only) into a multiply, with the B input of the multiply being the speed parameter, which is set to 0.33. In your setup, you would wire your parameter into A. Other than that, it is the standard setup. The only real difference between a parameter and a Dynamic Parameter is the Dynamic Parameter is a direct link to a particle system component. The jittering may be coming from running it from 0 to 99. In my case, I have 39 frames and I run it from 0 to 2.8. I don't recall how I came up with that value. I think I probably just fiddled with it until it looked right. The jittering may also be coming from the UVs. In the static mesh settings, Use High Precision UVs need to be ticked. I haven't tried running one of these through blueprints yet, only through the particle system. I'd start by trying to adjust the value range, seems like something around 6 or 7 may be a good place to start as the high end of it instead of 99. @Chris, try the latest version of the exporter from the github link if you haven't given that a shot yet. That fixed some of the odd issues I was having. I haven't tried the RBD export like this yet, only the soft body and fluid. The soft body worked nicely, I used it to export a FEM simulation. The fluid also worked well. Though I do recall having to go through with different settings on the export a few times to get it right. For the soft, I don't pack the normals since I've never got that working properly. I also don't normalize the data. In the output node, I had to dive into it, dive into the soft_obj node, then into the static mesh, then in there I had to wire the timeshift1 directly into the build_the_uvs node, bypassing the switch for the unwrap. The switch is looking for a divide point attrib and that was failing for me. Bypassing that bit fixed the issue though. Hope some of this helps.
  27. 1 point
    Here's a sample for SDF representation and gas analyses to get curvature data. Can I see the reference technique you are looking for? curv_analyse_sdf_repr.hip
  28. 1 point
    This the sort of thing you're after? Just me fumbling around with chops nodes until it sorta looked interesting. The zip is a hip and .wav, the sound is a filter sweep from low to high to low again. spectrum.zip
  29. 1 point
    HI FRIENDS! So over the past year I've been doing far too much Houdini in my free time, and I noticed that all of the people I look up to in the community have their own cute ODForce threads. So with the release of my latest blog post on Voronoi Diagrams and Remeshing, I thought it best to make one of those threads, to avoid flooding the Education section with tons of new posts... Anyways here's a link to my new blog post: https://medium.com/@jakerice_7202/voronoi-for-the-people-60c0f11b0767 And if the link itself isn't enough, here are a couple of GIFs from the blog post, including one that didn't make the cut. All credit for the post title goes to @mestela <3 Big thanks to @toadstorm for editing my grammar as well, and the whole ThinkProcedural discord for putting up with my insanity
  30. 1 point
  31. 1 point
  32. 1 point
    Try to play with negative divergence pyro_negative_divergence_v01.hip
  33. 1 point
    Uh oh, I'm back. While putzing around, trying to come up with good ideas for my next blog post (covering discrete operators seems a bit too mathy, so I'm open to suggestions. Maybe building a cloth solver in VEX?), I spent some time revisiting an old idea I've been attempting to solve for the better part of a year, rolling up a curve. That's probably not the best way to describe the effect, so I'll let my below GIF do the talking. This solution wouldn't have been anywhere close to possible without Stephen Bester (https://vimeo.com/user13305957) for a solid vex foundation of chained rotations, or Julian Johnson's transport frame file (http://julianjohnsonsblog.blogspot.com/2017/). Above you'll see final effect in action. Still not sure how to describe it other than rolling up a curve... I've attached the final OTL to this post along with the above example HIP! It works over multiple curves as well, so dont be afraid to try crazy stuff with it, it's pretty gosh darn fun! If you try it on a vertical line, you might need to change the up direction, or turn off "set up direction." Maybe it's time to make a Github too... <3 <3 <3 JR_CurveRoll.zip
  34. 1 point
    Another, focused on instancing smoke objects. Manipulating points with basic instancing attributes, i@cluster, v@scale and f@sourceframe. How to activate smoke object and holding a volume source. This method ideal for triggering independent gas simulation on impact data. Additional examples, e.g. grid clustering method for trail and non-trail which I'm merging from a separate thread. smokesolver_v2.hipnc
  35. 1 point
    I checked help document, it is hou.allowEnvironmentToOverwriteVariable("JOB", True) in houdini16
  36. 1 point
    I hope I did not get you wrong. But cant you name your hipfile e.g. "testfile_v001.hip" in your FileCache you type in the expression "$HIP/$HIPNAME.$F4.bgeo". Now If you save your hip File as "testfile_v002.hip" your FileCache will update to version 002. Had to smile on this one
  37. 1 point
    Subjective question, at least this how I started: 1. Shelf tools, learn the basics and concepts. 2. Dive into DOPs OTLs/HDAs and look around to see how they are implemented. My examples are just a product of what those Side Effects guys implemented. 3. Read Houdini's documentation. 4. Be inspired by all the test that posted on Vimeo/YouTube that doesn't look like off the shelf imagery.
  38. 1 point
    Categories were introduced, so feel free to give us feedback on the split of channels. Some things are a trial to see if it takes off.
  39. 1 point
    Sorry for making this thread and then going silent for a while, a lot has happened over the past few months, including me moving to LA on a whim... But I'm back!!!! I have tons of new files to share, which I'll push out in the coming weeks. Today I had a couple of hours to play with Houdini before going to an Escape Room (wish me luck), and I had been discussing the Laplace-Beltrami operator with a couple of buddies on discord for a long time, so i thought, why not implement one myself! After having thought about it for so long it actually didn't involve anything I hadn't already done, or covered in my blogs for that matter (go read them!!!!). The implementation is based off this paper: http://www.cs.princeton.edu/courses/archive/fall10/cos526/papers/sorkine05.pdf I did comment the wrangle so hopefully it makes sense. One caveat, is that this version does not include border weighting, so watch out for crazy minimization. For production, just use the attribute blur sop, this is more just me exploring weird math stuff that makes me question my art school degree... <3 <3 <3 P.S. there's a little ray tracing demo in there as well, since my roommate wanted to understand normals, and I went a bit too far off the deep end in explaining it to him.... JR_Laplacian_v001.hip
  40. 1 point
    An example of grid clustering. cluster_v01_01.hipnc
  41. 1 point
    Take a look. organic_stuff.hipnc
  42. 1 point
    Hey magicians, Wanted to share some Houdini tutoriales I did You can find them here: https://caskaldesign.com/tutorials/ Cheers!
  43. 1 point
    I am trying to create some collision particles that appears when metal collides with surface. Right now the particles are emitted from the ground with the velocity of the ball. I am not sure the particles should be emitted in the direction of the ball travels or opposite to the ball travels. I think it should travels in the direction of the ball but backwards looks nicer. Which version do you guys think is better? Also anyone have a good reference for this kind of sparks?
  44. 1 point
    Now it's working, thx a lot Matt. scene file + stick notes is attached: Grains Constraint v1.a.rar
  45. 1 point
    In the area of character animation. PSD editor/node interface. And blendshape editor. The current one is fine, but you have to use chops, vex or hscript to allow for correctives. Or make a custom GUI in python to automate adding, removing, editing shapes. In this respect, it feels like the old Maya blendshape. The new one from 2016 allows users to setup correctives on the fly. I'm not envious of Maya but that is one feature that is very attractive. The only other thing I can think of is some approximation of Vop textures in the viewport. They don't have to be high rez, and it's not asking for shaders to be previewed in the viewport. Just soemthing in the viewport without having to render. This aside, best release ever, I say that every time but this version feel like an exponential leap.
  46. 1 point
    untested but should work: // get 1-ring around points UT_ValArray<GA_OffsetArray> neighbourArray; gdp->buildRingZeroPoints(neighbourArray, NULL); // build HedgeInterface GEO_HedgeInterface hedgeInterface(gdp); // get neighbours of point 0 GA_OffsetArray neighbours = neighbourArray[0]; // init prims GEO_Primitive *prim1, *prim2; // iterate over neighbouring points for(int i = 0; i < neighbours.size(); i++) { // get half-edges between point 0 and neighbour GEO_Hedge hedge = hedgeInterface.findHedgeWithEndpoints(0, neighbours[i]); GEO_Hedge hedgeNext = hedgeInterface.nextEquivalentHedge(hedge); // get prims prim1 = hedgeInterface.hedgePrimitive(hedge); prim2 = hedgeInterface.hedgePrimitive(hedgeNext); } // clean up if(hedgeInterface.haveHedgeTopology()) hedgeInterface.destroyHedgeTopologyLinks(); hth. petz
  47. 1 point
    toggles = [p for p in node.parms() if p.parmTemplate().type() == hou.parmTemplateType.Toggle] toggles = [p for p in node.parms() if isinstance(p.parmTemplate(), hou.ToggleParmTemplate)] Not sure which is better.
  48. 1 point
    Try setting os.environ["JOB"] from Python, and then calling hou.allowEnvironmentToOverwriteVariable("JOB") before loading your .hip file.
  49. 1 point
    Hi, I recreated this setup and I tried to keep it simple I voronoi-fractured sphere, in simulation I import Cd attribute from SOPs and use it as mask for applying force and noise. I also remove red points from group of constrained points. Juraj jt_fracture_cloth.hipnc
  50. 1 point