Jump to content


Popular Content

Showing most liked content since 12/20/2018 in Posts

  1. 11 points
    Hi everyone, Herer's a little personal project I did over the last year. No keyframes where used for the animation. Each movement is generated through physical simulation or procedural noise. The Bananas and Pears are done in H16.5 using CHOPs controlled Bones and then fed into a FEM simulation. All the other fruits are done using H17 and Vellum. ÖBST: "How would fruits move if they could?" Hope you like it.
  2. 6 points
    what if the self buttons were creating DOP setups inside one SOP network instead of having a Geometry node, a DOP network for simulation and another Geometry node to import the data and save to disk. It makes much more sense to see the data flow from top to bottom in one network without having to jump to different levels for no reason. maybe it's just me... grains.hipnc
  3. 4 points
    Hi, Just posting some of my recent art. Most of it is houdini. Some is a mix of Houdini, Daz and Marvelous Designer. If you see a character, that's definitely from Daz. Everything is rendered in Octane. regards Rohan
  4. 4 points
    This operator allows you to call a collection of nodes on any data or simply no data (generators). It gives you full control over how the lambda function should be run.
  5. 4 points
    it's pretty straightforward out of the box just use v@N, v@up or p@orient on your instancing points in such a way that resulting reference frame has Y pointing in up-down direction of your ocean (so in normal direction of the ball) and X in the direction you want wind to blow in in your file, since v@N is pointing outwards and v@N defines Z axis, your ocean deforms in a tangential direction and therefore you are seeing weird deformation here is the modified file ts_ocean_on_ball.hip
  6. 3 points
    Was playing around with draping loose robes on characters. Instead of stitching panels I just made a very low poly model of robe-like shape around my high-res models, converted them to Vellum cloth and run a simulation. Quite pleased with the results.
  7. 3 points
    Hard to say witch one is best, both needs some fiddeling. Wire solver isnt that good to interact with other solvers, same goes with vellum. Heres a basic setup comparing them. wire_vs_vellum_01.hip Vellum is blue and wire is red
  8. 3 points
    Here is a concept for turning blueprints into simple 3d meshes. Its basically carving silhouettes into a volume. After getting the aspect ratio for defining the volume´s dimensions ... res_front = hou.imageResolution(img_front) res_side = hou.imageResolution(img_side) res_top = hou.imageResolution(img_top) ratio_side = res_side[1] / float(res_side[0]) ratio_top = res_top[1] / float(res_top[0]) geo.addAttrib(hou.attribType.Global, 'ratio_s', ratio_side, create_local_variable=False) geo.addAttrib(hou.attribType.Global, 'ratio_t', ratio_top, create_local_variable=False) ... a wrangle is carving the silhouettes into the volume from all three sides: vector bbox = relbbox(0, v@P); float mask_front = vector(colormap(image_front, bbox.x, bbox.y)).x; float mask_side = vector(colormap(image_side, bbox.z, bbox.y)).x; float mask_top = vector(colormap(image_top, bbox.x, bbox.z)).x; f@density = min(mask_front, mask_side, mask_top); The rest is a matter of converting to polygons, smoothing and remeshing. blueprint_to_geo.hiplc blueprints.zip
  9. 3 points
    here is an example with multiple holes of different position, rotation scale all petals are packed and reused among holes so it should be efficient even with thousands of them, the masking is happening only in the shader with the help of some attributes from SOPs to get the correct circular projection ts_mask_by_opacity_.hip
  10. 3 points
    couple of things: - you are finding 2 closest points, but excluding the first, since the first is the closest, you are risking the intersections with it - even checking just the first, will not guarantee no intersections, cause closest point can have small radius so it can satisfy the distance constraint, but the second or third closest can have big radius and actually intersect you new point even though it's further, so you'd have to check all points within 2*maxpscale radius - to avoid all this, use pcfind_radius() which directly checks against pscale intersections, also you can directly use uvdist() to avoid having uvmesh here is modified code and the file: int primid; vector primuv; vector pos_uvw = rand(@Time) * {1, 1, 0}; float dist_uv = uvdist(1, "uv", pos_uvw, primid, primuv); if( dist_uv < 1e-5 ){ vector pos_geo = primuv(1, 'P', primid, primuv); float rad_pt = fit01( rand(@Time + 45), 0.02, 0.1 ); int pts_close[] = pcfind_radius(0, "P", "pscale", 1, pos_geo, rad_pt, 1); if( len(pts_close) == 0){ int pt_add = addpoint(0, pos_geo); setpointattrib(0, 'pscale', pt_add, rad_pt, 'set'); } } dart_throwing_mod.hiplc
  11. 3 points
    Hola everybody, Here is my new showreel. Some shots than i've been to work on this year and a half. Hope you enjoy!
  12. 3 points
    I don't think so, but it's relatively straight forward exploiting the sort functions i[]@arr1 = {0, 30, 1, 47, 48}; i[]@arr2 = {0, 41, 48, 1341, 1}; function int[] sorted(int arr1[]; int arr2[]) { int _arr1[] = sort(arr1); int _arr2[] = sort(arr2); int result[]; foreach(int i; _arr1) { foreach(int j; _arr2) { if (i == j) push(result, i); } } return result; } i[]@arr_sorted = sorted(i[]@arr1, i[]@arr2);
  13. 2 points
    vu_vellumTommyMarshmallows.hiplc Anyone who laughs at this.......is a sadist.
  14. 2 points
    Yes its kinda cool. Played around with a similar setup a year ago, maybe i should try to find the files and give it another try. Easy way to kill your machine atleast
  15. 2 points
    in H17 you can append Point Velocity SOP or Attribute Noise SOP to add noise to your points velocity attribute
  16. 2 points
    You can try putting "pressure" as the control field for your turbulence. Then you can work with the ramp so you can control where it will be working (high pressure or low pressure areas). Visualize it so you'll have a better visual feedback to understans what's happening. Cheers!
  17. 2 points
    For the rotations you take (PI * radius)**2 and add that to the translation. You'll probably want to convert from radians to degrees. So for a circle translating in X and rotating in Z you could put something like this in the Z rot parameter... -deg(pow($PI * (bbox(opinputpath(".", 0), D_XSIZE)/2), 2) + ch("tx"))
  18. 2 points
    sticky pillows....ewl.... vu_vellumstickyballs2.hiplc
  19. 2 points
    here's a basic setup... vu_vellumstickyballs.hiplc
  20. 2 points
    I tried something with chops but its not far as good as in your reference. I think its possible to do it better with that technique but I´m not so far yet. Hip File is attached. If someone has a better idea or can extend this technique I would also be interested in. dynamicBones_01.hipnc
  21. 2 points
    I just created a tutorial on how to convert a sequence of slice images to a volume using VEX. slices_to_volume.hiplc
  22. 2 points
    This does not help with guiding the flow around the outside, but it does demonstrate how to push smoke from one shape into another. In this example the smoke starts off as a sphere and is forced into the new position using a GasTargetForce node. The strength of that node is animated to match a cross fade between two different density shapes, the sphere and the torus. This example uses pre H17 sourcing techniques. ap_smoke_gas_retarget_011219.hiplc
  23. 2 points
    Hi Thomas, here is some Python code to create a grid based on a multi-line string: node = hou.pwd() geo = node.geometry() text = node.evalParm('text') lines = text.splitlines() numbers = [map(int, line.split(';') ) for line in lines] geo.addAttrib(hou.attribType.Point, 'instance', -1) for row, n in enumerate(numbers): for col, value in enumerate(n): pos = (col, 0.0, row) pt_add = geo.createPoint() pt_add.setAttribValue('instance', value) pt_add.setPosition(pos) copy_to_grid.hipnc
  24. 2 points
    hey! here is a basic setup with some ideas how to get started : ) hope this helps- text.hip
  25. 2 points
    not by default, but just open Hotkey Manager (Edit/Hotkeys..) and set your custom hotkey for Houdini/Panes/Network Editor/Reconnect Around Selected
  26. 2 points
    here's one way...I put the polyframe in there just in case...but wasn't even needed. vu_rectangular rod.hiplc
  27. 2 points
    I just found out about the radial basis function (RBF) in Scipy.interpolate, which does an even better job at interpolating between irregular points. As it does not use delaunay, it also lost the trianglish appearance it had before. RBF looks way smoother than what you´d get from Attribute Transfer SOP, too. Btw: Does someone know, how to make the same code work with vector arrays in NumPy? I tried it in the commented lines, but currently I have to use three separate arrays for each color channel and therefore call each function three times, as well : ( import numpy as np from scipy.interpolate import griddata import scipy.interpolate as interp node = hou.pwd() geo1 = node.geometry() inputs = node.inputs() geo2 = inputs[1].geometry() method_nr = node.evalParm('method') method_names = 'multiquadric,inverse_multiquadric,gaussian,linear,cubic,quintic,thin_plate'.split(',') method_str = method_names[method_nr] grid_x = np.array(geo1.pointFloatAttribValues('px')) grid_z = np.array(geo1.pointFloatAttribValues('pz')) color_r = np.array(geo2.pointFloatAttribValues('cr')) color_g = np.array(geo2.pointFloatAttribValues('cg')) color_b = np.array(geo2.pointFloatAttribValues('cb')) #color = np.array(geo2.pointFloatAttribValues('Cd')) #np.reshape(color, (30, 3)) pos_x = np.array(geo2.pointFloatAttribValues('px')) pos_z = np.array(geo2.pointFloatAttribValues('pz')) rbf_red = interp.Rbf(pos_x, pos_z, color_r, function=method_str) rbf_green = interp.Rbf(pos_x, pos_z, color_g, function=method_str) rbf_blue = interp.Rbf(pos_x, pos_z, color_b, function=method_str) #rbf_color = interp.Rbf(pos_x, pos_z, color, function=method_str) smooth_rbf_red = rbf_red(grid_x, grid_z) smooth_rbf_green = rbf_green(grid_x, grid_z) smooth_rbf_blue = rbf_blue(grid_x, grid_z) #smooth_rbf_color = rbf_color(grid_x, grid_z) geo1.setPointFloatAttribValuesFromString("clr_r", smooth_rbf_red.astype(np.float32)) geo1.setPointFloatAttribValuesFromString("clr_g", smooth_rbf_green.astype(np.float32)) geo1.setPointFloatAttribValuesFromString("clr_b", smooth_rbf_blue.astype(np.float32)) #geo1.setPointFloatAttribValuesFromString("Cd", smooth_rbf_color.astype(np.float32)) scipy_grid_to_color_points.hiplc
  28. 2 points
    it automatically loads all images of the sequence as z axis of the volume
  29. 2 points
    That should be fairly simple do achieve as long as you have a your images in an ordered list (img_1.tif, img_2.tif, img_3.tif, ...) in a volume wrangle, use the texture function to read the image RGB values > luminance to convert to greyscale and set the volume density using that value. getbbox, to convert x,z to u,v coordinates and the y coordinate as your image index. something like this: // number of images int lastImageIndex=30; // get bounds vector bmin,bmax; getbbox(0,bmin,bmax); // create u,v,imageIndex(y coordinate) float u = fit(@P.x,bmin.x,bmax.x,0,1); float v = fit(@P.z,bmin.z,bmax.z,0,1); int imageIndex = int(fit(@P.y,bmin.y,bmax.y,0,lastImageIndex)); // create imageName, sample RBD, convert to greyscale and write to density string imageFileName = “/path/image_”+itoa(imageIndex)+”.tif”; vector color = texture(imageFileName, u, v, "pixelblur", 2.0); float greyscale = luminance(color); @density = greyscale; hope that makes sense.
  30. 2 points
    Yep, it's a bitch! A lot of older tutorials will encourage you to use Copy Stamping, but it's mostly a deprecated workflow as of Houdini 16. If you want more information about all this template point / copying business, take a look here: http://www.toadstorm.com/blog/?p=493
  31. 2 points
    AMNH in NYC is looking for a TD to fill a year long spot on our next planetarium production. See details here: https://careers.amnh.org/postings/1718 We're also potentially looking for a few modelers and Maya/Houdini lookdev artists to help develop spacecraft models and planetary elements over the course of production, and a Nuke compositor later in the summer. Staff position is on-site, and freelance gigs are preferred on-site but we could work remotely with the right person. Our shows are regularly considered among the best in the field and emphasize accuracy and making cutting edge scientific data visualization accessible to a general audience. Two examples of previous shows: https://www.amnh.org/exhibitions/space-show/dark-universe https://www.amnh.org/global-business-development/planetarium-content/passport-to-the-universe This is a very small commercial size team working on a medium length production with a reasonable schedule, which could be a nice change of pace from either commercials or film, depending on which way you look at it. The content is typically pretty technical and substance always wins over style here. The TDs often end up doing a wide range of work from camera layout, to FX, to graphics programming and Python scripting. And for you Houdini nerds, Houdini is our core production package for most content creation and rendering. Email Gavin Guerra (gguerra@amnh.org) or me at my AMNH email (jpparker@amnh.org) for more info. -Jon
  32. 2 points
    I am still amazed at how quickly you can build complexity with Houdini. This scene has just a few nodes - sphere, spring, add, copy stamp, poly wire - and result looks rather good, even if I say so myself
  33. 2 points
    seems to work for me, this was executed in hython process run from command line aa = hou.node("/obj").createNode('alembicarchive') aa.parm('fileName').set("default.abc") print("Has UI: {}".format( hou.isUIAvailable() )) print("Subnet Content before update: {}".format( aa.children() )) aa.parm('buildHierarchy').pressButton() print("Subnet Content after update: {}".format( aa.children() )) output Has UI: False Subnet Content before update: () Subnet Content after update: (<hou.ObjNode of type alembicxform at /obj/alembicarchive1/gabc>,)
  34. 2 points
    or don't use loop just Poly Extrude in Individual Components mode, check Distance Scale in Local Attributes, put your prim attribute name in there, and play with Distance slider the distance will be multiplied by values in Distance Scale attribute per component
  35. 2 points
  36. 2 points
    ' and insert are different for some handles both will appear to do the same thing, however if the handle has pivot parameters actually bound, insert will modify them so if you just want to detach/attach handle to the geometry you may want to stick to the ' the workflow is the same ' ; snap ' transform
  37. 2 points
    a more flexible way would be to pack every individual shape piece beforehand, pass as a single geo and then just isolate piece you want per point within foreach this will give you flexibility of having any number of shapes without having to modify your network testc_3.hip
  38. 2 points
    You need to give the pop replicate the same stream name as your poplocation, here is a fix. cell_division._FIXhiplc.hiplc
  39. 2 points
    You could try PolySoups + Packed Prims to efficiently get super high geometry counts. One of the SESI devs did that to render a trillion cubes: https://www.sidefx.com/forum/topic/30134/#post-138595
  40. 2 points
    Hi. I attached my version of the tool. Hip file. H17+ tmp3.hiplc
  41. 2 points
    there is a plugin which reads FBX, and it's up to Adobe to not cripple their software but open it natively to abc/fbx instead of SideFX developing something! use a subnet either click 'move to centroid' and then reset the transform values or make yourself a preset with $CEX, $CEY, $CEZ for pivot. There's no need to cram the interface with a ton of options you can easily make yourself play with screen window size. yes, it's not the most user friendly way but it works lights have a handle to orient them towards a point. (just tried it with point and spotlight but the others have that too i think) Lasso select (F3) when rendering to mplay it shows the rendertime for each frame top right corner use output node
  42. 2 points
    A lot of people asked me to share this fake fire method.If you interested it, you can will check this simple hip. After rander i used ACES for a better look. fake_fire_rnd.hip
  43. 1 point
    Here is my first attempt at fluids - recreating Daredevil intro effect with sticky fluid revealing shapes. https://vimeo.com/310978326 Comments appreciated
  44. 1 point
    Ah, that's a good idea! I find translating tutorials to be pretty great, trying to make this in /mat currently:
  45. 1 point
    It could be because the box isn't a volume. Try putting an isoffset before the scatter Let me know how you get on
  46. 1 point
    One of the possible options (if you are looking for a procedural solution) is a Space Colonization Algorithm. Here is an example file. In case of leaves, you would need to scatter points on a flat surface instead of the volume.
  47. 1 point
    oh sorry, i forgot to attach that hipfile. will do once i get back to my desk. i just rewired your setup a bit and it really isn't any slower.
  48. 1 point
    Generally speaking, things which are threaded: Anything written in VEX (wrangles, shaders) Anything written in OpenCL Mantra Many sim solvers, especially for volumes and particles COPs Things that aren't: GL Rendering, UI Expression and python evaluation Many nodes are threaded, but this varies on a node-by-node basis.
  49. 1 point
    And another one - based on the well known spider web tutorial by Tolya Shuverov. I added dew and a simple procedural spider with feet that always place themselves onto the closest thread... Cheers, Tom
  50. 1 point
    Hey Atom, Another way you could write it in vex which is similar to what you had is the point sop is: float freq, amp; vector pos = @P; freq = chf("freq"); amp = chf("amp"); pos.x += sin(pos.y * freq) * amp; pos.z += cos(pos.y * freq) * amp; @P = pos;