开发者

Trying to fix 3D mesh normals

I have triangle collection that define mesh surface of my 3D shape, I would like to fix normal of each triangle to point outshape.

I was trying the following (pseudo):

1. define that first triangle normal direction is right direction

2. go over the mesh using kind of DFS like this:

3. triangle = first triangle

4. foreach neigbour in triangle.getNeighbours

5. if angle between neighbor and triangle greater then 180 do neighbor.flip()

6. triangle = neighbor

7. if neighbor already picked then continue to next neighbor

8. continue recursively to 开发者_StackOverflow4.

But step 5 in algorithm does not work because cant know if the angle is greater then 180, because i need to know in witch direction (clockwise or counter clockwise).

Could you please help me to understand how to fix the algorithm?


There is no need to calculate angle between neighbours. If triangle ABC is oriented (A->B->C), and if neighbour on edge AB is triangle ABD, than it has to have opposite orientation on edge AB. That means, neigbouring triangle has to be orientated B->A->D.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜