Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


jkunz07 last won the day on February 2

jkunz07 had the most liked content!

Community Reputation

161 Excellent


About jkunz07

  • Rank
  • Birthday 10/17/1988

Personal Information

  • Name
  • Location

Recent Profile Visitors

8,130 profile views
  1. disabling a node via wrangle

    You could add a detail attribute that get's used to toggle a switch node, bypassing the node you'd like to disable.
  2. Wrangle library

  3. render volume in mantra in short time

    This thread is a good read through for getting faster settings

    It should work fine in a standard vellum sim clothvortex.hipnc
  5. Matrix component

  6. Find materials of missing textures

    There is also the preflight scene option (Use the Render ▸ Preflight menu item to find references in the current scene file to resources outside the project)
  7. Get Parent Expression

    You can use __display_sop__ or __render_sop__ in the path instead of the name of a real surface node name to have Houdini use whatever node has the display flag or render flag.
  8. UV map saturn rings in Mantra

    #include <math.h>
  9. You could use the seed output of a voronoi noise in vops or vex. You could also scatter points as well to define the cell centers, then nearpoint(1, @P); would give you the cell id assuming the points are wired into the second input of the prim or point wrangle. It will be hard to get sharp cleanly defined cells like that picture with out actually cutting your model unless it's really high res/subdivided.
  10. (SOLVED) hipFile Save separately

    import time import hou # Save a backup of the current Houdini session def saveArchive(): # Get the file path of the current Houdini session # (Equivalent to $HIP/$HIPNAME) ogFile = hou.hipFile.path() # What do we want to save the archive file as? fileStr = hou.getenv("HIP")+"/backup/BKUP_"+time.strftime("%Y%m%d%H%M%S")+"_"+hou.hipFile.basename() # Make sure this is a string (I was getting errors if I didn't do this) fileStr = str(fileStr) # Save the archive file hou.hipFile.save(file_name=fileStr, save_to_recent_files=False) # Revert the name of the Houdini session to what it was prior to executing this function hou.hipFile.setName(ogFile) # Return the path of the newly saved file return fileStr
  11. Rendering Cola

    Here's my try at it. I reversed the faces of the bubbles, then merge them with the main/outer fluid mesh. cola.hipnc
  12. Get Alembic Animation Length

    You can use abc.alembicTimeRange(abcPath) From: https://www.sidefx.com/docs/houdini/hom/abc_extensions.html Alembic doesn't use frames, but stores animations in seconds so you'll have to do some conversion using $FPS or something.
  13. Beachball noise pattern in vops

    Here's an idea for the beach ball pattern in a shader, this way uses UV's. beach_ball_shader.johnkunz.v1.hipnc
  14. fireworks forming shapes

    Of course. The reason for the npoints() the random() just gives us a number between 0-1, but we want to use a random point of the reference geometry (the face symbol text) we multiply the 0-1 number by the number of points (npoints() ) of the reference geometry so that then have a random number which corresponds to a point on that geometry. If we have a guide shape with 32 points, we want to get a random number between 0 and 32, not simply 0 and 1. The reason for the vector() The point function itself can be used to retrieve lot's of different data types, not only vectors like position (P). You could use it to find the pscale of a point which would be a float, or the id of a point which would be an int. If we don't explicitly tell the point function which data type it's finding, it will try to do it's best to guess. If we divide by a float after the point function, the VEX compiler might guess we are pulling float information using the point function and we'd miss getting the y and z components of the position. Specifying vector(2.) is the same as doing {2,2,2}. It just forces that to be a vector instead of a float. I usually try to be overly careful when specifying things, this is why I leave the decimal after some numbers, so I can be sure it's interpreted by the compiler as a float data type. In some languages like Python or HLSL if you just type "2" instead of "2." it will assume that's an int data type. That could give you errors, or unexpected results. Let me know if any of that doesn't make sense or you want to know more.
  15. fireworks forming shapes

    Here's an idea : ) fyrework_shapes_johnkunz.v1.hipnc