Jump to content

Point Cloud Questions


itriix

Recommended Posts

Hi everyone,

I'm trying to "peel/curl" back some chipping paint and have been suggested using point clouds to achieve this with higher accuracy/smoother results than using attribute transfer.

The jist of it:

As my paint surface is deformed, it's clipped by a bounding object... but i want the bumped paint to curl backwards a bit. I'm stuck trying to use point clouds to essentially act like the attribTransfer sop. And secondly, how do I query two "different" particular nearest points? When I say different, an example is, I need the nearest "edge point" and nearest "not bumped point"... These have been defined by groups...

I have three groups:

1. edge_gr (edge points) defined by edges and unshared edges checked on

edge_pt which is defined using haspoint("edge_gr", "path/to/edge_gr", $PT)... this gives me 1 if the point is in the edge_gr *meaning it's an edge pt* and 0 if not.

I then used attributetransfer on the edge_pt attribute to "spread" essentially blur it out away from the edges... This essentially located the surface area that I want to "curl"...

2. bumped_gr (points that have been bumped) defined by an expression $EDGE_PT <= 0

3. not_bumped_gr (points that have not been bumped) defined by being set != to not_bumped_gr && != edge_gr (i wanted the edge_gr points to be their own seperate group)

So in a vopsop, I would try and use point clouds to get this curling of the paint. Here is where i'm stuck:

I need to query the nearest edge and not_bumped points... These would be used to build a rotation matrix with the pivot being the nearest unbumped point and the rotation axis being the cross product between the point's normals and the difference vector between the two points. Then the edges could directly be lifted up and rotated around the non_bumped part.

How can I do this last part in vops? and also, instead of "attribute transfering" my points like i did earlier, to spread out the $EDGE_PT value, it should be possible to do that instead with point clouds too? What would be the vops needed?

I really appreciate the help,

Thanks,

Jonathan

Link to comment
Share on other sites

  • 3 weeks later...

This was a while ago but I will reply anyway ...

you don't need to use point cloud in this case. Just use the nearpoint() expression.

So make a new group 'peelpoints' which will be defined by $EDGE_PT != 1.

Add an attribcreate node integer ('nearestpoint') and make peelpoints your mask group.

Above that branch off a blast node and keep the not_bumped_gr.

In the attribcreate add the near point expression to find the nearest point in the blast stream.

Add another attribte create vector to get the position of the nearest point.

In a vopsop rotate the point, angle will be some constant (or noise maybe) multiplied by $EDGE_PT attrib (maybe edge_pt should be the distance to the nearest point instead?). the axis would be the cross product of the normal and direction to the nearest point.

done?

I might play with this tonight :P

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...