Applies to vertices and edges. Biggest annoyance here is that OpenSubdiv's topology converter expects that there is no loose geometry, otherwise it is getting confused. For now solution is to create some sort of mapping from real Mesh vertex and edge index to a non-loose-index. Now the annoying part is that this is an extra step to calculate before we can compare topology, meaning FPS will not be as great as if we knew for sure that topology didn't change. Loose edges subdivision is different from what it used to be with old subdivision code, but probably nice feature now is that endpoints of loose edges are stay at the coarse vertex locations. This allows to have things like plane with hair strands, without need to duplicate edge vertices at endpoints. All this required some re-work of topology refiner creation, which is now only passing edges and vertices which are adjacent to face. This is how topology refiner is supposed to be used, and this is how its validator also works. Vertices which are adjacent to loose edges are marked as infinite sharp. This seems to be good-enough approximation for now. In the future we might tweaks things a bit and push such vertices in average direction of loose edges, to match old subdivision code closer.
36 lines
1.3 KiB
C++
36 lines
1.3 KiB
C++
// Copyright 2015 Blender Foundation. All rights reserved.
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software Foundation,
|
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
//
|
|
// Author: Sergey Sharybin
|
|
|
|
#ifndef OPENSUBDIV_INTERNAL_H_
|
|
#define OPENSUBDIV_INTERNAL_H_
|
|
|
|
// Perform full topology validation when exporting it to OpenSubdiv.
|
|
#ifdef NDEBUG
|
|
// Never do for release builds.
|
|
# undef OPENSUBDIV_VALIDATE_TOPOLOGY
|
|
#else
|
|
# define OPENSUBDIV_VALIDATE_TOPOLOGY
|
|
#endif
|
|
|
|
// Currently OpenSubdiv expects topology to be oriented, but sometimes it's
|
|
// handy to disable orientation code to check whether it causes some weird
|
|
// issues by using pre-oriented model.
|
|
#define OPENSUBDIV_ORIENT_TOPOLOGY
|
|
|
|
#endif // OPENSUBDIV_INTERNAL_H_
|