Connect points, looking (aiming) to each other. VEX.

   294   3   1
User Avatar
Member
6 posts
Joined: 10月 2017
Offline
Hello, the mighty community! After an intensive search on the SideFX forum, Odforce forum, and YouTube I didn't find any good results.

1) Here is my simple procedural building, and I need to create horizontal hanging wires over it.
2) I have scattered points on the convex edges with normals pointing outward.
3) Then I need to connect those points without intersection with the building and taking into account their direction: only points, looking (aiming) to each other, should be connected with the line.
4) My idea is to use “dot product” and compare point normals between each other, then connect points, which “dot product” is closer to a certain threshold. My preferable way is to work with the VEX code.
5) Operations with point clouds (“pcopen”, “pgfind”, etc.) are might be helpful. Next tutorials might be helpful too:

Naive Path Finding
https://youtu.be/PXbBhsJyEdk [youtu.be]

Understanding the DOT product!
https://youtu.be/6dJ_e94wI0U [youtu.be]

DIY Scatter Tool Solving Problems in Houdini
https://youtu.be/oeN5KgvWHfs [youtu.be]

Attaching .hip file to this topic.
Looking forward, and thank you for any help!

Attachments:
building_wires1.hip (278.0 KB)
problem.png (190.6 KB)

Best regards, Stanislav Yakymenko.
Digital artist based in Berlin, Germany.
yaky.me
User Avatar
Member
530 posts
Joined: 9月 2013
Offline
Hi yakymoto,

would simply ray-casting work for your project?
Edited by Konstantin Magnus - 2020年10月25日 11:09:00

Attachments:
building_wires.hipnc (189.7 KB)
building_wires.jpg (53.5 KB)

User Avatar
Member
298 posts
Joined: 7月 2005
Offline
If you loop for every point over all other points, you can also apply several filters. Here are some examples (in VEX):
  • Height Filter (to detect, if the y-Component is in a specific range from base point)
  • Intersection Filter (to detect, if a direct line has an intersection with the geometry)
  • Cone Filter (to detect, if the angle of the direct line to the normal is small enough)
  • xz-Filter (to detect, if two points share the same xz-value)
  • Min/Max Distance Filter (to detect, if the length of the direct line is small/great enough)
Edited by Aizatulin - 2020年10月25日 12:53:16

Attachments:
building_wires1_mod.hipnc (285.4 KB)

User Avatar
Member
6 posts
Joined: 10月 2017
Offline
Hooray, the problem has been solved! Many thanks to repliers.

Konstantin Magnus, appreciate your setup, straight-forward. But it's a little bit too simple for my needs.

Aizatulin, holy moly, that's some serious VEX magic happening. A robust production-ready tool with tons of knobs. Exactly what I need!
Best regards, Stanislav Yakymenko.
Digital artist based in Berlin, Germany.
yaky.me
  • Quick Links