From 8ef63941c9017ad89dfd1f538ac85b1805e84134 Mon Sep 17 00:00:00 2001 From: "Beaufort, Pierre-Alexandre Richard (INF)" <pb20r939@campus.unibe.ch> Date: Tue, 6 Apr 2021 15:08:37 +0200 Subject: [PATCH] Color for tetrahedra --- FileVTK.cc | 22 ++++++++++++++++----- FileVTK.hh | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/FileVTK.cc b/FileVTK.cc index d78925e..a9cd8b3 100644 --- a/FileVTK.cc +++ b/FileVTK.cc @@ -480,8 +480,6 @@ int FileVTKPlugin::addLine(PolyMesh*& _mesh, const std::vector<quint32>& _indice int FileVTKPlugin::addFace(TriMesh*& _mesh, const std::vector<quint32>& _indices) { return addFaceToOpenMesh(_mesh, _indices); } int FileVTKPlugin::addFace(PolyMesh*& _mesh, const std::vector<quint32>& _indices) { return addFaceToOpenMesh(_mesh, _indices); } -int FileVTKPlugin::addFace(TriMesh*& _mesh, quint32 _index1, quint32 _index2, quint32 _index3) { return addFaceToOpenMesh(_mesh, _index1, _index2, _index3); } -int FileVTKPlugin::addFace(PolyMesh*& _mesh, quint32 _index1, quint32 _index2, quint32 _index3) { return addFaceToOpenMesh(_mesh, _index1, _index2, _index3); } void FileVTKPlugin::updateVertexNormals(TriMesh*& _mesh) { updateVertexNormalsOfOpenMesh(_mesh); } void FileVTKPlugin::updateVertexNormals(PolyMesh*& _mesh) { updateVertexNormalsOfOpenMesh(_mesh); } @@ -495,6 +493,8 @@ void FileVTKPlugin::addLineColor(TriMesh *& _mesh, quint32 _index, int _color) { void FileVTKPlugin::addLineColor(PolyMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for OpenMesh"));} void FileVTKPlugin::addFaceColor(TriMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for OpenMesh"));} void FileVTKPlugin::addFaceColor(PolyMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for OpenMesh"));} +void FileVTKPlugin::addCellColor(TriMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for OpenMesh"));} +void FileVTKPlugin::addCellColor(PolyMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for OpenMesh"));} void FileVTKPlugin::addVertexNormal(TriMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addVertexNormalToOpenMesh(_mesh, _index, _normal); } @@ -766,7 +766,6 @@ void FileVTKPlugin::addVertexColorToOpenVolumeMesh(MeshT _mesh, quint32 _index, OpenVolumeMesh::VertexPropertyT<int> vertexColors = _mesh->template request_vertex_property<int>("vertex_colors"); vertexColors[OpenVolumeMesh::VertexHandle(_index)] = _color; _mesh->set_persistent(vertexColors, true); - std::cerr << _index << "->" << _color << std::endl; } //pa @@ -792,6 +791,16 @@ void FileVTKPlugin::addLineColorToOpenVolumeMesh(MeshT _mesh, quint32 _index, in _mesh->set_persistent(lineColors, true); } +//pa +template <typename MeshT> +void FileVTKPlugin::addCellColorToOpenVolumeMesh(MeshT _mesh, quint32 _index, int _color) +{ + OpenVolumeMesh::CellPropertyT<int> cellColors = _mesh->template request_cell_property<int>("cell_colors"); + OpenVolumeMesh::CellHandle ch(_index); + cellColors[ch] = _color; + _mesh->set_persistent(cellColors, true); +} + template <typename MeshT> void FileVTKPlugin::addVertexNormalToOpenVolumeMesh(MeshT _mesh, quint32 _index, OpenMesh::Vec3d _normal) @@ -1247,6 +1256,7 @@ int FileVTKPlugin::addFace(HexahedralMesh*& _mesh, quint32 _index1, quint32 _ind void FileVTKPlugin::addVertexColor(HexahedralMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for hex meshes"));} void FileVTKPlugin::addLineColor(HexahedralMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for hex meshes"));} void FileVTKPlugin::addFaceColor(HexahedralMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for hex meshes"));} +void FileVTKPlugin::addCellColor(HexahedralMesh *& _mesh, quint32 _index, int _color) { emit log(LOGERR, tr("Coloring is not supported for hex meshes"));} void FileVTKPlugin::addVertexNormal(HexahedralMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addVertexNormalToOpenVolumeMesh(_mesh, _index, _normal); } void FileVTKPlugin::addFaceNormal(HexahedralMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addFaceNormalToOpenVolumeMesh(_mesh, _index, _normal); } bool FileVTKPlugin::writeASCIIData(std::ostream& _out, HexahedralMesh& _mesh) { return writeASCIIDataOfOpenVolumeMesh(_out, _mesh); } @@ -1264,6 +1274,7 @@ int FileVTKPlugin::addFace(PolyhedralMesh*& _mesh, quint32 _index1, quint32 _ind void FileVTKPlugin::addVertexColor(PolyhedralMesh *& _mesh, quint32 _index, int _color) { addVertexColorToOpenVolumeMesh(_mesh, _index, _color); } void FileVTKPlugin::addLineColor(PolyhedralMesh *& _mesh, quint32 _index, int _color) { addLineColorToOpenVolumeMesh(_mesh, _index, _color); } void FileVTKPlugin::addFaceColor(PolyhedralMesh *& _mesh, quint32 _index, int _color) { addFaceColorToOpenVolumeMesh(_mesh, _index, _color); } +void FileVTKPlugin::addCellColor(PolyhedralMesh *& _mesh, quint32 _index, int _color) { addCellColorToOpenVolumeMesh(_mesh, _index, _color); } void FileVTKPlugin::addVertexNormal(PolyhedralMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addVertexNormalToOpenVolumeMesh(_mesh, _index, _normal); } void FileVTKPlugin::addFaceNormal(PolyhedralMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addFaceNormalToOpenVolumeMesh(_mesh, _index, _normal); } bool FileVTKPlugin::writeASCIIData(std::ostream& _out, PolyhedralMesh& _mesh) { return writeASCIIDataOfOpenVolumeMesh(_out, _mesh); } @@ -1280,7 +1291,8 @@ int FileVTKPlugin::addFace(TetrahedralMesh*& _mesh, const std::vector<quint32>& int FileVTKPlugin::addFace(TetrahedralMesh*& _mesh, quint32 _index1, quint32 _index2, quint32 _index3) { return addFaceToOpenVolumeMesh(_mesh, _index1, _index2, _index3); } void FileVTKPlugin::addVertexColor(TetrahedralMesh*& _mesh, quint32 _index, int _color) { addVertexColorToOpenVolumeMesh(_mesh, _index, _color); } void FileVTKPlugin::addLineColor(TetrahedralMesh*& _mesh, quint32 _index, int _color) { addLineColorToOpenVolumeMesh(_mesh, _index, _color); } -void FileVTKPlugin::addFaceColor(TetrahedralMesh*& _mesh, quint32 _index, int _color) { addLineColorToOpenVolumeMesh(_mesh, _index, _color); } +void FileVTKPlugin::addFaceColor(TetrahedralMesh*& _mesh, quint32 _index, int _color) { addFaceColorToOpenVolumeMesh(_mesh, _index, _color); } +void FileVTKPlugin::addCellColor(TetrahedralMesh*& _mesh, quint32 _index, int _color) { addCellColorToOpenVolumeMesh(_mesh, _index, _color); } void FileVTKPlugin::addVertexNormal(TetrahedralMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addVertexNormalToOpenVolumeMesh(_mesh, _index, _normal); } void FileVTKPlugin::addFaceNormal(TetrahedralMesh*& _mesh, quint32 _index, OpenMesh::Vec3d _normal) { addFaceNormalToOpenVolumeMesh(_mesh, _index, _normal); } bool FileVTKPlugin::writeASCIIData(std::ostream& _out, TetrahedralMesh& _mesh) { return writeASCIIDataOfOpenVolumeMesh(_out, _mesh); } @@ -2432,7 +2444,7 @@ bool FileVTKPlugin::loadMeshColors(QString _spec,QTextStream& _in,MeshT*& _mesh, addFaceColor(_mesh, _cells[read].index, color); break; case 10 : - std::cout << "" ; + addCellColor(_mesh, _cells[read].index, color); break; default : emit log(LOGERR, tr("Coloring an unsupported type of cells: type %1").arg(_cells[read].type)); diff --git a/FileVTK.hh b/FileVTK.hh index 47a354c..ba6df54 100644 --- a/FileVTK.hh +++ b/FileVTK.hh @@ -602,6 +602,24 @@ class FileVTKPlugin : public QObject, BaseInterface, FileInterface, LoadSaveInte * @param _normal color that is added */ void addFaceColor(PolyMesh *& _mesh, quint32 _index, int _color); + + /** \brief Adds a cell color. + * + * + * @param _mesh Mesh the cell color is added to + * @param _index Index of the cell + * @param _normal color that is added + */ + void addCellColor(TriMesh *& _mesh, quint32 _index, int _color); + + /** \brief Adds a cell color. + * + * + * @param _mesh Mesh the cell color is added to + * @param _index Index of the cell + * @param _normal color that is added + */ + void addCellColor(PolyMesh *& _mesh, quint32 _index, int _color); /** \brief Adds a vertex normal. * @@ -784,6 +802,17 @@ class FileVTKPlugin : public QObject, BaseInterface, FileInterface, LoadSaveInte */ template <typename MeshT> void addFaceColorToOpenVolumeMesh(MeshT _mesh, quint32 _index, int _color); + + //pa + /** \brief Adds a cell color. + * + * + * @param _mesh Mesh the cell color is added to + * @param _index Index of the cell + * @param _color Color that is added + */ + template <typename MeshT> + void addCellColorToOpenVolumeMesh(MeshT _mesh, quint32 _index, int _color); /** \brief Adds a vertex normal. * @@ -938,6 +967,16 @@ class FileVTKPlugin : public QObject, BaseInterface, FileInterface, LoadSaveInte * @param _color Color that is added */ void addFaceColor(HexahedralMesh *& _mesh, quint32 _index, int _color); + + /** \brief Adds a cell color. + * + * + * @param _mesh Mesh the cell color is added to + * @param _index Index of the cell + * @param _color Color that is added + */ + void addCellColor(HexahedralMesh *& _mesh, quint32 _index, int _color); + /** \brief Adds a vertex normal. * @@ -1099,6 +1138,15 @@ class FileVTKPlugin : public QObject, BaseInterface, FileInterface, LoadSaveInte */ void addFaceColor(PolyhedralMesh *& _mesh, quint32 _index, int _color); + /** \brief Adds a cell color. + * + * + * @param _mesh Mesh the cell color is added to + * @param _index Index of the cell + * @param _color Color that is added + */ + void addCellColor(PolyhedralMesh *& _mesh, quint32 _index, int _color); + /** \brief Adds a vertex normal. * @@ -1259,6 +1307,15 @@ class FileVTKPlugin : public QObject, BaseInterface, FileInterface, LoadSaveInte * @param _color Color that is added */ void addFaceColor(TetrahedralMesh*& _mesh, quint32 _index, int _color); + + /** \brief Adds a cell color. + * + * + * @param _mesh Mesh the cell color is added to + * @param _index Index of the cell + * @param _color Color that is added + */ + void addCellColor(TetrahedralMesh*& _mesh, quint32 _index, int _color); /** \brief Adds a vertex normal. * -- GitLab