You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
trimesh2 is a C++ library and set of utilities for input, output,
and basic manipulation of 3D triangle meshes. The goals of the code are
ease of use and efficiency, possibly at the expense of some generality.
Features
The library includes the following:
Support for reading PLY, OFF, 3DS, and Wavefront OBJ files, together with
a few other formats of mostly local interest (SM, RAY).
Support for writing PLY, OFF, and OBJ files.
Vec: a templated C++ class for constant-length vectors, with
support for the usual arithmetic operations (add, subtract,
componentwise multiply and divide, dot product, cross product, etc.)
XForm: a class for rigid-body transformations.
An OpenGL trackball/arcball implementation, with automatic selection of
rotation center.
Algorithms for subdivision, smoothing, curvature estimation, triangle
stripping, and various other simple mesh manipulations.
Bundled together with the library are:
In addition, the following utility programs are included:
mesh_view: a simple 3D mesh viewer
mesh_make: create arbitrarily-tessellated meshes of various simple shapes
mesh_filter: applies a variety of simple transformations to a mesh,
such as converting formats, flipping faces, subdivision, smoothing,
rigid-body transformations, etc.
mesh_cc: list and/or extract connected components from a mesh
mesh_cat: combine several meshes into a single file
mesh_align: align 2 meshes using ICP
mesh_shade: a few procedural shaders for adding per-vertex color
mesh_check: check for some kinds of topological oddities (e.g.,
more than 2 faces at an edge) in a mesh file. Removes parts of the
mesh to "clean it up" and leave it a manifold.
mesh_crunch: quick-n-dirty mesh decimation using the
Rossignac-Borrel method of vertex collapse
mesh_info: print out some information about a mesh
xf: create or compose transformations in .xf files
The library is distributed under the
GNU
General Public License (GPL), version 2. The various libraries
distributed with trimesh2 are open source, and are believed to be covered
by GPL-compatible licenses. Please see the COPYING file.
The code is written in C++, and is known to compile using a recent (4.x)
version of g++ on several Unix-like OSes (Linux x86 and x86-64, Solaris,
Mac OSX). Compiling under Windows is possible using Cygwin or MinGW32. Anecdotally, the code compiles with MS Visual Studio .NET or later
(not MSVC 6), but I am not able to support this – you're on
your own. (However, I will gladly accept patches that fix compilation, and
will consider patches that squash warnings.)
Warning: some gcc versions are known to miscompile
trimesh2.
Please avoid version 4.1.2, or anything earlier than 4.0.1.
k-D tree implementation can now do approximate nearest-neighbor matching
The library and mesh_info client can now compute mesh overlap
as IOU (intersection over union)
mesh_view will now use distance-adaptive point sizes when drawing
point clouds
Many bug fixes, compile fixes, and code cleanups
Changes version 2.12 → 2.13:
Many re-writes of header files to accommodate a large variety of compilers
and modern versions of C++
Generic (GLSL-like) functions have been split out from Vec.h
into mathutil.h
Compatibility functions for earlier compilers have been moved to
mathcompat.h
SVD implementation in lineqn.h
Significant updates to ICP
GLManager class to make it easier to use OpenGL buffers and
shaders. mesh_view is updated to use it.
Many capabilities of mesh_make and mesh_filter are
now available in the library - check TriMesh_algo.h for details
Can now create teapots - see make_teapot() or mesh_make
teapot
Changes version 2.11 → 2.12:
Major user-visible change: the library and headers are now
contained within the trimesh namespace. Existing code must
be updated to refer to the TriMesh class and associated functions with
an explicit namespace qualifier, or include the following declaration
using namespace trimesh;
Compile fixes for Mac. The code should now correctly build into
bin.Darwin64 and lib.Darwin64 on 64-bit capable
versions of MacOS. A 32-bit build can be forced via "make darwin32".
Many fixes for signed-unsigned and std-namespace correctness.
Vec now contains the methods
at, front, back, data,
cbegin, cend, rbegin, rend,
crbegin, crend, max_size, and fill
for compatibility with C++11 arrays.
Bugfix for step() function.
More complete support for standard math library functions on
Vecs.
fromarray and transp functions for XForms.
Yet another attempt at fixing KDtree and ICP for
point sets with duplicate coordinates.
TriMesh::read() no longer triangulates grids by default.
Code that works only with faces needs to call
mesh->need_faces();
explicitly.
mesh_make can now create surfaces of revolution from curves.
Changes version 2.10 → 2.11:
Separate type / header file for bounding boxes
Preliminary support for output of Collada .dae files
GLCamera supports axis-constrained rotation
Detection of "shared" vertices via
mesh_filter -share and
shared(TriMesh *mesh, float tol)
mesh_filter -tsmooth: smoothing with umbrella operator,
constrained to tangent plane
mesh_info csize to print out bounding box center and size
mesh_view -grab command-line option to just
render a single image and save it out
The Vec class now has a full set of comparison operators,
so that vecs can be put into STL sets
Color has more accurate colorspace conversion matrices (and comments)
Many bug fixes, including correct multi-threaded subdivision and diffusion
Many compile fixes and code cleanups, including handling of PI,
float vs. double, std::, cstddef, etc.
Changes version 2.9 → 2.10:
Many more options for computing mesh statistics in mesh_info, e.g.
mesh_info in.ply median edgelen
mesh_info in.ply total facearea
mesh_info in.ply rms dihedral
mesh_info in.ply overlap in2.ply
Moved connected-components computation into library, with mesh_cc
just a wrapper
Parallelized connectivity and diffusion computations
Basic support for STL files
Support for per-vertex normals in OBJ files
More support for pointclouds, including normal computation based on
(accelerated) k-nearest-neighbors
Stricter use of std namespace. This may require adding using
declarations to client code for classes and functions that used to be
injected into the global namespace by Vec.h, including
std::vector, std::min, std::max, and
std::swap.
Many bug, compile, and warning fixes
Changes version 2.8 → 2.9:
New utilities: mesh_check, mesh_crunch,
mesh_info, and xf
Many small bugfixes, as well as fixes for compilation errors and warnings
Bugfixes for OpenMP directives
Componentwise functions (trigonometric, etc.) for Vec
Colorspace conversion for Color
The dist shader of mesh_shade now takes an absolute
distance scale, instead of auto-scaling. (This is useful much more frequently
than the previous behavior.)
mesh_view now uses glArrayElement instead of
glDrawElements on Intel cards. This provides a considerable
speedup on the machines available to me.
Provides the ability to install hooks (e.g. for GUI applications)
for status/warning/error messages printed by trimesh2
Includes Darwin binaries
Changes version 2.7 → 2.8:
Many compilation, portability, and bug fixes
Colors are now stored as floats - this will require updating
external code that uses trimesh2
Support for maintaining range grids as grids, instead of automatically
converting to meshes upon read
Rudimentary (possibly broken, incomplete) support for reading VVD files
mesh_filter: Added bilateral mesh filtering using the method of
[Jones et al. 2003]
mesh_make: Added Klein bottle, rhombic triacontahedron
OpenMP directives in a few places for multi-threading
Many functions moved from utilities into library
Changes version 2.6 → 2.7:
Miscellaneous compilation, portability, and bug fixes
mesh_filter: Added -pcasnap; added -fly
(butterfly subdivision); more robust -orient
mesh_make: Added trefoil knot
Linux x86_64 libraries and binaries now go in lib.Linux64/ and bin.Linux64/
Changes version 2.5 → 2.6:
mesh_filter: Added -sharpen and -usmooth flags;
bugfixes for Mac compilation, transforming meshes with normals
mesh_make: Fix for making cubes with tess = 1
mesh_align: ICP with isotropic or anisotropic (affine) scale
mesh_cat: Bugfix in handling normals, colors, etc.
mesh_shade: Added a few shaders, including coloring based on
mesh-to-mesh distance
Changes version 2.4 → 2.5:
Fixed bug in curvature computation
Small bugfix in mesh_view
Compile fixes
Added mesh_shade with a few procedural shaders
Changes version 2.3 → 2.4:
Added mesh_align
XForm.h and some of the utility programs should now support
affine transforms (as opposed to just rigid-body)
Added yet more options to mesh_filter
Changes version 2.2 → 2.3:
Changes version 2.1 → 2.2:
Added a couple of options to mesh_filter
Bugfix for depth readback on ATI cards with broken drivers
Changes version 2.0 → 2.1:
Added mesh_cat utility
Added several options to mesh_filter
Many bugfixes, including compilation errors, I/O, and mesh_view
Please contact smr at princeton edu if you have any questions about
the code.
via Princeton Graphics Group
September 25, 2024 at 12:07AM
The text was updated successfully, but these errors were encountered:
[no-title]
https://ift.tt/W9wMC6Y
Features
The library includes the following:
Bundled together with the library are:
In addition, the following utility programs are included:
The library is distributed under the GNU General Public License (GPL), version 2. The various libraries distributed with trimesh2 are open source, and are believed to be covered by GPL-compatible licenses. Please see the COPYING file.
The code is written in C++, and is known to compile using a recent (4.x) version of g++ on several Unix-like OSes (Linux x86 and x86-64, Solaris, Mac OSX). Compiling under Windows is possible using Cygwin or MinGW32. Anecdotally, the code compiles with MS Visual Studio .NET or later (not MSVC 6), but I am not able to support this – you're on your own. (However, I will gladly accept patches that fix compilation, and will consider patches that squash warnings.)
Warning: some gcc versions are known to miscompile trimesh2.
Please avoid version 4.1.2, or anything earlier than 4.0.1.
The author of trimesh2 is Szymon Rusinkiewicz.
Download
The most recent version is 2.16
The packages include source that should compile on Linux, Mac, and MINGW / Cygwin.
Changes
Changes version 2.15 → 2.16:
Changes version 2.14 → 2.15:
Changes version 2.13 → 2.14:
Changes version 2.12 → 2.13:
Changes version 2.11 → 2.12:
Changes version 2.10 → 2.11:
Changes version 2.9 → 2.10:
mesh_info in.ply total facearea
mesh_info in.ply rms dihedral
mesh_info in.ply overlap in2.ply
Changes version 2.8 → 2.9:
Changes version 2.7 → 2.8:
Changes version 2.6 → 2.7:
Changes version 2.5 → 2.6:
Changes version 2.3 → 2.4:
Changes version 2.2 → 2.3:
Changes version 2.1 → 2.2:
Changes version 2.0 → 2.1:
Please contact smr at princeton edu if you have any questions about the code.
via Princeton Graphics Group
September 25, 2024 at 12:07AM
The text was updated successfully, but these errors were encountered: