Jump to content


Popular Content

Showing most liked content since 07/16/2021 in all areas

  1. 1 point
    Hi, Great idea than one can wrap the node verb function around a decorator to limit the cook time. Found this tread that help me implement the decorator if anyone else is interested: https://stackoverflow.com/questions/492519/timeout-on-a-function-call Test Code for Houdini: import sys import threading from time import sleep try: import thread except ImportError: import _thread as thread def quit_function(fn_name): print(str(fn_name) + ' took too long') thread.interrupt_main() # raises KeyboardInterrupt def exit_after(s): def outer(fn): def inner(*args, **kwargs): timer = threading.Timer(s, quit_function, args=[fn.__name__]) timer.start() try: result = fn(*args, **kwargs) finally: timer.cancel() return result return inner return outer @exit_after(2) def countdown(n): # some function that can be run within Python SOP print('countdown started') for i in range(n, -1, -1): print(str(i) + ', ') sleep(1) print('countdown finished') try: countdown(5) except: print('do something else') Tesekkurler Yunus!
  2. 1 point
    Hi! Click the little plus sign to add a new Pane Tab and set the type to Redshift RenderView.
  3. 1 point
    Oh You can use copy to points?
  4. 1 point
    Hey Everyone, Digic Pictures is now hiring for Freelance Houdini FX Artist position! If interested, please apply here: https://digicpictures.hrfelho.hu/job/47/freelancer-effect-artist
  5. 1 point
    I can't pretend to always understand you but i always curious and found interest in your post Tesan
  6. 1 point
  7. 1 point
    Thanx to Asia Forums
  8. 1 point
    Hi, thought I'd share this in this section too: I wrote an article for the german “Digital Production” magazine about my free LYNX VFX toolset. For the article I made a couple of renderings using the LYNX fabric tools. Luckily it even made the cover Here are my personal favorites, the rest of the images can be found on Artstation. You can also find the complete scene on GitHub under the Demo Files. So now anyone can design an ugly Christmas Sweater;) Looking forward to seeing what you guys come up with, enjoy! Links: LYNX VFX Toolset Odforce Thread: https://forums.odforce.net/topic/42741-lynx-free-opensource-vfx-pipeline-tools/ LYNX VFX Toolset (Sweater Scene File included): https://github.com/LucaScheller/VFX-LYNX Artstation (HighRes Renderings): https://www.artstation.com/artwork/OyeY6g Digital Production Magazin: https://www.digitalproduction.com/ausgabe/digital-production-01-2020/ Alternatively view the article in my latest blog post: https://www.lucascheller.de/vfx/2019/12/15/ynybp7wpiqtshoy/
  9. 1 point
    Feature Request: Can we have Houdini remember the last Window Size and location? I open Redshift and resize the Render View window, and when I close the window and open up again in a few minutes it is in the default location. Also, for pop up dialogs, they seem to open in most inconvenient places, like top right, and minimised, have to resize them, make a selection etc. Next time they are opened they are in the defaul position. This would be a great little time saver.
  10. 1 point
    It would be awesome if Houdini would allow models to get high amounts of resolutions for sculpting like in Zbrush.
  11. 1 point
    Simply put, n-gons and tris disrupt edge flow and can be a hassle to work with if you are applying subdivisions. Tris are somewhat forgiven because they resolve triangulation ambiguity (which sometimes causes normals-related issues with non-planar quads), but n-gons usually subdivide into a weird quad-pole due to the nature of the algorithm. There are methods to resolving such issues, such as adding supporting edge loops via insetting or bevels, but it's entirely within the realm of feasibility to not introduce problems in the first place.
  12. 1 point
    Nice Stuff.----s
  13. 1 point
    Hi, it's been a long time and still I benefit from you share @Juraj Thank you, that's why forum always worth than Fb
  14. 1 point
    Cyma Cimatics.mantra1_0000.mov
  15. 1 point
    polyextrude still needs a reverse checkbox. So you can extrude negative and not have to drop a reverse node every time.
  16. 1 point
    There is a nice method using a ray SOP to detect and avoid intersections too, it's explained in this tutorial:
  17. 1 point
    Not long ago I was tasked with a simulation of bags of hard candy falling and splitting open on the floor, with the candy of various shapes and sizes spilling out. This turned out to be way harder then I thought. There is really no built in way for vellum and bullet dynamics to interact with each other in Houdini. After searching the internet, I did find one tutorial on kind of faking the interaction, but it seemed overly complicated to me. So after a bit of R&D I came up with this setup. Its very simple and fast, and solves both the vellum and bullet sims in one network at the same time: It basically works by importing the RBD geo into the vellum collision solver, and the vellum geo into the bullet solver. The mass of the RBD has to be faked in somewhat, so it interacts with the cloth in a more realistic way, but that's it! See hip for example: vellum_x_bullet.hip
  18. 1 point
    With the help of both the Redshift community and resources here, I finally figured out the proper workflow for dealing with Redshift proxies in Houdini. Quick summary: Out of the box, Mantra does a fantastic job automagically dealing with instanced packed primitives, carrying all the wonderful Houdini efficiencies right into the render. If you use the same workflow with Redshift, though, RS unpacks all of the primitives, consumes all your VRAM, blows out of core, devours your CPU RAM, and causes a star in nearby galaxy to supernova, annihilating several inhabited planets in the process. Okay, maybe not that last one, but you can't prove me wrong so it stays. The trick is to use RS proxies instead of Houdini instances that are in turn driven by the Houdini instances. A lot of this was based on Michael Buckley's post. I wanted to share an annotated file with some additional tweaks to make it easier for others to get up to speed quickly with RS proxies. Trust me; it's absolutely worth it. The speed compared to Mantra is just crazy. A few notes: Keep the workflow procedural by flagging Compute Number of Points in the Points Generate SOP instead of hard-coding a number Use paths that reference the Houdini $HIP and/or $JOB variables. For some reason the RS proxy calls fail if absolute paths are used Do not use the SOP Instance node in Houdini; instead use the instancefile attribute in a wrangle. This was confusing as it doesn’t match the typical Houdini workflow for instancing. There are a lot of posts on RS proxies that mention you always need to set the proxy geo at the world origin before caching them. That was not the case here, but I left the bypassed transform nodes in the network in case your mileage varies The newest version of Redshift for Houdini has a Instance SOP Level Packed Primitives flag on the OBJ node under the Instancing tab. This is designed to basically automatically do the same thing that Mantra does. It works for some scenarios but not all; it didn't work for this simple wall fracturing example. You might want to take that option for a spin before trying this workflow. If anyone just needs the Attribute Wrangle VEX code to copy, here it is: v@pivot = primintrinsic(1, “pivot”, @ptnum); 3@transform = primintrinsic(1, “transform”, @ptnum); s@name = point(1, “name_orig”, @ptnum); v@pos = point(1, “P”, @ptnum); v@v = point(1, “v”, @ptnum); Hope someone finds this useful. -- mC Proxy_Example_Final.hiplc
  19. 1 point
    Many ways to do this. My take: Put a timeshift node after the file node and add foreach point with the copy to points node second input in the loop coming from the line (look at the picture of the graph). Click on the Create Meta Input Node. When it creates the node, rename it to something shorter, which you can find later, for example, "shift_iteration". Go to your timeshift node and add a new integer parameter in your parameter interface (in my case I called it shift). Edit the Frame parameter in the timeshift node - the default is $F, but you can add data which comes from for-loop by using detail function and taking the value of the attribute "itteration" on the Meta Input Node (in this example: "shift_iteration"). You can check the detail function in documentation, but it is very simple - detail("addres_to_the_node", "attribute_name", index). Multiply this value to the offset parameter by using ch() function and delete it from the current frame ($F). The full expression in your timeshift frame parameter will be: $F-detail("../shift_iteration", "iteration", 0)*ch("shift"). By changing the value of the shift parameter on the timeshift node you are making the animation to delay number of frames you define it. If you want them to start at random times, you can either use the sort node at the line, to change the ptnum attribute. Or you can use another expression on the new parameter, by putting shift_iteration into rand function. Good luck
  20. 1 point
    I don't know why in your setup the transfer only works partially, but you can effectively use an attribute from Volume. You just have to be careful that when in your vdbFromPolygon, to host your uv, you create a second VDB. For attributeFromVolume to use the right VDB, you have to delete the VDB density. (Just call @name=uv group in the attributeFromVolume don't work for me). However, on the edges, it's not perfect. I'm also not sure what the proper procedure is. uv_Volume_F.hip
  21. 1 point
    12. lesson Vdb -Volumes. Rocks and Cream (endless possibility) Learned (odforce- you can find here everything)..trick from--- houdinifx.jp/blog/
  22. 1 point
    And with excellent file from Akira Saito and some old stuff(Sliced Boy) from some forum H or from here, I can make( endless possibility and cut every mesh and make fun stuff. slicedBoyFromUVs.rar
  23. 1 point
    Learning more about noise- Polar cords ( how to make those Haeckel figures and attribute mirror ) and using @petz examples. I found something nice (because it's in Vops) so I like it, its file from Raphaël Gadot ..Mestela approach nice talk ( Hypercubes ) and combining with Qlib ...Need to learn more about, for-each, how to isolate those primitives-curves? More to learn. file from Gadot .. hypercube_rotation_simple.hipnc
  24. 1 point
    Progress between lessons. Must learn expression and more about delete frames ( `ifs($F<4, 0, '24-29')` , restposition ojoj oj , too much fun, too much to learn. But it's the progress that feels the best.
  25. 1 point
    10 lesson. More patterns and more attributes, now learning about promoting and intersections, combining with colors( and using in solver with vertices) ., and how to project those patterns to some other 3d figures (shapes ) Learned a lot from Anastasia Opara ...and ...wordpress.discretization.de/houdini/... projectione from cgwiki Now having fun with NURBS modeling like a Rhinoceros with wonderful examples from @Aizatulin that I hope in the future he does more stuff
  26. 1 point
    9 lesson. Now I must learn more about triangle carve and generally how to find in triangle something else . I found this Dude @sweetdude09 and @petz thanx for lessons and examples. I always wanted to have in Houdini (procedural for a tattoo , UI, Fui, Gui, UNx, Mechanic shapes, etc) roof tutorial @konstantin magnus Basically triangles in copy stamp bunch of ...endless possibility... then a group by the edge with various angle and just finding those shapes with some luck.
  27. 1 point
    8 lesson. Now, this must move-Dance, have fun basically. Solver Dops Pio MIo L-system (build everything, mostly fun with Architecture). Just copy paste and use some shapes with some accurate normal DIR you can build funny stuff. I learned a lot from Yancy Lindquist. Solver Like solver solver (repeating) . For lazy people Ameba file. I use Houdini 16.5 Ameba.hipnc
  28. 1 point
    7 lesson . Playing with splines phyllotaxis and Helix and @rdg files (Lerning more about Mantra render) Used file nature
  29. 1 point
    5 lesson. Learned more about Groups and polygons, and how to connect those in the right way(Resample Geometry node) .Thanx to @konstantin magnus wonderful tutorials on youtube. Then, how to import and export data curves to geometry and manipulate different attributes. Funny how everything connects in such a beautiful way Hm. Mainly goal to achieve (Cell) recommend visiting------ Bastian J. Schiffer and Tesla's fan (Vimeo).
  30. 1 point
    4 lesson . I learned more about colors, for-each and chops from ( 簡單黎講 C Plus Plus [廣東話, Cantonese] and Jaroslava Chalásová(vimeo).
  31. 1 point
    Here is a file with three ways to do it in sops, tops, and in python. There are a lot more ways to do it too as Twan has mentioned to game the system too. There are RFE's to have this option too added at some point... FBX upgrades are not common. They actually just made the code open source for the FBX rop. fbx_sequence.hip
  32. 1 point
    you can't use VEX as parameter expression language, all tools with parms that accept VEX are referenced by Snippet VOP as a part of VOPnet where it gets evaluated, in other words it's treated as pure text until compiled by VOPnet, so it's very specific case, and can't be generalized for all parameters for python the usage would be hou.node("../box1").geometry().boundingBox().sizevec()[1] OR hou.pwd().inputs()[0].geometry().boundingBox().sizevec()[1] also for the confusing meaning of "replaced by" you can read this https://www.sidefx.com/forum/topic/57809/#post-258876
  33. 1 point
    hip file if anyone wants to take a look! planksv9.hipnc
  34. 1 point
  35. 1 point
    Ok, here is my rework of your scene, not sure if it is right. Here is what I changed. Inside the popnet you want to keep an eye on how the merges work. Some merges work based upon left input affecting right input and others work based upon a mutual relationship. In shelf tool configurations, static is always on the left of what it is colliding with. Then RBD is mutual. I re-wired the nodes to reflect this. I also added gravity to the scene. Once you have a popnet output with colliders, you have to make sure you don't import the collision geometry as the popnet result. So alter your ObjectMerge on the popnet to remove the ground plane and the bench like so. This will give you only the particles as the result. * ^rbdobject1 ^groundplane1 ap_Hand2.hiplc
  36. 1 point
    Or if you're like me and you're local-variable-phobic, you can just type in the attribute as a VEXpression into the Wire Radius field. Eg; "@Cd.r"
  37. 1 point
    string whole = itoa((int) some_float); string fract = sprintf("%f", frac(some_float)); string result = whole + fract[1:4]; Here is what I used a couple of times.
  38. 1 point
    float a = 179.9996; string trunc = itoa(int(trunc(a))); int ifrac = int(rint(frac(a)*1000)); string frac = "000"; if (ifrac == 1000) { trunc = itoa(int(trunc(a)) +1); } else { frac = sprintf("%03d", ifrac); } s@result = trunc + "." + frac; Here the solution for string.
  39. 1 point
    Glad I helped Yes, you can get a lots of noise. But do not try to render everything in one pass. Do separate render pass with diffuse materials and this mesh light only. You can add it in comp as light is additive and you can set up your sampling to work more efficiently in this lighting scenario. Another idea would be like you said scattering 50 point lights inside volume and sampling their intensities
  40. 1 point
  41. 1 point
    Thanks for the tip @acey195 and @petz thanks for the solution. Here is the quick VEX snippet that I tested, works a treat! // Get Lines vector A = point(0, "P", 0); vector B = point(0, "P", 1); vector C = point(1, "P", 0); vector D = point(1, "P", 1); // Calculate Line Vectors vector AB = B-A; vector CD = D-C; // Calculate To Vector vector toVec = A - C; // Calculate Intersection vector vecx = cross(AB, CD); float val1 = dot(vecx, cross(CD, toVec)); float val2 = dot(vecx, vecx); vector pos = A + (val1 / val2) * AB; addpoint(0, pos);
  42. 1 point
    Basic: // Primitive wrangle. int pts[] = primpoints(0, @primnum); vector rest = point(0, "P", pts[0]); vector prev_pos = rest; matrix3 frame = ident(); for (int i = 0; i < len(pts); i++) { vector pos = point(0, "P", pts[i]); rotate(frame, 0.1, {0, 0, 1}); vector new_pos = (pos - rest) * frame + prev_pos; rest = pos; prev_pos = new_pos; setpointattrib(0, "P", pts[i], new_pos); } Advanced: // Primitive wrangle. #define TWO_PI 6.2831852 addpointattrib(0, "N", {0, 0, 0}); int pts[] = primpoints(0, @primnum); int npt = len(pts); // Loop variables. vector rest = point(0, "P", pts[0]); vector prev_pos = rest; matrix3 frame = ident(); for (int i = 0; i < npt; i++) { vector pos = point(0, "P", pts[i]); vector delta = pos - rest; rest = pos; // Make normal. Point normals could be used instead. vector normal = normalize(cross(cross({0, 1, 0}, delta), delta)); if (length(normal) == 0) { normal = {0, 0, 1}; } // Drive a shape with ramps and multipliers. vector axis; float ramp, angle; // Twist the bend axis. axis = normalize(delta); ramp = chramp("twist_profile", (float) i / npt); angle = fit01(ramp, -TWO_PI, TWO_PI) * ch("twist") / (npt - 1); rotate(frame, angle, axis); // Bend the curve. axis = normalize(cross(normal, delta)); ramp = chramp("bend_profile", (float) i / npt); angle = fit01(ramp, -TWO_PI, TWO_PI) * ch("bend") / (npt - 1); rotate(frame, angle, axis); // Compute new position and normal. vector new_pos = delta * frame + prev_pos; prev_pos = new_pos; setpointattrib(0, "P", pts[i], new_pos); setpointattrib(0, "N", pts[i], normal * frame); } curl.hipnc
  43. 1 point
    The Constraint Network DOP errors out because the 'constraint_name' primitive attribute is missing on the constraint network geometry.
  44. 1 point
    My bad I haven't mentioned that the point count is not constant (it's debris emission) and when i export with frame range on the alembic, only the points that were existent on the first frame are exported along with the animations they have on them for the length of the export range.
  45. 1 point
    Heat is a product of the burn field. Burn is generated each frame with something like. if temperature > ignition temp burn = fuel * burnrate Heat is then created with max(burn,heat) and advected. In other words, heat is created at places with fuel and high temperature. Temperature may exist anywere.
  46. 1 point
    Particles advected through the volume is how I do it. Because divergence is so challenging to control. A divergence density value from say 0.4 to 0.6 can be very dramatic in it's effect. Particles offer great control for this. If you have a pyro sim, you know that temperature and burn are used to map in to the divergence field so you could affect temperature or burn. Diving in to the Pyro solver, the logic is in the combustion grey network box. More specifically in the gascombustion1 DOP HDA microsolver and inside there is the update_divergence which is a Gas Linear Combination that takes the divergence field and adds burn at it's rate (100% by default and tempdiv which is driven by heat and burn fields. So heat and burn can be modified to affect divergence if you want to keep within the confines of the Pyro Solver. Note that the divergence field is wiped clean prior to the fourth input to the Pyro Solver giving you a clear slate to pound in whatever divergence you want in to the sourcing input. As divergence increases from 0-1, it essentially allows velocity values in that divergence field to expand or contract. Essentially a bypass to the non-divergent step where any +ve or -ve pressure is removed when divergence is at 0. Remember that the Project Non-Divergent microsolver DOP is adding all the behaviour to the sim beyond the introduction of the source velocity. The Multigrid variant solver only takes vel and divergence fields and creates a pressure field that then is used to remove the pressure in the velocity field. It's cool to know that the ENTIRE Smoke Solver with all it's various fields ultimately boils down to vel and divergence when using the Project Non-Divergent Multigrid DOP. On the other hand, the PCG method takes collision based fields as well. So yeah, divergence is a key player in the rapid expansion of fluid sims. Bunker has a great file submitted from way back on the OdForce forums that shows you how to advect particles to affect divergence in a smoke simulation. You can also add vorticles using the Seed Vorticles shelf tool (in Container Tools) to your simulation and then hack away at this to add divergence fields instead of vorticity, or both. It has a nice feature where vorticles are recycled at the boundaries. You can use the particles to carry any number of attributes and then use Gas Particle to Field DOPs to populate ad-hoc fields that you can then use to modify Divergence with, or anything else for that matter. Sky's the limit.
  47. 1 point
    If I understand you correctly you should be able to do just that using a Point SOP. Just set the Position attributes to $MAPU and $MAPV and you should be ready to go. It might be necessary to make the points unique so you don't get weird results. -dennis mesh2uv.hip