Jitter points on surface... How?
4379 5 2- Masoud
- Member
- 407 posts
- Joined: Aug. 2015
- Online
Hi Guys;
In my simple test scene, I converted a geometry(sphere) to points, then I add a “Point Jitter” sop to it.
The “Point Jitter” , moves points randomly along local axis of geometry, but I want to move them along NORMAL of each point.
I don't want to use Scatter, because I want the points exactly on geometry's points.
Any idea?
In my simple test scene, I converted a geometry(sphere) to points, then I add a “Point Jitter” sop to it.
The “Point Jitter” , moves points randomly along local axis of geometry, but I want to move them along NORMAL of each point.
I don't want to use Scatter, because I want the points exactly on geometry's points.
Any idea?
Edited by Masoud - April 27, 2017 04:58:30
Masoud Saadatmand (MSDVFX)
- Enivob
- Member
- 2534 posts
- Joined: June 2008
- Offline
- Konstantin Magnus
- Member
- 670 posts
- Joined: Sept. 2013
- Offline
int seed = chi('seed'); vector shift = rand(@ptnum + seed); int prims_nb[] = pointprims(0, @ptnum); float prims_num = 1 / float( len(prims_nb) ); int prim_choose = int( floor(shift.z / prims_num) ); int prim = prims_nb[prim_choose]; vector pos = primuv(0, "P", prim, shift); @t = prims_num; @P = pos;
pointprims tells you what primitives are connected to each point. with prims_num, prims_choose and prim the third component of a random value named shift gets assigned to one of those primitives. the first and second components of shift determine the UV location on the chosen primitive. Change the seed to get variations.
If you want it less overlapping, just set prim_choose to 0 and maybe delete prims_num.
Edited by Konstantin Magnus - April 28, 2017 03:33:42
https://procegen.konstantinmagnus.de/ [procegen.konstantinmagnus.de]
- Masoud
- Member
- 407 posts
- Joined: Aug. 2015
- Online
- Masoud
- Member
- 407 posts
- Joined: Aug. 2015
- Online
Konstantin MagnusHi Konstantin Magnus;int seed = chi('seed'); vector shift = rand(@ptnum + seed); int prims_nb[] = pointprims(0, @ptnum); float prims_num = 1 / float( len(prims_nb) ); int prim_choose = int( floor(shift.z / prims_num) ); int prim = prims_nb[prim_choose]; vector pos = primuv(0, "P", prim, shift); @t = prims_num; @P = pos;
pointprims tells you what…
This is want I need, Thank you.
Edited by Masoud - April 28, 2017 06:27:49
Masoud Saadatmand (MSDVFX)
- edward
- Member
- 7714 posts
- Joined: July 2005
- Offline
-
- Quick Links