Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by Atom

  1. Right Click on the SHELF tool and choose Edit Tool. Then pop over to the Scripts tab. You will see all the commands issued "silently" when you click the button.
  2. Redshift Volume Emission Problems

    When you see blockyness you need to re-think your Scatter to Absorption ratio. Your particular scene has a lot of density so you need to really drop it back. Also you can crop in the outer edge of density by moving the LEFT slider in the Emission gradient. I have notched the black color position over a bit.
  3. Atom's Video Tutorials

    In this video I demo a script that will scan a folder for .OBJ files and create a geometry object for each file it finds on the disk. I further demonstrate how to export those referenced files into the Redshift Proxy file format and construct a simple disk based instancer for fast render times. The script and code I reference in the video are attached in the ZIP file below. createSubnetOfFileNodes.zip
  4. Atom's Video Tutorials

    Hello Everyone, I put together a short video tutorial on how to use the particle system to break glue bonds that are holding together fractured geometry. You can view the video here: I have other videos posted in this link as well. http://forums.odforce.net/topic/17105-short-and-sweet-op-centric-lessons/page-5#entry127846
  5. Trigger an animation

    With a single object, the simplest solution is to move the starting keyframe for the sphere animation to the frame # where your point enters the box. But you may want to look into triggering an animation via instancing. ap_TriggerAnimation.hiplc
  6. [SOLVED]Flatten Terrain Floor?

    I guess instead of using SOP tools, you can use the height field tools. In this case I dropped down a heightfield paint in place of a selection. Then I can use the paint node as a mask into the heightfield blur which does smooth out the area I painted quite nice.
  7. I have this selection in a Terrain object and I would like to make the floor much more flat. What kind of VOP/VEX can I use to bring some points up and some points down? I guess I am looking for a kind of un-displace by normals?
  8. Crowd Questions

    Here are a few tips. I almost always create a companion goal position for every agent. You can animate this goal. It also helps with orientation because agents will face the goal. One way to handle collision is by animating the goal along a path that already avoids collision objects. Once again agents following goal. Crowd Triggers through custom VEX are always one frame off. They are evaluated on the next frame. So you can add attributes to agents and set the attributes on one agent from another. A classic example is a kill state in a combat system. One agent sets an attribute on another to indicate that it should transition to a dying animation. I put together a tutorial that shows how to setup what I mention above. It also shows how to treat the frame change as a render loop (i.e. classic game engine) and calculate new values for agents every frame, for instance, distance to goal. The video also shows how to setup the custom vex attribute system fro transitioning between states.
  9. I have a goat model and I would like to unwrap it using seams. Sometimes seams need to be open and sometimes they need to be closed. I am not sure what is the best/minimum number of seams to produce a cut that will cause uvflatten to display an unwrap in the form of a bear rug, for instance. Kind of like this... Here is what I have currently on my goat. Which produces this kind of layout.
  10. Quadruped Edge Seams For Best UV Unwrap?

    Thanks, I'll give that a try.
  11. Bullet Going Through a Mechanical Heart

    Try taking your drawn white arrow line and turning it into a 3D line with many points on it. Then point replicate after the line resample to produce a line with a noisy cloud of points running through the heart. Try to keep the point count managable because you are going to use those points as input to the voronoi fracture node. Then you should have fractures whose smallest pieces are nearest to the path the bullet travels along. At this point just glue your fracture together and use the bullet/sphere to break it apart. ap_bullet_glass_debris.hipnc
  12. There are a couple of setups close to what you want on Tokeru. Check out.. http://www.tokeru.com/cgwiki/index.php?title=HoudiniDops#Pop_advect_by_volume http://www.tokeru.com/cgwiki/index.php?title=HoudiniDops#Pop_stick_to_surface
  13. -nan(ind)

    I have a FBX file of a goat. There is an armature and a captured mesh which deforms via bone controllers. I would like to convert that into a FEM object but when I use the shelf tools the setup is always flawed. I have tracked this down to the fact that once the deform node is applied all points in the mesh turn into another/unsupported data type. What is a -nan(ind) and how do I get rid of that? FEM wants real points for input, not these erroneous values.
  14. 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 if len(hou.selectedNodes()): # 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(hou.selectedNodes()): 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.
  15. I'm not sure why this is happening, when I try to move my NULL object inside the subnet, using the handles in the viewport, nothing happens? When the attempted move is taking place all the parameters in the transform are are outlined in YELLOW/GOLD temporarily. Just outlined, not the solid color in the field like a driven or keyframed value. I can move it by changing the numbers in the parameter panel, however. I can rotate the NULL, but not move it? Is this some mode I am stuck in? How do I re-enable standard operation? Using H16.5.268
  16. Crowds with Marvelous Designer

    Try exporting an OBJ sequence out of MD instead. .OBJ was the only file format that seemed to work when I used Marvelous Designer. An OBJ with a companion .MDD file to transfer the animation. Be wary of FPS differences as well. I found that the step value for the animated cloth solver inside of MD was defaulted to 30fps. But more often than not, you may be working in 24fps. Once you have your mesh cache working you should be able to merge it into existing agent before you bake. Then the baked result will just be the combined meshes, the skin and the clothes.
  17. Have you checked your output size from COPs? (I don't have Houdini in front of me so I can't review your file) There is a size limit for COPs output on an Indie license. If you exceed that output size then the transfer will fail. Try a smaller size COPs output like 1024x1024...?
  18. Hi All, I was watching the Master Class on crowds for Houdini 15.5. There is an example file that shows how to add a hammer to an agents hand. I want to be able to add animated geometry to my agents and trigger the animation only when the agent enters a certain state. Here is an my simple attempt at animating the hammer spinning. Initially it works, but all animations are synchronized. Is there any way to trigger an animated layer? Specific case would be a dragon breath. What if I have a few dragons as agents and when they land I want a fire breath pyro simulation to occur. I am not sure of this is possible with the current crowd system but I thought I'd ask? crowd_source_HAMMER_ANIMATED.hiplc
  19. Auto swap HDRI and render

    If you are just kicking out stills perhaps you could rename all your HDRi images to form a sequence? Like my_hdr_001.exr, my_hdr_002.exr etc. Then you could leverage the $F frame number variable to swap the image when the frame changes. my_hdr_$F3.exr. If you have 40 hdr images set your timeline to 40 and submit a single scene for rendering. Each time the frame changes a new HDRi image will be used for that frame.
  20. Auto swap HDRI and render

    Isn't that what takes are all about? Search for help on the term "takes".
  21. Sand Simulation

    Try dropping down a velocity damping node after gravity. You might be able to tame it down to a reasonable look.
  22. I personally did not get this working and I believe I was given the answer of "no this can't be done at this time" from the SideFX help . But I have not looked into the new features for Crowd in Houdini 16.5.
  23. Wouldn't it be the other way around? Did you try... staticsolver.setInput(0,staticobject)
  24. Check out the help docs on setInput() function. You need two variables, the node to connect and the node to connect to. The value of 0 is the zero based input to connect to. node_source.setInput(0,node_target) node_source.setDisplayFlag(True) node_target.moveToGoodPosition()
  25. über slow

    Sorry to report that it is still slow for me as well.