Wishlist: Get Normal from Clipping Geometry

Wishlist:



For each clipping object, create a duplicate offset surface with vertices moved along their mean normal by a user specified amount.



For each particle inside the offset surface (but outside the clipping surface), find the nearest face (or vertex normal) of the clipping surface and set the inverse of that normal as the particle normal.



The process would be reversed if the clipping was inverted, so that the the offset surface would be on the inside of the clipping surface, and the normals of the clipping surface would be used without modification.



Sharp angles in the clipping object could create a self-intersecting offset surface, but you guys know how to deal with that, ala Tar Monster, right? Not a problem for typical clipping boxes and spheres, so might not be high priority.


  • Chad

As a corollary, an option for every particle (regardless of clipping) to get the normal of the nearest mesh point, vertex, or face normal would be really cool.



Slow, but cool.


  • Chad

>Wishlist:
>
>For each clipping object, create a duplicate offset surface
>with vertices moved along their mean normal by a user
>specified amount.
>

While the technical details of the implementation are different, this was added to v1.1.0 with the option to leave particles closer than a user threshold to either side of the surface or even on both sides (when culling is off). In addition, the surface normal from the closest surface point can be assigned to the particle.

That will be really nice. We’re using the normals alot these days.


  • Chad

Trying this out, and it doesn’t do what I think it should do. Basically, I have a PRT set with normals. When I cull a spherical volume out of the PRT, I expect to see the points that are within a certain (small) threshold of the surface to get the normals from the spherical culling mesh surface.



Instead, ALL of the points are getting the new normals, no matter how far away they are from the surface.


  • Chad

>Trying this out, and it doesn't do what I think it should
>do. Basically, I have a PRT set with normals. When I cull
>a spherical volume out of the PRT, I expect to see the
>points that are within a certain (small) threshold of the
>surface to get the normals from the spherical culling mesh
>surface.
>
>Instead, ALL of the points are getting the new normals, no
>matter how far away they are from the surface.
>

Yep, the threshold defines what particles will be culled, not what particles will get new normals.

I guess this would require a separate threshold for assigning normals, so you could cull a spherical shell of 10 units but assign normals only to the first 1 unit thickness of particles...

Will log it in.

 

Does it really make sense to only apply normals to a certain portion of the particles? In Bobo’s example with the 10 unit thickness and the 1 unit threshold, the other 9 units of thickness will not have a defined normal, and hence not render correctly.

>Does it really make sense to only apply normals to a certain
>portion of the particles? In Bobo's example with the 10 unit
>thickness and the 1 unit threshold, the other 9 units of
>thickness will not have a defined normal, and hence not
>render correctly.

Only if they did not have a normal before that. In my example, the top particles would get NEW normals from the surface, the rest would keep whatever there was in the normals channel, or no render correctly (as you said) if they did not have any.

In our current design, the option was meant as an extension of the culling threshold, so most particles would be close to the surface and then assigned the surface's normals, while the rest would be culled anyway...