forbid odd-length tristrips in general
This commit is contained in:
parent
b31d8eadd7
commit
1d9df0ce98
|
|
@ -635,13 +635,17 @@ mate_pieces(EggMesherEdge *common_edge, EggMesherStrip &front,
|
|||
bool EggMesherStrip::
|
||||
mate_strips(EggMesherEdge *common_edge, EggMesherStrip &front,
|
||||
EggMesherStrip &back, EggMesherStrip::PrimType type) {
|
||||
// If we're flat-shaded, we don't allow ending up with an odd-length
|
||||
// strip.
|
||||
if (front._flat_shaded &&
|
||||
((front._type != PT_tri && back._type == PT_tri) ||
|
||||
(front._type == PT_tri && back._type != PT_tri) ||
|
||||
(front._type == PT_tristrip && back._type == PT_tristrip &&
|
||||
((front._verts.size() + back._verts.size()) & 1) != 0))) {
|
||||
// We don't allow making odd-length strips at all. Odd-length
|
||||
// strips can't be rotated if they're flat-shaded, and they can't be
|
||||
// joined end-to-end using degenerate triangles. So forget 'em.
|
||||
|
||||
// This might not be the right place to impose this rule, because it
|
||||
// tends to end up with lots of independent triangles in certain
|
||||
// kinds of meshes, but it's the easiest place to impose it.
|
||||
if ((front._type != PT_tri && back._type == PT_tri) ||
|
||||
(front._type == PT_tri && back._type != PT_tri) ||
|
||||
(front._type == PT_tristrip && back._type == PT_tristrip &&
|
||||
((front._verts.size() + back._verts.size()) & 1) != 0)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue