Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Ole last won the day on July 11 2014

Ole had the most liked content!

Community Reputation

8 Neutral

About Ole

  • Rank
  • Birthday 08/25/1984

Personal Information

  • Name
  • Location

Recent Profile Visitors

4,467 profile views
  1. Extracting Relative Transforms

    Hi Alvin. I just wanted to thank you for sharing this. It has been really helpful for me lately. @nautiluz: In case you are still wondering: Setup a interface where you can set the three reference points that goes into the local space creation. Make sure they represent a flat triangle on the baked geometry.
  2. Need help with Python -> VEX

    Thank you for the example, Miles!
  3. Need help with Python -> VEX

    Thank you for the code Graham and petz!
  4. Hi there. I need some help with Vex. I've set up a Python Sop with the code below but this is very slow. So my next challenge is to re-create it in vex (or fix the Python code if it can run much faster). Vex is unknown territory, and my vex code fail already with the attempt to create an array with unique cluster values ('clusters' in the Python code). When I foreach() on the array to look up the existing values within the while loop, VEX execution seems to go into an infinite loop if I have a printf() statement anywhere in the code. I've put the vex code in a Attribute Wrangle Sop with Run Over set to Detail (to be able to count over points). My working Python code: node = hou.pwd() geo = node.geometry() # Add code to modify contents of geo. # Use drop down menu to select examples. geo.addAttrib(hou.attribType.Point, "activate_by_cluster", 0) #geo.addAttrib(hou.attribType.Point, "Cd", (0.0, 0.0, 0.0)) # Set threshold for number of points in a cluster before becoming active min_points = 40 clusters = [] for p in geo.iterPoints(): cluster = p.attribValue("cluster"); if cluster not in clusters: clusters.append(cluster) for cl in clusters: active_cluster = False threshold = 0 for p in geo.iterPoints(): if p.attribValue("cluster") == cl and p.attribValue("activate_box") == 1: threshold += 1 if threshold >= min_points: active_cluster = True break if active_cluster == True: for p in geo.iterPoints(): if p.attribValue("cluster") == cl: p.setAttribValue("activate_by_cluster", 1) This is the vex code I got so far: //Global settings int min_points = 400; //Global variables int clusters[] = {0}; //Get the existing clusters from the points int pt_num = 0; while(pt_num < @numpt){ int _cluster = point(geoself(), "cluster", pt_num); foreach(int i; clusters){ if(_cluster != i){ push(clusters, _cluster); } } pt_num++; } //printf("%d", clusters); foreach(int i; clusters){ int active_cluster = 0; int threshold = 0; while(threshold < @numpt){ int _cluster = point(geoself(), "cluster", pt_num); int _activate_box = point(geoself(), "activate_box", pt_num); if(_cluster == i){ if(_activate_box == 1){ threshold++; } } } if(threshold >= min_points){ active_cluster = 1; break; } if (active_cluster == 1){ pt_num = 0; while(pt_num < @numpt){ int _cluster = point(geoself(), "cluster", pt_num); if(_cluster == i){ //setpointattrib(geoself(),"activate_by_chunk", pt_num, 1, "set"); } } } } I've just tried to do the same in vex as I did in Python. Needless to say, it does not work as it is although I get no error messages. In case the intention is unclear: I am looping over the current points looking for the cluster attribute (coming from Cluster Points sop). I then go through the points in each cluster looking for the "activate_box" attribute. If this is 1 and a minimum of points with these conditions is found, set all points in the cluster to have the "activate_by_chunk" attribute to 1. This is used downstream. Please let me know if you have any ideas! Ole
  5. Please do shed some light on your approach to this!
  6. Gimpville is a mid-size VFX shop in Oslo, Norway specializing in high-end visual effects and 3d animation for feature films and TV Commercials. Please visit www.gimpville.no for more information. Gimpville is looking for a senior level Houdini TD to work on an upcoming commercial. Primary tasks will be to create ink-like effects with fluids/particles. Prolific experience using fluids in Houdini is required. The project is scheduled from 14/15. august and will run for approximately four weeks. Accommodation in Oslo can be arranged upon request, but it is also possible to deliver remotely. Send your application to Torgeir Sanders at torgeir@gimpville.no
  7. Gimpville is a mid-size VFX shop in Oslo, Norway specializing in high-end visual effects and 3d animation for feature films and TV Commercials. Please visit www.gimpville.no for more information. Gimpville is looking for a middle to senior level Houdini TD to work on an upcoming feature film. Primary visual effects includes huge landslide, large scale tsunami shots and destruction of a fjord and harbour area / marina. The project is scheduled from early august 2014 to early June 2015. Responsibilities: Creating large-scale particle, rigid-body, smoke and FLIP-fluid simulations. Help to design solutions in order to create the effects required. Essential Skills: An excellent knowledge of Houdini. A thorough understanding of techniques and technologies relating to simulation and procedural setup. Previous experience producing effects such as smoke, fire, water, steam, debris, rigid. and soft body simulation. A good eye for details and motion. Able to solve problems fast, individually and creatively. Desirable Skills: Programming Houdini HDK assets Rendering experience with Mantra A familiarity with pipeline issues, especially working between packages and large scale data. Python, VEX and HScript scripting Accommodation can be arranged upon request. For technical enquiries, please contact Ole G. Eidsheim, ole@gimpville.no. Other requests and application, please contact Lars Erik Hansen, larserik@gimpville.no
  8. I just noticed that using this method (PolyFrame), some of the instances 'pop' while rotating
  9. Woah! I would never have guessed that was the way to do it. No wonder I never got it right.. Thank you again for the wonderful example. It was really helpful and an eye-opener
  10. Thanks for the link dpap, I'll have a look as soon as I get the chance. Thank you for the example, symek. Do you have a suggestion as to how xform1 can be removed, so that it is not necessary to pre-rotate the instance object?
  11. Hello! I am currently trying to wrap my head around being able to transform (rotate) instance objects for sop copy and instance rendering. Basic stuff, I know, but I'm stuck and my math suck. I have a hard time grasping dot product, cross product, matrices and quaternions -> 3D transforms There are, as far as I can see, a multitude of attributes and options to do this, and I am wondering what would be best suited for my use? Some use up, some use orient. Basically, I would like to have the rotation options of the transform sop (x, y, z rotate) to work on a point instance where the normal direction is the "up" direction (think teapots standing on a displaced ground plane, rotating planar to the ground when editing the y axis). I've been through a lot of examples but I just can't make them work for my scene. Either the objects are flipped or rotation is happening on the wrong axis or objects are not rotating smoothly, or I am not able to figure out how to "flip" to the right axis when using N and up (usually +-90 degrees in x) inside the vop. Most of all, it needs to be stable on deforming geometry. Any example of rotation working in this scenario would be most welcome! Also, if you have a link to a good (basic level) resource regarding this topic, that would be awesome! Thanks.
  12. Hello all. We need to expand the default Mantra Material with some custom functions and compile it. However, as time goes on, bugs are fixed and major/minor Houdini releases changes the shader internals, making it a hassle to continuously go back to the material, check it, fix connections if necessary and recompile. I'm wondering if there is a better way to do this? I have thought about rebuilding our customizations using a python script, but with potentially hundreds of new nodes, connections and unknown future changes by Sidefx, this too have the potential to generate unwanted labor. I have also thought about using DAs, but many of the connections are not easily contained within one or a few assets (in and out of the surface model for example). So, I ask: Is there a preferred way to maintain what sesi does and smoothly inject our own before compiling the material?
  13. Surface Uber Shader

    Most likely you need to add OGL to the Render Mask parameter in the Operator Type Properties (Should read "VMantra OGL" without the quotes).
  14. There is an action called "Handle Alignment" in the Hotkey Manager. Is this what you are looking for? I have mapped it to a shortcut, and it cycles through the different alignment modes.