[Bf-committers] Patch for bug 1355
Sun, 13 Jun 2004 09:04:45 +0200
Am Sonntag, 13. Juni 2004 03:39 schrieb Jonathan Merritt:
> 1. Select a face of the mesh.
> 2. Construct a line along the normal of the face. =A0Trace the line out on
> one side of the face; if it intersects zero or any even number of faces
> then accept this as the "outside" direction, otherwise take the other
> direction as "outside". =A0(This borrows from the concept of "Gaussian
> surfaces" in physics.)
One of the usual approaches to realign the normals according to a minimal=20
spanning tree. The weights in the tree are chosen according to 1) geometric=
proximity and 2) value of the (signless) dot-product of two neighbouring=20
normals. After building the MST you just reorient the normal of the=20
face/vertex with the smallest Z-axis value outside and traverse the tree=20
while setting the normals accordingly.
I think it's described in an old Hoppe paper:
> 3. For non-manifold meshes, repeat step 2 for all faces (non-manifold
> meshes surely don't have a well-defined inside or outside anyway!?).
Yeah, I think non-manifold is a case where you can do whatever you like,=20
because it just can't work.
[--- PGP key FD05BED7 --- http://www.root42.de/ ---]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
-----END PGP SIGNATURE-----