Fix build
parent
dc33bfd0a3
commit
d7fb742d7b
|
@ -50,6 +50,7 @@ after_test:
|
||||||
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\CGAL-4.11.1\build\bin\Release\CGAL-vc140-mt-4.11.1.dll
|
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\CGAL-4.11.1\build\bin\Release\CGAL-vc140-mt-4.11.1.dll
|
||||||
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\CGAL-4.11.1\auxiliary\gmp\lib\libgmp-10.dll
|
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\CGAL-4.11.1\auxiliary\gmp\lib\libgmp-10.dll
|
||||||
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\CGAL-4.11.1\auxiliary\gmp\lib\libmpfr-4.dll
|
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\CGAL-4.11.1\auxiliary\gmp\lib\libmpfr-4.dll
|
||||||
|
- 7z a dust3d_unstable_%PLATFORM%.zip %APPVEYOR_BUILD_FOLDER%\ci\opengl32sw.dll
|
||||||
- 7z a dust3d_unstable_%PLATFORM%.zip %QTDIR%\bin\Qt5Widgets.dll
|
- 7z a dust3d_unstable_%PLATFORM%.zip %QTDIR%\bin\Qt5Widgets.dll
|
||||||
- 7z a dust3d_unstable_%PLATFORM%.zip %QTDIR%\bin\Qt5Gui.dll
|
- 7z a dust3d_unstable_%PLATFORM%.zip %QTDIR%\bin\Qt5Gui.dll
|
||||||
- 7z a dust3d_unstable_%PLATFORM%.zip %QTDIR%\bin\Qt5Core.dll
|
- 7z a dust3d_unstable_%PLATFORM%.zip %QTDIR%\bin\Qt5Core.dll
|
||||||
|
|
Binary file not shown.
|
@ -80,8 +80,8 @@ HEADERS += src/gltffile.h
|
||||||
SOURCES += src/theme.cpp
|
SOURCES += src/theme.cpp
|
||||||
HEADERS += src/theme.h
|
HEADERS += src/theme.h
|
||||||
|
|
||||||
SOURCES += src/mesh.cpp
|
SOURCES += src/meshloader.cpp
|
||||||
HEADERS += src/mesh.h
|
HEADERS += src/meshloader.h
|
||||||
|
|
||||||
SOURCES += src/meshutil.cpp
|
SOURCES += src/meshutil.cpp
|
||||||
HEADERS += src/meshutil.h
|
HEADERS += src/meshutil.h
|
||||||
|
@ -120,6 +120,8 @@ HEADERS += src/version.h
|
||||||
QMAKE_CXXFLAGS += -std=c++11
|
QMAKE_CXXFLAGS += -std=c++11
|
||||||
|
|
||||||
win32 {
|
win32 {
|
||||||
|
LIBS += -luser32
|
||||||
|
|
||||||
isEmpty(BOOST_INCLUDEDIR) {
|
isEmpty(BOOST_INCLUDEDIR) {
|
||||||
BOOST_INCLUDEDIR = $$(BOOST_INCLUDEDIR)
|
BOOST_INCLUDEDIR = $$(BOOST_INCLUDEDIR)
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,9 +57,9 @@ void MeshGenerator::addPartPreviewRequirement(const QString &partId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh *MeshGenerator::takeResultMesh()
|
MeshLoader *MeshGenerator::takeResultMesh()
|
||||||
{
|
{
|
||||||
Mesh *resultMesh = m_mesh;
|
MeshLoader *resultMesh = m_mesh;
|
||||||
m_mesh = nullptr;
|
m_mesh = nullptr;
|
||||||
return resultMesh;
|
return resultMesh;
|
||||||
}
|
}
|
||||||
|
@ -363,7 +363,7 @@ void MeshGenerator::process()
|
||||||
if (m_requirePartPreviewMap.find(partIdIt) != m_requirePartPreviewMap.end()) {
|
if (m_requirePartPreviewMap.find(partIdIt) != m_requirePartPreviewMap.end()) {
|
||||||
ModelOfflineRender *render = m_partPreviewRenderMap[partIdIt];
|
ModelOfflineRender *render = m_partPreviewRenderMap[partIdIt];
|
||||||
int trimedMeshId = meshlite_trim(meshliteContext, meshId, 1);
|
int trimedMeshId = meshlite_trim(meshliteContext, meshId, 1);
|
||||||
render->updateMesh(new Mesh(meshliteContext, trimedMeshId, -1, modelColor));
|
render->updateMesh(new MeshLoader(meshliteContext, trimedMeshId, -1, modelColor));
|
||||||
QImage *image = new QImage(render->toImage(QSize(Theme::previewImageRenderSize, Theme::previewImageRenderSize)));
|
QImage *image = new QImage(render->toImage(QSize(Theme::previewImageRenderSize, Theme::previewImageRenderSize)));
|
||||||
m_partPreviewMap[partIdIt] = image;
|
m_partPreviewMap[partIdIt] = image;
|
||||||
}
|
}
|
||||||
|
@ -414,7 +414,7 @@ void MeshGenerator::process()
|
||||||
|
|
||||||
if (mergedMeshId > 0) {
|
if (mergedMeshId > 0) {
|
||||||
if (m_requirePreview) {
|
if (m_requirePreview) {
|
||||||
m_previewRender->updateMesh(new Mesh(meshliteContext, mergedMeshId));
|
m_previewRender->updateMesh(new MeshLoader(meshliteContext, mergedMeshId));
|
||||||
QImage *image = new QImage(m_previewRender->toImage(QSize(Theme::previewImageRenderSize, Theme::previewImageRenderSize)));
|
QImage *image = new QImage(m_previewRender->toImage(QSize(Theme::previewImageRenderSize, Theme::previewImageRenderSize)));
|
||||||
m_preview = image;
|
m_preview = image;
|
||||||
}
|
}
|
||||||
|
@ -426,7 +426,7 @@ void MeshGenerator::process()
|
||||||
loadGeneratedPositionsToMeshResultContext(meshliteContext, triangulatedFinalMeshId);
|
loadGeneratedPositionsToMeshResultContext(meshliteContext, triangulatedFinalMeshId);
|
||||||
//PositionMap<QColor> positionColorMap;
|
//PositionMap<QColor> positionColorMap;
|
||||||
//m_meshResultContext->calculatePositionColorMap(positionColorMap);
|
//m_meshResultContext->calculatePositionColorMap(positionColorMap);
|
||||||
m_mesh = new Mesh(meshliteContext, finalMeshId, triangulatedFinalMeshId, broken ? Theme::broken : Theme::white, &m_meshResultContext->triangleColors());
|
m_mesh = new MeshLoader(meshliteContext, finalMeshId, triangulatedFinalMeshId, broken ? Theme::broken : Theme::white, &m_meshResultContext->triangleColors());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_previewRender) {
|
if (m_previewRender) {
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include "skeletonsnapshot.h"
|
#include "skeletonsnapshot.h"
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
#include "modelofflinerender.h"
|
#include "modelofflinerender.h"
|
||||||
#include "meshresultcontext.h"
|
#include "meshresultcontext.h"
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public:
|
||||||
~MeshGenerator();
|
~MeshGenerator();
|
||||||
void addPreviewRequirement();
|
void addPreviewRequirement();
|
||||||
void addPartPreviewRequirement(const QString &partId);
|
void addPartPreviewRequirement(const QString &partId);
|
||||||
Mesh *takeResultMesh();
|
MeshLoader *takeResultMesh();
|
||||||
QImage *takePreview();
|
QImage *takePreview();
|
||||||
QImage *takePartPreview(const QString &partId);
|
QImage *takePartPreview(const QString &partId);
|
||||||
MeshResultContext *takeMeshResultContext();
|
MeshResultContext *takeMeshResultContext();
|
||||||
|
@ -29,7 +29,7 @@ public slots:
|
||||||
void process();
|
void process();
|
||||||
private:
|
private:
|
||||||
SkeletonSnapshot *m_snapshot;
|
SkeletonSnapshot *m_snapshot;
|
||||||
Mesh *m_mesh;
|
MeshLoader *m_mesh;
|
||||||
QImage *m_preview;
|
QImage *m_preview;
|
||||||
std::map<QString, QImage *> m_partPreviewMap;
|
std::map<QString, QImage *> m_partPreviewMap;
|
||||||
bool m_requirePreview;
|
bool m_requirePreview;
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
#include "meshlite.h"
|
#include "meshlite.h"
|
||||||
#include "theme.h"
|
#include "theme.h"
|
||||||
#include "positionmap.h"
|
#include "positionmap.h"
|
||||||
|
|
||||||
#define MAX_VERTICES_PER_FACE 100
|
#define MAX_VERTICES_PER_FACE 100
|
||||||
|
|
||||||
Mesh::Mesh(void *meshlite, int meshId, int triangulatedMeshId, QColor modelColor, const std::vector<QColor> *triangleColors) :
|
MeshLoader::MeshLoader(void *meshlite, int meshId, int triangulatedMeshId, QColor modelColor, const std::vector<QColor> *triangleColors) :
|
||||||
m_triangleVertices(NULL),
|
m_triangleVertices(NULL),
|
||||||
m_triangleVertexCount(0),
|
m_triangleVertexCount(0),
|
||||||
m_edgeVertices(NULL),
|
m_edgeVertices(NULL),
|
||||||
|
@ -137,48 +137,48 @@ Mesh::Mesh(void *meshlite, int meshId, int triangulatedMeshId, QColor modelColor
|
||||||
delete[] edgeNormals;
|
delete[] edgeNormals;
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh::~Mesh()
|
MeshLoader::~MeshLoader()
|
||||||
{
|
{
|
||||||
delete[] m_triangleVertices;
|
delete[] m_triangleVertices;
|
||||||
m_triangleVertexCount = 0;
|
m_triangleVertexCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<QVector3D> &Mesh::vertices()
|
const std::vector<QVector3D> &MeshLoader::vertices()
|
||||||
{
|
{
|
||||||
return m_vertices;
|
return m_vertices;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<std::vector<int>> &Mesh::faces()
|
const std::vector<std::vector<int>> &MeshLoader::faces()
|
||||||
{
|
{
|
||||||
return m_faces;
|
return m_faces;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<QVector3D> &Mesh::triangulatedVertices()
|
const std::vector<QVector3D> &MeshLoader::triangulatedVertices()
|
||||||
{
|
{
|
||||||
return m_triangulatedVertices;
|
return m_triangulatedVertices;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<TriangulatedFace> &Mesh::triangulatedFaces()
|
const std::vector<TriangulatedFace> &MeshLoader::triangulatedFaces()
|
||||||
{
|
{
|
||||||
return m_triangulatedFaces;
|
return m_triangulatedFaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vertex *Mesh::triangleVertices()
|
Vertex *MeshLoader::triangleVertices()
|
||||||
{
|
{
|
||||||
return m_triangleVertices;
|
return m_triangleVertices;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Mesh::triangleVertexCount()
|
int MeshLoader::triangleVertexCount()
|
||||||
{
|
{
|
||||||
return m_triangleVertexCount;
|
return m_triangleVertexCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vertex *Mesh::edgeVertices()
|
Vertex *MeshLoader::edgeVertices()
|
||||||
{
|
{
|
||||||
return m_edgeVertices;
|
return m_edgeVertices;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Mesh::edgeVertexCount()
|
int MeshLoader::edgeVertexCount()
|
||||||
{
|
{
|
||||||
return m_edgeVertexCount;
|
return m_edgeVertexCount;
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef MESH_H
|
#ifndef MESH_LOADER_H
|
||||||
#define MESH_H
|
#define MESH_LOADER_H
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QOpenGLFunctions>
|
#include <QOpenGLFunctions>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -30,11 +30,11 @@ struct TriangulatedFace
|
||||||
QColor color;
|
QColor color;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Mesh
|
class MeshLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Mesh(void *meshlite, int meshId, int triangulatedMeshId = -1, QColor modelColor=Theme::white, const std::vector<QColor> *triangleColors=nullptr);
|
MeshLoader(void *meshlite, int meshId, int triangulatedMeshId = -1, QColor modelColor=Theme::white, const std::vector<QColor> *triangleColors=nullptr);
|
||||||
~Mesh();
|
~MeshLoader();
|
||||||
Vertex *triangleVertices();
|
Vertex *triangleVertices();
|
||||||
int triangleVertexCount();
|
int triangleVertexCount();
|
||||||
Vertex *edgeVertices();
|
Vertex *edgeVertices();
|
|
@ -149,7 +149,7 @@ int unionMeshs(void *meshliteContext, const std::vector<int> &meshIds, int *erro
|
||||||
for (size_t i = 0; i < meshIds.size(); i++) {
|
for (size_t i = 0; i < meshIds.size(); i++) {
|
||||||
int triangledMeshId = meshlite_triangulate(meshliteContext, meshIds[i]);
|
int triangledMeshId = meshlite_triangulate(meshliteContext, meshIds[i]);
|
||||||
//if (!meshlite_is_triangulated_manifold(meshliteContext, triangledMeshId))
|
//if (!meshlite_is_triangulated_manifold(meshliteContext, triangledMeshId))
|
||||||
// qDebug() << "Mesh is not manifold after triangulated:" << triangledMeshId;
|
// qDebug() << "MeshLoader is not manifold after triangulated:" << triangledMeshId;
|
||||||
ExactMesh *mesh = makeCgalMeshFromMeshlite<ExactKernel>(meshliteContext, triangledMeshId);
|
ExactMesh *mesh = makeCgalMeshFromMeshlite<ExactKernel>(meshliteContext, triangledMeshId);
|
||||||
if (CGAL::Polygon_mesh_processing::does_self_intersect(*mesh)) {
|
if (CGAL::Polygon_mesh_processing::does_self_intersect(*mesh)) {
|
||||||
qDebug() << "CGAL::Polygon_mesh_processing::does_self_intersect:" << i;
|
qDebug() << "CGAL::Polygon_mesh_processing::does_self_intersect:" << i;
|
||||||
|
|
|
@ -22,7 +22,7 @@ ModelMeshBinder::~ModelMeshBinder()
|
||||||
delete m_mesh;
|
delete m_mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelMeshBinder::updateMesh(Mesh *mesh)
|
void ModelMeshBinder::updateMesh(MeshLoader *mesh)
|
||||||
{
|
{
|
||||||
QMutexLocker lock(&m_meshMutex);
|
QMutexLocker lock(&m_meshMutex);
|
||||||
if (mesh != m_mesh) {
|
if (mesh != m_mesh) {
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include <QOpenGLBuffer>
|
#include <QOpenGLBuffer>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
|
|
||||||
class ModelMeshBinder
|
class ModelMeshBinder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ModelMeshBinder();
|
ModelMeshBinder();
|
||||||
~ModelMeshBinder();
|
~ModelMeshBinder();
|
||||||
void updateMesh(Mesh *mesh);
|
void updateMesh(MeshLoader *mesh);
|
||||||
void exportMeshAsObj(const QString &filename);
|
void exportMeshAsObj(const QString &filename);
|
||||||
void exportMeshAdObjPlusMaterials(const QString &filename);
|
void exportMeshAdObjPlusMaterials(const QString &filename);
|
||||||
void initialize();
|
void initialize();
|
||||||
|
@ -21,7 +21,7 @@ public:
|
||||||
void hideWireframes();
|
void hideWireframes();
|
||||||
bool isWireframesVisible();
|
bool isWireframesVisible();
|
||||||
private:
|
private:
|
||||||
Mesh *m_mesh;
|
MeshLoader *m_mesh;
|
||||||
int m_renderTriangleVertexCount;
|
int m_renderTriangleVertexCount;
|
||||||
int m_renderEdgeVertexCount;
|
int m_renderEdgeVertexCount;
|
||||||
bool m_meshUpdated;
|
bool m_meshUpdated;
|
||||||
|
|
|
@ -29,7 +29,7 @@ ModelOfflineRender::~ModelOfflineRender()
|
||||||
delete m_mesh;
|
delete m_mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelOfflineRender::updateMesh(Mesh *mesh)
|
void ModelOfflineRender::updateMesh(MeshLoader *mesh)
|
||||||
{
|
{
|
||||||
delete m_mesh;
|
delete m_mesh;
|
||||||
m_mesh = mesh;
|
m_mesh = mesh;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include "modelshaderprogram.h"
|
#include "modelshaderprogram.h"
|
||||||
#include "modelmeshbinder.h"
|
#include "modelmeshbinder.h"
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
|
|
||||||
class ModelOfflineRender : QOffscreenSurface
|
class ModelOfflineRender : QOffscreenSurface
|
||||||
{
|
{
|
||||||
|
@ -16,11 +16,11 @@ public:
|
||||||
ModelOfflineRender(QScreen *targetScreen = Q_NULLPTR);
|
ModelOfflineRender(QScreen *targetScreen = Q_NULLPTR);
|
||||||
~ModelOfflineRender();
|
~ModelOfflineRender();
|
||||||
void setRenderThread(QThread *thread);
|
void setRenderThread(QThread *thread);
|
||||||
void updateMesh(Mesh *mesh);
|
void updateMesh(MeshLoader *mesh);
|
||||||
QImage toImage(const QSize &size);
|
QImage toImage(const QSize &size);
|
||||||
private:
|
private:
|
||||||
QOpenGLContext *m_context;
|
QOpenGLContext *m_context;
|
||||||
Mesh *m_mesh;
|
MeshLoader *m_mesh;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -277,7 +277,7 @@ void ModelWidget::wheelEvent(QWheelEvent *event)
|
||||||
setGeometry(geometry().marginsAdded(margins));
|
setGeometry(geometry().marginsAdded(margins));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelWidget::updateMesh(Mesh *mesh)
|
void ModelWidget::updateMesh(MeshLoader *mesh)
|
||||||
{
|
{
|
||||||
m_meshBinder.updateMesh(mesh);
|
m_meshBinder.updateMesh(mesh);
|
||||||
update();
|
update();
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <QMatrix4x4>
|
#include <QMatrix4x4>
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include <QRubberBand>
|
#include <QRubberBand>
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
#include "modelshaderprogram.h"
|
#include "modelshaderprogram.h"
|
||||||
#include "modelmeshbinder.h"
|
#include "modelmeshbinder.h"
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ public:
|
||||||
static bool isTransparent() { return m_transparent; }
|
static bool isTransparent() { return m_transparent; }
|
||||||
static void setTransparent(bool t) { m_transparent = t; }
|
static void setTransparent(bool t) { m_transparent = t; }
|
||||||
|
|
||||||
void updateMesh(Mesh *mesh);
|
void updateMesh(MeshLoader *mesh);
|
||||||
void exportMeshAsObj(const QString &filename);
|
void exportMeshAsObj(const QString &filename);
|
||||||
void exportMeshAsObjPlusMaterials(const QString &filename);
|
void exportMeshAsObjPlusMaterials(const QString &filename);
|
||||||
void setGraphicsFunctions(SkeletonGraphicsFunctions *graphicsFunctions);
|
void setGraphicsFunctions(SkeletonGraphicsFunctions *graphicsFunctions);
|
||||||
|
|
|
@ -775,23 +775,23 @@ void SkeletonDocument::fromSnapshot(const SkeletonSnapshot &snapshot)
|
||||||
addFromSnapshot(snapshot);
|
addFromSnapshot(snapshot);
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh *SkeletonDocument::takeResultMesh()
|
MeshLoader *SkeletonDocument::takeResultMesh()
|
||||||
{
|
{
|
||||||
Mesh *resultMesh = m_resultMesh;
|
MeshLoader *resultMesh = m_resultMesh;
|
||||||
m_resultMesh = nullptr;
|
m_resultMesh = nullptr;
|
||||||
return resultMesh;
|
return resultMesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh *SkeletonDocument::takeResultSkeletonMesh()
|
MeshLoader *SkeletonDocument::takeResultSkeletonMesh()
|
||||||
{
|
{
|
||||||
Mesh *resultSkeletonMesh = m_resultSkeletonMesh;
|
MeshLoader *resultSkeletonMesh = m_resultSkeletonMesh;
|
||||||
m_resultSkeletonMesh = nullptr;
|
m_resultSkeletonMesh = nullptr;
|
||||||
return resultSkeletonMesh;
|
return resultSkeletonMesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkeletonDocument::meshReady()
|
void SkeletonDocument::meshReady()
|
||||||
{
|
{
|
||||||
Mesh *resultMesh = m_meshGenerator->takeResultMesh();
|
MeshLoader *resultMesh = m_meshGenerator->takeResultMesh();
|
||||||
MeshResultContext *meshResultContext = m_meshGenerator->takeMeshResultContext();
|
MeshResultContext *meshResultContext = m_meshGenerator->takeMeshResultContext();
|
||||||
|
|
||||||
QImage *resultPreview = m_meshGenerator->takePreview();
|
QImage *resultPreview = m_meshGenerator->takePreview();
|
||||||
|
@ -822,7 +822,7 @@ void SkeletonDocument::meshReady()
|
||||||
delete m_meshGenerator;
|
delete m_meshGenerator;
|
||||||
m_meshGenerator = nullptr;
|
m_meshGenerator = nullptr;
|
||||||
|
|
||||||
qDebug() << "Mesh generation done";
|
qDebug() << "MeshLoader generation done";
|
||||||
|
|
||||||
emit resultMeshChanged();
|
emit resultMeshChanged();
|
||||||
|
|
||||||
|
@ -853,7 +853,7 @@ void SkeletonDocument::generateMesh()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Mesh generating..";
|
qDebug() << "MeshLoader generating..";
|
||||||
|
|
||||||
m_resultMeshIsObsolete = false;
|
m_resultMeshIsObsolete = false;
|
||||||
|
|
||||||
|
@ -942,7 +942,7 @@ void SkeletonDocument::generateSkeleton()
|
||||||
|
|
||||||
void SkeletonDocument::skeletonReady()
|
void SkeletonDocument::skeletonReady()
|
||||||
{
|
{
|
||||||
Mesh *resultSkeletonMesh = m_skeletonGenerator->takeResultSkeletonMesh();
|
MeshLoader *resultSkeletonMesh = m_skeletonGenerator->takeResultSkeletonMesh();
|
||||||
|
|
||||||
delete m_resultSkeletonMesh;
|
delete m_resultSkeletonMesh;
|
||||||
m_resultSkeletonMesh = resultSkeletonMesh;
|
m_resultSkeletonMesh = resultSkeletonMesh;
|
||||||
|
@ -973,7 +973,7 @@ void SkeletonDocument::postProcess()
|
||||||
m_postProcessResultIsObsolete = false;
|
m_postProcessResultIsObsolete = false;
|
||||||
|
|
||||||
if (!m_currentMeshResultContext) {
|
if (!m_currentMeshResultContext) {
|
||||||
qDebug() << "Mesh is null";
|
qDebug() << "MeshLoader is null";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include "skeletonsnapshot.h"
|
#include "skeletonsnapshot.h"
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
#include "meshgenerator.h"
|
#include "meshgenerator.h"
|
||||||
#include "skeletongenerator.h"
|
#include "skeletongenerator.h"
|
||||||
#include "theme.h"
|
#include "theme.h"
|
||||||
|
@ -238,8 +238,8 @@ public:
|
||||||
const SkeletonEdge *findEdge(QUuid edgeId) const;
|
const SkeletonEdge *findEdge(QUuid edgeId) const;
|
||||||
const SkeletonPart *findPart(QUuid partId) const;
|
const SkeletonPart *findPart(QUuid partId) const;
|
||||||
const SkeletonEdge *findEdgeByNodes(QUuid firstNodeId, QUuid secondNodeId) const;
|
const SkeletonEdge *findEdgeByNodes(QUuid firstNodeId, QUuid secondNodeId) const;
|
||||||
Mesh *takeResultMesh();
|
MeshLoader *takeResultMesh();
|
||||||
Mesh *takeResultSkeletonMesh();
|
MeshLoader *takeResultSkeletonMesh();
|
||||||
void updateTurnaround(const QImage &image);
|
void updateTurnaround(const QImage &image);
|
||||||
bool hasPastableContentInClipboard() const;
|
bool hasPastableContentInClipboard() const;
|
||||||
bool undoable() const;
|
bool undoable() const;
|
||||||
|
@ -302,12 +302,12 @@ private:
|
||||||
private: // need initialize
|
private: // need initialize
|
||||||
bool m_resultMeshIsObsolete;
|
bool m_resultMeshIsObsolete;
|
||||||
MeshGenerator *m_meshGenerator;
|
MeshGenerator *m_meshGenerator;
|
||||||
Mesh *m_resultMesh;
|
MeshLoader *m_resultMesh;
|
||||||
int m_batchChangeRefCount;
|
int m_batchChangeRefCount;
|
||||||
MeshResultContext *m_currentMeshResultContext;
|
MeshResultContext *m_currentMeshResultContext;
|
||||||
bool m_resultSkeletonIsObsolete;
|
bool m_resultSkeletonIsObsolete;
|
||||||
SkeletonGenerator *m_skeletonGenerator;
|
SkeletonGenerator *m_skeletonGenerator;
|
||||||
Mesh *m_resultSkeletonMesh;
|
MeshLoader *m_resultSkeletonMesh;
|
||||||
bool m_textureIsObsolete;
|
bool m_textureIsObsolete;
|
||||||
TextureGenerator *m_textureGenerator;
|
TextureGenerator *m_textureGenerator;
|
||||||
bool m_postProcessResultIsObsolete;
|
bool m_postProcessResultIsObsolete;
|
||||||
|
|
|
@ -19,9 +19,9 @@ SkeletonGenerator::~SkeletonGenerator()
|
||||||
delete m_meshResultContext;
|
delete m_meshResultContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh *SkeletonGenerator::takeResultSkeletonMesh()
|
MeshLoader *SkeletonGenerator::takeResultSkeletonMesh()
|
||||||
{
|
{
|
||||||
Mesh *resultSkeletonMesh = m_resultSkeletonMesh;
|
MeshLoader *resultSkeletonMesh = m_resultSkeletonMesh;
|
||||||
m_resultSkeletonMesh = nullptr;
|
m_resultSkeletonMesh = nullptr;
|
||||||
return resultSkeletonMesh;
|
return resultSkeletonMesh;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ MeshResultContext *SkeletonGenerator::takeResultContext()
|
||||||
return resultContext;
|
return resultContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh *SkeletonGenerator::createSkeletonMesh()
|
MeshLoader *SkeletonGenerator::createSkeletonMesh()
|
||||||
{
|
{
|
||||||
void *meshliteContext = meshlite_create_context();
|
void *meshliteContext = meshlite_create_context();
|
||||||
int sklt = meshlite_skeletonmesh_create(meshliteContext);
|
int sklt = meshlite_skeletonmesh_create(meshliteContext);
|
||||||
|
@ -63,7 +63,7 @@ Mesh *SkeletonGenerator::createSkeletonMesh()
|
||||||
}
|
}
|
||||||
|
|
||||||
int meshId = meshlite_skeletonmesh_generate_mesh(meshliteContext, sklt);
|
int meshId = meshlite_skeletonmesh_generate_mesh(meshliteContext, sklt);
|
||||||
Mesh *skeletonMesh = new Mesh(meshliteContext, meshId, -1, Theme::green);
|
MeshLoader *skeletonMesh = new MeshLoader(meshliteContext, meshId, -1, Theme::green);
|
||||||
|
|
||||||
meshlite_destroy_context(meshliteContext);
|
meshlite_destroy_context(meshliteContext);
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define SKELETON_GENERATOR_H
|
#define SKELETON_GENERATOR_H
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include "meshresultcontext.h"
|
#include "meshresultcontext.h"
|
||||||
#include "mesh.h"
|
#include "meshloader.h"
|
||||||
|
|
||||||
// https://raw.githubusercontent.com/KhronosGroup/glTF/master/specification/2.0/figures/gltfOverview-2.0.0a.png
|
// https://raw.githubusercontent.com/KhronosGroup/glTF/master/specification/2.0/figures/gltfOverview-2.0.0a.png
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ class SkeletonGenerator : public QObject
|
||||||
public:
|
public:
|
||||||
SkeletonGenerator(const MeshResultContext &meshResultContext);
|
SkeletonGenerator(const MeshResultContext &meshResultContext);
|
||||||
~SkeletonGenerator();
|
~SkeletonGenerator();
|
||||||
Mesh *takeResultSkeletonMesh();
|
MeshLoader *takeResultSkeletonMesh();
|
||||||
MeshResultContext *takeResultContext();
|
MeshResultContext *takeResultContext();
|
||||||
signals:
|
signals:
|
||||||
void finished();
|
void finished();
|
||||||
|
@ -20,10 +20,10 @@ public slots:
|
||||||
void process();
|
void process();
|
||||||
private:
|
private:
|
||||||
void combineAllBmeshSkeletons();
|
void combineAllBmeshSkeletons();
|
||||||
Mesh *createSkeletonMesh();
|
MeshLoader *createSkeletonMesh();
|
||||||
private:
|
private:
|
||||||
MeshResultContext *m_meshResultContext;
|
MeshResultContext *m_meshResultContext;
|
||||||
Mesh *m_resultSkeletonMesh;
|
MeshLoader *m_resultSkeletonMesh;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue