Merge branch 'lyonm/custom-property-writing' of https://www.graphics.rwth-aachen.de:9000/OpenMesh/OpenMesh into lyonm/custom-property-writing
This commit is contained in:
8
.gitignore
vendored
8
.gitignore
vendored
@@ -8,3 +8,11 @@ build*
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.idea
|
.idea
|
||||||
cmake-build*/
|
cmake-build*/
|
||||||
|
*.substvars
|
||||||
|
debian/tmp
|
||||||
|
debian/files
|
||||||
|
debian/stamp*
|
||||||
|
debian/stamp*
|
||||||
|
debian/.debhelper
|
||||||
|
debian/libopenmesh*
|
||||||
|
obj-x86_64-linux-gnu
|
||||||
|
|||||||
242
.gitlab-ci.yml
242
.gitlab-ci.yml
@@ -257,230 +257,6 @@ test-release-clang-cpp11-qt6.1.2:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Build: debug
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: gcc
|
|
||||||
# Language: cpp11
|
|
||||||
# QT Version: qt5.15.1
|
|
||||||
|
|
||||||
build-debug-gcc-cpp11-qt5.15.1:
|
|
||||||
stage: build
|
|
||||||
script: "CI/ci-linux-build.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
variables:
|
|
||||||
COMPILER: "gcc"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "debug"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build-gcc-cpp11-qt5.15.1-debug-vectorchecks/
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Test: debug
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: gcc
|
|
||||||
# Language: cpp11
|
|
||||||
|
|
||||||
test-debug-gcc-cpp11-qt5.15.1:
|
|
||||||
stage: test
|
|
||||||
script: "CI/ci-linux-test.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
- MultiThreads
|
|
||||||
variables:
|
|
||||||
COMPILER: "gcc"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "debug"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
dependencies: [build-debug-gcc-cpp11-qt5.15.1]
|
|
||||||
needs: [build-debug-gcc-cpp11-qt5.15.1]
|
|
||||||
artifacts:
|
|
||||||
reports:
|
|
||||||
junit:
|
|
||||||
- build-gcc-cpp11-qt5.15.1-debug-vectorchecks/Unittests/report.xml
|
|
||||||
- build-gcc-cpp11-qt5.15.1-debug-vectorchecks/Unittests/report-customvec.xml
|
|
||||||
- build-gcc-cpp11-qt5.15.1-debug-vectorchecks/Unittests/report-doublevec.xml
|
|
||||||
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Build: release
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: gcc
|
|
||||||
# Language: cpp11
|
|
||||||
# QT Version: qt5.15.1
|
|
||||||
|
|
||||||
build-release-gcc-cpp11-qt5.15.1:
|
|
||||||
stage: build
|
|
||||||
script: "CI/ci-linux-build.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
variables:
|
|
||||||
COMPILER: "gcc"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "release"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build-gcc-cpp11-qt5.15.1-release-vectorchecks/
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Test: release
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: gcc
|
|
||||||
# Language: cpp11
|
|
||||||
|
|
||||||
test-release-gcc-cpp11-qt5.15.1:
|
|
||||||
stage: test
|
|
||||||
script: "CI/ci-linux-test.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
- MultiThreads
|
|
||||||
variables:
|
|
||||||
COMPILER: "gcc"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "release"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
dependencies: [build-release-gcc-cpp11-qt5.15.1]
|
|
||||||
needs: [build-release-gcc-cpp11-qt5.15.1]
|
|
||||||
artifacts:
|
|
||||||
reports:
|
|
||||||
junit:
|
|
||||||
- build-gcc-cpp11-qt5.15.1-release-vectorchecks/Unittests/report.xml
|
|
||||||
- build-gcc-cpp11-qt5.15.1-release-vectorchecks/Unittests/report-customvec.xml
|
|
||||||
- build-gcc-cpp11-qt5.15.1-release-vectorchecks/Unittests/report-doublevec.xml
|
|
||||||
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Build: debug
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: clang
|
|
||||||
# Language: cpp11
|
|
||||||
# QT Version: qt5.15.1
|
|
||||||
|
|
||||||
build-debug-clang-cpp11-qt5.15.1:
|
|
||||||
stage: build
|
|
||||||
script: "CI/ci-linux-build.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
variables:
|
|
||||||
COMPILER: "clang"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "debug"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build-clang-cpp11-qt5.15.1-debug-vectorchecks/
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Test: debug
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: clang
|
|
||||||
# Language: cpp11
|
|
||||||
|
|
||||||
test-debug-clang-cpp11-qt5.15.1:
|
|
||||||
stage: test
|
|
||||||
script: "CI/ci-linux-test.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
- MultiThreads
|
|
||||||
variables:
|
|
||||||
COMPILER: "clang"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "debug"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
dependencies: [build-debug-clang-cpp11-qt5.15.1]
|
|
||||||
needs: [build-debug-clang-cpp11-qt5.15.1]
|
|
||||||
artifacts:
|
|
||||||
reports:
|
|
||||||
junit:
|
|
||||||
- build-clang-cpp11-qt5.15.1-debug-vectorchecks/Unittests/report.xml
|
|
||||||
- build-clang-cpp11-qt5.15.1-debug-vectorchecks/Unittests/report-customvec.xml
|
|
||||||
- build-clang-cpp11-qt5.15.1-debug-vectorchecks/Unittests/report-doublevec.xml
|
|
||||||
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Build: release
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: clang
|
|
||||||
# Language: cpp11
|
|
||||||
# QT Version: qt5.15.1
|
|
||||||
|
|
||||||
build-release-clang-cpp11-qt5.15.1:
|
|
||||||
stage: build
|
|
||||||
script: "CI/ci-linux-build.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
variables:
|
|
||||||
COMPILER: "clang"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "release"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build-clang-cpp11-qt5.15.1-release-vectorchecks/
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
|
||||||
# Type: Test: release
|
|
||||||
# OS: Linux
|
|
||||||
# Compiler: clang
|
|
||||||
# Language: cpp11
|
|
||||||
|
|
||||||
test-release-clang-cpp11-qt5.15.1:
|
|
||||||
stage: test
|
|
||||||
script: "CI/ci-linux-test.sh"
|
|
||||||
#image: gitlab.vci.rwth-aachen.de:4567/docker/docker/docker-openmesh-container
|
|
||||||
tags:
|
|
||||||
- Linux
|
|
||||||
- stretch
|
|
||||||
- MultiThreads
|
|
||||||
variables:
|
|
||||||
COMPILER: "clang"
|
|
||||||
LANGUAGE: "cpp11"
|
|
||||||
BUILD_TYPE: "release"
|
|
||||||
QTVERSION: "qt5.15.1"
|
|
||||||
IWYU: "no"
|
|
||||||
VECTORCHECKS: "yes"
|
|
||||||
dependencies: [build-release-clang-cpp11-qt5.15.1]
|
|
||||||
needs: [build-release-clang-cpp11-qt5.15.1]
|
|
||||||
artifacts:
|
|
||||||
reports:
|
|
||||||
junit:
|
|
||||||
- build-clang-cpp11-qt5.15.1-release-vectorchecks/Unittests/report.xml
|
|
||||||
- build-clang-cpp11-qt5.15.1-release-vectorchecks/Unittests/report-customvec.xml
|
|
||||||
- build-clang-cpp11-qt5.15.1-release-vectorchecks/Unittests/report-doublevec.xml
|
|
||||||
|
|
||||||
|
|
||||||
#----------- Job Informations:
|
#----------- Job Informations:
|
||||||
# Type: Build: debug
|
# Type: Build: debug
|
||||||
# OS: Linux
|
# OS: Linux
|
||||||
@@ -1034,4 +810,22 @@ trigger_openmesh-python-rebuild:
|
|||||||
script:
|
script:
|
||||||
- "curl -X POST -F token=b63ed804ada51d7d1ffe5d6ea0dfa2 -F ref=track-OM-master https://www.graphics.rwth-aachen.de:9000/api/v4/projects/1024/trigger/pipeline"
|
- "curl -X POST -F token=b63ed804ada51d7d1ffe5d6ea0dfa2 -F ref=track-OM-master https://www.graphics.rwth-aachen.de:9000/api/v4/projects/1024/trigger/pipeline"
|
||||||
|
|
||||||
|
#Debian:
|
||||||
|
# stage: deploy
|
||||||
|
# only:
|
||||||
|
# - master
|
||||||
|
# script:
|
||||||
|
# - mkdir .OpenMesh
|
||||||
|
# - cp -r * .OpenMesh
|
||||||
|
# - mv .OpenMesh OpenMesh
|
||||||
|
# - cd OpenMesh
|
||||||
|
# - dpkg-buildpackage --no-sign
|
||||||
|
# tags:
|
||||||
|
# - Linux
|
||||||
|
# - stretch
|
||||||
|
# dependencies: []
|
||||||
|
# artifacts:
|
||||||
|
# paths:
|
||||||
|
# - libopenmesh*.deb
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ echo "CPPCHECK Summary"
|
|||||||
echo "=============================================================================="
|
echo "=============================================================================="
|
||||||
echo -e "${NC}"
|
echo -e "${NC}"
|
||||||
|
|
||||||
MAX_COUNT=23
|
MAX_COUNT=33
|
||||||
|
|
||||||
if [ $COUNT -gt $MAX_COUNT ]; then
|
if [ $COUNT -gt $MAX_COUNT ]; then
|
||||||
echo -e ${WARNING}
|
echo -e ${WARNING}
|
||||||
|
|||||||
@@ -1,14 +1,6 @@
|
|||||||
|
|
||||||
# This script just creates compressed files of OpenMesh sources
|
# This script just creates compressed files of OpenMesh sources
|
||||||
|
|
||||||
# Create Build directory and Build documentation
|
|
||||||
mkdir build-doc
|
|
||||||
|
|
||||||
cd build-doc
|
|
||||||
cmake ..
|
|
||||||
make doc
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# Extract Version Information
|
# Extract Version Information
|
||||||
VERSION=OpenMesh-$(cat CMakeLists.txt | grep VERSION | grep -v cmake | grep -v CMAKE | tr -d "VERSION=" | tr -d " ")
|
VERSION=OpenMesh-$(cat CMakeLists.txt | grep VERSION | grep -v cmake | grep -v CMAKE | tr -d "VERSION=" | tr -d " ")
|
||||||
|
|
||||||
@@ -27,8 +19,6 @@ mv src $VERSION/
|
|||||||
mv cmake-library $VERSION/
|
mv cmake-library $VERSION/
|
||||||
mv openmesh.pc.in $VERSION/
|
mv openmesh.pc.in $VERSION/
|
||||||
|
|
||||||
mv build-doc/Build/share/OpenMesh/Doc/html/ $VERSION/Documentation
|
|
||||||
|
|
||||||
tar cjf $VERSION.tar.bz2 $VERSION
|
tar cjf $VERSION.tar.bz2 $VERSION
|
||||||
tar czf $VERSION.tar.gz $VERSION
|
tar czf $VERSION.tar.gz $VERSION
|
||||||
zip -9 -q -r $VERSION.zip $VERSION
|
zip -9 -q -r $VERSION.zip $VERSION
|
||||||
|
|||||||
@@ -45,3 +45,21 @@ trigger_openmesh-python-rebuild:
|
|||||||
script:
|
script:
|
||||||
- "curl -X POST -F token=b63ed804ada51d7d1ffe5d6ea0dfa2 -F ref=track-OM-master https://www.graphics.rwth-aachen.de:9000/api/v4/projects/1024/trigger/pipeline"
|
- "curl -X POST -F token=b63ed804ada51d7d1ffe5d6ea0dfa2 -F ref=track-OM-master https://www.graphics.rwth-aachen.de:9000/api/v4/projects/1024/trigger/pipeline"
|
||||||
|
|
||||||
|
#Debian:
|
||||||
|
# stage: deploy
|
||||||
|
# only:
|
||||||
|
# - master
|
||||||
|
# script:
|
||||||
|
# - mkdir .OpenMesh
|
||||||
|
# - cp -r * .OpenMesh
|
||||||
|
# - mv .OpenMesh OpenMesh
|
||||||
|
# - cd OpenMesh
|
||||||
|
# - dpkg-buildpackage --no-sign
|
||||||
|
# tags:
|
||||||
|
# - Linux
|
||||||
|
# - stretch
|
||||||
|
# dependencies: []
|
||||||
|
# artifacts:
|
||||||
|
# paths:
|
||||||
|
# - libopenmesh*.deb
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ cppcheck:
|
|||||||
{linux-template-job.yml, COMPILER=gcc, LANGUAGE=cpp11, QT_VERSION=qt6.1.2}
|
{linux-template-job.yml, COMPILER=gcc, LANGUAGE=cpp11, QT_VERSION=qt6.1.2}
|
||||||
{linux-template-job.yml, COMPILER=clang, LANGUAGE=cpp11, QT_VERSION=qt6.1.2}
|
{linux-template-job.yml, COMPILER=clang, LANGUAGE=cpp11, QT_VERSION=qt6.1.2}
|
||||||
|
|
||||||
{linux-template-job.yml, COMPILER=gcc, LANGUAGE=cpp11, QT_VERSION=qt5.15.1}
|
|
||||||
{linux-template-job.yml, COMPILER=clang, LANGUAGE=cpp11, QT_VERSION=qt5.15.1}
|
|
||||||
{linux-template-job.yml, COMPILER=gcc, LANGUAGE=cpp14, QT_VERSION=qt5.15.1}
|
{linux-template-job.yml, COMPILER=gcc, LANGUAGE=cpp14, QT_VERSION=qt5.15.1}
|
||||||
{linux-template-job.yml, COMPILER=clang, LANGUAGE=cpp14, QT_VERSION=qt5.15.1}
|
{linux-template-job.yml, COMPILER=clang, LANGUAGE=cpp14, QT_VERSION=qt5.15.1}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,24 @@
|
|||||||
|
|
||||||
<tr valign=top><td><b>9.1</b> (?/?/?)</td><td>
|
<tr valign=top><td><b>9.1</b> (?/?/?)</td><td>
|
||||||
|
|
||||||
|
<b>Tools</b>
|
||||||
|
<ul>
|
||||||
|
<li>Decimater: Fixed incompatibility with Eigen vector type</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<b>IO</b>
|
||||||
|
<ul>
|
||||||
|
<li>OBJ writer: Added param 'texture_file' to the Options class, it specifies the path to the texture file (Thanks to Philipp Auersperg-Castell for the patch)</li>
|
||||||
|
<li>OBJ writer: added param 'material_file_extension' to the Options class, it specifies the material file suffix, default is ".mat" as it was before. (Thanks to Philipp Auersperg-Castell for the patch)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<b>Build System</b>
|
||||||
|
<ul>
|
||||||
|
<li>Removed Debian packaging as this will be handled by Debian Maintainers and would interfere with their repo. (Thanks to Dima Kogan for the Packaging!!)</li>
|
||||||
|
<li>Removed globbing for Core and Tools library include and source files</li>
|
||||||
|
<li>Removed global includes from App builds</li>
|
||||||
|
</ul>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ The following binaries are created from the latest master. They are automaticall
|
|||||||
|
|
||||||
[Download (M1) ](https://gitlab.vci.rwth-aachen.de:9000/OpenMesh/OpenMesh/-/jobs/artifacts/master/browse?job=macos-M1-cpp14-release)
|
[Download (M1) ](https://gitlab.vci.rwth-aachen.de:9000/OpenMesh/OpenMesh/-/jobs/artifacts/master/browse?job=macos-M1-cpp14-release)
|
||||||
|
|
||||||
|
### Debian
|
||||||
|
|
||||||
|
OpenMesh is about to get into the Debian repository. The debian packaging is available on [salsa.debian.org](https://salsa.debian.org/science-team/openmesh)
|
||||||
|
|
||||||
|
|
||||||
## Download Sources
|
## Download Sources
|
||||||
[ Download Sources](https://gitlab.vci.rwth-aachen.de:9000/OpenMesh/OpenMesh/-/jobs/artifacts/master/browse?job=Sources )
|
[ Download Sources](https://gitlab.vci.rwth-aachen.de:9000/OpenMesh/OpenMesh/-/jobs/artifacts/master/browse?job=Sources )
|
||||||
|
|
||||||
|
|||||||
Submodule cmake-library updated: d02209259a...9e180cdb4d
46
debian/changelog
vendored
46
debian/changelog
vendored
@@ -1,46 +0,0 @@
|
|||||||
openmesh (2.0-0~ppa1~maverick1) maverick; urgency=low
|
|
||||||
|
|
||||||
* First maverick version of the official openmesh v2 release.
|
|
||||||
* Adding libxi-dev, libxmu-dev dependencies to build the apps.
|
|
||||||
|
|
||||||
-- Jean Pierre Charalambos <nakednous@gmail.com> Sun, 02 Jan 2011 10:29:02 -0500
|
|
||||||
|
|
||||||
openmesh (2.0~svn216-0~ppa3~karmic1) karmic; urgency=low
|
|
||||||
|
|
||||||
* Fix UPSTREAM SVN REPOSITORY in rules. Thanks to Jan Möbius.
|
|
||||||
|
|
||||||
-- Jean Pierre Charalambos <nakednous@gmail.com> Wed, 11 Nov 2009 17:14:27 -0500
|
|
||||||
|
|
||||||
openmesh (2.0~svn216-0~ppa2~karmic1) karmic; urgency=low
|
|
||||||
|
|
||||||
* Same as first karmic version but this one includes the changelog from Jaunty versions
|
|
||||||
* Karmic versions fix PACKAGE name in rules from libopenmesh to openmesh
|
|
||||||
* Karmic versions remove debian directory from svn export
|
|
||||||
* It remains to fix a SONAMES warning. Maybe it has to see with the upper case letters usage?
|
|
||||||
|
|
||||||
-- Jean Pierre Charalambos <nakednous@gmail.com> Thu, 05 Nov 2009 14:53:02 -0500
|
|
||||||
|
|
||||||
openmesh (2.0~svn216-0~ppa1~karmic1) karmic; urgency=low
|
|
||||||
|
|
||||||
* Fisrt karmic version
|
|
||||||
* New upstream SVN snapshot taken from revision 216
|
|
||||||
|
|
||||||
-- Jean Pierre Charalambos <nakednous@gmail.com> Tue, 03 Nov 2009 21:32:38 -0500
|
|
||||||
|
|
||||||
openmesh (2.0~svn177-0~ppa2~jaunty1) jaunty; urgency=low
|
|
||||||
|
|
||||||
* Adding the documentation package.
|
|
||||||
|
|
||||||
-- Jean Pierre Charalambos <nakednous@gmail.com> Thu, 25 Jun 2009 20:07:43 -0500
|
|
||||||
|
|
||||||
openmesh (2.0~svn177-0~ppa1~jaunty1) jaunty; urgency=low
|
|
||||||
|
|
||||||
* New upstream SVN snapshot.
|
|
||||||
* Splitting the library into libopenmesh and libopenmesh-dev, after
|
|
||||||
fixes to SONAMES added at this upstream revision.
|
|
||||||
* No documentation added yet.
|
|
||||||
* Removing r167 packages from the ppa because they do not conform with
|
|
||||||
packaging sources directly imported from SVN. According to debian
|
|
||||||
policies, in this case get-orig-source must be used.
|
|
||||||
|
|
||||||
-- Jean Pierre Charalambos <nakednous@gmail.com> Wed, 24 Jun 2009 22:26:31 -0500
|
|
||||||
1
debian/compat
vendored
1
debian/compat
vendored
@@ -1 +0,0 @@
|
|||||||
7
|
|
||||||
67
debian/control
vendored
67
debian/control
vendored
@@ -1,67 +0,0 @@
|
|||||||
Source: openmesh
|
|
||||||
Section: libs
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Jean Pierre Charalambos <nakednous@gmail.com>
|
|
||||||
Build-Depends: cdbs, debhelper (>= 7), cmake, libqt4-dev, libqt4-opengl-dev, freeglut3-dev, libfreetype6-dev, libgomp1, doxygen
|
|
||||||
Standards-Version: 3.9.1
|
|
||||||
Homepage: http://www.openmesh.org
|
|
||||||
|
|
||||||
Package: libopenmesh
|
|
||||||
Architecture: any
|
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
|
||||||
Description: OpenMesh is a generic and efficient data structure for representing
|
|
||||||
and manipulating polygonal meshes. OpenMesh provides the following features:
|
|
||||||
.
|
|
||||||
* Representation of arbitrary polygonal and pure triangle meshes.
|
|
||||||
* Explicit representation of vertices, halfedges, edges and faces.
|
|
||||||
* Fast neighborhood access, especially the one-ring neighborhood.
|
|
||||||
* Highly customizable.
|
|
||||||
.
|
|
||||||
This package contains the shared library needed to run programs using
|
|
||||||
OpenMesh.
|
|
||||||
|
|
||||||
Package: libopenmesh-dev
|
|
||||||
Section: libdevel
|
|
||||||
Architecture: any
|
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libopenmesh (= ${binary:Version}), libqt4-dev, libqt4-opengl-dev, freeglut3-dev, libfreetype6-dev
|
|
||||||
Suggests: qt4-designer(>= 4.5), qt4-dev-tools (>= 4.5), libopenmesh-doc, libopenmesh-apps
|
|
||||||
Description: OpenMesh is a generic and efficient data structure for representing
|
|
||||||
and manipulating polygonal meshes. OpenMesh provides the following features:
|
|
||||||
.
|
|
||||||
* Representation of arbitrary polygonal and pure triangle meshes.
|
|
||||||
* Explicit representation of vertices, halfedges, edges and faces.
|
|
||||||
* Fast neighborhood access, especially the one-ring neighborhood.
|
|
||||||
* Highly customizable.
|
|
||||||
.
|
|
||||||
This package contains all supplementary files (static library and headers)
|
|
||||||
you need to develop your own programs using the OpenMesh library.
|
|
||||||
|
|
||||||
Package: libopenmesh-apps
|
|
||||||
Architecture: any
|
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libopenmesh (= ${binary:Version})
|
|
||||||
Description: OpenMesh is a generic and efficient data structure for representing
|
|
||||||
and manipulating polygonal meshes. OpenMesh provides the following features:
|
|
||||||
.
|
|
||||||
* Representation of arbitrary polygonal and pure triangle meshes.
|
|
||||||
* Explicit representation of vertices, halfedges, edges and faces.
|
|
||||||
* Fast neighborhood access, especially the one-ring neighborhood.
|
|
||||||
* Highly customizable.
|
|
||||||
.
|
|
||||||
This package contains some binary applications that show some features of the
|
|
||||||
OpenMesh library.
|
|
||||||
|
|
||||||
Package: libopenmesh-doc
|
|
||||||
Architecture: all
|
|
||||||
Depends: ${misc:Depends}
|
|
||||||
Section: doc
|
|
||||||
Suggests: libopenmesh-dev (= ${binary:Version}), libopenmesh-apps (= ${binary:Version})
|
|
||||||
Description: OpenMesh is a generic and efficient data structure for representing
|
|
||||||
and manipulating polygonal meshes. OpenMesh provides the following features:
|
|
||||||
.
|
|
||||||
* Representation of arbitrary polygonal and pure triangle meshes.
|
|
||||||
* Explicit representation of vertices, halfedges, edges and faces.
|
|
||||||
* Fast neighborhood access, especially the one-ring neighborhood.
|
|
||||||
* Highly customizable.
|
|
||||||
.
|
|
||||||
This package constains the API documentation of the OpenMesh library in HTML
|
|
||||||
format.
|
|
||||||
54
debian/copyright
vendored
54
debian/copyright
vendored
@@ -1,54 +0,0 @@
|
|||||||
This package was debianized by:
|
|
||||||
|
|
||||||
Jean Pierre Charalambos <nakednous@gmail.com> on Sun, 21 Jun 2009 17:49:34 -0500
|
|
||||||
|
|
||||||
It was downloaded from:
|
|
||||||
|
|
||||||
http://www.openmesh.org
|
|
||||||
|
|
||||||
Upstream Author:
|
|
||||||
|
|
||||||
Computer Graphics Group, RWTH Aachen <moebius@informatik.rwth-aachen.de>
|
|
||||||
|
|
||||||
Copyright:
|
|
||||||
|
|
||||||
Copyright (C) 2001-2015 by Computer Graphics Group, RWTH-Aachen University
|
|
||||||
|
|
||||||
License:
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
|
|
||||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
|
|
||||||
On Debian systems, the complete text of the BSD License can be
|
|
||||||
found in `/usr/share/common-licenses/BSD '.
|
|
||||||
|
|
||||||
The Debian packaging is:
|
|
||||||
|
|
||||||
Copyright C) 2009, Jean Pierre Charalambos <nakednous@gmail.com>
|
|
||||||
|
|
||||||
and is licensed under the GPL, see above.
|
|
||||||
25
debian/rules
vendored
25
debian/rules
vendored
@@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
|
|
||||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
|
||||||
include /usr/share/cdbs/1/class/cmake.mk
|
|
||||||
|
|
||||||
build/libopenmesh-doc::
|
|
||||||
cd $(DEB_BUILDDIR) && $(MAKE) doc
|
|
||||||
mkdir -p debian/tmp/usr/share/doc/
|
|
||||||
cp -r $(DEB_BUILDDIR)/Build/share/OpenMesh/Doc/html debian/tmp/usr/share/doc/OpenMesh
|
|
||||||
|
|
||||||
install/libopenmesh::
|
|
||||||
ln -sf libOpenMeshCore.so.2.0 debian/tmp/usr/lib/OpenMesh/libOpenMeshCore.so.2
|
|
||||||
ln -sf libOpenMeshTools.so.2.0 debian/tmp/usr/lib/OpenMesh/libOpenMeshTools.so.2
|
|
||||||
dh_install -plibopenmesh debian/tmp/usr/lib/OpenMesh/lib*.so.* /usr/lib/
|
|
||||||
|
|
||||||
install/libopenmesh-dev::
|
|
||||||
dh_install -plibopenmesh-dev debian/tmp/usr/lib/OpenMesh/lib*.so /usr/lib/
|
|
||||||
dh_install -plibopenmesh-dev debian/tmp/usr/lib/OpenMesh/lib*.a /usr/lib/
|
|
||||||
dh_install -plibopenmesh-dev --autodest debian/tmp/usr/include/OpenMesh
|
|
||||||
|
|
||||||
install/libopenmesh-apps::
|
|
||||||
dh_install -plibopenmesh-apps debian/tmp/usr/bin/* /usr/lib/OpenMesh/Apps
|
|
||||||
|
|
||||||
install/libopenmesh-doc::
|
|
||||||
dh_install -plibopenmesh-doc debian/tmp/usr/share/doc/*
|
|
||||||
@@ -23,19 +23,12 @@ if ( BUILD_APPS )
|
|||||||
add_subdirectory (VDProgMesh/Analyzer)
|
add_subdirectory (VDProgMesh/Analyzer)
|
||||||
|
|
||||||
# Add non ui apps as dependency before fixbundle
|
# Add non ui apps as dependency before fixbundle
|
||||||
if ( WIN32 )
|
if ( APPLE OR (WIN32 AND NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles" ) )
|
||||||
if ( NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles" )
|
|
||||||
# let bundle generation depend on all targets
|
|
||||||
add_dependencies (fixbundle commandlineDecimater Dualizer mconvert Smoothing commandlineAdaptiveSubdivider commandlineSubdivider mkbalancedpm Analyzer )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add non ui apps as dependency before fixbundle
|
|
||||||
if ( APPLE)
|
|
||||||
# let bundle generation depend on all targets
|
# let bundle generation depend on all targets
|
||||||
add_dependencies (fixbundle commandlineDecimater Dualizer mconvert Smoothing commandlineAdaptiveSubdivider commandlineSubdivider mkbalancedpm Analyzer )
|
add_dependencies (fixbundle commandlineDecimater Dualizer mconvert Smoothing commandlineAdaptiveSubdivider commandlineSubdivider mkbalancedpm Analyzer )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set( OpenGL_GL_PREFERENCE GLVND)
|
||||||
|
|
||||||
# find needed packages for gui applications
|
# find needed packages for gui applications
|
||||||
find_package (OpenGL)
|
find_package (OpenGL)
|
||||||
@@ -70,13 +63,8 @@ if ( BUILD_APPS )
|
|||||||
|
|
||||||
|
|
||||||
# Add ui apps as dependency before fixbundle
|
# Add ui apps as dependency before fixbundle
|
||||||
if ( WIN32 AND NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles")
|
# Required on Windows (NOTMINGW) and APPLE
|
||||||
# let bundle generation depend on all targets
|
if ( APPLE OR (WIN32 AND NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles") )
|
||||||
add_dependencies (fixbundle DecimaterGui ProgViewer QtViewer SubdividerGui Synthesizer)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add ui apps as dependency before fixbundle
|
|
||||||
if ( APPLE)
|
|
||||||
# let bundle generation depend on all targets
|
# let bundle generation depend on all targets
|
||||||
add_dependencies (fixbundle DecimaterGui ProgViewer QtViewer SubdividerGui Synthesizer)
|
add_dependencies (fixbundle DecimaterGui ProgViewer QtViewer SubdividerGui Synthesizer)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set (headers
|
set (headers
|
||||||
../DecimaterViewerWidget.hh
|
../DecimaterViewerWidget.hh
|
||||||
../../QtViewer/QGLViewerWidget.hh
|
../../QtViewer/QGLViewerWidget.hh
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (commandlineDecimater ../decimater.cc)
|
vci_add_executable (commandlineDecimater ../decimater.cc)
|
||||||
|
|
||||||
target_link_libraries (commandlineDecimater
|
target_link_libraries (commandlineDecimater
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../..
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (Dualizer dualizer.cc)
|
vci_add_executable (Dualizer dualizer.cc)
|
||||||
|
|
||||||
target_link_libraries (Dualizer
|
target_link_libraries (Dualizer
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
set( headers
|
set( headers
|
||||||
ProgViewerWidget.hh
|
ProgViewerWidget.hh
|
||||||
../QtViewer/QGLViewerWidget.hh
|
../QtViewer/QGLViewerWidget.hh
|
||||||
|
|||||||
@@ -1,15 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
# source code directories
|
|
||||||
set (directories
|
|
||||||
.
|
|
||||||
)
|
|
||||||
|
|
||||||
set (sources
|
set (sources
|
||||||
MeshViewerWidget.cc
|
MeshViewerWidget.cc
|
||||||
QGLViewerWidget.cc
|
QGLViewerWidget.cc
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (Smoothing smooth.cc)
|
vci_add_executable (Smoothing smooth.cc)
|
||||||
|
|
||||||
target_link_libraries (Smoothing
|
target_link_libraries (Smoothing
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set (headers
|
set (headers
|
||||||
../MeshViewerWidget.hh
|
../MeshViewerWidget.hh
|
||||||
../SubdivideWidget.hh
|
../SubdivideWidget.hh
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (commandlineAdaptiveSubdivider ../adaptive_subdivider.cc)
|
vci_add_executable (commandlineAdaptiveSubdivider ../adaptive_subdivider.cc)
|
||||||
|
|
||||||
target_link_libraries (commandlineAdaptiveSubdivider
|
target_link_libraries (commandlineAdaptiveSubdivider
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (commandlineSubdivider ../subdivider.cc)
|
vci_add_executable (commandlineSubdivider ../subdivider.cc)
|
||||||
|
|
||||||
target_link_libraries (commandlineSubdivider
|
target_link_libraries (commandlineSubdivider
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (Analyzer vdpmanalyzer.cc)
|
vci_add_executable (Analyzer vdpmanalyzer.cc)
|
||||||
|
|
||||||
target_link_libraries (Analyzer
|
target_link_libraries (Analyzer
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set (headers
|
set (headers
|
||||||
VDPMSynthesizerViewerWidget.hh
|
VDPMSynthesizerViewerWidget.hh
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../../..
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (mkbalancedpm mkbalancedpm.cc)
|
vci_add_executable (mkbalancedpm mkbalancedpm.cc)
|
||||||
|
|
||||||
target_link_libraries (mkbalancedpm
|
target_link_libraries (mkbalancedpm
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
|
||||||
../../..
|
|
||||||
)
|
|
||||||
|
|
||||||
vci_add_executable (mconvert mconvert.cc)
|
vci_add_executable (mconvert mconvert.cc)
|
||||||
|
|
||||||
target_link_libraries (mconvert
|
target_link_libraries (mconvert
|
||||||
|
|||||||
@@ -1,29 +1,135 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
set ( headers
|
||||||
../..
|
Geometry/Config.hh
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
Geometry/EigenVectorT.hh
|
||||||
|
Geometry/LoopSchemeMaskT.hh
|
||||||
|
Geometry/MathDefs.hh
|
||||||
|
Geometry/NormalConeT.hh
|
||||||
|
Geometry/NormalConeT_impl.hh
|
||||||
|
Geometry/Plane3d.hh
|
||||||
|
Geometry/QuadricT.hh
|
||||||
|
Geometry/Vector11T.hh
|
||||||
|
Geometry/VectorT.hh
|
||||||
|
Geometry/VectorT_inc.hh
|
||||||
|
IO/BinaryHelper.hh
|
||||||
|
IO/IOInstances.hh
|
||||||
|
IO/IOManager.hh
|
||||||
|
IO/MeshIO.hh
|
||||||
|
IO/OFFFormat.hh
|
||||||
|
IO/OMFormat.hh
|
||||||
|
IO/OMFormatT_impl.hh
|
||||||
|
IO/Options.hh
|
||||||
|
IO/SR_binary.hh
|
||||||
|
IO/SR_binary_spec.hh
|
||||||
|
IO/SR_binary_vector_of_bool.hh
|
||||||
|
IO/SR_rbo.hh
|
||||||
|
IO/SR_store.hh
|
||||||
|
IO/SR_types.hh
|
||||||
|
IO/StoreRestore.hh
|
||||||
|
IO/exporter/BaseExporter.hh
|
||||||
|
IO/exporter/ExporterT.hh
|
||||||
|
IO/importer/BaseImporter.hh
|
||||||
|
IO/importer/ImporterT.hh
|
||||||
|
IO/reader/BaseReader.hh
|
||||||
|
IO/reader/OBJReader.hh
|
||||||
|
IO/reader/OFFReader.hh
|
||||||
|
IO/reader/OMReader.hh
|
||||||
|
IO/reader/PLYReader.hh
|
||||||
|
IO/reader/STLReader.hh
|
||||||
|
IO/writer/BaseWriter.hh
|
||||||
|
IO/writer/OBJWriter.hh
|
||||||
|
IO/writer/OFFWriter.hh
|
||||||
|
IO/writer/OMWriter.hh
|
||||||
|
IO/writer/PLYWriter.hh
|
||||||
|
IO/writer/STLWriter.hh
|
||||||
|
IO/writer/VTKWriter.hh
|
||||||
|
Mesh/ArrayItems.hh
|
||||||
|
Mesh/ArrayKernel.hh
|
||||||
|
Mesh/ArrayKernelT_impl.hh
|
||||||
|
Mesh/AttribKernelT.hh
|
||||||
|
Mesh/Attributes.hh
|
||||||
|
Mesh/BaseKernel.hh
|
||||||
|
Mesh/BaseMesh.hh
|
||||||
|
Mesh/Casts.hh
|
||||||
|
Mesh/CirculatorsT.hh
|
||||||
|
Mesh/DefaultPolyMesh.hh
|
||||||
|
Mesh/DefaultTriMesh.hh
|
||||||
|
Mesh/FinalMeshItemsT.hh
|
||||||
|
Mesh/Handles.hh
|
||||||
|
Mesh/IteratorsT.hh
|
||||||
|
Mesh/PolyConnectivity.hh
|
||||||
|
Mesh/PolyConnectivity_inline_impl.hh
|
||||||
|
Mesh/PolyMeshT.hh
|
||||||
|
Mesh/PolyMeshT_impl.hh
|
||||||
|
Mesh/PolyMesh_ArrayKernelT.hh
|
||||||
|
Mesh/SmartHandles.hh
|
||||||
|
Mesh/SmartRange.hh
|
||||||
|
Mesh/Status.hh
|
||||||
|
Mesh/Tags.hh
|
||||||
|
Mesh/Traits.hh
|
||||||
|
Mesh/TriConnectivity.hh
|
||||||
|
Mesh/TriMeshT.hh
|
||||||
|
Mesh/TriMeshT_impl.hh
|
||||||
|
Mesh/TriMesh_ArrayKernelT.hh
|
||||||
|
Mesh/gen/circulators_header.hh
|
||||||
|
Mesh/gen/circulators_template.hh
|
||||||
|
Mesh/gen/footer.hh
|
||||||
|
Mesh/gen/iterators_header.hh
|
||||||
|
Mesh/gen/iterators_template.hh
|
||||||
|
System/OpenMeshDLLMacros.hh
|
||||||
|
System/compiler.hh
|
||||||
|
System/config.hh
|
||||||
|
System/mostream.hh
|
||||||
|
System/omstream.hh
|
||||||
|
Utils/AutoPropertyHandleT.hh
|
||||||
|
Utils/BaseProperty.hh
|
||||||
|
Utils/Endian.hh
|
||||||
|
Utils/GenProg.hh
|
||||||
|
Utils/HandleToPropHandle.hh
|
||||||
|
Utils/Noncopyable.hh
|
||||||
|
Utils/Predicates.hh
|
||||||
|
Utils/Property.hh
|
||||||
|
Utils/PropertyContainer.hh
|
||||||
|
Utils/PropertyCreator.hh
|
||||||
|
Utils/PropertyManager.hh
|
||||||
|
Utils/RandomNumberGenerator.hh
|
||||||
|
Utils/SingletonT.hh
|
||||||
|
Utils/SingletonT_impl.hh
|
||||||
|
Utils/color_cast.hh
|
||||||
|
Utils/typename.hh
|
||||||
|
Utils/vector_cast.hh
|
||||||
|
Utils/vector_traits.hh
|
||||||
)
|
)
|
||||||
|
|
||||||
# source code directories
|
set ( sources
|
||||||
set (directories
|
IO/BinaryHelper.cc
|
||||||
.
|
IO/IOManager.cc
|
||||||
Geometry
|
IO/OMFormat.cc
|
||||||
IO
|
IO/reader/BaseReader.cc
|
||||||
IO/exporter
|
IO/reader/OBJReader.cc
|
||||||
IO/importer
|
IO/reader/OFFReader.cc
|
||||||
IO/reader
|
IO/reader/OMReader.cc
|
||||||
IO/writer
|
IO/reader/PLYReader.cc
|
||||||
Mesh
|
IO/reader/STLReader.cc
|
||||||
Mesh/gen
|
IO/writer/BaseWriter.cc
|
||||||
System
|
IO/writer/OBJWriter.cc
|
||||||
Utils
|
IO/writer/OFFWriter.cc
|
||||||
|
IO/writer/OMWriter.cc
|
||||||
|
IO/writer/PLYWriter.cc
|
||||||
|
IO/writer/STLWriter.cc
|
||||||
|
IO/writer/VTKWriter.cc
|
||||||
|
Mesh/ArrayKernel.cc
|
||||||
|
Mesh/BaseKernel.cc
|
||||||
|
Mesh/PolyConnectivity.cc
|
||||||
|
Mesh/TriConnectivity.cc
|
||||||
|
System/omstream.cc
|
||||||
|
Utils/BaseProperty.cc
|
||||||
|
Utils/Endian.cc
|
||||||
|
Utils/PropertyCreator.cc
|
||||||
|
Utils/RandomNumberGenerator.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
# collect all header and source files
|
|
||||||
vci_append_files (headers "*.hh" ${directories})
|
|
||||||
vci_append_files (sources "*.cc" ${directories})
|
|
||||||
|
|
||||||
# Disable Library installation when not building OpenMesh on its own but as part of another project!
|
# Disable Library installation when not building OpenMesh on its own but as part of another project!
|
||||||
if ( NOT ${CMAKE_PROJECT_NAME} MATCHES "OpenMesh")
|
if ( NOT ${CMAKE_PROJECT_NAME} MATCHES "OpenMesh")
|
||||||
set(VCI_NO_LIBRARY_INSTALL true)
|
set(VCI_NO_LIBRARY_INSTALL true)
|
||||||
@@ -36,12 +142,25 @@ if (WIN32)
|
|||||||
add_definitions( -DOPENMESHDLL -DBUILDOPENMESHDLL)
|
add_definitions( -DOPENMESHDLL -DBUILDOPENMESHDLL)
|
||||||
vci_add_library (OpenMeshCore SHARED ${sources} ${headers})
|
vci_add_library (OpenMeshCore SHARED ${sources} ${headers})
|
||||||
else()
|
else()
|
||||||
# OpenMesh has no dll exports so we have to build a static library on windows
|
|
||||||
vci_add_library (OpenMeshCore STATIC ${sources} ${headers})
|
vci_add_library (OpenMeshCore STATIC ${sources} ${headers})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_include_directories(OpenMeshCore PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
|
|
||||||
else ()
|
else ()
|
||||||
vci_add_library (OpenMeshCore SHAREDANDSTATIC ${sources} ${headers})
|
vci_add_library (OpenMeshCore SHAREDANDSTATIC ${sources} ${headers})
|
||||||
|
|
||||||
|
target_include_directories(OpenMeshCore PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
|
target_include_directories(OpenMeshCoreStatic PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
set_target_properties (OpenMeshCore PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
set_target_properties (OpenMeshCore PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
||||||
SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} )
|
SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} )
|
||||||
endif ()
|
endif ()
|
||||||
@@ -53,15 +172,7 @@ endif ()
|
|||||||
# Add core as dependency before fixbundle
|
# Add core as dependency before fixbundle
|
||||||
if ( (${CMAKE_PROJECT_NAME} MATCHES "OpenMesh") AND BUILD_APPS )
|
if ( (${CMAKE_PROJECT_NAME} MATCHES "OpenMesh") AND BUILD_APPS )
|
||||||
|
|
||||||
if ( WIN32 )
|
if ( APPLE OR (WIN32 AND NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles" ) )
|
||||||
if ( NOT "${CMAKE_GENERATOR}" MATCHES "MinGW Makefiles" )
|
|
||||||
add_dependencies (fixbundle OpenMeshCore)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add core as dependency before fixbundle
|
|
||||||
if ( APPLE )
|
|
||||||
# let bundle generation depend on targets
|
|
||||||
add_dependencies (fixbundle OpenMeshCore)
|
add_dependencies (fixbundle OpenMeshCore)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -126,25 +237,8 @@ install(DIRECTORY .
|
|||||||
#install the config file
|
#install the config file
|
||||||
install(FILES System/config.h DESTINATION include/OpenMesh/Core/System)
|
install(FILES System/config.h DESTINATION include/OpenMesh/Core/System)
|
||||||
|
|
||||||
#install inlined Files from IO
|
|
||||||
install(DIRECTORY IO/
|
|
||||||
DESTINATION include/OpenMesh/Core/IO
|
|
||||||
FILES_MATCHING
|
|
||||||
PATTERN "*.inl"
|
|
||||||
PATTERN "CVS" EXCLUDE
|
|
||||||
PATTERN ".svn" EXCLUDE
|
|
||||||
PATTERN "reader" EXCLUDE
|
|
||||||
PATTERN "writer" EXCLUDE
|
|
||||||
PATTERN "importer" EXCLUDE
|
|
||||||
PATTERN "exporter" EXCLUDE
|
|
||||||
PATTERN "tmp" EXCLUDE
|
|
||||||
PATTERN "Debian*" EXCLUDE )
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
target_include_directories(OpenMeshCore PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
|
||||||
$<INSTALL_INTERFACE:include>)
|
|
||||||
|
|
||||||
install(TARGETS OpenMeshCore EXPORT OpenMeshConfig
|
install(TARGETS OpenMeshCore EXPORT OpenMeshConfig
|
||||||
ARCHIVE DESTINATION ${VCI_PROJECT_LIBDIR}
|
ARCHIVE DESTINATION ${VCI_PROJECT_LIBDIR}
|
||||||
LIBRARY DESTINATION ${VCI_PROJECT_LIBDIR}
|
LIBRARY DESTINATION ${VCI_PROJECT_LIBDIR}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@
|
|||||||
|
|
||||||
// OpenMesh
|
// OpenMesh
|
||||||
#include <OpenMesh/Core/System/config.h>
|
#include <OpenMesh/Core/System/config.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
//== NAMESPACES ==============================================================
|
//== NAMESPACES ==============================================================
|
||||||
@@ -115,31 +116,24 @@ public:
|
|||||||
TexCoordST = 0x8000 ///< Write texture coordinates as ST instead of UV
|
TexCoordST = 0x8000 ///< Write texture coordinates as ST instead of UV
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Texture filename. This will be written as
|
||||||
|
/// map_Kd in the OBJ writer into the material file.
|
||||||
|
std::string texture_file ;
|
||||||
|
|
||||||
|
/// Filename extension for material files when writing OBJs
|
||||||
|
/// default is currently .mat
|
||||||
|
std::string material_file_extension;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// Default constructor
|
/// Default constructor
|
||||||
Options() : flags_( Default )
|
Options() : texture_file(""), material_file_extension(".mat"), flags_( Default )
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
/// Copy constructor
|
|
||||||
Options(const Options& _opt) : flags_(_opt.flags_)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
/// Initializing constructor setting a single option
|
|
||||||
Options(Flag _flg) : flags_( _flg)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
|
|
||||||
/// Initializing constructor setting multiple options
|
/// Initializing constructor setting multiple options
|
||||||
Options(const value_type _flgs) : flags_( _flgs)
|
Options(const value_type _flgs) : flags_( _flgs)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
~Options()
|
|
||||||
{ }
|
|
||||||
|
|
||||||
/// Restore state after default constructor.
|
/// Restore state after default constructor.
|
||||||
void cleanup(void)
|
void cleanup(void)
|
||||||
{ flags_ = Default; }
|
{ flags_ = Default; }
|
||||||
@@ -154,17 +148,9 @@ public:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
//@{
|
|
||||||
/// Copy options defined in _rhs.
|
|
||||||
|
|
||||||
Options& operator = ( const Options& _rhs )
|
|
||||||
{ flags_ = _rhs.flags_; return *this; }
|
|
||||||
|
|
||||||
Options& operator = ( const value_type _rhs )
|
Options& operator = ( const value_type _rhs )
|
||||||
{ flags_ = _rhs; return *this; }
|
{ flags_ = _rhs; return *this; }
|
||||||
|
|
||||||
//@}
|
|
||||||
|
|
||||||
|
|
||||||
//@{
|
//@{
|
||||||
/// Unset options defined in _rhs.
|
/// Unset options defined in _rhs.
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ struct binary< std::vector< T >, typename std::enable_if<std::is_default_constru
|
|||||||
typedef typename value_type::value_type elem_type;
|
typedef typename value_type::value_type elem_type;
|
||||||
|
|
||||||
static const bool is_streamable = binary<T>::is_streamable;
|
static const bool is_streamable = binary<T>::is_streamable;
|
||||||
static size_t size_of(bool _store_size = true)
|
static size_t size_of(bool /*_store_size*/ = true)
|
||||||
{ return IO::UnknownSize; }
|
{ return IO::UnknownSize; }
|
||||||
|
|
||||||
static size_t size_of(const value_type& _v, bool _store_size = true)
|
static size_t size_of(const value_type& _v, bool _store_size = true)
|
||||||
@@ -424,7 +424,7 @@ struct binary< std::vector< T >, typename std::enable_if<std::is_default_constru
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <OpenMesh/Core/IO/SR_binary_vector_of_bool.inl>
|
#include <OpenMesh/Core/IO/SR_binary_vector_of_bool.hh>
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ template <> struct binary< std::vector<bool> >
|
|||||||
|
|
||||||
static const bool is_streamable = true;
|
static const bool is_streamable = true;
|
||||||
|
|
||||||
static size_t size_of(bool _store_size = true) { return UnknownSize; }
|
static size_t size_of(bool /*_store_size*/ = true) { return UnknownSize; }
|
||||||
static size_t size_of(const value_type& _v, bool _store_size = true)
|
static size_t size_of(const value_type& _v, bool _store_size = true)
|
||||||
{
|
{
|
||||||
size_t size = _v.size() / 8 + ((_v.size() % 8)!=0);
|
size_t size = _v.size() / 8 + ((_v.size() % 8)!=0);
|
||||||
@@ -406,6 +406,7 @@ bool _OMReader_::read_binary_vertex_chunk(std::istream &_is, BaseImporter &_bi,
|
|||||||
{
|
{
|
||||||
Chunk::PropertyName property_type;
|
Chunk::PropertyName property_type;
|
||||||
bytes_ += restore(_is, property_type, _swap);
|
bytes_ += restore(_is, property_type, _swap);
|
||||||
|
if (_opt.check(Options::Custom))
|
||||||
add_generic_property(property_type, _bi);
|
add_generic_property(property_type, _bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -563,6 +564,7 @@ bool _OMReader_::read_binary_face_chunk(std::istream &_is, BaseImporter &_bi, Op
|
|||||||
{
|
{
|
||||||
Chunk::PropertyName property_type;
|
Chunk::PropertyName property_type;
|
||||||
bytes_ += restore(_is, property_type, _swap);
|
bytes_ += restore(_is, property_type, _swap);
|
||||||
|
if (_opt.check(Options::Custom))
|
||||||
add_generic_property(property_type, _bi);
|
add_generic_property(property_type, _bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,6 +606,7 @@ bool _OMReader_::read_binary_edge_chunk(std::istream &_is, BaseImporter &_bi, Op
|
|||||||
{
|
{
|
||||||
Chunk::PropertyName property_type;
|
Chunk::PropertyName property_type;
|
||||||
bytes_ += restore(_is, property_type, _swap);
|
bytes_ += restore(_is, property_type, _swap);
|
||||||
|
if (_opt.check(Options::Custom))
|
||||||
add_generic_property(property_type, _bi);
|
add_generic_property(property_type, _bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -654,6 +657,7 @@ bool _OMReader_::read_binary_halfedge_chunk(std::istream &_is, BaseImporter &_bi
|
|||||||
{
|
{
|
||||||
Chunk::PropertyName property_type;
|
Chunk::PropertyName property_type;
|
||||||
bytes_ += restore(_is, property_type, _swap);
|
bytes_ += restore(_is, property_type, _swap);
|
||||||
|
if (_opt.check(Options::Custom))
|
||||||
add_generic_property(property_type, _bi);
|
add_generic_property(property_type, _bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -745,7 +749,7 @@ bool _OMReader_::read_binary_halfedge_chunk(std::istream &_is, BaseImporter &_bi
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
bool _OMReader_::read_binary_mesh_chunk(std::istream &_is, BaseImporter &_bi, Options & /* _opt */, bool _swap) const
|
bool _OMReader_::read_binary_mesh_chunk(std::istream &_is, BaseImporter &_bi, Options& _opt , bool _swap) const
|
||||||
{
|
{
|
||||||
using OMFormat::Chunk;
|
using OMFormat::Chunk;
|
||||||
|
|
||||||
@@ -760,6 +764,7 @@ bool _OMReader_::read_binary_mesh_chunk(std::istream &_is, BaseImporter &_bi, Op
|
|||||||
{
|
{
|
||||||
Chunk::PropertyName property_type;
|
Chunk::PropertyName property_type;
|
||||||
bytes_ += restore(_is, property_type, _swap);
|
bytes_ += restore(_is, property_type, _swap);
|
||||||
|
if (_opt.check(Options::Custom))
|
||||||
add_generic_property(property_type, _bi);
|
add_generic_property(property_type, _bi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -130,26 +130,31 @@ write(const std::string& _filename, BaseExporter& _be, Options _opt, std::stream
|
|||||||
|
|
||||||
size_t _OBJWriter_::getMaterial(OpenMesh::Vec3f _color) const
|
size_t _OBJWriter_::getMaterial(OpenMesh::Vec3f _color) const
|
||||||
{
|
{
|
||||||
for (size_t i=0; i < material_.size(); i++)
|
auto idx_it = material_idx_.find(_color);
|
||||||
if(material_[i] == _color)
|
if (idx_it != material_idx_.end()) {
|
||||||
return i;
|
return idx_it->second;
|
||||||
|
} else {
|
||||||
//not found add new material
|
size_t idx = material_.size();
|
||||||
material_.push_back(_color);
|
material_.push_back(_color);
|
||||||
return material_.size()-1;
|
material_idx_[_color] = idx;
|
||||||
|
|
||||||
|
return idx;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
size_t _OBJWriter_::getMaterial(OpenMesh::Vec4f _color) const
|
size_t _OBJWriter_::getMaterial(OpenMesh::Vec4f _color) const
|
||||||
{
|
{
|
||||||
for (size_t i=0; i < materialA_.size(); i++)
|
auto idx_it = materialA_idx_.find(_color);
|
||||||
if(materialA_[i] == _color)
|
if (idx_it != materialA_idx_.end()) {
|
||||||
return i;
|
return idx_it->second;
|
||||||
|
} else {
|
||||||
//not found add new material
|
size_t idx = materialA_.size();
|
||||||
materialA_.push_back(_color);
|
materialA_.push_back(_color);
|
||||||
return materialA_.size()-1;
|
materialA_idx_[_color] = idx;
|
||||||
|
return idx;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -162,7 +167,9 @@ writeMaterial(std::ostream& _out, BaseExporter& _be, Options _opt) const
|
|||||||
OpenMesh::Vec4f cA;
|
OpenMesh::Vec4f cA;
|
||||||
|
|
||||||
material_.clear();
|
material_.clear();
|
||||||
|
material_idx_.clear();
|
||||||
materialA_.clear();
|
materialA_.clear();
|
||||||
|
materialA_idx_.clear();
|
||||||
|
|
||||||
//iterate over faces
|
//iterate over faces
|
||||||
for (size_t i=0, nF=_be.n_faces(); i<nF; ++i)
|
for (size_t i=0, nF=_be.n_faces(); i<nF; ++i)
|
||||||
@@ -195,6 +202,9 @@ writeMaterial(std::ostream& _out, BaseExporter& _be, Options _opt) const
|
|||||||
_out << "illum 1" << '\n';
|
_out << "illum 1" << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_opt.texture_file != "") {
|
||||||
|
_out << "map_Kd " << _opt.texture_file << std::endl;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,8 +229,10 @@ write(std::ostream& _out, BaseExporter& _be, Options _opt, std::streamsize _prec
|
|||||||
_out.precision(_precision);
|
_out.precision(_precision);
|
||||||
|
|
||||||
// check exporter features
|
// check exporter features
|
||||||
if (!check( _be, _opt))
|
if (!check( _be, _opt)) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// No binary mode for OBJ
|
// No binary mode for OBJ
|
||||||
if ( _opt.check(Options::Binary) ) {
|
if ( _opt.check(Options::Binary) ) {
|
||||||
@@ -240,9 +252,9 @@ write(std::ostream& _out, BaseExporter& _be, Options _opt, std::streamsize _prec
|
|||||||
}
|
}
|
||||||
|
|
||||||
//create material file if needed
|
//create material file if needed
|
||||||
if ( _opt.check(Options::FaceColor) ){
|
if ( _opt.check(Options::FaceColor) || _opt.texture_file != ""){
|
||||||
|
|
||||||
std::string matFile = path_ + objName_ + ".mat";
|
std::string matFile = path_ + objName_ + _opt.material_file_extension;
|
||||||
|
|
||||||
std::fstream matStream(matFile.c_str(), std::ios_base::out );
|
std::fstream matStream(matFile.c_str(), std::ios_base::out );
|
||||||
|
|
||||||
@@ -262,8 +274,8 @@ write(std::ostream& _out, BaseExporter& _be, Options _opt, std::streamsize _prec
|
|||||||
_out << _be.n_faces() << " faces" << '\n';
|
_out << _be.n_faces() << " faces" << '\n';
|
||||||
|
|
||||||
// material file
|
// material file
|
||||||
if (useMatrial && _opt.check(Options::FaceColor) )
|
if ( (useMatrial && _opt.check(Options::FaceColor)) || _opt.texture_file != "")
|
||||||
_out << "mtllib " << objName_ << ".mat" << '\n';
|
_out << "mtllib " << objName_ << _opt.material_file_extension << '\n';
|
||||||
|
|
||||||
std::map<Vec2f,int> texMap;
|
std::map<Vec2f,int> texMap;
|
||||||
//collect Texturevertices from halfedges
|
//collect Texturevertices from halfedges
|
||||||
@@ -387,7 +399,9 @@ write(std::ostream& _out, BaseExporter& _be, Options _opt, std::streamsize _prec
|
|||||||
}
|
}
|
||||||
|
|
||||||
material_.clear();
|
material_.clear();
|
||||||
|
material_idx_.clear();
|
||||||
materialA_.clear();
|
materialA_.clear();
|
||||||
|
materialA_idx_.clear();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,9 @@ private:
|
|||||||
mutable std::string objName_;
|
mutable std::string objName_;
|
||||||
|
|
||||||
mutable std::vector< OpenMesh::Vec3f > material_;
|
mutable std::vector< OpenMesh::Vec3f > material_;
|
||||||
|
mutable std::map< OpenMesh::Vec3f, size_t> material_idx_;
|
||||||
mutable std::vector< OpenMesh::Vec4f > materialA_;
|
mutable std::vector< OpenMesh::Vec4f > materialA_;
|
||||||
|
mutable std::map< OpenMesh::Vec4f, size_t> materialA_idx_;
|
||||||
|
|
||||||
size_t getMaterial(OpenMesh::Vec3f _color) const;
|
size_t getMaterial(OpenMesh::Vec3f _color) const;
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ private:
|
|||||||
writeValue(_type, _out, _value);
|
writeValue(_type, _out, _value);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void writeProxy(ValueType _type, std::ostream& _out, T _value, OpenMesh::GenProg::FalseType /*_binary*/) const
|
void writeProxy(ValueType /*_type*/, std::ostream& _out, T _value, OpenMesh::GenProg::FalseType /*_binary*/) const
|
||||||
{
|
{
|
||||||
_out << " " << _value;
|
_out << " " << _value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -456,13 +456,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// calculated and returns the average of the two vertex normals
|
/// calculated and returns the average of the two vertex normals
|
||||||
Normal calc_normal(EdgeHandle _eh) const
|
Normal calc_normal(EdgeHandle _eh) const;
|
||||||
{
|
|
||||||
HalfedgeHandle _heh = this->halfedge_handle(_eh, 0);
|
|
||||||
VertexHandle vh0 = this->from_vertex_handle(_heh);
|
|
||||||
VertexHandle vh1 = this->to_vertex_handle(_heh);
|
|
||||||
return 0.5 * (this->calc_normal(vh0) + this->calc_normal(vh1));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** defines a consistent representation of a sector geometry:
|
/** defines a consistent representation of a sector geometry:
|
||||||
the halfedge _in_heh defines the sector orientation
|
the halfedge _in_heh defines the sector orientation
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ calc_halfedge_normal(HalfedgeHandle _heh, const double _feature_angle) const
|
|||||||
|
|
||||||
Normal n(0,0,0);
|
Normal n(0,0,0);
|
||||||
for (unsigned int i = 0; i < fhs.size(); ++i)
|
for (unsigned int i = 0; i < fhs.size(); ++i)
|
||||||
n += Kernel::normal(fhs[i]);
|
n += Kernel::has_face_normals() ? Kernel::normal(fhs[i]) : calc_face_normal(fhs[i]);
|
||||||
|
|
||||||
return normalize(n);
|
return normalize(n);
|
||||||
}
|
}
|
||||||
@@ -424,6 +424,28 @@ calc_normal(HalfedgeHandle _heh, const double _feature_angle) const
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
template <class Kernel>
|
||||||
|
typename PolyMeshT<Kernel>::Normal
|
||||||
|
PolyMeshT<Kernel>::
|
||||||
|
calc_normal(EdgeHandle _eh) const
|
||||||
|
{
|
||||||
|
Normal n(0);
|
||||||
|
for (int i = 0; i < 2; ++i)
|
||||||
|
{
|
||||||
|
const auto heh = this->halfedge_handle(_eh, i);
|
||||||
|
const auto fh = this->face_handle(heh);
|
||||||
|
if (fh.is_valid())
|
||||||
|
n += calc_normal(fh);
|
||||||
|
}
|
||||||
|
const auto length = norm(n);
|
||||||
|
if (length != 0)
|
||||||
|
n /= length;
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
template <class Kernel>
|
template <class Kernel>
|
||||||
bool
|
bool
|
||||||
PolyMeshT<Kernel>::
|
PolyMeshT<Kernel>::
|
||||||
@@ -444,8 +466,8 @@ is_estimated_feature_edge(HalfedgeHandle _heh, const double _feature_angle) cons
|
|||||||
FaceHandle fh0 = Kernel::face_handle(_heh);
|
FaceHandle fh0 = Kernel::face_handle(_heh);
|
||||||
FaceHandle fh1 = Kernel::face_handle(Kernel::opposite_halfedge_handle(_heh));
|
FaceHandle fh1 = Kernel::face_handle(Kernel::opposite_halfedge_handle(_heh));
|
||||||
|
|
||||||
Normal fn0 = Kernel::normal(fh0);
|
Normal fn0 = Kernel::has_face_normals() ? Kernel::normal(fh0) : calc_face_normal(fh0);
|
||||||
Normal fn1 = Kernel::normal(fh1);
|
Normal fn1 = Kernel::has_face_normals() ? Kernel::normal(fh1) : calc_face_normal(fh1);
|
||||||
|
|
||||||
// dihedral angle above angle threshold
|
// dihedral angle above angle threshold
|
||||||
return ( dot(fn0,fn1) < cos(_feature_angle) );
|
return ( dot(fn0,fn1) < cos(_feature_angle) );
|
||||||
|
|||||||
@@ -1,29 +1,98 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
set ( headers
|
||||||
../..
|
Decimater/BaseDecimaterT.hh
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
Decimater/BaseDecimaterT_impl.hh
|
||||||
|
Decimater/CollapseInfoT.hh
|
||||||
|
Decimater/DecimaterT.hh
|
||||||
|
Decimater/DecimaterT_impl.hh
|
||||||
|
Decimater/McDecimaterT.hh
|
||||||
|
Decimater/McDecimaterT_impl.hh
|
||||||
|
Decimater/MixedDecimaterT.hh
|
||||||
|
Decimater/MixedDecimaterT_impl.hh
|
||||||
|
Decimater/ModAspectRatioT.hh
|
||||||
|
Decimater/ModAspectRatioT_impl.hh
|
||||||
|
Decimater/ModBaseT.hh
|
||||||
|
Decimater/ModEdgeLengthT.hh
|
||||||
|
Decimater/ModEdgeLengthT_impl.hh
|
||||||
|
Decimater/ModHausdorffT.hh
|
||||||
|
Decimater/ModHausdorffT_impl.hh
|
||||||
|
Decimater/ModIndependentSetsT.hh
|
||||||
|
Decimater/ModNormalDeviationT.hh
|
||||||
|
Decimater/ModNormalFlippingT.hh
|
||||||
|
Decimater/ModProgMeshT.hh
|
||||||
|
Decimater/ModProgMeshT_impl.hh
|
||||||
|
Decimater/ModQuadricT.hh
|
||||||
|
Decimater/ModQuadricT_impl.hh
|
||||||
|
Decimater/ModRoundnessT.hh
|
||||||
|
Decimater/Observer.hh
|
||||||
|
Dualizer/meshDualT.hh
|
||||||
|
Smoother/JacobiLaplaceSmootherT.hh
|
||||||
|
Smoother/JacobiLaplaceSmootherT_impl.hh
|
||||||
|
Smoother/LaplaceSmootherT.hh
|
||||||
|
Smoother/LaplaceSmootherT_impl.hh
|
||||||
|
Smoother/SmootherT.hh
|
||||||
|
Smoother/SmootherT_impl.hh
|
||||||
|
Smoother/smooth_mesh.hh
|
||||||
|
Subdivider/Adaptive/Composite/CompositeT.hh
|
||||||
|
Subdivider/Adaptive/Composite/CompositeT_impl.hh
|
||||||
|
Subdivider/Adaptive/Composite/CompositeTraits.hh
|
||||||
|
Subdivider/Adaptive/Composite/RuleInterfaceT.hh
|
||||||
|
Subdivider/Adaptive/Composite/RulesT.hh
|
||||||
|
Subdivider/Adaptive/Composite/RulesT_impl.hh
|
||||||
|
Subdivider/Adaptive/Composite/Traits.hh
|
||||||
|
Subdivider/Uniform/Composite/CompositeT.hh
|
||||||
|
Subdivider/Uniform/Composite/CompositeT_impl.hh
|
||||||
|
Subdivider/Uniform/Composite/CompositeTraits.hh
|
||||||
|
Subdivider/Uniform/CatmullClarkT.hh
|
||||||
|
Subdivider/Uniform/CatmullClarkT_impl.hh
|
||||||
|
Subdivider/Uniform/CompositeLoopT.hh
|
||||||
|
Subdivider/Uniform/CompositeSqrt3T.hh
|
||||||
|
Subdivider/Uniform/LongestEdgeT.hh
|
||||||
|
Subdivider/Uniform/LoopT.hh
|
||||||
|
Subdivider/Uniform/MidpointT.hh
|
||||||
|
Subdivider/Uniform/ModifiedButterFlyT.hh
|
||||||
|
Subdivider/Uniform/Sqrt3InterpolatingSubdividerLabsikGreinerT.hh
|
||||||
|
Subdivider/Uniform/Sqrt3T.hh
|
||||||
|
Subdivider/Uniform/SubdividerT.hh
|
||||||
|
Utils/Config.hh
|
||||||
|
Utils/GLConstAsString.hh
|
||||||
|
Utils/Gnuplot.hh
|
||||||
|
Utils/HeapT.hh
|
||||||
|
Utils/MeshCheckerT.hh
|
||||||
|
Utils/MeshCheckerT_impl.hh
|
||||||
|
Utils/NumLimitsT.hh
|
||||||
|
Utils/StripifierT.hh
|
||||||
|
Utils/StripifierT_impl.hh
|
||||||
|
Utils/TestingFramework.hh
|
||||||
|
Utils/Timer.hh
|
||||||
|
Utils/conio.hh
|
||||||
|
VDPM/MeshTraits.hh
|
||||||
|
VDPM/StreamingDef.hh
|
||||||
|
VDPM/VFront.hh
|
||||||
|
VDPM/VHierarchy.hh
|
||||||
|
VDPM/VHierarchyNode.hh
|
||||||
|
VDPM/VHierarchyNodeIndex.hh
|
||||||
|
VDPM/VHierarchyWindow.hh
|
||||||
|
VDPM/ViewingParameters.hh
|
||||||
)
|
)
|
||||||
|
|
||||||
# source code directories
|
|
||||||
set (directories
|
set ( sources
|
||||||
.
|
Decimater/Observer.cc
|
||||||
Decimater
|
Utils/Gnuplot.cc
|
||||||
Dualizer
|
Utils/Timer.cc
|
||||||
Smoother
|
Utils/conio.cc
|
||||||
Subdivider/Adaptive/Composite
|
VDPM/VFront.cc
|
||||||
Subdivider/Uniform/Composite
|
VDPM/VHierarchy.cc
|
||||||
Subdivider/Uniform
|
VDPM/VHierarchyNodeIndex.cc
|
||||||
Utils
|
VDPM/VHierarchyWindow.cc
|
||||||
VDPM
|
VDPM/ViewingParameters.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
# collect all header and source files
|
|
||||||
vci_append_files (headers "*.hh" ${directories})
|
|
||||||
vci_append_files (sources "*.cc" ${directories})
|
|
||||||
|
|
||||||
IF(WIN32 AND NOT MINGW)
|
IF(WIN32 AND NOT MINGW)
|
||||||
vci_append_files (sources "*.c" ${directories})
|
list(APPEND sources "Utils/getopt.c")
|
||||||
ENDIF(WIN32 AND NOT MINGW)
|
ENDIF(WIN32 AND NOT MINGW)
|
||||||
|
|
||||||
# Disable Library installation when not building OpenMesh on its own but as part of another project!
|
# Disable Library installation when not building OpenMesh on its own but as part of another project!
|
||||||
@@ -42,8 +111,21 @@ if (WIN32)
|
|||||||
vci_add_library (OpenMeshTools STATIC ${sources} ${headers})
|
vci_add_library (OpenMeshTools STATIC ${sources} ${headers})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_include_directories(OpenMeshTools PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
else ()
|
else ()
|
||||||
vci_add_library (OpenMeshTools SHAREDANDSTATIC ${sources} ${headers})
|
vci_add_library (OpenMeshTools SHAREDANDSTATIC ${sources} ${headers})
|
||||||
|
|
||||||
|
target_include_directories(OpenMeshTools PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
|
target_include_directories(OpenMeshToolsStatic PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
||||||
|
$<INSTALL_INTERFACE:include>)
|
||||||
|
|
||||||
set_target_properties (OpenMeshTools PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
set_target_properties (OpenMeshTools PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
||||||
SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} )
|
SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} )
|
||||||
endif ()
|
endif ()
|
||||||
@@ -104,7 +186,6 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT APPLE AND NOT ${OPENMESH_NO_INSTALL_HEADERS})
|
if (NOT APPLE AND NOT ${OPENMESH_NO_INSTALL_HEADERS})
|
||||||
|
|
||||||
# Install Header Files
|
# Install Header Files
|
||||||
install(DIRECTORY .
|
install(DIRECTORY .
|
||||||
DESTINATION include/OpenMesh/Tools
|
DESTINATION include/OpenMesh/Tools
|
||||||
@@ -118,13 +199,8 @@ install(DIRECTORY .
|
|||||||
|
|
||||||
#install the config file
|
#install the config file
|
||||||
install(FILES Utils/getopt.h DESTINATION include/OpenMesh/Tools/Utils)
|
install(FILES Utils/getopt.h DESTINATION include/OpenMesh/Tools/Utils)
|
||||||
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
target_include_directories(OpenMeshTools PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
|
|
||||||
$<INSTALL_INTERFACE:include>)
|
|
||||||
|
|
||||||
install(TARGETS OpenMeshTools EXPORT OpenMeshConfig
|
install(TARGETS OpenMeshTools EXPORT OpenMeshConfig
|
||||||
ARCHIVE DESTINATION ${VCI_PROJECT_LIBDIR}
|
ARCHIVE DESTINATION ${VCI_PROJECT_LIBDIR}
|
||||||
LIBRARY DESTINATION ${VCI_PROJECT_LIBDIR}
|
LIBRARY DESTINATION ${VCI_PROJECT_LIBDIR}
|
||||||
|
|||||||
@@ -68,16 +68,16 @@ typename ModAspectRatioT<MeshT>::Scalar ModAspectRatioT<MeshT>::aspectRatio(
|
|||||||
Point d1 = _v1 - _v2;
|
Point d1 = _v1 - _v2;
|
||||||
|
|
||||||
// finds the max squared edge length
|
// finds the max squared edge length
|
||||||
Scalar l2, maxl2 = d0.sqrnorm();
|
Scalar l2, maxl2 = sqrnorm(d0);
|
||||||
if ((l2 = d1.sqrnorm()) > maxl2)
|
if ((l2 = sqrnorm(d1)) > maxl2)
|
||||||
maxl2 = l2;
|
maxl2 = l2;
|
||||||
// keep searching for the max squared edge length
|
// keep searching for the max squared edge length
|
||||||
d1 = _v2 - _v0;
|
d1 = _v2 - _v0;
|
||||||
if ((l2 = d1.sqrnorm()) > maxl2)
|
if ((l2 = sqrnorm(d1)) > maxl2)
|
||||||
maxl2 = l2;
|
maxl2 = l2;
|
||||||
|
|
||||||
// squared area of the parallelogram spanned by d0 and d1
|
// squared area of the parallelogram spanned by d0 and d1
|
||||||
Scalar a2 = (d0 % d1).sqrnorm();
|
Scalar a2 = sqrnorm(d0 % d1);
|
||||||
|
|
||||||
// the area of the triangle would be
|
// the area of the triangle would be
|
||||||
// sqrt(a2)/2 or length * height / 2
|
// sqrt(a2)/2 or length * height / 2
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ ModEdgeLengthT<MeshT>::ModEdgeLengthT(MeshT &_mesh, float _edge_length,
|
|||||||
|
|
||||||
template<class MeshT>
|
template<class MeshT>
|
||||||
float ModEdgeLengthT<MeshT>::collapse_priority(const CollapseInfo& _ci) {
|
float ModEdgeLengthT<MeshT>::collapse_priority(const CollapseInfo& _ci) {
|
||||||
typename Mesh::Scalar sqr_length = (_ci.p0 - _ci.p1).sqrnorm();
|
typename Mesh::Scalar sqr_length = sqrnorm(_ci.p0 - _ci.p1);
|
||||||
|
|
||||||
return ( (sqr_length <= sqr_edge_length_) ? sqr_length : float(Base::ILLEGAL_COLLAPSE));
|
return ( (sqr_length <= sqr_edge_length_) ? sqr_length : float(Base::ILLEGAL_COLLAPSE));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ distPointTriangleSquared( const Point& _p,
|
|||||||
const Point v0v1 = _v1 - _v0;
|
const Point v0v1 = _v1 - _v0;
|
||||||
const Point v0v2 = _v2 - _v0;
|
const Point v0v2 = _v2 - _v0;
|
||||||
const Point n = v0v1 % v0v2; // not normalized !
|
const Point n = v0v1 % v0v2; // not normalized !
|
||||||
const Scalar d = n.sqrnorm();
|
const Scalar d = sqrnorm(n);
|
||||||
|
|
||||||
|
|
||||||
// Check if the triangle is degenerated
|
// Check if the triangle is degenerated
|
||||||
@@ -88,9 +88,9 @@ distPointTriangleSquared( const Point& _p,
|
|||||||
// these are not needed for every point, should still perform
|
// these are not needed for every point, should still perform
|
||||||
// better with many points against one triangle
|
// better with many points against one triangle
|
||||||
const Point v1v2 = _v2 - _v1;
|
const Point v1v2 = _v2 - _v1;
|
||||||
const Scalar inv_v0v2_2 = static_cast<Scalar>(1.0) / v0v2.sqrnorm();
|
const Scalar inv_v0v2_2 = static_cast<Scalar>(1.0) / sqrnorm(v0v2);
|
||||||
const Scalar inv_v0v1_2 = static_cast<Scalar>(1.0) / v0v1.sqrnorm();
|
const Scalar inv_v0v1_2 = static_cast<Scalar>(1.0) / sqrnorm(v0v1);
|
||||||
const Scalar inv_v1v2_2 = static_cast<Scalar>(1.0) / v1v2.sqrnorm();
|
const Scalar inv_v1v2_2 = static_cast<Scalar>(1.0) / sqrnorm(v1v2);
|
||||||
|
|
||||||
|
|
||||||
Point v0p = _p - _v0;
|
Point v0p = _p - _v0;
|
||||||
@@ -177,10 +177,10 @@ distPointTriangleSquared( const Point& _p,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Calculate the distance to an interior point of the triangle
|
// Calculate the distance to an interior point of the triangle
|
||||||
return ( (_p - n*((n|v0p) * invD)) - _p).sqrnorm();
|
return sqrnorm( (_p - n*((n|v0p) * invD)) - _p);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (v0p - _p).sqrnorm();
|
return sqrnorm(v0p - _p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -287,10 +287,10 @@ public: // specific methods
|
|||||||
Vec3f vecAB = B-A;
|
Vec3f vecAB = B-A;
|
||||||
|
|
||||||
// compute squared values to avoid sqrt-computations
|
// compute squared values to avoid sqrt-computations
|
||||||
value_type aa = (B-C).sqrnorm();
|
value_type aa = sqrnorm(B-C);
|
||||||
value_type bb = vecAC.sqrnorm();
|
value_type bb = sqrnorm(vecAC);
|
||||||
value_type cc = vecAB.sqrnorm();
|
value_type cc = sqrnorm(vecAB);
|
||||||
value_type AA = cross(vecAC,vecAB).sqrnorm(); // without factor 1/4 **)
|
value_type AA = sqrnorm(cross(vecAC,vecAB)); // without factor 1/4 **)
|
||||||
|
|
||||||
if ( AA < epsilon )
|
if ( AA < epsilon )
|
||||||
return 0.0;
|
return 0.0;
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ protected:
|
|||||||
const typename MeshType::Point to = _m.point(_m.to_vertex_handle(_m.halfedge_handle(*eit,0)));
|
const typename MeshType::Point to = _m.point(_m.to_vertex_handle(_m.halfedge_handle(*eit,0)));
|
||||||
const typename MeshType::Point from = _m.point(_m.from_vertex_handle(_m.halfedge_handle(*eit,0)));
|
const typename MeshType::Point from = _m.point(_m.from_vertex_handle(_m.halfedge_handle(*eit,0)));
|
||||||
|
|
||||||
real_t length = (to - from).sqrnorm();
|
real_t length = sqrnorm(to - from);
|
||||||
|
|
||||||
// Only push the edges that need to be split
|
// Only push the edges that need to be split
|
||||||
if ( length > max_edge_length_squared_ )
|
if ( length > max_edge_length_squared_ )
|
||||||
@@ -187,7 +187,7 @@ protected:
|
|||||||
typename MeshType::EdgeHandle eh = _m.edge_handle(*voh_it);
|
typename MeshType::EdgeHandle eh = _m.edge_handle(*voh_it);
|
||||||
const typename MeshType::Point to = _m.point(_m.to_vertex_handle(*voh_it));
|
const typename MeshType::Point to = _m.point(_m.to_vertex_handle(*voh_it));
|
||||||
const typename MeshType::Point from = _m.point(_m.from_vertex_handle(*voh_it));
|
const typename MeshType::Point from = _m.point(_m.from_vertex_handle(*voh_it));
|
||||||
real_t length = (to - from).sqrnorm();
|
real_t length = sqrnorm(to - from);
|
||||||
|
|
||||||
// Only push the edges that need to be split
|
// Only push the edges that need to be split
|
||||||
if ( length > max_edge_length_squared_ )
|
if ( length > max_edge_length_squared_ )
|
||||||
|
|||||||
@@ -1,10 +1,68 @@
|
|||||||
include (VCICommon)
|
include (VCICommon)
|
||||||
|
|
||||||
include_directories (
|
set( UNITTEST_SRC
|
||||||
..
|
unittests.cc
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
unittests_add_face.cc
|
||||||
|
unittests_boundary.cc
|
||||||
|
unittests_centroid_calculations.cc
|
||||||
|
unittests_convert_meshes.cc
|
||||||
|
unittests_cpp_11_features.cc
|
||||||
|
unittests_decimater.cc
|
||||||
|
unittests_delete_face.cc
|
||||||
|
unittests_eigen3_type.cc
|
||||||
|
unittests_faceless_mesh.cc
|
||||||
|
unittests_mc_decimater.cc
|
||||||
|
unittests_mesh_cast.cc
|
||||||
|
unittests_mesh_dual.cc
|
||||||
|
unittests_mesh_type.cc
|
||||||
|
unittests_mixed_decimater.cc
|
||||||
|
unittests_normal_calculations.cc
|
||||||
|
unittests_polymesh_collapse.cc
|
||||||
|
unittests_polymesh_vec2i.cc
|
||||||
|
unittests_property.cc
|
||||||
|
unittests_propertymanager.cc
|
||||||
|
unittests_randomNumberGenerator.cc
|
||||||
|
unittests_read_write_OBJ.cc
|
||||||
|
unittests_read_write_OFF.cc
|
||||||
|
unittests_read_write_OM.cc
|
||||||
|
unittests_read_write_PLY.cc
|
||||||
|
unittests_read_write_STL.cc
|
||||||
|
unittests_set_positions_directly.cc
|
||||||
|
unittests_smart_handles.cc
|
||||||
|
unittests_smart_ranges.cc
|
||||||
|
unittests_smarttagger.cc
|
||||||
|
unittests_smoother.cc
|
||||||
|
unittests_split_copy.cc
|
||||||
|
unittests_split_edge_copy.cc
|
||||||
|
unittests_sr_binary.cc
|
||||||
|
unittests_stripifier.cc
|
||||||
|
unittests_subdivider_adaptive.cc
|
||||||
|
unittests_subdivider_uniform.cc
|
||||||
|
unittests_trimesh_circulator_current_halfedge_handle_replacement.cc
|
||||||
|
unittests_trimesh_circulator_face_edge.cc
|
||||||
|
unittests_trimesh_circulator_face_face.cc
|
||||||
|
unittests_trimesh_circulator_face_halfedge.cc
|
||||||
|
unittests_trimesh_circulator_face_vertex.cc
|
||||||
|
unittests_trimesh_circulator_halfedge_loop.cc
|
||||||
|
unittests_trimesh_circulator_vertex_edge.cc
|
||||||
|
unittests_trimesh_circulator_vertex_face.cc
|
||||||
|
unittests_trimesh_circulator_vertex_ihalfedge.cc
|
||||||
|
unittests_trimesh_circulator_vertex_ohalfedge.cc
|
||||||
|
unittests_trimesh_circulator_vertex_vertex.cc
|
||||||
|
unittests_trimesh_collapse.cc
|
||||||
|
unittests_trimesh_garbage_collection.cc
|
||||||
|
unittests_trimesh_iterators.cc
|
||||||
|
unittests_trimesh_others.cc
|
||||||
|
unittests_trimesh_ranges.cc
|
||||||
|
unittests_trimesh_split.cc
|
||||||
|
unittests_trimesh_vec2i.cc
|
||||||
|
unittests_tutorials.cc
|
||||||
|
unittests_vdpm.cc
|
||||||
|
unittests_vector_type.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ( NOT DEFINED OPENMESH_BUILD_UNIT_TESTS)
|
if ( NOT DEFINED OPENMESH_BUILD_UNIT_TESTS)
|
||||||
set( OPENMESH_BUILD_UNIT_TESTS false CACHE BOOL "Enable or disable unit test builds in OpenMesh." )
|
set( OPENMESH_BUILD_UNIT_TESTS false CACHE BOOL "Enable or disable unit test builds in OpenMesh." )
|
||||||
endif()
|
endif()
|
||||||
@@ -35,7 +93,6 @@ if ( OPENMESH_BUILD_UNIT_TESTS )
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Create new target named unittests_hexmeshing
|
# Create new target named unittests_hexmeshing
|
||||||
FILE(GLOB UNITTEST_SRC *.cc)
|
|
||||||
# Create unittest executable
|
# Create unittest executable
|
||||||
vci_add_executable(unittests ${UNITTEST_SRC})
|
vci_add_executable(unittests ${UNITTEST_SRC})
|
||||||
vci_add_executable(unittests_customvec ${UNITTEST_SRC})
|
vci_add_executable(unittests_customvec ${UNITTEST_SRC})
|
||||||
|
|||||||
@@ -9,10 +9,13 @@
|
|||||||
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
|
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
|
||||||
#include <OpenMesh/Tools/Decimater/DecimaterT.hh>
|
#include <OpenMesh/Tools/Decimater/DecimaterT.hh>
|
||||||
#include <OpenMesh/Tools/Decimater/ModQuadricT.hh>
|
#include <OpenMesh/Tools/Decimater/ModQuadricT.hh>
|
||||||
|
#include <OpenMesh/Tools/Decimater/ModEdgeLengthT.hh>
|
||||||
#include <OpenMesh/Tools/Decimater/ModNormalDeviationT.hh>
|
#include <OpenMesh/Tools/Decimater/ModNormalDeviationT.hh>
|
||||||
|
|
||||||
#include <OpenMesh/Core/Geometry/EigenVectorT.hh>
|
#include <OpenMesh/Core/Geometry/EigenVectorT.hh>
|
||||||
|
|
||||||
|
#include <OpenMesh/Tools/Subdivider/Uniform/Sqrt3T.hh>
|
||||||
|
|
||||||
struct EigenTraits : OpenMesh::DefaultTraits {
|
struct EigenTraits : OpenMesh::DefaultTraits {
|
||||||
using Point = Eigen::Vector3d;
|
using Point = Eigen::Vector3d;
|
||||||
using Normal = Eigen::Vector3d;
|
using Normal = Eigen::Vector3d;
|
||||||
@@ -266,6 +269,141 @@ TEST_F(OpenMeshEigenTest, Decimater) {
|
|||||||
EXPECT_EQ(1052u, mesh_.n_faces()) << "The number of faces after decimation is not correct!";
|
EXPECT_EQ(1052u, mesh_.n_faces()) << "The number of faces after decimation is not correct!";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test decimation with Eigen as vector type
|
||||||
|
TEST_F(OpenMeshEigenTest, DecimaterWithEdgeLength) {
|
||||||
|
mesh_.clear();
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::read_mesh(mesh_, "cube1.off");
|
||||||
|
|
||||||
|
EXPECT_TRUE(ok);
|
||||||
|
|
||||||
|
EXPECT_EQ(7526u , mesh_.n_vertices()) << "The number of loaded vertices is not correct!";
|
||||||
|
EXPECT_EQ(22572u, mesh_.n_edges()) << "The number of loaded edges is not correct!";
|
||||||
|
EXPECT_EQ(15048u, mesh_.n_faces()) << "The number of loaded faces is not correct!";
|
||||||
|
|
||||||
|
mesh_.update_normals();
|
||||||
|
|
||||||
|
OpenMesh::Decimater::DecimaterT<EigenTriMesh> decimater(mesh_);
|
||||||
|
OpenMesh::Decimater::ModEdgeLengthT<EigenTriMesh>::Handle hModEdgeLength; // use a the edge length module
|
||||||
|
OpenMesh::Decimater::ModNormalDeviationT<EigenTriMesh>::Handle hModNormalDeviation; // also use normal deviation module as binary check
|
||||||
|
decimater.add(hModEdgeLength);
|
||||||
|
decimater.module(hModEdgeLength).set_edge_length(30.0);
|
||||||
|
decimater.add(hModNormalDeviation);
|
||||||
|
|
||||||
|
decimater.module(hModNormalDeviation).set_normal_deviation(50);
|
||||||
|
decimater.initialize();
|
||||||
|
size_t removedVertices = decimater.decimate_to(2);
|
||||||
|
mesh_.garbage_collection();
|
||||||
|
|
||||||
|
EXPECT_EQ(0u, removedVertices) << "The number of remove vertices is not correct!";
|
||||||
|
EXPECT_EQ( 7526u, mesh_.n_vertices()) << "The number of vertices after decimation is not correct!";
|
||||||
|
EXPECT_EQ(22572u, mesh_.n_edges()) << "The number of edges after decimation is not correct!";
|
||||||
|
EXPECT_EQ(15048u, mesh_.n_faces()) << "The number of faces after decimation is not correct!";
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(OpenMeshEigenTest, Subdivider_Sqrt3) {
|
||||||
|
mesh_.clear();
|
||||||
|
|
||||||
|
// Add some vertices
|
||||||
|
Mesh::VertexHandle vhandle[9];
|
||||||
|
|
||||||
|
vhandle[0] = mesh_.add_vertex(EigenTriMesh::Point(0, 0, 0));
|
||||||
|
vhandle[1] = mesh_.add_vertex(EigenTriMesh::Point(0, 1, 0));
|
||||||
|
vhandle[2] = mesh_.add_vertex(EigenTriMesh::Point(0, 2, 0));
|
||||||
|
vhandle[3] = mesh_.add_vertex(EigenTriMesh::Point(1, 0, 0));
|
||||||
|
vhandle[4] = mesh_.add_vertex(EigenTriMesh::Point(1, 1, 0));
|
||||||
|
vhandle[5] = mesh_.add_vertex(EigenTriMesh::Point(1, 2, 0));
|
||||||
|
vhandle[6] = mesh_.add_vertex(EigenTriMesh::Point(2, 0, 0));
|
||||||
|
vhandle[7] = mesh_.add_vertex(EigenTriMesh::Point(2, 1, 0));
|
||||||
|
vhandle[8] = mesh_.add_vertex(EigenTriMesh::Point(2, 2, 0));
|
||||||
|
|
||||||
|
// Add eight faces
|
||||||
|
std::vector<Mesh::VertexHandle> face_vhandles;
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[0]);
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
face_vhandles.push_back(vhandle[3]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[0]);
|
||||||
|
face_vhandles.push_back(vhandle[1]);
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[1]);
|
||||||
|
face_vhandles.push_back(vhandle[2]);
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[2]);
|
||||||
|
face_vhandles.push_back(vhandle[5]);
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[3]);
|
||||||
|
face_vhandles.push_back(vhandle[7]);
|
||||||
|
face_vhandles.push_back(vhandle[6]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[3]);
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
face_vhandles.push_back(vhandle[7]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
face_vhandles.push_back(vhandle[8]);
|
||||||
|
face_vhandles.push_back(vhandle[7]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
face_vhandles.clear();
|
||||||
|
|
||||||
|
face_vhandles.push_back(vhandle[4]);
|
||||||
|
face_vhandles.push_back(vhandle[5]);
|
||||||
|
face_vhandles.push_back(vhandle[8]);
|
||||||
|
|
||||||
|
mesh_.add_face(face_vhandles);
|
||||||
|
|
||||||
|
// Test setup:
|
||||||
|
// 6 === 7 === 8
|
||||||
|
// | / | / |
|
||||||
|
// | / | / |
|
||||||
|
// | / | / |
|
||||||
|
// 3 === 4 === 5
|
||||||
|
// | / | \ |
|
||||||
|
// | / | \ |
|
||||||
|
// | / | \ |
|
||||||
|
// 0 === 1 === 2
|
||||||
|
|
||||||
|
// Initialize subdivider
|
||||||
|
OpenMesh::Subdivider::Uniform::Sqrt3T<EigenTriMesh> sqrt3;
|
||||||
|
|
||||||
|
// Check setup
|
||||||
|
EXPECT_EQ(9u, mesh_.n_vertices() ) << "Wrong number of vertices";
|
||||||
|
EXPECT_EQ(8u, mesh_.n_faces() ) << "Wrong number of faces";
|
||||||
|
|
||||||
|
// Execute 3 subdivision steps
|
||||||
|
sqrt3.attach(mesh_);
|
||||||
|
sqrt3( 3 );
|
||||||
|
sqrt3.detach();
|
||||||
|
|
||||||
|
// Check setup
|
||||||
|
EXPECT_EQ(121u, mesh_.n_vertices() ) << "Wrong number of vertices after subdivision with sqrt3";
|
||||||
|
EXPECT_EQ(216u, mesh_.n_faces() ) << "Wrong number of faces after subdivision with sqrt3";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -365,7 +365,9 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleVertexBoolProperty) {
|
|||||||
mesh.property(prop,v3) = true;
|
mesh.property(prop,v3) = true;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
// load
|
// load
|
||||||
@@ -375,7 +377,7 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleVertexBoolProperty) {
|
|||||||
cmpMesh.add_property(prop,"VBProp");
|
cmpMesh.add_property(prop,"VBProp");
|
||||||
cmpMesh.property(prop).set_persistent(true);
|
cmpMesh.property(prop).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -436,7 +438,9 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleVertexBoolPropertySpaceEquivalent) {
|
|||||||
mesh.property(prop,v9) = true;
|
mesh.property(prop,v9) = true;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
// load
|
// load
|
||||||
@@ -445,7 +449,7 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleVertexBoolPropertySpaceEquivalent) {
|
|||||||
cmpMesh.add_property(prop,"VBProp");
|
cmpMesh.add_property(prop,"VBProp");
|
||||||
cmpMesh.property(prop).set_persistent(true);
|
cmpMesh.property(prop).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -500,7 +504,9 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleTwoVertexBoolProperty) {
|
|||||||
mesh.property(prop2,v3) = false;
|
mesh.property(prop2,v3) = false;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
|
|
||||||
@@ -512,7 +518,7 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleTwoVertexBoolProperty) {
|
|||||||
cmpMesh.add_property(prop2,"VBProp2");
|
cmpMesh.add_property(prop2,"VBProp2");
|
||||||
cmpMesh.property(prop2).set_persistent(true);
|
cmpMesh.property(prop2).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -570,7 +576,9 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleEdgeIntProperty) {
|
|||||||
mesh.property(prop,e3) = value3;
|
mesh.property(prop,e3) = value3;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
// load
|
// load
|
||||||
@@ -579,7 +587,7 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleEdgeIntProperty) {
|
|||||||
cmpMesh.add_property(prop,propName);
|
cmpMesh.add_property(prop,propName);
|
||||||
cmpMesh.property(prop).set_persistent(true);
|
cmpMesh.property(prop).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -646,8 +654,9 @@ TEST_F(OpenMeshReadWriteOM, WriteSplitTriangleEdgeIntProperty) {
|
|||||||
mesh.property(prop,e6) = value6;
|
mesh.property(prop,e6) = value6;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
OpenMesh::IO::Options options;
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
// load
|
// load
|
||||||
@@ -656,7 +665,7 @@ TEST_F(OpenMeshReadWriteOM, WriteSplitTriangleEdgeIntProperty) {
|
|||||||
cmpMesh.add_property(prop,propName);
|
cmpMesh.add_property(prop,propName);
|
||||||
cmpMesh.property(prop).set_persistent(true);
|
cmpMesh.property(prop).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -929,7 +938,9 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleFaceDoubleProperty) {
|
|||||||
mesh.property(prop,f1) = va1ue1;
|
mesh.property(prop,f1) = va1ue1;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
// load
|
// load
|
||||||
@@ -938,7 +949,7 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleFaceDoubleProperty) {
|
|||||||
cmpMesh.add_property(prop,propName);
|
cmpMesh.add_property(prop,propName);
|
||||||
cmpMesh.property(prop).set_persistent(true);
|
cmpMesh.property(prop).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -983,7 +994,9 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleFaceFloatProperty) {
|
|||||||
mesh.property(prop,f1) = va1ue1;
|
mesh.property(prop,f1) = va1ue1;
|
||||||
|
|
||||||
// save
|
// save
|
||||||
bool ok = OpenMesh::IO::write_mesh(mesh,filename);
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
EXPECT_TRUE(ok) << "Unable to write "<<filename;
|
||||||
|
|
||||||
|
|
||||||
@@ -992,7 +1005,7 @@ TEST_F(OpenMeshReadWriteOM, WriteTriangleFaceFloatProperty) {
|
|||||||
cmpMesh.add_property(prop,propName);
|
cmpMesh.add_property(prop,propName);
|
||||||
cmpMesh.property(prop).set_persistent(true);
|
cmpMesh.property(prop).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(cmpMesh,filename);
|
ok = OpenMesh::IO::read_mesh(cmpMesh, filename, opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
EXPECT_TRUE(ok) << "Unable to read "<<filename;
|
||||||
|
|
||||||
// compare
|
// compare
|
||||||
@@ -1050,7 +1063,8 @@ TEST_F(OpenMeshReadWriteOM, ReadBigMeshWithCustomProperty) {
|
|||||||
mesh.add_property(vertexProp, "IVProp");
|
mesh.add_property(vertexProp, "IVProp");
|
||||||
mesh.property(vertexProp).set_persistent(true);
|
mesh.property(vertexProp).set_persistent(true);
|
||||||
|
|
||||||
ok = OpenMesh::IO::read_mesh(mesh,"cube1_customProps.om");
|
OpenMesh::IO::Options opts = OpenMesh::IO::Options::Custom;
|
||||||
|
ok = OpenMesh::IO::read_mesh(mesh,"cube1_customProps.om", opts);
|
||||||
EXPECT_TRUE(ok) << "Unable to read cube1_customProps.om";
|
EXPECT_TRUE(ok) << "Unable to read cube1_customProps.om";
|
||||||
|
|
||||||
///=============== result ======================
|
///=============== result ======================
|
||||||
@@ -1066,7 +1080,7 @@ TEST_F(OpenMeshReadWriteOM, ReadBigMeshWithCustomProperty) {
|
|||||||
wrong = false;
|
wrong = false;
|
||||||
for (Mesh::VertexIter vIter = mesh.vertices_begin(); vIter != mesh.vertices_end() && !wrong; ++vIter)
|
for (Mesh::VertexIter vIter = mesh.vertices_begin(); vIter != mesh.vertices_end() && !wrong; ++vIter)
|
||||||
wrong = (vIter->idx() != mesh.property(vertexProp,*vIter));
|
wrong = (vIter->idx() != mesh.property(vertexProp,*vIter));
|
||||||
EXPECT_FALSE(wrong) << "min one vertex has worng vertex property";
|
EXPECT_FALSE(wrong) << "min one vertex has wrong vertex property";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ void compare_ranges(RangeT1&& range1, RangeT2&& range2, int offset, bool reverse
|
|||||||
|
|
||||||
size_t n = vec1.size();
|
size_t n = vec1.size();
|
||||||
|
|
||||||
|
/*
|
||||||
std::cout << "Vec1 elements: ";
|
std::cout << "Vec1 elements: ";
|
||||||
for (auto el : vec1)
|
for (auto el : vec1)
|
||||||
std::cout << el.idx() << " ";
|
std::cout << el.idx() << " ";
|
||||||
@@ -102,6 +103,7 @@ void compare_ranges(RangeT1&& range1, RangeT2&& range2, int offset, bool reverse
|
|||||||
for (auto el : vec2)
|
for (auto el : vec2)
|
||||||
std::cout << el.idx() << " ";
|
std::cout << el.idx() << " ";
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
*/
|
||||||
|
|
||||||
for (size_t i = 0; i < n; ++i)
|
for (size_t i = 0; i < n; ++i)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -781,14 +781,15 @@ TEST_F(OpenMeshTutorials, storing_custom_properties) {
|
|||||||
EXPECT_TRUE(mesh.mproperty(mprop_map).persistent()) << "property should be persistent";
|
EXPECT_TRUE(mesh.mproperty(mprop_map).persistent()) << "property should be persistent";
|
||||||
|
|
||||||
// write mesh
|
// write mesh
|
||||||
bool ok = OpenMesh::IO::write_mesh( mesh, "persistence-check.om" );
|
OpenMesh::IO::Options opts(OpenMesh::IO::Options::Custom);
|
||||||
|
bool ok = OpenMesh::IO::write_mesh(mesh, "persistence-check.om", opts);
|
||||||
EXPECT_TRUE(ok) << "Cannot write mesh to file 'persistent-check.om'";
|
EXPECT_TRUE(ok) << "Cannot write mesh to file 'persistent-check.om'";
|
||||||
|
|
||||||
// clear mesh
|
// clear mesh
|
||||||
mesh.clear();
|
mesh.clear();
|
||||||
|
|
||||||
//Read back mesh
|
//Read back mesh
|
||||||
ok = OpenMesh::IO::read_mesh( mesh, "persistence-check.om" );
|
ok = OpenMesh::IO::read_mesh(mesh, "persistence-check.om", opts);
|
||||||
EXPECT_TRUE(ok) << "Cannot read mesh from file 'persistence-check.om'";
|
EXPECT_TRUE(ok) << "Cannot read mesh from file 'persistence-check.om'";
|
||||||
|
|
||||||
// check props
|
// check props
|
||||||
|
|||||||
Reference in New Issue
Block a user