theOutsider Posted October 15, 2019 Share Posted October 15, 2019 Hi guys (and gals)! How can I split the scattered points of a geometry into three groups, depending on the scattered points position to three different objects? I have tried with point clouds, with nearpoints and everything I could imagine, but I can't seem to figure it out! It either relies on radius, or doesn't sort correctly. I also tried with the sort node but it really messes with my sopsolver which is used for the infection down the stream.. To better explain the situation, lets say I have the geometry I want to split scattered with 10 points, and the point targets I want to use as refs have 2, 4, 4 points respectively. How can I "sort" the scattered points to either belong to group 1, 2, or 3 explicitly, depending on the distance from the point targets? Each point should belong to one group and one group only. And the sorting only has to happen in the beginning of the sim, after that pop forces take over. If anybody has any idea, please, feel free to share! Thank you for your time, G. Quote Link to comment Share on other sites More sharing options...
jamesr Posted October 15, 2019 Share Posted October 15, 2019 Hmmm if all you care about is distance to the target geometry, you should be able to just assign an integer attribute called like "target" or something, and use nearpoint() and point() to get the closest one. int pt_near = nearpoint(1, v@P); i@target = point(1, "target", pt_near); and do stuff to your particles from there. You could even make them into groups if you wanted string groupname = sprintf("target_%d", i@target); setpointgroup(0, groupname, i@ptnum, 1, "set"); Maybe I'm missing something? close_point_targets.hip 1 Quote Link to comment Share on other sites More sharing options...
theOutsider Posted October 16, 2019 Author Share Posted October 16, 2019 Hello @jamesr! Thank you for your reply and your example file! I as well had previously tried with nearpoints and target variables for the separation, but it is not what I want. Although it never occurred to me to use the ray node, so I learnt something today from you! The thing is that I want the exact number of points of lets say floating_object_1 separate and group the exact number of points in my geometry. The sum of the points of the 3 floating objects is the point count of the affected geometry (in your example of the pighead). So if floating_object_1 has 10 points, I want the 10 closest points to the pighead (10 out of 43 lets say for our example - the rest 33 belong to floating_object_2 and floating_object_3) to group and belong to floating_object_1 only. This is because after the grouping, I advect particles to "construct" the floating objects, point to point. Now because they are not sorted out correctly, but may be spread throughout the whole static geometry, points from the other side of the pighead will fly out trying to reach floating_object_1 and create an optical mess - instead of being nice and neat and each going to the closest attractor. Hope I helped explain the situation a little bit better - if not, I can try and make a clean example when I get the chance. Thank you once again for the effort, G. Quote Link to comment Share on other sites More sharing options...
jamesr Posted October 16, 2019 Share Posted October 16, 2019 (edited) Could you just ray the target points that are on each target onto your source starting geometry and call those the starting points? Then you have the target attribute/group already on the points, and already once they are minpos'd onto the source geo, they will always be as close as they can be to that target. Edited October 16, 2019 by jamesr Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.