Jump to content


  • Posts

  • Joined

  • Last visited

About rutra

  • Birthday 12/19/1977

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

rutra's Achievements


Newbie (1/14)



  1. Is it possible, analytically to voxalize a surface by displacing P along N to floored P planes? Analytically meaning not using Ray or intersect() but in shading for example. Basic flooring: Attempted point projection to floored planes: On a simple circle/sphere, I would need to iterate over neighbouring cells (a'la vornoi loop) and check if P is above or below the plane? Then there is a question of tight bends where the normal doesn't intersect any floored planes. Currently I'm stuck at projections being clipped by voxel size in all directions. The script belwo is as far as I got (also included HIP). Initially I had a feeling that there is a elegant/simple solution but now I suspect there is a simple proof/example that its impossible. VEX Wrangler prototype: vector P = v@P; vector N = -v@N; // tangent in case of a curve vector floorX = set(floor(P.x), P.y, 0); vector floorY = set(P.x, floor(P.y), 0); // adjacent vector dirX = floorX - P; vector dirY = floorY - P; // theta float tX = dot(normalize(dirX), N); float tY = dot(normalize(dirY), N); // hypotenuse length float lX = length(dirX) / tX; float lY = length(dirY) / tY; float planesMin = min(lX, lY); v@P = v@P + (N * planesMin); scene: voxelisation.hipnc
  2. Hi, I'm trying to recreate GuidedWrinkling example with Vellum system. I followed the Tetrahedral softbodies example described in Vellum basics docs Then, added Vellum Constraint at the beginning of the chain and set the type to 'Pin to Target'. So the chain looks like this: Tetrahedral | Point Deform SOP (animation) | Vellum Constraint (Pin to Target) | Vellum Constraint (Distance Along Edges) | Vellum Constraint (Tetrahedral) | Vellum Solver It kiiiiinda works but I'd like to match the behavior to the Hybrid object. The main parameters to recreate are: * Shell Shape Stiffness * Shell Bend Stiffness * Solid Volume Stiffness Should I be creating a separate Vellum Constraint for 'surface_triangles' group? ideas? thanks
  3. Hi, I'm wondering how to go about creating a static shape of a stretched cloth/rubber sheet. Something like this: I've got an overly complicated version working where a set of points are constrained to primitives belonging to another geo but I suspect there is a way define pinned points and everything else is under some stretched force? Maybe initial state or rest geo is just a smaller version of itself? Thanks heaps!
  4. Yes, inline vop would work but I wanted to recreate the shader with minimum amount of code and try to use only existing vops where possible. Just as an exercises to demonstrate that you can translate almost any code to vop network.
  5. I've translated Malcolm Kesson's Cellular Automata SL into a Houdini VOP RSL shader (no reason). You can find the original SL on his website Main difference is that Houdini VOPs don't support arrays so I used multiple connections and 8 texture calls instead of a for loop. Let me know if there is some better way of querying neigbours:) Original shader cell size and count is dependant on micropolgyons and controlled by shading rate. I've set the shading rate to a very high value and the cell count is controlled by geometric subdivision instead. That meant I couldn't use random function for initialization so I replaced it with cellnoise shadeop. OTL library contains digital assets: cellular - Object type digital asset bake3d - shadeop for pointcloud baking texture3D - shadeop for pointcloud reading cellnoise - rendermans cellnoise function cellular_automata - cellular.sl VOP node version. Just a direct implementation of the code. Not used for anything. Cellular is Object Type Digital Asset that contains shaders, geometry and ROPs for 'out of the box' test render. cellularotl.zip
  6. We've tested it with NoMachine NX and VirtualGL + TurboVNC. No redraw issues with either virtualizations. TurboVNC is by far faster. Depending on your connection, TurboVNC can be as good as real-time. I've been connecting over ADSL and NX is great for basic 2D and TurboVNC+VirtualGL for 3D (Houdini). NX with virtualGL has some performance gain as well but not as noticeable.
  7. Hi, I'm trying to run Houdini on Linux over VNC as well but having same "redraw" issues. So I've tried to set HOUDINI_OGL_SOFTWARE = 1 but that didn't help. Then I found out that software OGL works only on Windows. Is there any other way to force Houdini to use sofware OGL on Linux? Unfortunately we can't use NoMachine NX (not even sure if it makes any difference) Thanks
  8. Interesting idea but I'm actually trying to build Texture layering node for VOP network (VEX Builder Type). Not sure if co-shaders would work.
  9. Ok, I've got seriously dodgy way of doing it. Basically Python script dynamically generates SL arrays. The only problem is that I often have to refresh the script. Muliparm texture parameter Python CallBack script print hou.pwd().hdaModule().refresh(kwargs) ..runs following script: def refresh( kwargs ): this_node = kwargs['node'] num_layers = this_node.parm('layers').eval() prefix = 'texturepath' parms = this_node.parms() texture_paths = [] for p in this_node.parms(): parm_name = p.name() if parm_name.startswith(prefix): texture_paths.append( '"'+p.eval()+'"' ) else: pass code_string = '' code_string += 'string Kd_texture_array[] = {' code_string += ','.join( texture_paths ) code_string += '};' this_node.parm('texarray').set( code_string ) return code_string SL code looks like this: // generate Kd_texture_array sting array from Multiparm Block list via Python callback script // looks like this: string Kd_texture_array[] = {"texture1.tdl, texture2.tdl"} $texarray // Get total number of textures in array uniform float $numLayers = arraylength( Kd_texture_array ); uniform float $i; string $Kd_texture = ""; for( $i = $numLayers ; $i >= 0; $i -= 1 ) { $Kd_texture = Kd_texture_array[$i]; $outColor += texture($Kd_texture); } Hopefully someone has better ideas:)
  10. Alternatively I tried to use Texture node in 'For Loop' node but I couldn't figure out how to use loop count index to change the channel name inside 'For Loop' node in order to feed next texture path to the Texture node.
  11. Hi, I'm trying to build RSL VOP texture layering node using Multiparm Block list. RSL array looks something like this: string texture_array[] = { "texture_a.tif", "texture_b.tif", "texture_c.tif" }; How can I get Multiparm Block number and values propagated into my SL code? Thanks in advance a
  • Create New...