mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-16 17:44:36 +00:00
Merge branch 'master' of https://github.com/cnr-isti-vclab/meshlab
This commit is contained in:
commit
68f9102319
@ -41,6 +41,9 @@ install:
|
||||
#sudo apt-get -y install qtscript5-dev
|
||||
#sudo apt-get -y install libqt5xmlpatterns5-dev
|
||||
qmake --version
|
||||
echo $QMAKESPEC
|
||||
export QMAKESPEC="linux-clang"
|
||||
|
||||
fi
|
||||
- cd ..
|
||||
- git clone --depth=1 --branch=devel https://github.com/cnr-isti-vclab/vcglib.git
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#  MeshLab
|
||||
|
||||
[](https://travis-ci.org/cnr-isti-vclab/meshlab)
|
||||
[](https://ci.appveyor.com/project/cignoni/meshlab)
|
||||
|
||||
This is the official repository for the sources and the binaries of MeshLab.
|
||||
|
||||
@ -9,5 +10,5 @@ The system is aimed to help the processing of the typical not-so-small unstructu
|
||||
|
||||
MeshLab is mostly based on the open source c++ mesh processing library [VCGlib](http://www.vcglib.net) developed at the [Visual Computing Lab](http://vcg.isti.cnr.it) of [ISTI - CNR](http://www.isti.cnr.it), for all the core mesh processing tasks and it is available for Windows, MacOSX, and Linux.
|
||||
|
||||
Compiling instruction can be found in the [src](https://github.com/cnr-isti-vclab/meshlab/tree/master/src) folder.
|
||||
Compiling instruction can be found in the [src](https://github.com/cnr-isti-vclab/meshlab/tree/master/src) folder or simply looking at the continous integration setup on [travis](https://travis-ci.org/cnr-isti-vclab/meshlab/builds) and [appveyor](https://ci.appveyor.com/project/cignoni/meshlab/history).
|
||||
|
||||
|
||||
65
snap/snapcraft.yaml
Normal file
65
snap/snapcraft.yaml
Normal file
@ -0,0 +1,65 @@
|
||||
# Known to build in Ubuntu 17.04
|
||||
name: meshlab
|
||||
version: '2017.03-1'
|
||||
summary: MeshLab
|
||||
description: |
|
||||
The open source system for processing and editing 3D triangular meshes.
|
||||
It provides a set of tools for editing, cleaning, healing, inspecting,
|
||||
rendering, texturing and converting meshes. It offers features for processing
|
||||
raw data produced by 3D digitization tools/devices and for preparing models
|
||||
for 3D printing.
|
||||
icon: snap/gui/meshlab.png
|
||||
|
||||
grade: stable
|
||||
confinement: devmode
|
||||
|
||||
#apps:
|
||||
# meshlab:
|
||||
# command: desktop-launch meshlab
|
||||
# plugs: [home, x11, mir, opengl, unity7]
|
||||
# meshlabserver:
|
||||
# command: desktop-launch meshlabserver
|
||||
# plugs: [home, x11, opengl]
|
||||
|
||||
parts:
|
||||
meshlab:
|
||||
after: [desktop-qt5,vcglib]
|
||||
plugin: qmake
|
||||
qt-version: qt5
|
||||
source: https://github.com/cnr-isti-vclab/meshlab.git
|
||||
build-packages:
|
||||
- libqt5opengl5-dev
|
||||
- libqt5xmlpatterns5-dev
|
||||
- qt5-default
|
||||
- qtscript5-dev
|
||||
prepare: |
|
||||
ln -sf ../vcglib/install ../vcglib
|
||||
sed -i '/filter_csg/d' src/meshlab_full.pro
|
||||
sed -i -e '2ilinux:QMAKE_LFLAGS += -fopenmp -lgomp\' src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.pro
|
||||
sed -i 's|PR_XXXXXX|/tmp/PR_XXXXXX|' src/meshlabplugins/filter_screened_poisson/Src/Geometry.cpp
|
||||
build: |
|
||||
cd src/external
|
||||
qmake external.pro
|
||||
make -j4
|
||||
cd ..
|
||||
qmake meshlab_full.pro
|
||||
make -j4
|
||||
install: |
|
||||
cp src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.xml \
|
||||
src/meshlabplugins/filter_mutualinfoxml/filter_mutualinfo.xml \
|
||||
src/meshlabplugins/filter_measure/filter_measure.xml \
|
||||
src/distrib/plugins/
|
||||
cd src/distrib
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/bin
|
||||
cp -a meshlab* plugins shaders textures $SNAPCRAFT_PART_INSTALL/bin
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/lib
|
||||
cp -a lib* $SNAPCRAFT_PART_INSTALL/lib
|
||||
vcglib:
|
||||
plugin: dump
|
||||
# source: https://github.com/cnr-isti-vclab/vcglib.git
|
||||
# source-tag: v1.0.2
|
||||
source: https://github.com/cnr-isti-vclab/vcglib.git
|
||||
source-branch: devel
|
||||
- -vcglib/apps
|
||||
prime: [ -* ]
|
||||
|
||||
@ -59,12 +59,9 @@ INCLUDEPATH *= ../.. \
|
||||
$$EIGENDIR \
|
||||
$$GLEWDIR/include
|
||||
TEMPLATE = lib
|
||||
linux-g++:CONFIG += dll
|
||||
linux-g++:DESTDIR = ../distrib
|
||||
linux-g++-32:CONFIG += dll
|
||||
linux-g++-32:DESTDIR = ../distrib
|
||||
linux-g++-64:CONFIG += dll
|
||||
linux-g++-64:DESTDIR = ../distrib
|
||||
|
||||
linux:CONFIG += dll
|
||||
linux:DESTDIR = ../distrib
|
||||
|
||||
linux-g++:QMAKE_CXXFLAGS+=-Wno-unknown-pragmas
|
||||
|
||||
|
||||
@ -311,7 +311,7 @@ public:
|
||||
// It is widely used by the meshlab's preview system.
|
||||
//TO BE REPLACED WITH = 0
|
||||
*/
|
||||
virtual int postCondition(QAction*) const { return MeshModel::MM_UNKNOWN; }
|
||||
virtual int postCondition(QAction*) const { return MeshModel::MM_ALL; }
|
||||
|
||||
/** \brief applies the selected filter with the already stabilished parameters
|
||||
* This function is called by the framework after getting values for the parameters specified in the \ref InitParameterSet
|
||||
@ -334,7 +334,7 @@ public:
|
||||
bool isFilterApplicable(QAction *act, const MeshModel& m, QStringList &MissingItems) const;
|
||||
|
||||
|
||||
enum FILTER_ARITY { NONE = 0, SINGLE_MESH = 1, FIXED = 2, VARIABLE = 3 };
|
||||
enum FILTER_ARITY { NONE = 0, SINGLE_MESH = 1, FIXED = 2, VARIABLE = 3, UNKNOWN_ARITY = 4 };
|
||||
|
||||
/** \brief this function informs the MeshLab core on how many meshes the filter will work on.
|
||||
Valid value:
|
||||
|
||||
@ -522,7 +522,7 @@ void MLPoliciesStandAloneFunctions::computeRequestedRenderingDataCompatibleWithM
|
||||
}
|
||||
bool validfaces = (mesh.FN() > 0);
|
||||
|
||||
MLRenderingData::PRIMITIVE_MODALITY_MASK tmpoutputpm = inputdt.getPrimitiveModalityMask();
|
||||
// MLRenderingData::PRIMITIVE_MODALITY_MASK tmpoutputpm = inputdt.getPrimitiveModalityMask();
|
||||
for (size_t pmind = 0; pmind < size_t(MLRenderingData::PR_ARITY); ++pmind)
|
||||
{
|
||||
MLRenderingData::PRIMITIVE_MODALITY pmc = MLRenderingData::PRIMITIVE_MODALITY(pmind);
|
||||
|
||||
@ -140,6 +140,16 @@ void PluginManager::loadPlugins(RichParameterSet& defaultGlobal)
|
||||
actionFilterMap.insert(filterAction->text(), filterAction);
|
||||
stringFilterMap.insert(filterAction->text(), iFilter);
|
||||
iFilter->initGlobalParameterSet(filterAction, defaultGlobal);
|
||||
if(iFilter->getClass(filterAction)==MeshFilterInterface::Generic)
|
||||
throw MLException("Missing class for " +fileName+filterAction->text());
|
||||
if(iFilter->getRequirements(filterAction) == MeshModel::MM_UNKNOWN)
|
||||
throw MLException("Missing requirements for " +fileName+filterAction->text());
|
||||
if(iFilter->getPreConditions(filterAction) == MeshModel::MM_UNKNOWN)
|
||||
throw MLException("Missing preconditions for "+fileName+filterAction->text());
|
||||
if(iFilter->postCondition(filterAction) == MeshModel::MM_UNKNOWN )
|
||||
throw MLException("Missing postcondition for "+fileName+filterAction->text());
|
||||
if(iFilter->filterArity(filterAction) == MeshFilterInterface::UNKNOWN_ARITY )
|
||||
throw MLException("Missing Arity for " +fileName+filterAction->text());
|
||||
}
|
||||
}
|
||||
MeshIOInterface *iIO = qobject_cast<MeshIOInterface *>(plugin);
|
||||
|
||||
5
src/external/ext_common.pri
vendored
5
src/external/ext_common.pri
vendored
@ -11,9 +11,8 @@ win32-msvc:DESTDIR = $$EXTERNAL_BASE_PATH/lib/win32-msvc
|
||||
win32-msvc2015:DEFINES += _CRT_SECURE_NO_WARNINGS
|
||||
win32-msvc2017:DEFINES += _CRT_SECURE_NO_WARNINGS
|
||||
win32-msvc:DEFINES += _CRT_SECURE_NO_WARNINGS
|
||||
linux-g++:DESTDIR = $$EXTERNAL_BASE_PATH/lib/linux-g++
|
||||
linux-g++-32:DESTDIR = $$EXTERNAL_BASE_PATH/lib/linux-g++-32
|
||||
linux-g++-64:DESTDIR = $$EXTERNAL_BASE_PATH/lib/linux-g++-64
|
||||
|
||||
linux:DESTDIR = $$EXTERNAL_BASE_PATH/lib/linux
|
||||
|
||||
unix:CONFIG(release, debug|release) {
|
||||
DEFINES *= NDEBUG
|
||||
|
||||
@ -154,12 +154,8 @@ win32-g++:LIBS += -L../external/lib/win32-gcc -ljhead -L../distrib -lcom
|
||||
# win32-g++:release:LIBS += -L../common/release -lcommon
|
||||
#}
|
||||
|
||||
linux-g++:LIBS += -L$$PWD/../external/lib/linux-g++ -ljhead -L../distrib -lcommon -lGLU
|
||||
linux-g++:QMAKE_RPATHDIR += ../distrib
|
||||
linux-g++-32:LIBS += -L../external/lib/linux-g++-32 -ljhead -L../distrib -lcommon -lGLU
|
||||
linux-g++-32:QMAKE_RPATHDIR += ../distrib
|
||||
linux-g++-64:LIBS += -L../external/lib/linux-g++-64 -ljhead -L../distrib -lcommon -lGLU
|
||||
linux-g++-64:QMAKE_RPATHDIR += ../distrib
|
||||
linux:LIBS += -L$$PWD/../external/lib/linux -ljhead -L../distrib -lcommon -lGLU
|
||||
linux:QMAKE_RPATHDIR += ../distrib
|
||||
|
||||
# uncomment in your local copy only in emergency cases.
|
||||
# We should never be too permissive
|
||||
|
||||
@ -733,7 +733,7 @@ XMLEditWidget::XMLEditWidget(const MLXMLPluginInfo::XMLMap& xmlWidgetTag,EnvWrap
|
||||
lineEdit = new QLineEdit(this);
|
||||
lineEdit->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
|
||||
//int row = gridLay->rowCount() -1;
|
||||
QHBoxLayout* hlay = new QHBoxLayout();
|
||||
hlay = new QHBoxLayout();
|
||||
hlay->addWidget(lineEdit);
|
||||
|
||||
hlay->addWidget(perstb);
|
||||
|
||||
@ -695,7 +695,7 @@ int FilterCameraPlugin::postCondition(QAction * filter) const
|
||||
return MeshModel::MM_ALL + RasterModel::RM_ALL;
|
||||
case FP_QUALITY_FROM_CAMERA :
|
||||
return MeshModel::MM_VERTQUALITY + MeshModel::MM_VERTCOLOR;
|
||||
default : return MeshModel::MM_UNKNOWN;
|
||||
default : return MeshModel::MM_ALL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -183,6 +183,10 @@ QString CleanFilter::filterName(FilterIDType filter) const
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int CleanFilter::postCondition( QAction* /*filter*/ ) const
|
||||
{
|
||||
return MeshModel::MM_ALL;
|
||||
}
|
||||
|
||||
void CleanFilter::initParameterSet(QAction *action,MeshDocument &md, RichParameterSet & parlst)
|
||||
{
|
||||
|
||||
@ -71,11 +71,11 @@ public:
|
||||
|
||||
virtual FilterClass getClass(QAction *);
|
||||
virtual int getRequirements(QAction *);
|
||||
|
||||
int postCondition(QAction* ) const;
|
||||
int getPreConditions(QAction *) const { return MeshModel::MM_NONE; }
|
||||
virtual void initParameterSet(QAction *,MeshDocument &/*m*/, RichParameterSet & /*parent*/);
|
||||
virtual bool applyFilter(QAction *filter, MeshDocument &md, RichParameterSet & /*parent*/, vcg::CallBackPos * cb) ;
|
||||
FILTER_ARITY filterArity(QAction *) const {return SINGLE_MESH;}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -935,10 +935,10 @@ int FilterColorProjectionPlugin::postCondition( QAction* a ) const{
|
||||
return MeshModel::MM_VERTCOLOR;
|
||||
break;
|
||||
case FP_MULTIIMAGETRIVIALPROJTEXTURE:
|
||||
return MeshModel::MM_UNKNOWN;
|
||||
return MeshModel::MM_ALL;
|
||||
break;
|
||||
default: assert(0);
|
||||
return MeshModel::MM_NONE;
|
||||
default:
|
||||
return MeshModel::MM_ALL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -25,7 +25,4 @@ win32-msvc2010:LIBS += ../../external/lib/win32-msvc2008/mpirxx.lib ../../exte
|
||||
win32-msvc2012:LIBS += ../../external/lib/win32-msvc2008/mpirxx.lib ../../external/lib/win32-msvc2008/mpir.lib
|
||||
win32-msvc2013:LIBS += ../../external/lib/win32-msvc2008/mpirxx.lib ../../external/lib/win32-msvc2008/mpir.lib
|
||||
win32-msvc2015:LIBS += ../../external/lib/win32-msvc2015/mpirxx.lib ../../external/lib/win32-msvc2015/mpir.lib
|
||||
linux-g++:INCLUDEPATH += ../../external/inc/linux-g++/mpir-2.4.0
|
||||
#linux-g++:LIBS += $$PWD/../../external/lib/linux-g++/libmpirxx.a $$PWD/../../external/lib/linux-g++/libmpir.a
|
||||
#linux-g++-64:INCLUDEPATH += $$PWD/../../external/inc/linux-g++/mpir-2.4.0
|
||||
#linux-g++-64:LIBS += $$PWD/../../external/lib/linux-g++-64/libmpirxx.a $$PWD/../../external/lib/linux-g++-64/libmpir.a
|
||||
linux:INCLUDEPATH += ../../external/inc/linux-g++/mpir-2.4.0
|
||||
|
||||
@ -44,7 +44,7 @@ return true if a particle of that face fall out
|
||||
bool CheckFallPosition(CMeshO::FacePointer f,Point3m g,Scalarm a){
|
||||
Point3m n=f->N();
|
||||
if(a>1) return false;
|
||||
if(acos(n.dot(g)/(n.Norm()*g.Norm()))<((PI/2)*(1-a))) return true;
|
||||
if(acos(n.dot(g)/(n.Norm()*g.Norm()))<((M_PI/2)*(1-a))) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -112,22 +112,6 @@ CMeshO::CoordType fromBarCoords(Point3m bc,CMeshO::FacePointer f){
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
@def Given a face return the coordinates of its baricenter
|
||||
|
||||
@param FacePointer f -
|
||||
|
||||
@return The Baricenter of the face
|
||||
*/
|
||||
CMeshO::CoordType getBaricenter(CMeshO::FacePointer f){
|
||||
Point3m bc;
|
||||
bc[0]=0.33f;
|
||||
bc[1]=0.33f;
|
||||
bc[2]=1-bc[0]-bc[1];
|
||||
CMeshO::CoordType pc=fromBarCoords(bc,f);
|
||||
return pc;
|
||||
}
|
||||
|
||||
|
||||
CMeshO::CoordType GetNewVelocity(CMeshO::CoordType i_v,CMeshO::FacePointer face,CMeshO::FacePointer new_face,CMeshO::CoordType force,CMeshO::CoordType g,Scalarm m,Scalarm t){
|
||||
CMeshO::CoordType n_v;
|
||||
|
||||
@ -33,23 +33,6 @@
|
||||
#include <limits>
|
||||
#include <common/meshmodel.h>
|
||||
#include <common/interfaces.h>
|
||||
#include<vector>
|
||||
#include<vcg/space/index/base.h>
|
||||
#include<vcg/complex/complex.h>
|
||||
#include <vcg/space/point3.h>
|
||||
#include <vcg/space/intersection2.h>
|
||||
#include <vcg/complex/algorithms/clean.h>
|
||||
#include <vcg/complex/algorithms/closest.h>
|
||||
#include <vcg/simplex/face/distance.h>
|
||||
#include <vcg/complex/algorithms/geodesic.h>
|
||||
#include <vcg/complex/algorithms/update/normal.h>
|
||||
#include <vcg/complex/algorithms/point_sampling.h>
|
||||
#include <vcg/complex/algorithms/create/resampler.h>
|
||||
#include <vcg/complex/algorithms/clustering.h>
|
||||
#include <vcg/simplex/face/distance.h>
|
||||
#include <vcg/space/distance3.h>
|
||||
#include <vcg/space/index/grid_static_ptr.h>
|
||||
#include <vcg/space/intersection3.h>
|
||||
#include "particle.h"
|
||||
|
||||
using namespace vcg;
|
||||
@ -59,15 +42,10 @@ typedef GridStaticPtr<CMeshO::FaceType, CMeshO::ScalarType > MetroMeshFaceGrid;
|
||||
typedef GridStaticPtr<CMeshO::VertexType, CMeshO::ScalarType > MetroMeshVertexGrid;
|
||||
typedef FaceTmark<CMeshO> MarkerFace;
|
||||
|
||||
#define PI 3.14159265
|
||||
#define EPSILON 0.0001
|
||||
|
||||
|
||||
|
||||
|
||||
CMeshO::CoordType RandomBaricentric();
|
||||
CMeshO::CoordType fromBarCoords(Point3m bc,CMeshO::FacePointer f);
|
||||
CMeshO::CoordType getBaricenter(CMeshO::FacePointer f);
|
||||
CMeshO::CoordType GetSafePosition(CMeshO::CoordType p,CMeshO::FacePointer f);
|
||||
CMeshO::CoordType StepForward(CMeshO::CoordType p,CMeshO::CoordType v,Scalarm m,CMeshO::FacePointer &face,CMeshO::CoordType force,Scalarm l,Scalarm t=1);
|
||||
CMeshO::CoordType getRandomDirection();
|
||||
|
||||
@ -244,8 +244,8 @@ bool FilterDirt::applyFilter(QAction *filter, MeshDocument &md, RichParameterSet
|
||||
int FilterDirt::postCondition( QAction *a) const
|
||||
{
|
||||
switch (ID(a)){
|
||||
case FP_DIRT : return MeshModel::MM_UNKNOWN;
|
||||
case FP_CLOUD_MOVEMENT : return MeshModel::MM_UNKNOWN;
|
||||
case FP_DIRT : return MeshModel::MM_ALL;
|
||||
case FP_CLOUD_MOVEMENT : return MeshModel::MM_ALL;
|
||||
default: assert(0);
|
||||
}
|
||||
|
||||
|
||||
@ -295,11 +295,11 @@ int FilterFractal::postCondition(QAction *filter) const
|
||||
switch(ID(filter))
|
||||
{
|
||||
case CR_FRACTAL_TERRAIN:
|
||||
return MeshModel::MM_UNKNOWN;
|
||||
return MeshModel::MM_ALL;
|
||||
break;
|
||||
case FP_FRACTAL_MESH:
|
||||
case FP_CRATERS:
|
||||
return MeshModel::MM_VERTCOORD | MeshModel::MM_VERTNORMAL | MeshModel::MM_FACENORMAL | MeshModel::MM_VERTQUALITY | MeshModel::MM_FACEFLAG;
|
||||
return MeshModel::MM_ALL;
|
||||
break;
|
||||
default: assert(0);
|
||||
}
|
||||
|
||||
@ -209,8 +209,9 @@ int FilterFunctionPlugin::postCondition(QAction *action) const
|
||||
case FF_ISOSURFACE:
|
||||
case FF_DEF_FACE_ATTRIB:
|
||||
case FF_REFINE:
|
||||
return MeshModel::MM_UNKNOWN;
|
||||
return MeshModel::MM_ALL;
|
||||
}
|
||||
|
||||
return MeshModel::MM_UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
@ -157,7 +157,13 @@ bool FilterMeasurePlugin::applyFilter( const QString& filterName,MeshDocument& m
|
||||
quadFound = true;
|
||||
}
|
||||
}
|
||||
assert(quadFound);
|
||||
|
||||
if (!quadFound)
|
||||
{
|
||||
errorMessage = "QuadMesh problem: current mesh doesn't contain quads.";
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i<4; ++i)
|
||||
AngleD.Add(fabs(90 - math::ToDeg(Angle(qv[(i + 0) % 4] - qv[(i + 1) % 4], qv[(i + 2) % 4] - qv[(i + 1) % 4]))));
|
||||
float edgeLen[4];
|
||||
|
||||
@ -3,6 +3,5 @@ include (../../shared.pri)
|
||||
HEADERS += filter_measure.h
|
||||
SOURCES += filter_measure.cpp
|
||||
TARGET = filter_measure
|
||||
#PRE_TARGETDEPS += filter_measure.xml
|
||||
|
||||
QMAKE_POST_LINK += $$QMAKE_COPY_FILE \"$${_PRO_FILE_PWD_}/$${TARGET}.xml\" \"../../distrib/plugins/$${TARGET}.xml\";
|
||||
include (../../shared_post.pri)
|
||||
|
||||
@ -43,12 +43,10 @@
|
||||
<EDIT_GUI guiLabel="Hist Max" />
|
||||
</PARAM>
|
||||
<PARAM parName="areaWeighted" parIsImportant="true" parIsPersistent="false" parType="Boolean" parDefault="false">
|
||||
<PARAM_HELP><![CDATA[If false, the histogram will report the number of vertices with quality values
|
||||
falling in each bin of the histogram. If true each bin of the histogram will report the approximate area
|
||||
of the mesh with that range of values. Area is computed by assigning to each vertex one third of the area
|
||||
all the incident triangles.]]></PARAM_HELP>
|
||||
<PARAM_HELP><![CDATA[If false, the histogram will report the number of vertices with quality values falling in each bin of the histogram. If true each bin of the histogram will report the approximate area of the mesh with that range of values. Area is computed by assigning to each vertex one third of the area all the incident triangles.]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Area Weighted"/>
|
||||
</PARAM><PARAM parType="Int" parName="binNum" parDefault="20" parIsImportant="false" parIsPersistent="false">
|
||||
</PARAM>
|
||||
<PARAM parType="Int" parName="binNum" parDefault="20" parIsImportant="false" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[The number of bins of the histogram. E.g. the number of intervals in which the min..max range is subdivided into.]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Bin number" />
|
||||
</PARAM>
|
||||
@ -64,13 +62,11 @@
|
||||
<PARAM parType="Real" parName="HistMax" parDefault="meshDoc.current().computeMaxFQ()" parIsImportant="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[The faces are displaced of a vector whose norm is bounded by this value]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Hist Max" />
|
||||
</PARAM>
|
||||
</PARAM>
|
||||
<PARAM parName="areaWeighted" parIsImportant="true" parIsPersistent="false" parType="Boolean" parDefault="false">
|
||||
<PARAM_HELP><![CDATA[If false, the histogram will report the number of faces with quality values
|
||||
falling in each bin of the histogram. If true each bin of the histogram will report the approximate area
|
||||
of the mesh with that range of values.]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Area Weighted"/>
|
||||
</PARAM>
|
||||
<PARAM_HELP><![CDATA[If false, the histogram will report the number of faces with quality values falling in each bin of the histogram. If true each bin of the histogram will report the approximate area of the mesh with that range of values.]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Area Weighted" />
|
||||
</PARAM>
|
||||
<PARAM parType="Int" parName="binNum" parDefault="20" parIsImportant="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[The number of bins of the histogram. E.g. the number of intervals in which the min..max range is subdivided into.]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Bin number" />
|
||||
|
||||
@ -1705,7 +1705,7 @@ int ExtraMeshFilterPlugin::postCondition(QAction * filter) const
|
||||
case FP_INVERT_TRANSFORM : return MeshModel::MM_TRANSFMATRIX;
|
||||
case FP_NORMAL_EXTRAPOLATION :
|
||||
case FP_NORMAL_SMOOTH_POINTCLOUD : return MeshModel::MM_VERTNORMAL;
|
||||
default : return MeshModel::MM_UNKNOWN;
|
||||
default : return MeshModel::MM_ALL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -20,5 +20,4 @@ SOURCES += filter_mutualinfo.cpp \
|
||||
|
||||
TARGET = filter_mutualinfo
|
||||
|
||||
macx:QMAKE_POST_LINK = "cp "$$_PRO_FILE_PWD_/$$TARGET".xml ../../distrib/plugins/"$$TARGET".xml"
|
||||
linux:QMAKE_POST_LINK = "cp "$$_PRO_FILE_PWD_/$$TARGET".xml ../../distrib/plugins/"$$TARGET".xml; cd ../../distrib/plugins/ ; ln -s "$$TARGET".xml lib"$$TARGET".xml"
|
||||
include (../../shared_post.pri)
|
||||
@ -3,6 +3,5 @@ include (../../shared.pri)
|
||||
HEADERS += filter_sketchfab.h
|
||||
SOURCES += filter_sketchfab.cpp $$VCGDIR//wrap/ply/plylib.cpp
|
||||
TARGET = filter_sketchfab
|
||||
#PRE_TARGETDEPS += filter_sketchfab.xml
|
||||
macx:QMAKE_POST_LINK = "cp "$$_PRO_FILE_PWD_/$$TARGET".xml ../../distrib/plugins/"$$TARGET".xml"
|
||||
|
||||
include (../../shared_post.pri)
|
||||
@ -181,7 +181,11 @@ bool FilterVoronoiPlugin::applyFilter( const QString& filterName,MeshDocument& m
|
||||
|
||||
// md.updateRenderStateMeshes(meshlist,int(MeshModel::MM_VERTCOLOR));
|
||||
if (intteruptreq) return true;
|
||||
|
||||
|
||||
tri::UpdateSelection<CMeshO>::VertexClear(m.cm);
|
||||
for(auto vi =seedVec.begin();vi!=seedVec.end();++vi)
|
||||
(*vi)->SetS();
|
||||
|
||||
om->UpdateBoxAndNormals();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
include (../../shared.pri)
|
||||
|
||||
HEADERS += filter_voronoi.h
|
||||
|
||||
SOURCES += filter_voronoi.cpp
|
||||
|
||||
TARGET = filter_voronoi
|
||||
#PRE_TARGETDEPS += filter_voronoi.xml
|
||||
|
||||
macx:QMAKE_POST_LINK = "rsync -u "$$TARGET".xml ../../distrib/plugins/"$$TARGET".xml; rsync -u ../../distrib/plugins/"$$TARGET".xml "$$TARGET".xml"
|
||||
include (../../shared_post.pri)
|
||||
@ -3,47 +3,47 @@
|
||||
<FILTER filterFunction="voronoiSampling" filterName="Voronoi Sampling" filterPre="MM_NONE" filterRasterArity="SingleRaster" filterClass="Sampling" filterPost="MM_VERTCOLOR | MM_VERTQUALITY" filterArity="SingleMesh" filterIsInterruptible="true">
|
||||
<FILTER_HELP><![CDATA[Compute a sampling over a mesh and perform a Lloyd relaxation. It can]]></FILTER_HELP>
|
||||
<FILTER_JSCODE><![CDATA[]]></FILTER_JSCODE>
|
||||
<PARAM parName="iterNum" parIsImportant="true" parType="Int" parDefault="10">
|
||||
<PARAM parName="iterNum" parIsImportant="true" parType="Int" parDefault="10" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ number of iterations ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Iteration"/>
|
||||
</PARAM>
|
||||
<PARAM parName="sampleNum" parIsImportant="true" parType="Int" parDefault="10">
|
||||
<PARAM parName="sampleNum" parIsImportant="true" parType="Int" parDefault="10" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of samples ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Sample Num."/>
|
||||
</PARAM>
|
||||
<PARAM parName="radiusVariance" parIsImportant="true" parType="Real" parDefault="1">
|
||||
<PARAM parName="radiusVariance" parIsImportant="true" parType="Real" parDefault="1" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[The distance metric will vary along the surface between 1/x and x, linearly according to the scalar field specified by the quality. ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Radius Variance"/>
|
||||
</PARAM>
|
||||
<PARAM parName="colorStrategy" parIsImportant="false" parType="Enum {None: 0 | Seed_Distance : 1 | Border_Distance : 2 | Region_Area : 3}" parDefault="1">
|
||||
<PARAM parName="colorStrategy" parIsImportant="false" parType="Enum {None: 0 | Seed_Distance : 1 | Border_Distance : 2 | Region_Area : 3}" parDefault="1" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[]]></PARAM_HELP>
|
||||
<ENUM_GUI guiLabel="Color Strategy"/>
|
||||
</PARAM>
|
||||
<PARAM parName="distanceType" parIsImportant="true" parType="Enum { Euclidean : 0 | QualityWeighted : 1 | Anisotropic : 2}" parDefault="0">
|
||||
<PARAM parName="distanceType" parIsImportant="true" parType="Enum { Euclidean : 0 | QualityWeighted : 1 | Anisotropic : 2}" parDefault="0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[]]></PARAM_HELP>
|
||||
<ENUM_GUI guiLabel="distanceType"/>
|
||||
</PARAM>
|
||||
<PARAM parName="preprocessFlag" parIsImportant="false" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="preprocessFlag" parIsImportant="false" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Preprocessing"/>
|
||||
</PARAM>
|
||||
<PARAM parName="refineFactor" parIsImportant="false" parType="Int" parDefault="10">
|
||||
<PARAM parName="refineFactor" parIsImportant="false" parType="Int" parDefault="10" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ To ensure good convergence the mesh should be more complex than the voronoi partitioning. This number affect how much the mesh is refined according to the required number of samples. ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Refinement Factor."/>
|
||||
</PARAM>
|
||||
<PARAM parName="perturbProbability" parIsImportant="false" parType="Real" parDefault="0">
|
||||
<PARAM parName="perturbProbability" parIsImportant="false" parType="Real" parDefault="0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ To ensure good convergence the mesh should be more complex than the voronoi partitioning. This number affect how much the mesh is refined according to the required number of samples. ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Perturbation Probability."/>
|
||||
</PARAM>
|
||||
<PARAM parName="perturbAmount" parIsImportant="false" parType="Real" parDefault="0.001">
|
||||
<PARAM parName="perturbAmount" parIsImportant="false" parType="Real" parDefault="0.001" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ To ensure good convergence the mesh should be more complex than the voronoi partitioning. This number affect how much the mesh is refined according to the required number of samples. ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Perturbation Amount."/>
|
||||
</PARAM>
|
||||
<PARAM parName="randomSeed" parIsImportant="false" parType="Int" parDefault="0">
|
||||
<PARAM parName="randomSeed" parIsImportant="false" parType="Int" parDefault="0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ To ensure repeatability you can specify the random seed used. If 0 the random seed is tied to the current clock.]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Random seed."/>
|
||||
</PARAM>
|
||||
<PARAM parName="relaxType" parIsImportant="true" parType="Enum { Geodesic : 0 | SquaredDistance : 1 | Restricted : 2 }" parDefault="1">
|
||||
<PARAM parName="relaxType" parIsImportant="true" parType="Enum { Geodesic : 0 | SquaredDistance : 1 | Restricted : 2 }" parDefault="1" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[
|
||||
At each relaxation step we search for each voronoi region the new position of the seed.
|
||||
According to the classical LLoyd relaxation strategy it should have been placed onto the
|
||||
@ -60,19 +60,19 @@
|
||||
<FILTER filterFunction="volumeSampling" filterName="Volumetric Sampling" filterPre="MM_NONE" filterRasterArity="SingleRaster" filterClass="Sampling" filterPost="MM_VERTCOLOR | MM_VERTQUALITY" filterArity="Variable" filterIsInterruptible="true">
|
||||
<FILTER_HELP><![CDATA[Compute a volumetric sampling over a watertight mesh. ]]></FILTER_HELP>
|
||||
<FILTER_JSCODE><![CDATA[]]></FILTER_JSCODE>
|
||||
<PARAM parName="sampleSurfRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 500.0">
|
||||
<PARAM parName="sampleSurfRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 500.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Surface Sampling is used only as an optimization ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Surface Sampling Radius." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="sampleVolNum" parIsImportant="true" parType="Int" parDefault="200000">
|
||||
<PARAM parName="sampleVolNum" parIsImportant="true" parType="Int" parDefault="200000" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of volumetric samples scattered inside the mesh and used for choosing the voronoi seeds and performing the Lloyd relaxation for having a centroidal voronoi diagram.]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Volume Sample Num."/>
|
||||
</PARAM>
|
||||
<PARAM parName="poissonFiltering" parIsImportant="true" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="poissonFiltering" parIsImportant="true" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ If true the base montecarlo sampling of the volume is filtered to get a poisson disk volumetric distribution ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Poisson Filtering"/>
|
||||
</PARAM>
|
||||
<PARAM parName="poissonRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0">
|
||||
<PARAM parName="poissonRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of voxel per side in the volumetric representation ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Poisson Radius." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
@ -80,35 +80,35 @@
|
||||
<FILTER filterFunction="voronoiScaffolding" filterName="Voronoi Scaffolding" filterPre="MM_NONE" filterRasterArity="SingleRaster" filterClass="Sampling" filterPost="MM_VERTCOLOR | MM_VERTQUALITY" filterArity="SingleMesh" filterIsInterruptible="true">
|
||||
<FILTER_HELP><![CDATA[Compute a volumetric sampling over a watertight mesh]]></FILTER_HELP>
|
||||
<FILTER_JSCODE><![CDATA[]]></FILTER_JSCODE>
|
||||
<PARAM parName="sampleSurfRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0">
|
||||
<PARAM parName="sampleSurfRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Surface Sampling is used only as an optimization ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Surface Sampling Radius." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="sampleVolNum" parIsImportant="true" parType="Int" parDefault="100000">
|
||||
<PARAM parName="sampleVolNum" parIsImportant="true" parType="Int" parDefault="100000" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of volumetric samples scattered inside the mesh and used for choosing the voronoi seeds and performing the Lloyd relaxation for having a centroidal voronoi diagram.]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Volume Sample Num."/>
|
||||
</PARAM>
|
||||
<PARAM parName="voxelRes" parIsImportant="true" parType="Int" parDefault="50">
|
||||
<PARAM parName="voxelRes" parIsImportant="true" parType="Int" parDefault="50" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of voxel per side in the volumetric representation ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Volume Side Resolution."/>
|
||||
</PARAM>
|
||||
<PARAM parName="isoThr" parIsImportant="true" parType="Real" parDefault="1">
|
||||
<PARAM parName="isoThr" parIsImportant="true" parType="Real" parDefault="1" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of voxel per side in the volumetric representation ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Width of the entity (in voxel)"/>
|
||||
</PARAM>
|
||||
<PARAM parName="smoothStep" parIsImportant="true" parType="Int" parDefault="3">
|
||||
<PARAM parName="smoothStep" parIsImportant="true" parType="Int" parDefault="3" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of voxel per side in the volumetric representation ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Smooth Step"/>
|
||||
</PARAM>
|
||||
<PARAM parName="relaxStep" parIsImportant="true" parType="Int" parDefault="5">
|
||||
<PARAM parName="relaxStep" parIsImportant="true" parType="Int" parDefault="5" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of Lloyd relaxation step to get a better distribution of the voronoi seeds ]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Lloyd Relax Step"/>
|
||||
</PARAM>
|
||||
<PARAM parName="surfFlag" parIsImportant="true" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="surfFlag" parIsImportant="true" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of voxel per side in the volumetric representation ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Add original surface"/>
|
||||
</PARAM>
|
||||
<PARAM parName="elemType" parIsImportant="true" parType="Enum { Seed : 0 | Edge : 1 | Face :2}" parDefault="1">
|
||||
<PARAM parName="elemType" parIsImportant="true" parType="Enum { Seed : 0 | Edge : 1 | Face :2}" parDefault="1" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[]]></PARAM_HELP>
|
||||
<ENUM_GUI guiLabel="Voronoi Element"/>
|
||||
</PARAM>
|
||||
@ -116,47 +116,47 @@
|
||||
<FILTER filterFunction="buildShell" filterName="Create Solid Wireframe" filterPre="MM_NONE" filterRasterArity="SingleRaster" filterClass="Remeshing" filterPost="MM_NONE" filterArity="Variable" filterIsInterruptible="false">
|
||||
<FILTER_HELP><![CDATA[]]></FILTER_HELP>
|
||||
<FILTER_JSCODE><![CDATA[]]></FILTER_JSCODE>
|
||||
<PARAM parName="edgeCylFlag" parIsImportant="true" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="edgeCylFlag" parIsImportant="true" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ If True all the edges are converted into cylinders ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Edge -> Cyl."/>
|
||||
</PARAM>
|
||||
<PARAM parName="edgeCylRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0">
|
||||
<PARAM parName="edgeCylRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ The radius of the cylinder replacing each edge ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Edge Cylinder Rad." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="vertCylFlag" parIsImportant="true" parType="Boolean" parDefault="false">
|
||||
<PARAM parName="vertCylFlag" parIsImportant="true" parType="Boolean" parDefault="false" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ If True all the vertexes are converted into cylinders ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Vertex -> Cyl."/>
|
||||
</PARAM>
|
||||
<PARAM parName="vertCylRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0">
|
||||
<PARAM parName="vertCylRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ The radius of the cylinder replacing each vertex ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Vertex Cylinder Rad." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="vertSphFlag" parIsImportant="true" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="vertSphFlag" parIsImportant="true" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ If True all the vertexes are converted into sphere ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Vertex -> Sph."/>
|
||||
</PARAM>
|
||||
<PARAM parName="vertSphRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0">
|
||||
<PARAM parName="vertSphRadius" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 100.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ The radius of the sphere replacing each vertex ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Vertex Sphere Rad." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="faceExtFlag" parIsImportant="true" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="faceExtFlag" parIsImportant="true" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ If True all the faces are converted into prism ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Face -> Prism"/>
|
||||
</PARAM>
|
||||
<PARAM parName="faceExtHeight" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 200.0">
|
||||
<PARAM parName="faceExtHeight" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 200.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ The Height of the prism that is substitued with each face ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Face Prism Height." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="faceExtInset" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 200.0">
|
||||
<PARAM parName="faceExtInset" parIsImportant="true" parType="Real" parDefault="meshDoc.current().bboxDiag() / 200.0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ The inset radius of each prism, e.g. how much it is moved toward the inside each vertex on the border of the prism ]]></PARAM_HELP>
|
||||
<ABSPERC_GUI guiLabel="Face Prism Inset." guiMin="0" guiMax="meshDoc.current().bboxDiag()"/>
|
||||
</PARAM>
|
||||
<PARAM parName="edgeFauxFlag" parIsImportant="true" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="edgeFauxFlag" parIsImportant="true" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ If true only the Non-Faux edges will be considered for conversion ]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Ignore faux edges"/>
|
||||
</PARAM>
|
||||
<PARAM parName="cylinderSideNum" parIsImportant="false" parType="Int" parDefault="16">
|
||||
<PARAM parName="cylinderSideNum" parIsImportant="false" parType="Int" parDefault="16" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[ Number of sides of the cylinder (both edge and vertex)]]></PARAM_HELP>
|
||||
<EDIT_GUI guiLabel="Cylinder Side"/>
|
||||
</PARAM>
|
||||
@ -165,7 +165,7 @@
|
||||
<FILTER filterFunction="crossFieldCreation" filterName="Cross Field Creation" filterPre="MM_NONE" filterRasterArity="SingleRaster" filterClass="Normal" filterPost="MM_VERTCURVDIR" filterArity="SingleMesh" filterIsInterruptible="false">
|
||||
<FILTER_HELP><![CDATA[]]></FILTER_HELP>
|
||||
<FILTER_JSCODE><![CDATA[]]></FILTER_JSCODE>
|
||||
<PARAM parName="crossType" parIsImportant="true" parType="Enum { Linear_Y : 0 | Radial : 1 | Curvature :2}" parDefault="0">
|
||||
<PARAM parName="crossType" parIsImportant="true" parType="Enum { Linear_Y : 0 | Radial : 1 | Curvature :2}" parDefault="0" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[]]></PARAM_HELP>
|
||||
<ENUM_GUI guiLabel="crossType"/>
|
||||
</PARAM>
|
||||
@ -173,7 +173,7 @@
|
||||
<FILTER filterFunction="crossFieldSmoothing" filterName="Cross Field Smoothing" filterPre="MM_VERTCURVDIR" filterRasterArity="SingleRaster" filterClass="Generic" filterPost="MM_VERTCOLOR" filterArity="SingleMesh" filterIsInterruptible="false">
|
||||
<FILTER_HELP><![CDATA[]]></FILTER_HELP>
|
||||
<FILTER_JSCODE><![CDATA[]]></FILTER_JSCODE>
|
||||
<PARAM parName="preprocessFlag" parIsImportant="false" parType="Boolean" parDefault="true">
|
||||
<PARAM parName="preprocessFlag" parIsImportant="false" parType="Boolean" parDefault="true" parIsPersistent="false">
|
||||
<PARAM_HELP><![CDATA[]]></PARAM_HELP>
|
||||
<CHECKBOX_GUI guiLabel="Preprocessing"/>
|
||||
</PARAM>
|
||||
|
||||
@ -85,15 +85,20 @@ void BaseMeshIOPlugin::initPreOpenParameter(const QString &formatName, const QSt
|
||||
bool BaseMeshIOPlugin::open(const QString &formatName, const QString &fileName, MeshModel &m, int& mask, const RichParameterSet &parlst, CallBackPos *cb, QWidget * /*parent*/)
|
||||
{
|
||||
bool normalsUpdated = false;
|
||||
QString errorMsgFormat = "Error encountered while loading file:\n\"%1\"\n\nError details: %2";
|
||||
|
||||
if(!QFile::exists(fileName))
|
||||
{
|
||||
errorMessage = errorMsgFormat.arg(fileName, "File does not exist");
|
||||
return false;
|
||||
}
|
||||
// initializing mask
|
||||
mask = 0;
|
||||
|
||||
// initializing progress bar status
|
||||
if (cb != NULL) (*cb)(0, "Loading...");
|
||||
|
||||
QString errorMsgFormat = "Error encountered while loading file:\n\"%1\"\n\nError details: %2";
|
||||
|
||||
|
||||
//string filename = fileName.toUtf8().data();
|
||||
string filename = QFile::encodeName(fileName).constData();
|
||||
|
||||
@ -119,7 +124,7 @@ bool BaseMeshIOPlugin::open(const QString &formatName, const QString &fileName,
|
||||
{
|
||||
if (!tri::io::ImporterSTL<CMeshO>::LoadMask(filename.c_str(), mask))
|
||||
{
|
||||
errorMessage = errorMsgFormat.arg(fileName, tri::io::ImporterSTL<CMeshO>::ErrorMsg(tri::io::ImporterSTL<CMeshO>::E_CANTOPEN));
|
||||
errorMessage = errorMsgFormat.arg(fileName, tri::io::ImporterSTL<CMeshO>::ErrorMsg(tri::io::ImporterSTL<CMeshO>::E_MALFORMED));
|
||||
return false;
|
||||
}
|
||||
m.Enable(mask);
|
||||
@ -444,6 +449,7 @@ void BaseMeshIOPlugin::GetExportMaskCapability(QString &format, int &capability,
|
||||
defaultBits = capability;
|
||||
defaultBits &= (~tri::io::Mask::IOM_FLAGS);
|
||||
defaultBits &= (~tri::io::Mask::IOM_VERTNORMAL);
|
||||
defaultBits &= (~tri::io::Mask::IOM_FACENORMAL);
|
||||
}
|
||||
if (format.toUpper() == tr("STL")) {
|
||||
capability = tri::io::ExporterSTL<CMeshO>::GetExportMaskCapability();
|
||||
|
||||
@ -12,7 +12,7 @@ RESOURCES = ../meshlab/meshlab.qrc \
|
||||
# to add windows icon
|
||||
RC_FILE = ../meshlab/meshlab.rc
|
||||
|
||||
QT += xml opengl
|
||||
QT += xml opengl
|
||||
QT += xmlpatterns
|
||||
QT += script
|
||||
#QT -= gui # Only the core module is used.
|
||||
@ -29,12 +29,8 @@ win32-msvc2010: LIBS += -L../distrib -lcommon -lopengl32 -lGLU32
|
||||
win32-msvc2012: LIBS += -L../distrib -lcommon -lopengl32 -lGLU32
|
||||
win32-msvc2015: LIBS += -L../distrib -lcommon -lopengl32 -lGLU32
|
||||
win32-g++: LIBS += -L../distrib -lcommon
|
||||
linux-g++: LIBS += -L../distrib -lcommon
|
||||
linux-g++:QMAKE_RPATHDIR += ../distrib
|
||||
linux-g++-32: LIBS += -L../distrib -lcommon
|
||||
linux-g++-32:QMAKE_RPATHDIR += ../distrib
|
||||
linux-g++-64: LIBS += -L../distrib -lcommon
|
||||
linux-g++-64:QMAKE_RPATHDIR += ../distrib
|
||||
linux: LIBS += -L../distrib -lcommon
|
||||
linux:QMAKE_RPATHDIR += ../distrib
|
||||
#CONFIG (release,debug | release) {
|
||||
# win32-msvc2005:release: LIBS += -L../common/release -lcommon
|
||||
# win32-msvc2008:release: LIBS += -L../common/release -lcommon
|
||||
|
||||
8
src/shared_post.pri
Normal file
8
src/shared_post.pri
Normal file
@ -0,0 +1,8 @@
|
||||
# This is
|
||||
|
||||
exists( $${_PRO_FILE_PWD_}/$${TARGET}.xml ) {
|
||||
|
||||
QMAKE_POST_LINK += $$QMAKE_COPY_FILE \"$${_PRO_FILE_PWD_}/$${TARGET}.xml\" \"../../distrib/plugins/$${TARGET}.xml\";
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user