Skip to content

Commit

Permalink
Show cutface review as image instead of mesh
Browse files Browse the repository at this point in the history
  • Loading branch information
huxingyi committed Dec 20, 2022
1 parent 4e15cb9 commit 98ad7bc
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 164 deletions.
2 changes: 0 additions & 2 deletions application/application.pro
Original file line number Diff line number Diff line change
Expand Up @@ -286,8 +286,6 @@ HEADERS += ../dust3d/mesh/resolve_triangle_tangent.h
SOURCES += ../dust3d/mesh/resolve_triangle_tangent.cc
HEADERS += ../dust3d/mesh/rope_mesh.h
SOURCES += ../dust3d/mesh/rope_mesh.cc
HEADERS += ../dust3d/mesh/section_preview_mesh_builder.h
SOURCES += ../dust3d/mesh/section_preview_mesh_builder.cc
HEADERS += ../dust3d/mesh/section_remesher.h
SOURCES += ../dust3d/mesh/section_remesher.cc
HEADERS += ../dust3d/mesh/smooth_normal.h
Expand Down
8 changes: 8 additions & 0 deletions application/sources/document.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2151,6 +2151,14 @@ void Document::meshReady()
emit resultComponentPreviewMeshesChanged();
}

std::unique_ptr<std::map<dust3d::Uuid, std::unique_ptr<QImage>>> componentPreviewImages;
componentPreviewImages.reset(m_meshGenerator->takeComponentPreviewImages());
if (componentPreviewImages && !componentPreviewImages->empty()) {
for (auto& it : *componentPreviewImages) {
setComponentPreviewImage(it.first, std::move(it.second));
}
}

delete m_resultMesh;
m_resultMesh = resultMesh;

Expand Down
13 changes: 13 additions & 0 deletions application/sources/mesh_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ std::map<dust3d::Uuid, std::unique_ptr<ModelMesh>>* MeshGenerator::takeComponent
return m_componentPreviewMeshes.release();
}

std::map<dust3d::Uuid, std::unique_ptr<QImage>>* MeshGenerator::takeComponentPreviewImages()
{
return m_componentPreviewImages.release();
}

MonochromeMesh* MeshGenerator::takeWireframeMesh()
{
return m_wireframeMesh.release();
Expand All @@ -35,11 +40,19 @@ void MeshGenerator::process()
if (nullptr != m_object)
m_resultMesh = std::make_unique<ModelMesh>(*m_object);

m_componentPreviewImages = std::make_unique<std::map<dust3d::Uuid, std::unique_ptr<QImage>>>();

m_componentPreviewMeshes = std::make_unique<std::map<dust3d::Uuid, std::unique_ptr<ModelMesh>>>();
for (const auto& componentId : m_generatedPreviewComponentIds) {
auto it = m_generatedComponentPreviews.find(componentId);
if (it == m_generatedComponentPreviews.end())
continue;
if (!it->second.cutFaceTemplate.empty()) {
QImage* previewImage = buildCutFaceTemplatePreviewImage(it->second.cutFaceTemplate);
if (nullptr != previewImage)
(*m_componentPreviewImages)[componentId].reset(previewImage);
continue;
}
std::vector<std::array<dust3d::Vector2, 3>> triangleUvs;
if (!it->second.triangleUvs.empty()) {
triangleUvs.resize(it->second.triangles.size());
Expand Down
2 changes: 2 additions & 0 deletions application/sources/mesh_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class MeshGenerator : public QObject, public dust3d::MeshGenerator {
~MeshGenerator();
ModelMesh* takeResultMesh();
std::map<dust3d::Uuid, std::unique_ptr<ModelMesh>>* takeComponentPreviewMeshes();
std::map<dust3d::Uuid, std::unique_ptr<QImage>>* takeComponentPreviewImages();
MonochromeMesh* takeWireframeMesh();
public slots:
void process();
Expand All @@ -24,6 +25,7 @@ public slots:
private:
std::unique_ptr<ModelMesh> m_resultMesh;
std::unique_ptr<std::map<dust3d::Uuid, std::unique_ptr<ModelMesh>>> m_componentPreviewMeshes;
std::unique_ptr<std::map<dust3d::Uuid, std::unique_ptr<QImage>>> m_componentPreviewImages;
std::unique_ptr<MonochromeMesh> m_wireframeMesh;
};

Expand Down
13 changes: 1 addition & 12 deletions dust3d/mesh/mesh_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
#include <dust3d/mesh/mesh_generator.h>
#include <dust3d/mesh/mesh_recombiner.h>
#include <dust3d/mesh/rope_mesh.h>
#include <dust3d/mesh/section_preview_mesh_builder.h>
#include <dust3d/mesh/smooth_normal.h>
#include <dust3d/mesh/stitch_mesh_builder.h>
#include <dust3d/mesh/triangulate.h>
Expand Down Expand Up @@ -711,18 +710,8 @@ std::unique_ptr<MeshState> MeshGenerator::combinePartMesh(const std::string& par
preview.triangleUvs = partCache.triangleUvs;
addComponentPreview(componentIdString, std::move(preview));
} else if (PartTarget::CutFace == target) {
std::unique_ptr<SectionPreviewMeshBuilder> sectionPreviewMeshBuilder;
std::vector<Vector2> previewCutTemplate;
cutFaceStringToCutTemplate(partIdString, previewCutTemplate);
sectionPreviewMeshBuilder = std::make_unique<SectionPreviewMeshBuilder>(previewCutTemplate, partCache.color);
sectionPreviewMeshBuilder->build();
ComponentPreview preview;
preview.vertices = sectionPreviewMeshBuilder->resultVertices();
preview.triangles = sectionPreviewMeshBuilder->resultTriangles();
preview.vertexProperties = sectionPreviewMeshBuilder->resultVertexProperties();
preview.color = partCache.color;
preview.metalness = partCache.metalness;
preview.roughness = partCache.roughness;
cutFaceStringToCutTemplate(partIdString, preview.cutFaceTemplate);
addComponentPreview(componentIdString, std::move(preview));
}

Expand Down
1 change: 1 addition & 0 deletions dust3d/mesh/mesh_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ class MeshGenerator {
float metalness = 0.0;
float roughness = 1.0;
std::vector<std::tuple<dust3d::Color, float /*metalness*/, float /*roughness*/>> vertexProperties;
std::vector<Vector2> cutFaceTemplate;
};

MeshGenerator(Snapshot* snapshot);
Expand Down
98 changes: 0 additions & 98 deletions dust3d/mesh/section_preview_mesh_builder.cc

This file was deleted.

52 changes: 0 additions & 52 deletions dust3d/mesh/section_preview_mesh_builder.h

This file was deleted.

0 comments on commit 98ad7bc

Please sign in to comment.