Hi.
I tried to install the Nuget package to test out the library in C#. It
didn't support .net framework 4.6/4.7.
Is this something I can compile myself, if so is there a guide somewhere?
Kind regards
Fredrik Jacobsen
I have been having a very hard time getting usable results from the decimator tool and am wondering what I am doing wrong.
I have mostly been looking at using the "ModQuadricT". However it seems that any usage of non-binary ModQuadricT with `decimate` like shown here (https://www.graphics.rwth-aachen.de/media/openmesh_static/Documentations/Op…) will completely remove almost all vertices since the non-binary version has `max_err_` set to DBL_MAX. I instead have to use `decimate_to`. However, even with decimate_to the end result has many overlapping triangles while the original mesh had none.
Is there a recommended way of using this tool?
Could i get 'texcoord' from the .ply files (in the following format) by OpenMesh? I tried many ways, but failed. We look forward to and thank you for your help!
ply
format ascii 1.0
comment Generated by the CGAL library
comment MyFaces 31592
comment TextureFile xxxxxxx.jpg
element vertex 203824
property double x
property double y
property double z
element face 404325
property list uchar int vertex_indices
property int label
property list uchar float texcoord
property int texnumber
end_header
Hi,
i was wondering whether it's planned to support exporting meshes in glTF
format from openmesh?
- Robert
--
Squarewave Computing
Robert Niederreiter
Aflingerstraße 19
A-6176 Völs
www.squarewave.at
+43 699 160 20 192
ATU61774100
Hello sir!
I am using OpenMesh for geometry processing but failed to compile. I looked up other people's error messages and how to deal with them, but I didn't see anything that worked for me. I don't know what went wrong with the error message.
My laptop is Apple M1, arm64. And my IDE is CLion.
The following sentences are the entire compilation error output:
====================[ Build | AFSR3 | Debug ]===================================
/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/caishuxian/Documents/Reconstruction/Advancing_Front_Method/AFSR3/cmake-build-debug --target AFSR3 -j 6
[1/4] Building CXX object CMakeFiles/AFSR3.dir/AFSR/main.cpp.o
/Users/caishuxian/Documents/Reconstruction/Advancing_Front_Method/AFSR3/AFSR/main.cpp:431:41: warning: format specifies type 'int' but the argument has type 'std::priority_queue<dt::CandidatePair, std::vector<dt::CandidatePair>, dt::CandidatePair2>::size_type' (aka 'unsigned long') [-Wformat]
printf("\nremain boundary edge:%d\n", boundary.queue.size());
~~ ^~~~~~~~~~~~~~~~~~~~~
%lu
/Users/caishuxian/Documents/Reconstruction/Advancing_Front_Method/AFSR3/AFSR/main.cpp:440:51: warning: format specifies type 'int' but the argument has type 'std::vector<dt::CandidatePair>::size_type' (aka 'unsigned long') [-Wformat]
printf("\nremain case later to deal with:%d\n", queue_pop_tmp.size());
~~ ^~~~~~~~~~~~~~~~~~~~
%lu
2 warnings generated.
[4/4] Linking CXX executable AFSR3
FAILED: AFSR3
: && /Library/Developer/CommandLineTools/usr/bin/c++ -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.0.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/AFSR3.dir/AFSR/Boundary.cpp.o CMakeFiles/AFSR3.dir/AFSR/CandidatePair.cpp.o CMakeFiles/AFSR3.dir/AFSR/Edge.cpp.o CMakeFiles/AFSR3.dir/AFSR/Face.cpp.o CMakeFiles/AFSR3.dir/AFSR/FileHandle.cpp.o CMakeFiles/AFSR3.dir/AFSR/main.cpp.o CMakeFiles/AFSR3.dir/AFSR/Mesh.cpp.o CMakeFiles/AFSR3.dir/AFSR/Point.cpp.o CMakeFiles/AFSR3.dir/AFSR/Tetra.cpp.o CMakeFiles/AFSR3.dir/AFSR/Vector.cpp.o -o AFSR3 && :
Undefined symbols for architecture arm64:
"omerr()", referenced from:
void OpenMesh::BaseProperty::check_and_set_persistent<OpenMesh::VectorT<float, 3> >(bool) in FileHandle.cpp.o
void OpenMesh::BaseProperty::check_and_set_persistent<OpenMesh::DefaultTraits::VertexT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> >(bool) in FileHandle.cpp.o
void OpenMesh::BaseProperty::check_and_set_persistent<OpenMesh::DefaultTraits::FaceT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> >(bool) in FileHandle.cpp.o
void OpenMesh::BaseProperty::check_and_set_persistent<OpenMesh::DefaultTraits::HalfedgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> >(bool) in FileHandle.cpp.o
void OpenMesh::BaseProperty::check_and_set_persistent<OpenMesh::DefaultTraits::EdgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> >(bool) in FileHandle.cpp.o
OpenMesh::IO::ImporterT<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >::add_face(std::__1::vector<OpenMesh::VertexHandle, std::__1::allocator<OpenMesh::VertexHandle> > const&) in FileHandle.cpp.o
void OpenMesh::BaseProperty::check_and_set_persistent<OpenMesh::Attributes::StatusInfo>(bool) in FileHandle.cpp.o
...
"OpenMesh::ArrayKernel::clear()", referenced from:
bool OpenMesh::IO::read_mesh<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >(OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenMesh::IO::Options&, bool) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::reserve(unsigned long, unsigned long, unsigned long)", referenced from:
OpenMesh::IO::ImporterT<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >::reserve(unsigned int, unsigned int, unsigned int) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::ArrayKernel()", referenced from:
OpenMesh::PolyConnectivity::PolyConnectivity() in FileHandle.cpp.o
"OpenMesh::ArrayKernel::~ArrayKernel()", referenced from:
OpenMesh::PolyConnectivity::~PolyConnectivity() in FileHandle.cpp.o
"OpenMesh::TriConnectivity::add_face(std::__1::vector<OpenMesh::VertexHandle, std::__1::allocator<OpenMesh::VertexHandle> > const&)", referenced from:
OpenMesh::IO::ImporterT<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >::add_face(std::__1::vector<OpenMesh::VertexHandle, std::__1::allocator<OpenMesh::VertexHandle> > const&) in FileHandle.cpp.o
"OpenMesh::IO::_IOManager_::read(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenMesh::IO::BaseImporter&, OpenMesh::IO::Options&)", referenced from:
bool OpenMesh::IO::read_mesh<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >(OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenMesh::IO::Options&, bool) in FileHandle.cpp.o
"OpenMesh::IO::IOManager()", referenced from:
bool OpenMesh::IO::read_mesh<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >(OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenMesh::IO::Options&, bool) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::is_valid_handle(OpenMesh::FaceHandle) const", referenced from:
OpenMesh::ArrayKernel::face(OpenMesh::FaceHandle) const in FileHandle.cpp.o
OpenMesh::ArrayKernel::face(OpenMesh::FaceHandle) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::is_valid_handle(OpenMesh::VertexHandle) const", referenced from:
OpenMesh::ArrayKernel::vertex(OpenMesh::VertexHandle) const in FileHandle.cpp.o
OpenMesh::IO::ImporterT<OpenMesh::TriMesh_ArrayKernelT<OpenMesh::DefaultTraits> >::add_face(std::__1::vector<OpenMesh::VertexHandle, std::__1::allocator<OpenMesh::VertexHandle> > const&) in FileHandle.cpp.o
OpenMesh::ArrayKernel::vertex(OpenMesh::VertexHandle) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::is_valid_handle(OpenMesh::HalfedgeHandle) const", referenced from:
OpenMesh::ArrayKernel::halfedge(OpenMesh::HalfedgeHandle) const in FileHandle.cpp.o
OpenMesh::ArrayKernel::halfedge(OpenMesh::HalfedgeHandle) in FileHandle.cpp.o
OpenMesh::ArrayKernel::set_next_halfedge_handle(OpenMesh::HalfedgeHandle, OpenMesh::HalfedgeHandle) in FileHandle.cpp.o
OpenMesh::ArrayKernel::set_prev_halfedge_handle(OpenMesh::HalfedgeHandle, OpenMesh::HalfedgeHandle) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::handle(OpenMesh::ArrayItems::Edge const&) const", referenced from:
OpenMesh::ArrayKernel::new_edge(OpenMesh::VertexHandle, OpenMesh::VertexHandle) in FileHandle.cpp.o
"OpenMesh::ArrayKernel::handle(OpenMesh::ArrayItems::Face const&) const", referenced from:
OpenMesh::ArrayKernel::new_face() in FileHandle.cpp.o
"OpenMesh::ArrayKernel::handle(OpenMesh::ArrayItems::Vertex const&) const", referenced from:
OpenMesh::ArrayKernel::new_vertex() in FileHandle.cpp.o
"OpenMesh::BaseProperty::stats(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const", referenced from:
vtable for OpenMesh::PropertyT<OpenMesh::VectorT<float, 3> > in FileHandle.cpp.o
vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::VertexT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::FaceT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::HalfedgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::EdgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
vtable for OpenMesh::PropertyT<OpenMesh::Attributes::StatusInfo> in FileHandle.cpp.o
vtable for OpenMesh::PropertyT<OpenMesh::VectorT<float, 2> > in FileHandle.cpp.o
...
"typeinfo for OpenMesh::ArrayKernel", referenced from:
typeinfo for OpenMesh::PolyConnectivity in FileHandle.cpp.o
"typeinfo for OpenMesh::BaseProperty", referenced from:
typeinfo for OpenMesh::PropertyT<OpenMesh::VectorT<float, 3> > in FileHandle.cpp.o
typeinfo for OpenMesh::PropertyT<OpenMesh::DefaultTraits::VertexT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
typeinfo for OpenMesh::PropertyT<OpenMesh::DefaultTraits::FaceT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
typeinfo for OpenMesh::PropertyT<OpenMesh::DefaultTraits::HalfedgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
typeinfo for OpenMesh::PropertyT<OpenMesh::DefaultTraits::EdgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, true>::Refs> > in FileHandle.cpp.o
typeinfo for OpenMesh::PropertyT<OpenMesh::Attributes::StatusInfo> in FileHandle.cpp.o
typeinfo for OpenMesh::PropertyT<OpenMesh::VectorT<float, 2> > in FileHandle.cpp.o
...
"vtable for OpenMesh::BaseProperty", referenced from:
OpenMesh::BaseProperty::BaseProperty(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in FileHandle.cpp.o
OpenMesh::BaseProperty::~BaseProperty() in FileHandle.cpp.o
OpenMesh::BaseProperty::BaseProperty(OpenMesh::BaseProperty const&) in FileHandle.cpp.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
If you know the cause of the error, please let me know, I would be very grateful.
Thank you!
Hi,
I am trying to access the “OpenMesh” gitlab page from Japan.
However, I get an error page and cannot access it.
Could you please check my gitlab access rights from Japan?
Thank you in advance.
Hi,
I am reading in a PLY file that has only positions and normals
When I set the mesh to request UVs, has_*tex*() functions returns true
but the values it provides are all zeros.
What is the correct way to handle mesh with optional UVs information ?
ply file header
```
ply
format ascii 1.0
comment created by gply, a Houdini tool.
comment converted from .[b]geo
comment for more information about Houdini, try:
comment www.sidefx.com
element vertex 1966
property float x
property float y
property float z
property float nx
property float ny
property float nz
element face 508
property list uchar int vertex_indices
end_header
```
Cheers
--
Nicholas Yue
https://www.linkedin.com/in/nicholasyue/
Hi,
Is there a basic example to illustrate how one can link with OpenMesh
static libraries via cmake
I cannot find documentation regarding the config's target name for
include and differentiation between static and shared ?
I am using OpenMesh 9.0, I have built (both static and shared) on Ubuntu
18.04
Cheers
--
Nicholas Yue
https://www.linkedin.com/in/nicholasyue/
Hi,
I am new and recently started to play with OpenMesh. I would like to
subdivide a triangle mesh based on midpoint criteria. It is required that
the subdivided mesh has the same geometry as the original one. No geometry
loss!
I read a STL mesh and tried to use the uniform subdivider:
___________________________________________________________________
struct CustomTraits : public OpenMesh::DefaultTraitsDouble { };
typedef OpenMesh::TriMesh_ArrayKernelT<CustomTraits> OM_TriMesh;
OM_TriMesh om_mesh;
OpenMesh::IO::read_mesh( om_mesh, fname_in);
int n_refine = 1;
OpenMesh::Subdivider::Uniform::MidpointT<OM_TriMesh> divider;
divider.attach(om_mesh);
divider(n_refine);
divider.detach();
OpenMesh::IO::write_mesh( om_mesh , fname_out);
____________________________________________________________________
Conceptually, I supposed it would uniformly divide one triangle into four
triangles after connecting its edge midpoints. However, I found it was not
true and the subdivided mesh is geometrically not exactly the same as the
original one.
In addition, for a simple mesh with only 1 triangle(stl format), I found
that only the central triangle connected with midpoints is generated and
triangles associated with the original vertices are lost. I looked at the
source code, and found that it was caused by the "if (!_m.is_boundary(vh))"
check. So it seems the boundary vertices are ignored. Then the geometry
after subdivision became different from the original mesh. Is it true? Can
anyone help and tell me how to do that? Thank you very much.
Best,
Xujun
Hi! I've cloned OpenMesh git repo to my local. created a build directory under it. there I called following CMake command for release mode without applications)
```
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_APPS=OFF
```
I'm getting following errors:
```
CMake Error at CMakeLists.txt:44 (include):
include could not find requested file:
VCICommon
CMake Error at src/OpenMesh/Core/CMakeLists.txt:1 (include):
include could not find requested file:
VCICommon
CMake Error at src/OpenMesh/Core/CMakeLists.txt:145 (vci_add_library):
Unknown CMake command "vci_add_library".
```
Looks like it needs `vci_add_library` Cmake function that is defined in `VCICommon`. But I don't see VCICommon anywhere in the repo.
From https://gitlab.vci.rwth-aachen.de:9000/search?search=VCICommon&nav_source=n… as you can see, VCICommon is only included in the repo, not defined anywhere.
Can you please tell me what I am doing wrong. Thanks!