[Bf-committers] Patch for bug 1355

Arne Schmitz bf-committers@blender.org
Sun, 13 Jun 2004 09:04:45 +0200


--Boundary-02=_Sy/yAHeZxf+ERAw
Content-Type: text/plain;
  charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

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=
=20
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:

	http://citeseer.ist.psu.edu/hoppe92surface.html

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

Cheers,

	Arne

=2D-=20
[--- PGP key FD05BED7 --- http://www.root42.de/ ---]

--Boundary-02=_Sy/yAHeZxf+ERAw
Content-Type: application/pgp-signature
Content-Description: signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQBAy/ySzpP3gv0FvtcRAguWAJ0eSa7eGYF2gnL3mbg8dMjeUZioRQCdGOTG
u+tOruvAz8iZ09VT3sUTfzA=
=LT/5
-----END PGP SIGNATURE-----

--Boundary-02=_Sy/yAHeZxf+ERAw--