36 const VertUVCoords *
uvMap =
nullptr;
49 const AffineXf3d *
xf =
nullptr;
62inline Vector3f
applyFloat(
const AffineXf3d * xf,
const Vector3f & p )
64 return xf ? Vector3f( (*xf)( Vector3d( p ) ) ) : p;
68inline Vector3f
applyFloat(
const Matrix3d * m,
const Vector3f & n )
70 return m ? Vector3f( *m * Vector3d( n ) ) : n;
74inline Vector3d
applyDouble(
const AffineXf3d * xf,
const Vector3f & p )
77 return xf ? (*xf)( pd ) : pd;
81inline Vector3d
applyDouble(
const Matrix3d * m,
const Vector3f & n )
84 return m ? *m * nd : nd;
103 return vert2packed_.
empty() ? (int)v : vert2packed_[v];
113MRMESH_API const VertCoords &
transformPoints(
const VertCoords & verts,
const VertBitSet & validVerts,
const AffineXf3d * xf, VertCoords & buf,
118MRMESH_API const VertNormals &
transformNormals(
const VertNormals & normals,
const VertBitSet & validVerts,
const Matrix3d * m, VertNormals & buf );
#define MRMESH_API
Definition MRMeshFwd.h:80
std::vector<T>-like container that requires specific indexing type,
Definition MRVector.h:19
bool empty() const
Definition MRVector.h:49
maps valid points to packed sequential indices
Definition MRSaveSettings.h:89
MRMESH_API VertRenumber(const VertBitSet &validVerts, bool saveValidOnly)
prepares the mapping
int sizeVerts() const
return the total number of vertices to be saved
Definition MRSaveSettings.h:97
int operator()(VertId v) const
return packed index (if saveValidOnly = true) or same index (if saveValidOnly = false)
Definition MRSaveSettings.h:100
bool saveValidOnly() const
Definition MRSaveSettings.h:94
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:742
Definition MRCameraOrientationPlugin.h:8
Vector3f applyFloat(const AffineXf3d *xf, const Vector3f &p)
returns the point as is or after application of given transform to it in double precision
Definition MRSaveSettings.h:62
Vector3d applyDouble(const AffineXf3d *xf, const Vector3f &p)
converts given point in double precision and applies given transformation to it
Definition MRSaveSettings.h:74
MRMESH_API const VertNormals & transformNormals(const VertNormals &normals, const VertBitSet &validVerts, const Matrix3d *m, VertNormals &buf)
MRMESH_API const VertCoords & transformPoints(const VertCoords &verts, const VertBitSet &validVerts, const AffineXf3d *xf, VertCoords &buf, const VertRenumber *vertRenumber=nullptr)
Definition MRMeshTexture.h:13
determines how to save points/lines/mesh
Definition MRSaveSettings.h:17
const MeshTexture * texture
optional texture to save with the geometry
Definition MRSaveSettings.h:43
ProgressCallback progress
to report save progress and cancel saving if user desires
Definition MRSaveSettings.h:58
std::optional< Color > solidColor
the color of whole object
Definition MRSaveSettings.h:55
std::optional< LengthUnit > lengthUnit
units of input coordinates and transformation, to be serialized if the format supports it
Definition MRSaveSettings.h:52
const std::vector< Color > * primitiveColors
per-face colors for meshes, per-undirected-edge colors for polylines, unused for point clouds and oth...
Definition MRSaveSettings.h:33
std::string materialName
the name of file without extension to save texture in some formats (e.g. .OBJ, .PLY)
Definition MRSaveSettings.h:46
const VertColors * colors
optional per-vertex color to save with the geometry
Definition MRSaveSettings.h:30
const VertUVCoords * uvMap
optional per-vertex uv coordinate to save with the geometry
Definition MRSaveSettings.h:36
bool onlyValidPoints
Definition MRSaveSettings.h:20
const AffineXf3d * xf
this transformation can optionally be applied to all vertices (points) of saved object
Definition MRSaveSettings.h:49
bool saveTriCornerUVCoords
Definition MRSaveSettings.h:40
bool packPrimitives
Definition MRSaveSettings.h:27