Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


ftaswin last won the day on August 17

ftaswin had the most liked content!

Community Reputation

19 Good

About ftaswin

  • Rank

Personal Information

  • Name

Recent Profile Visitors

2,149 profile views
  1. hou.ui.paneUnderCursor() hou.ui.paneTabUnderCursor() panel = hou.ui.paneUnderCursor() node = panel.pwd()
  2. half_increment_parameter.hiplc
  3. Vellum SOP solver rest length Switch

    Since reslength may vary for each constraint prims, switch might not be a good option. Different prim might reach the restlength goal quicker than others. I'd suggest to keep the switching inside a wrangle or vop. When restlength is greater than xxx, then read from an input (you initial contraint setup from sop, perhaps?). You will then need to filter this with a group (or attribute) to prevent the restlength to keep calculating
  4. address behind the hip Project

  5. DOP: @v doesnt work when @active is set later

    When you want to activate your rbd inside DOP you also have to define all initial attributes there and then. For example : if(@Frame>100) { if (i@active==0) { i@active = 1; v@v = {0,1,0}; v@w = {29,0,0}; } }
  6. Viewport | no cam position

    __import__("toolutils").sceneViewer().curViewport().viewTransform().extractTranslates().x() __import__("toolutils").sceneViewer().curViewport().viewTransform().extractTranslates().y() __import__("toolutils").sceneViewer().curViewport().viewTransform().extractTranslates().z() Map them in vector3 parm respectively (x,y,z). It will update automatically
  7. Number of Prims in a group?

    // in detail wrangle : int prims[] = expandprimgroup(0,"primgroupname"); string pieces[] = {}; foreach(int p;prims) { string nm = prim(0,"name",p); if(find(pieces, nm) < 0) { append(pieces, nm); } } s[]@nm = pieces;
  8. POP Force Mass Remap

    Use vexpression is used to dynamically adjust one or more parameters you see in the node, NOT updating point attribute individually. To do the later use pop wrangle/ geometry wrangle. To use vex in pop force you can enable the top vexpression and use something like this: force *= fit(@P.x, -2,2,.5,2); those particles on one side will have half the force settings and on the other will have twice the strength
  9. int pts[] = expandpointgroup(0,”groupname”); if(len(pts) > chi(“max_limit”)) { foreach(int pt; pts) setpointgroup(0, “deleteme”, pt, 1);}
  10. Change default file paths

    look into OnCreated.py
  11. VEX points edge selection issue.

    if(relpointbbox(0,@P)[0]%1==0 && relpointbbox(0,@P)[2]%1==0) @group_edges = 1;
  12. You can filter and "smooth" the direction(N) you use to "peak" your surface. pcopen-pcfilter will do that just fine. in vex: int handle = pcopen(0, "P", @P, ch("radius"), chi("max_points")); @P = pcfilter(handle,"P"); You can do similar in Vop too.
  13. how to add points to a curve?

    There is also vex version, but yes, no easy way
  14. how to add points to a curve?

    The simplest answer I can think of is to rebuild the input curve and turn it into a single curve node (very easy to do with python). From there, do whatever you want. node = hou.node('/obj/geo1/alembic_curves_unpacked') parent = node.parent() pos = node.position() geo = node.geometry() prims = geo.prims() for prim in prims : crvnode = parent.createNode("curve") pts = prim.points() tmppos = "" for pt in pts : tmppos += ",".join([str(x) for x in pt.position()]) + " " crvnode.parm("coords").set(tmppos) crvnode.setPosition(pos) crvnode.move([0,-1]) pos = crvnode.position()
  15. in the parameter editor, if you click the cog icon - add spare input, it will add a string parameter where you can plug a node path you can reference to. So instead of detail(1,"iteration",0),detail(2,"iteration",0),detail(3,"iteration",0) referring to the node connected on input 2,3 and 4, You can use detail(-1,"iteration",0),detail(-2,"iteration",0) referring to the spare parm you just added (-1 is the first spare parm, -2 is the second and so on)