Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by Atom

  1. Thanks, for the tip, I'll give that a try next time.
  2. Does anyone know how to install fonts on Ubuntu 18.04? I used the standard right-click Open With Fonts, and the INSTALL button. After a reboot, Gimp can see my new font, but Houdini can't?
  3. Raining Fuel (No Clustering)

    Now with synchronized large chunk fracture. I've activated Impact records on the PopSolver and use that to generate all the impact points. There is no constraint network, only managing the i@active attribute for the pre-fractured pieces. Trying to keep the scene as light weight as possible. Timed metaballs appear, hold in place, and disappear at the impact points to introduce force on the newly activated pieces. ap_raining_fuel_trails_fracture_111919.hiplc
  4. A simple exercise to deposit fuel at impact points that are generated from a particle system. No clustering used. ap_raining_fuel_111719.hiplc
  5. Raining Fuel (No Clustering)

    Here is a modification where the impact particle is set to slide. A trail sop is used to generate a line length, for the sliding particle, which is turned into a tapered polywire. The sliding polywire becomes the fuel source. ap_raining_fuel_trails_111819.hiplc
  6. Raining Fuel (No Clustering)

    Here is an update with obstacles, sliding fuel sources, randomized fuel shape and strong prevailing winds. ap_raining_fuel_111819.hiplc
  7. Timeline markers?

    Yes, if you only put a single set of keyframes on the NULL. When you select the NULL, keyframes from other objects are no longer displayed in the timeline, but the NULL keyframes will be displayed instead. You can use CTRL-RIGHT/LEFT arrow to jump to them. It does introduce the selection dance to your workflow, but is an existing way to emulate that feature. I personally don't miss timeline markers at all.
  8. Timeline markers?

    You can always key frame a null, those values will show up in the time line. You can think of those as markers. Select the null and use the jump to next keyframe button.
  9. That is a fun one to play around with.
  10. Selection To Object Merge

    This has come up quite often for me when working with imported static FBX files. Often you will get every little piece of a model inside it's own geo object but you really just want to work with them all as a single mesh. This script will examine your node selection and create a new /obj level object that will object merge in all the nodes selected into a single merge. Then you can just use that single node to represent your model. (i.e fix up normals, detail materials, prepare for simulation, export etc...) import hou THRESHOLD = 0.015 def luminance(pixel): return (0.299 * pixel[0] + 0.587 * pixel[1] + 0.114 * pixel[2]) def is_similar(pixel_a, pixel_b, threshold): return abs(luminance(pixel_a) - luminance(pixel_b)) < threshold lst_user_selection = hou.selectedNodes() if len(lst_user_selection): # Make a geo node that will ObjectMerge in all the nodes in the selection. node_geo = hou.node('/obj').createNode("geo","geo_merge_result") if node_geo: node_geo.moveToGoodPosition() #node_geo.node('file1').destroy() node_merge = node_geo.createNode('merge') node_merge.moveToGoodPosition() # Create a normal to fix up everything after the merge. node_normal = node_geo.createNode("normal","normal1") node_normal.setInput(0, node_merge) # Create a NULL for our output placeholder. node_normal.setDisplayFlag(True) node_normal.setRenderFlag(True) node_normal.moveToGoodPosition() # Create a NULL for our output placeholder. node_null = node_geo.createNode("null","OUT") node_null.setInput(0, node_normal) # Create a NULL for our output placeholder. node_null.setDisplayFlag(True) node_null.setRenderFlag(True) node_null.moveToGoodPosition() for (n,node) in enumerate(lst_user_selection): print node.name() node_temp = node_geo.createNode("object_merge",node.name()) node_temp.parm('objpath1').set(node.path()) node_temp.parm('xformtype').set(1) node_temp.moveToGoodPosition() assign_by_node_color = True if assign_by_node_color: # Use the color of nodes to inherit the same @shop_materialpath. s = "rs_DEFAULT" if is_similar(node.color().rgb(), (0.584,0.776,1.0), THRESHOLD): s = "rs_blue3" if is_similar(node.color().rgb(), (0.6,0.6,0.6), THRESHOLD): s = "rs_grey5" if is_similar(node.color().rgb(), (0.145,0.667,0.557), THRESHOLD): s = "rs_green5" if is_similar(node.color().rgb(), (1.0,0.725,0.0), THRESHOLD): s = "rs_yellow6" if is_similar(node.color().rgb(), (0.996,0.933,0.0), THRESHOLD): s = "rs_yellow5" # Create a wrangle to define our shop_materialpath. node_wrangle = node_geo.createNode("attribwrangle","attribwrangle1") node_wrangle.parm('snippet').set('s@shop_materialpath = "/shop/%s";' % s) node_wrangle.parm('class').set(1) node_wrangle.moveToGoodPosition() node_wrangle.setInput(0, node_temp) # Create a color to match the node color. node_color = node_geo.createNode("color","color1") node_color.parm('colorr').set(node.color().rgb()[0]) node_color.parm('colorg').set(node.color().rgb()[1]) node_color.parm('colorb').set(node.color().rgb()[2]) node_color.moveToGoodPosition() node_color.setInput(0, node_wrangle) node_merge.setInput(n,node_color) else: node_merge.setInput(n,node_temp) In this image the white areas were not part of the selection. The color of the nodes in the selection is forwarded into the object merge as an additional color node. There is also an attribute wrangle added inline to assign the @shop_materialpath based upon the color detected. This can convert objects with same exact material referencing multiple copies of the same material into a single /shop path material. You can adjust to /mat if needed.
  11. viscosity problem

    Try setting Particle Motion/ Reseeding/ Surface Oversampling = 36.
  12. Implement Kernel (maths) in Vex

    I guess basic velocity damping, in a GeometryWrangle can stop the expansion process, but it produces a strange dissolve effect, as an artifact. I couldn't seem to get the GasDamp node to have any effect.
  13. Implement Kernel (maths) in Vex

    Thanks for the file. Do you have any Solver configuration tips, that will limit expansion? It seems to expand forever...
  14. Volume - Outline Not Visible?

    Have you added any density to your empty volume? Volumes also don't show up, if you are in wireframe mode.
  15. You can also try using a pointreplicate, around your original large chunk points. When many points are around a single area, the fracture will surround them with smaller pieces. Another way is to leverage the debris, system, which releases particles around the seams of the larger chunks. You can copy smaller random rocks shapes to those generated points.
  16. FLIP SIM- Collision and Sticking Problem

    Thanks for the additional information. I can see the exterior band voxel bounding box change, when alter the value. I never really played around with that. Getting closer, though.
  17. FLIP SIM- Collision and Sticking Problem

    That is a nice example file. Do you have any tips on keeping some of the fluid "stuck" to the collision object. I would like the strawberry to be coated in chocolate, even after it spins around and throws some of the fluid off to the sides. I tried increasing Surface Tension and Viscosity, but the fluid still won't stick? Are exterior bands the same as narrow bands? I'm not really sure where that setting is located? I noticed the solver is unlocked in your example. Did you make changes to the solver itself?
  18. Uhg, that is the problem with redshift. There is always another override you have to do. I mean why do we need a special override for "UserData" when we are already extracting the attribute, automatically?
  19. I would agree that is a 100% Redshift bug. You might want to report it. The only other thing to try, is to override both materials on the tree. I don't know what the trunk material name is, so I can't test that theory. It might be that on a multiple material object, if you override one, you have to override them all. Try dropping down a material in /shop that matches the name of the trunk.
  20. power of gas repeat solver

    This original H12.5 technique, using the gasrepeatsolver, no longer seems to work. I have changed the file using the newer method, described in Andrew's H15 video on the topic. ap_gas_repeat_explosion_retime_collision_102519.hiplc
  21. Ring pyro burst

    It's hard to say, without seeing the hip file. Are you deriving velocity from normals? Some times, the last point on a path can go astray. That last point of the circle, may have a normal pointing in the wrong direction, thus causing the velocity to head off in the stray direction..? If you are using a Gas Curve Force, once it reaches the end of the path, it continues in the last known direction.
  22. I'll often create another GEO node, use an ObjectMerge to bring in the geo_skin node. Drop down a transform, after the ObjectMerge to scale it. This also allows you to create a collision object from the geo_skin, as well. There is a Note, inside the HDA that explains that scaling is disabled because DualQuaternion skinning does not support that. So dive inside and read the notes.
  23. Ring pyro burst

    Try the surface project, non-divergent, applied to a torus. http://www.tokeru.com/cgwiki/index.php?title=HoudiniDops#Pyro_stick_to_surface_with_project_non_divergent_sop
  24. I don't think I would use a floor for that. Maybe try... int rnd_index = int(fit01(rand(@ptnum+ch("seed")),1,50)); The nature of random numbers is that you might not get all 50 variation, while processing 50 points. To achieve that consider randomizing a list/array and using the point number as an index into that list. https://www.sidefx.com/forum/topic/52579/?page=1#post-236406