Jump to content

Pt Num Shuffle (REV)


Justin K

Recommended Posts

Hey All--revising my earlier question

Simple question here.  Id like to randomly reorder the points on a line WITHOUT using the sort node.  I dont want positions to change (@P) just the ids (ptnums)-- self imposed technical challenge.  
Example start: 
ptnum 1 @P {0,1,0};
ptnum 2 @P {0,2,0};
ptnum 3 @P {0,3,0};
ptnum 4 @P {0,4,0};
ptnum 5 @P {0,5,0};
ptnum 6 @P {0,6,0};

Example Desired result

ptnum 3 @P {0,1,0};
ptnum 2 @P {0,2,0};
ptnum 1 @P {0,3,0};
ptnum 5 @P {0,4,0};
ptnum 6 @P {0,5,0};
ptnum 4 @P {0,6,0};

 I know you can do this with a Sort Sop (random) but I'd like to do it in a Vex Sop Specifically, and then in a wrangle afterwards--its a tech challenge thing.  I feel like this is simple and Im missing something pretty basic.  

 This is what it says about the Random method for Sort
Random
Using the random seed, each point or primitive is assigned a random priority. They are then reordered according to that priority. This has the effect of generating a random ordering of the points or primitives.  

Helpful info or not in this case?
If so, how can I apply this in a Vop Sop, and then later on if possible an Attribute Wrangle.  All the random operators within the point vop give arbitrary new positions, so I dont really know how to go about doing this.  In python,  the solution is a prexisting method for random so that is not helpful here either.  

import random
>>> x = [1,2,3,4,5]
>>> random.shuffle(x)
>>> x
[5, 2, 4, 3, 1]

 

 A pointer in the right direction would be appreciated.  


Thanks

Also, bonus question, what is the difference between ptnum and id in vop globals?  They are behaving as if they were the same thing when I am running orders (say random) across points within the point Vop.  

Thanks!

Link to comment
Share on other sites

@ptnum cannot be changed like a normal attribute. If you have one point, it's @ptnum is 0. If you wrangle @ptnum = 1;, it will not change. It is a different kind of attribute.

To do that re-arrangement, you will need to swap the @P. Or use @id instead of @ptnum. Or make a dummy attribute that is your @ptnum and go from there. 

The difference between @ptnum and @id. @id is used in a particle system, a unique integer given at birth that does not change as the particle count increases.

If you have points 0-9. and you blast point 0 - all ptnum will decrease by 1. If you did the same, but blasted by @id, the values would remain the same.

@id is not dependant on the point count. If you make a simple particle sim, and blast some points - you will see random points removing as the count increases. As ptnum is changing as points are added.

  • Like 1
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...