Jump to content


  • Content count

  • Donations

    60.00 CAD 
  • Joined

  • Last visited

  • Days Won


ikoon last won the day on September 24

ikoon had the most liked content!

Community Reputation

239 Excellent

About ikoon

  • Rank

Contact Methods

  • Website URL

Personal Information

  • Name
    Jiri Miratsky
  • Location
    Czech Republic

Recent Profile Visitors

4,064 profile views
  1. Pre-solve Post-solve

    Amin, you can also dive inside and see, what exactly happens before pre-solve, after post-solve, and between them. I have attached a picture. For example, you can see, when the @pprevious attribute gets written, it is in between the Pre-Solve and Post-Solve inputs (in the node named "stash_current_pos"). So, if a new particle is sourced in the current timestep (usually in the post-solve input), its "has_pprevious" attribute is 0.
  2. centerline of shape

    Hi Olly, maybe the Labs Straight Skeleton 2D could be what you need? Or they also have a 3D version. https://www.sidefx.com/tutorials/sidefx-labs-installation/
  3. Here is the same result, but orientation is set by the @orient attribute: @zero_to_three = floor( 4 * rand(@ptnum)); float angle = @zero_to_three * radians( 90 ); vector axis = {0,1,0}; @orient = quaternion(angle,axis); quaternion.hiplc
  4. Hi Dominic, here is one possible way. File is attached. @zero_to_three = floor( 4 * rand(@ptnum)); float angle = @zero_to_three * radians( 90 ); vector axis = {0,1,0}; matrix3 m = ident(); rotate(m, angle, axis); @up = {0,1,0}; @N = m * {0,0,1}; 0-270.hiplc
  5. Get prim attribute value via python

    Hi Saori, we have to reference the node`s Geometry, not the node itself. Try this: geo = hou.node("/obj/GEO_model/null1").geometry() geo.attribValue("name") Or, this is the same: node = hou.node("/obj/GEO_model/null1") geo = node.geometry() geo.attribValue("name")
  6. Houdini 19 Wishlist

    @sant0s81 there are some options, probably not exactly what you want, unfortunately: 1) add the "dot" on the line (alt click on the line), then color the dot (btw you can alt click the dot, to make it persistent) or 2) colour the inputs inside the subnetwork
  7. @orient attribute to @N an @up?

    Hi Ronald, here is the extraction of axes from quaternion in vex: matrix3 m = qconvert(p@orient); v@xaxis = set(m.xx, m.xy, m.xz); v@yaxis = set(m.yx, m.yy, m.yz); v@zaxis = set(m.zx, m.zy, m.zz); The default orientation of v@N is zaxis, and @up is yaxis. So this is probably what you need: matrix3 m = qconvert(p@orient); v@up = set(m.yx, m.yy, m.yz); v@N = set(m.zx, m.zy, m.zz);
  8. Drive a switch with a detail

    Hi Rodger, I am not sure if you can compare two strings in the expression. Even if you try it without the details, "M"=="M" errors. We have this function to compare strings: https://www.sidefx.com/docs/houdini/expressions/strcmp.html Try something like this: if(strcmp(details( ),"M"),1,0)
  9. Python: Copy wrangle to multiple geometry nodes

    This is my attempt to find the "last descendant", using python recursion. So far it is working for me: def get_last_descendant (node) : try : last_descendant = node.outputs()[0] except : last_descendant = node if last_descendant == node : return node else : return get_last_descendant(last_descendant)
  10. Assigning Pane-Specific Hotkeys

    Hi James, here is how you could do it. RMB right mouse button on the Edge Loop:
  11. Hide The Ortho Grid in Python

    Hi Szabolcs, I am using this script: for pane in hou.ui.curDesktop().paneTabs() : if pane.type() == hou.paneTabType.SceneViewer : settings = pane.curViewport().settings() settings.setDisplayOrthoGrid(not settings.displayOrthoGrid()) Unfortunately, this change is not immediately reflected in the Perspective viewport. I sent RFE (quoted below), and SideFX logged this in their database; Bug (ID# 100052) Please, if I use this script to toggle the grid in the perspective view, then the change is not reflected immediately. I have to switch to Ortho view and back to Perspective to see the grid updated (toggled on/off) If the same issue happens to you, please RFE it too and mention the Bug ID# I am using version 18.0.353
  12. Hi, I am not skilled in vops, but here is the vex code, and file is attached. The principle is: For each found point (pciterate, while loop), you pcimport the point.number, and set this point.number to the "max_ptnum" attrib, only if currently iterated point.number is bigger than what is already stored in this attrib (all previously found point.numbers). At the end, you should have max_ptnum of all the found points. In the Set Attribute VOP, it is called Merge Mode: Maxiumum string Pchannel = "P"; vector P = @P; float radius = 10.0; // search within this radius int input = 1; // search in this input int maxpoints = npoints(1); int handle = pcopen(input, Pchannel, P, radius, maxpoints); while( pciterate(handle) == 1 ) { int found_ptnum; pcimport(handle, "point.number", found_ptnum); // next line stores the found_ptnum, only if it is bigger then previously found setpointattrib(0, "max_ptnum", @ptnum, found_ptnum, "max"); } pcclose(handle); Nearest_MaxPtNum_v001.001_VEX.hiplc
  13. I am quite a Python noob, so I may be using wrong terminology. My situation: - I define my scripts as "independent methods" in .py files, and I import those files - I run those methods from the Tab menu or from the Shelf (with hotkeys), or from HDA buttons - more and more often I import "smaller" methods into "bigger" methods - my "way of organisation" is simple: I keep methods of one kind in one .py file with a descriptive filename - some methods add functionality to hou.Node, hou.PathBasedPaneTab, or so Please, should I start to bind methods to hou classes? Should I define my own classes? Is this an important milestone in the "evolution" of FX TD, to move from Python scripting to Python OOP?
  14. Hi Daniel, I had a quick peek at your file yesterday, you resampled the boxes to a very high detail. With a Resample SOP node. Then you packed them and sent to DOP. I don't think that it is necessary and it slows down the DOP a lot. You may check the tutorial, what is the purpose of their Resample (and then Fuse), and how it should be used.
  15. object scale change, durring rbd sim

    Hi Michal, you are scaling the object, but at the same time, you are translating it (because of the pivot of the scale). This is the main reason for the unusual behavior. Set the translate in testgeometry_pighead1 to 0,0,0 and set the translate in transform1 to 0,5,0. Then you could also increase the substeps of the dopnet and/or the bullet solver.