diff options
-rw-r--r-- | intern/opensubdiv/CMakeLists.txt | 2 | ||||
-rw-r--r-- | intern/opensubdiv/internal/topology/mesh_topology.cc | 52 | ||||
-rw-r--r-- | intern/opensubdiv/internal/topology/mesh_topology.h | 61 |
3 files changed, 115 insertions, 0 deletions
diff --git a/intern/opensubdiv/CMakeLists.txt b/intern/opensubdiv/CMakeLists.txt index 4387daf40e4..70c5453d3bd 100644 --- a/intern/opensubdiv/CMakeLists.txt +++ b/intern/opensubdiv/CMakeLists.txt @@ -78,6 +78,8 @@ if(WITH_OPENSUBDIV) internal/evaluator/evaluator_impl.h # Topology. + internal/topology/mesh_topology.cc + internal/topology/mesh_topology.h internal/topology/topology_refiner_capi.cc internal/topology/topology_refiner_factory.cc internal/topology/topology_refiner_impl.cc diff --git a/intern/opensubdiv/internal/topology/mesh_topology.cc b/intern/opensubdiv/internal/topology/mesh_topology.cc new file mode 100644 index 00000000000..f8832d61cd0 --- /dev/null +++ b/intern/opensubdiv/internal/topology/mesh_topology.cc @@ -0,0 +1,52 @@ +// Copyright 2020 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 + +#include "internal/topology/mesh_topology.h" + +#include <cassert> + +namespace blender { +namespace opensubdiv { + +MeshTopology::MeshTopology() +{ +} + +MeshTopology::~MeshTopology() +{ +} + +void MeshTopology::setNumVertices(int num_vertices) +{ + vertices.resize(num_vertices); +} +int MeshTopology::getNumVertices() const +{ + return vertices.size(); +} + +void MeshTopology::setVertexSharpness(int vertex_index, float sharpness) +{ + assert(vertex_index >= 0); + assert(vertex_index < vertices.size()); + + vertices[vertex_index].sharpness = sharpness; +} + +} // namespace opensubdiv +} // namespace blender diff --git a/intern/opensubdiv/internal/topology/mesh_topology.h b/intern/opensubdiv/internal/topology/mesh_topology.h new file mode 100644 index 00000000000..9893c70dac8 --- /dev/null +++ b/intern/opensubdiv/internal/topology/mesh_topology.h @@ -0,0 +1,61 @@ +// Copyright 2020 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_MESH_TOPOLOGY_H_ +#define OPENSUBDIV_MESH_TOPOLOGY_H_ + +#include "internal/base/memory.h" +#include "internal/base/type.h" + +struct OpenSubdiv_Converter; + +namespace blender { +namespace opensubdiv { + +class VertexTopology { + public: + float sharpness = 0.0f; +}; + +// Simplified representation of mesh topology. +// Only includes parts of actual mesh topology which is needed to perform +// comparison between Application side and OpenSubddiv side. +class MeshTopology { + public: + MeshTopology(); + MeshTopology(const MeshTopology &other) = default; + MeshTopology(MeshTopology &&other) noexcept = default; + ~MeshTopology(); + + MeshTopology &operator=(const MeshTopology &other) = default; + MeshTopology &operator=(MeshTopology &&other) = default; + + void setNumVertices(int num_vertices); + int getNumVertices() const; + + void setVertexSharpness(int vertex_index, float sharpness); + + vector<VertexTopology> vertices; + + MEM_CXX_CLASS_ALLOC_FUNCS("MeshTopology"); +}; + +} // namespace opensubdiv +} // namespace blender + +#endif // OPENSUBDIV_MESH_TOPOLOGY_H_ |