Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


jkunz07 last won the day on May 5

jkunz07 had the most liked content!

Community Reputation

191 Excellent


About jkunz07

  • Rank
  • Birthday 10/17/1988

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location

Recent Profile Visitors

9,295 profile views
  1. local variable explain

    https://www.sidefx.com/docs/houdini/network/expressions.html#variables-and-attributes Local variables. Nodes often provide variables that are useful for expressions on nodes of that type. For example, a node that operates over the points in a geometry will have a @ptnum variable representing the point number of the current point. The help for a node will list the local variables you can use in expressions on that type of node.
  2. Max render resolution?

    This shouldn't be a Houdini licensing issue, you can see the Indie limitations here: https://www.sidefx.com/products/compare/ I'd recommend trying to look at the Redshift logs to see if it gives any explanation of the crash.
  3. Solved - Using sphere to contain POPs

    You can also avoid the polyextrude of the sphere and just enable 'invert sign' on the static object. This tells the solver to treat the interior as hollow an exterior as solid. To hide the sphere or any geometry created by a DOP node, you can click the cyan/eye flag POPs_in_sphere_invert_sign.hiplc
  4. POP Grain disintegration on character animation

    f@mass = 1; f@active = 1; if( inpointgroup(0,'bonepoints',@ptnum) ) { @P = point(0, 'P', @ptnum); @mass = 0; @v = point(0, 'v', @ptnum); @active = 0; } Update the code in your pop wrangle, instead of using the group parameter and only running the code on grouped points, I believe you should be running the wrangle over all the points and then using an if statement to handle grouped points. POP Grain_Disintegration_fix.hipnc
  5. Vellum Grains Character Disintegration

    Rendering with Redshift for Part 2!
  6. Finished my first tutorial, hopefully you find it helpful learning Houdini!
  7. Learning VEX via Animated Gifs - Bees & Bombs

    Here's a stream I did over the weekend which demonstrates my process for making one of these animations. The file is linked in the description. Would've liked to push more of the steps into VEX (like the copy and transform, etc.). If anyone builds off of this or finds better ways to do things I'd love to hear about it. Follow me here: https://www.twitch.tv/johnkunz for more streams!
  8. Learning Houdini on Twitch.tv

    Hello! I'm starting a twitch dot television channel and will be streaming Houdini training content. I've worked at several large VFX and advertising studios as well as taught Houdini classes at Academy of Art university. I'm hoping I can reach a larger audience through Twitch as well as the idea that people viewing the stream can participate by asking questions and providing feedback in real time. This is my channel: https://www.twitch.tv/johnkunz My first stream will be starting on Sunday (Jan 26th) @ 1pm PST. If you follow my channel (it's free ), you'll get an email notification whenever I start a stream. I'll be going over this project I recently finished https://www.behance.net/gallery/90705071/Geometric-Landscapes showing how I built things (VOPs, packed prims, Redshift render) and why I set things up the way I did. Some of the images I made are shown below. Please come by this Sunday with any questions or ideas you might have!
  9. Getting the hip version with hbatch

    I would recommend python/hython for this task because you mention your dealing with many files. Python is much better at working with directories, many files on disk and databases then hscript/hbatch is.
  10. Getting the hip version with hbatch

    You can do something like: echo $_HIP_SAVEVERSION > $TEMP/$HIPNAME.txt This will put the version number of Houdini that the file was last saved with into a .txt file of the same name as the .hip file your currently checking (In the /tmp directory of your OS).
  11. Best practices for animating visibility?

    You can set visibility per face at the SOP level: http://mrkunz.com/blog/12-08-2016_Export-Alembic-geomtery-from-Houdini-utilizing-the-visibility-property.html Other packages like Maya and Vray will support this out of the box and hide the faces both in the viewport and during rendering. Mantra doesn't hide invisible faces by default, but you could do many things to hide them, either just blast the hidden faces group or assign a kind of pass thru zero opacity invisible type shadier to the hidden face group
  12. This is an issue with the OpenVDB code being updated to 5.0, when I asked SideFX about it a while back they said they have let the OpenVDB team know about this issue.
  13. Curl Noise functions in voplib.h

    float eps = chf('epsilon'); // Default 0.01 float magnitude = chf('magnitude'); // Default 1.0 vector p = v@P; // Noise Initial Position float freq = 1.0; // Noise Frequency vector offset = chv('offset'); // Noise Offset p = p * freq - offset; // Final Noise Position vector dx = {0, 0, 0}; dx[0] = eps; vector dy = {0, 0, 0}; dy[1] = eps; vector dz = {0, 0, 0}; dz[2] = eps; vector fxdxn; vector fxdxp; vector fxdyn; vector fxdyp; vector fxdzn; vector fxdzp; // Evaluate the noise in a local neighborhood for finite differences fxdxn = noise(p-dx); fxdxp = noise(p+dx); fxdyn = noise(p-dy); fxdyp = noise(p+dy); fxdzn = noise(p-dz); fxdzp = noise(p+dz); // Compute curl from the cross product vector curl; curl[0] = (fxdyp[2] - fxdyn[2]) - (fxdzp[1] - fxdzn[1]); curl[1] = (fxdzp[0] - fxdzn[0]) - (fxdxp[2] - fxdxn[2]); curl[2] = (fxdxp[1] - fxdxn[1]) - (fxdyp[0] - fxdyn[0]); float scale = magnitude * (1.0 / (2.0 * eps)); curl *= scale; @P += curl; If it's helpful, here's what a basic curl noise function looks like. You could replace the noise() calls with whichever scalar noise you prefer.
  14. Curl Noise functions in voplib.h

    Those are used to sample finite differences of the noise, in order to find the gradient vector of the scalar noise.
  15. 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.