Jump to content


Popular Content

Showing most liked content on 10/11/2019 in all areas

  1. 3 points
    Haven't seen 18 yet so don't know if the code editor was improved, but if not, this still is my ABSOLUTE NR. 1 wish. if(code_editor_improved != true) { Code editing in Houdini Wrangles is - well - crap. It's a total shame we don't even see command parameter lists when typing since even in value fields typing expressions does it and has autocomplete for paths etc. Even only bringing that ability to the VEX editor would be very helpful. Of course it would also make a lot of sense to have other settings and helpers in there, like auto-closing brackets, more clever cursor positioning, offering existing variables and attributes when typing etc. - the Houdini devs should know ALL about that, they probably spend their life in real code editors... The use of external editors could be improved a lot if a.) we wouldn't have to press ALT+E twice for the external editor and wouldn't have to get to the floating editor first each time and b.) if that connection would be "live" like for instance the Pinegrow Web Editor does it with a little plugin for Code and Atom, where you can type in either the internal or external editor and they update each other in realtime. The current system is too clumsy and the 3rd party implementations also aren't really there (no negativity towards the authors intended at all!). Make it native! Make it goooooooood! } else { All is well. Nothing to see here. :-) } Cheers, Tom
  2. 2 points
    Howdo folks, Vancouver's HUG has just wrapped up its 2nd annual T-shirt design competition and I thought i'd share the designs with you. Natalia Loktionova - Circle, won it with 25% of the vote .. then Helen Ahlberg - Nodes, in second, ... and Steve Shearston - ConceptA, in third All in all, it was a very good competition and I look forward to wearing the shirt when it comes back from the printers Cheers Ed Lee VHUG Admin
  3. 2 points
    thank you "qmultiply" was the thingy i needed. In my lack of knowledge i was trying subtract/add etc. or this wrangle. as it turned out, Bullet is spitting something that has completely messed up values, and they need to be reconstructed with intrinsics FROM: http://www.tokeru.com/cgwiki/index.php?title=HoudiniDops#RBD_extract_correct_transform_attributes matrix m4 = primintrinsic(0,'packedfulltransform',@ptnum); matrix3 m3 = matrix3(m4); @orient = quaternion(m3); @scale = cracktransform(0,0,2,0,m4); v@pivot = primintrinsic(0,'pivot',@ptnum);
  4. 2 points
    Hi Johannes, have you looked into cracktransform() yet? It extracts transform vectors one at a time: // translate (c=0), rotate (c=1), scale (c=2), or shears (c=3) vector cracktransform(int trs, int xyz, int c, vector pivot, vector pivot_rotate, matrix xform) https://www.sidefx.com/docs/houdini/vex/functions/cracktransform.html
  5. 1 point
    Trying to recreate Scott Draves' algorithm in Houdini with VEX:
  6. 1 point
    Konstantin gave you the answer already. Use cracktransform in VEX... this will return euler rotations.
  7. 1 point
    Use points() for strings. https://www.sidefx.com/docs/houdini/expressions/point.html https://www.sidefx.com/docs/houdini/expressions/points.html
  8. 1 point
    Another difference is that attribinterpolate gives you the actual interpolated value in your usecase P so it's great for sticking points directly to the surface While pointdeform will keep the relative offset from the capturing point's reference frame as well as it will transform transformable attributes like N or orient In other words attribinterpolate is lower level node just for interpolating attribute values using one of several methods while pointdeform is more specialized node that acts as a simple cage deformer
  9. 1 point
    how sure you are that orient is properly built? Did you normalize values before creating quaternion? If you take points from sim and use transform pieces node, you can transfer initial orient and qmultiply it with dop orient to correct it.. inside pvop you can have qmultiply node or in vex qmultiply();
  10. 1 point
    PointDeformSOP captures deforming geometry by proximity, i.e. point on a geometry to be deformed (1 input) 'looks for' the N closest points in rest geometry (2nd input) , then computes deformation comparing rest points' position and orientation to deformed state (3rd input). This deformation is kind of a linear interpolation of control lattice displacement. AttributeInterpolateSOP relies on an explicite mapping of source and target elements. Points being deformed (1st input) are told (by specific attribute) which primitive or point in target geometry they map to. In case of a primitive, they ask for an attribute value in a given prim uv spot. In case of a points, they list explicitly given points and ask for attribute value (multiplied by weight). If you know the mapping, AttributeInterpolateSOP will behave nicer, but mapping might be tricky. PointDeformSOP is forgiving in that respect, but it's harder to control specially in cases different part of a mesh are close in space, but shouldn't influence each other.
  11. 1 point
    I don't know if it's what you are looking for exactly, but the instance function create a transformation matrix. You just need to multiply to @P. https://www.sidefx.com/docs/houdini/vex/functions/instance.html Here a simple vex code to rotate all points with an axis and pivot attributes previously defined. // rotate vector scale, postrotation; vector4 orient; float angle = ch("ang"); matrix3 rotm = ident(); rotate(rotm, radians(angle), v@axis); orient = quaternion(rotm); scale = 1; postrotation = 0; matrix xform; xform = instance(v@pivot, @N, scale, postrotation , orient, v@pivot); @P *= xform; EDIT: You can also take a look with quaternion, eulertoquaternion, qrotate, etc.. for rotation
  12. 1 point
    Hi, if you set the parm expression to link to the parm of your liking, then Houdini should add the linking automatically. (Make sure to refresh/reopen the Edit Parm Window after executing this to see the new linked channels in the Channel tab.) hou.node("/obj/geo").parm("parm_to_be_linked").setExpression("ch('parm_to_drive_link')") Cheers, Luca
  13. 1 point
    You need to run houdini_setup in the shell. But it might be easier just to open the image in COPs with a File COP and check the MMB node info.
  14. 1 point
    One seemingly hidden feature in Houdini is the power to attach expressions to time segments between keyframes. In this tutorial, I'm going to show you how to harness this feature to create your own custom interpolation model. We are going to make our own full-featured overshoot f-curve, which will read the incoming channel velocity and create and oscillating motion that exponentially decreases until it arrives at the exiting keyframe value. This tutorial is intermediate to advanced level, with most of it being done in python. Later, I show how convert the code to HScript. Coding experience and familiarity with Houdini is assumed. Houdini Version: 17.5 Level: Intermediate-Advanced Prerequisites: Python/HScript Running Time: 37 Minutes You can buy the tutorial here: https://gum.co/OHlDB
  15. 1 point
    Year 2019...had issue with this in Houdini 17.5. Solution is to add word 'function' and everything works only then. function int[] getPointsForPrim(int targetPrimID){ int pts[] = primpoints(0, targetPrimID); return pts; }
  16. 1 point
    lots of the expressions have the "s" at the end to get string values back, these are few more I tend to use often: point -> points ch -> chs stamp -> stamps eval -> evals ...