Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Skybar last won the day on July 30

Skybar had the most liked content!

Community Reputation

309 Excellent


About Skybar

  • Rank
    Grand Master
  • Birthday 11/28/1991

Personal Information

  • Name
  • Location

Recent Profile Visitors

8,308 profile views
  1. For a square it's quite simple. Measure the perimeter and divide it by the number of edges (4) to get the length of each edge. Or measure the area and take the root of that. It's not as simple for a rectangle, there you could instead use Convert Line SOP. It will convert the edges to a line and give you the length in "restlength".
  2. Add some lights. Just rendering with the headlight essentially removes all shadows and therefor all details.
  3. alembic objects into copy to points

    1. The blast node is just grabbing a point attribute and blasting away all points that doesnt have that number. So if my point has choose = 1, it will keep the packed geo that has ptnum =1. The spare input is necessary when you need to reference another node in a compiled block. You cant reference other nodes through expressions like you normally would, but a spare input acts like another input to the node. So in this case I can fetch a point attribute from another node without breaking the compile. 2. Compiled blocks especially helps with foreach blocks, because on the last node of the foreach you can check the checkbox ”multithread when compiled” - which makes the whole thing multithreaded. Not all nodes are able to be compiled, and sometimes you have to do things like the spare input-thing. But especially for cases like this its blazing fast for copystamping stuff. Theres a masterclass for compiled blocks that explains it pretty good i think if you search for it! Sorry im on the phone but hopefully it makes sense!
  4. alembic objects into copy to points

    Something like this? Kinda straightforward: copystuff.hip
  5. This is the first result on google, so just wanted to tell that it is possible since H15: https://www.sidefx.com/docs/houdini/news/15/dynamics.html I also haven't found a better way, but if you change the bullet_georep during the simulation you need to reset the "id" attribute for it to work properly. For example I'm emitting stuff as "convexhull", and when they reach a certain threshold I switch them to "box". At the same time as I set bullet_georep to "box", I also set id = -1 (only once, when the change happens) to make it force update. This will of course create a new set of ids on our packed prims (they will change), so be careful if you use it to identify a specific packed prim later on - either set up a new static index in another attribute or use name.
  6. Its missing because you dont have the 'v' attribute on the incoming geometry.
  7. I mean, it works, but if they're not interacting with eachother it's better to keep in separate dopnets. If you would want to send this to a farm for example, you are forced to run both sims on 1 computer. With 2 dopnets you could run them in parallell on 2 computers.
  8. Use points() for strings. https://www.sidefx.com/docs/houdini/expressions/point.html https://www.sidefx.com/docs/houdini/expressions/points.html
  9. Take a look at the for-loop in the Grain Source SOP, it does the opposite (moves intersecting points away from eachother) but it might give you some ideas.
  10. Optimize Collision calculation - Houdini Quicktip!

    If you are only transforming the collision geo, you can do that directly on the geo node (obj level). It will then use those transforms if you've chosen it in the "OBJ Path" parameter on the Static Object DOP.
  11. Pyro trail clusters get confused by loops

    You already have the source frame on your points, so instead of clustering based on P you could cluster based on that source frame attribute (Control Attribute on the Cluster Points SOP). And then find the lowest frame within each cluster to find creation frame.
  12. Hello! I'm trying to do a simple recovery from ragdoll. Essentially what I'm doing is: ragdoll flies away -> blend to a laying down rest position with motors -> switch state to stand back up. The problem I'm having is when I switch state, the agent jumps into the middle of its circle. Whenever the ragdoll is active I'm not sure what the circle is centered on - but when a clip is playing I guess it's centered in XZ around the hips. See picture, upper body is the circle when ragdoll and the lower is when I switch to a clip. Does anyone know if I can control this somehow? Either keep the circle centered when it is a ragdoll, or make it not jump when I switch state.
  13. about parallel processing in VEX

    You can set the Attribute Wrangle to run over "Numbers". Then you can specify how many elements to process in each thread. There is some info on it here: https://www.sidefx.com/forum/topic/51525/
  14. Enforce Prototypes @ptnum

    Yeah in that case you need to declare @ptnum at the top. So: int @ptnum; int id = point(0,"id",@ptnum); setpointattrib(0,"Cd", @ptnum,id); Think of it as a key. If you write @ptnum further down, it will take a look to see if it's allowed to accept that. If it isn't declared, or if you make a typo (@ptnmu) it will error because it isn't allowed. I don't think you can get rid of @ altogether, but you can add it to a variable to get rid of it further down: int @ptnum; int pointnum = @ptnum;
  15. Enforce Prototypes @ptnum

    Not sure if I understand you correctly but this works: https://github.com/jtomori/vex_tutorial#enforce-prototypes So with Enforce Prototypes turned on, basically: int @ptnum; vector @Cd; @Cd = @ptnum;