3#include "MRPch/MRBindingMacros.h"
42 constexpr static const
char*
StaticTypeName() noexcept {
return "MeshHolder"; }
50 [[nodiscard]]
virtual bool hasModel()
const override {
return bool(
data_.mesh ); }
53 #pragma GCC diagnostic push
54 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
56 const std::shared_ptr< const Mesh >&
mesh()
const
57 {
return reinterpret_cast< const std::shared_ptr<const Mesh>&
>(
data_.mesh ); }
59 #pragma GCC diagnostic pop
156 { edgesColor_.set( color,
id ); needRedraw_ =
true; }
160 { pointsColor_.set( color,
id ); needRedraw_ =
true; }
164 { bordersColor_.set( color,
id ); needRedraw_ =
true; }
351 void setDefaultColors_();
354 void setDefaultSceneProperties_();
356 const char * serializeFormat_ =
nullptr;
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRVisualObject.h:53
named object in the data model
Definition MRObject.h:62
std::vector<T>-like container that requires specific indexing type,
Definition MRVector.h:23
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
static ViewportMask any()
Definition MRViewportId.h:50
static ViewportMask all()
mask meaning all or any viewports
Definition MRViewportId.h:49
Definition MRViewportProperty.h:17
bool getVisualizeProperty(AnyVisualizeMaskEnum type, ViewportMask viewportMask) const
returns true if the property is set at least in one viewport specified by the mask
void setVisualizeProperty(bool value, AnyVisualizeMaskEnum type, ViewportMask viewportMask)
set visual property in all viewports specified by the mask
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:753
Vector< MeshTexture, TextureId > textures_
Texture options.
Definition MRObjectMeshHolder.h:284
virtual void updateTexturePerFace(Vector< TextureId, FaceId > &texturePerFace)
Definition MRObjectMeshHolder.h:182
size_t numUndirectedEdges() const
returns cached information about the number of undirected edges in the mesh
virtual MR_BIND_IGNORE void setTexture(MeshTexture texture)
for backward compatibility
ViewportProperty< Color > faceSelectionColor_
Definition MRObjectMeshHolder.h:344
OnlyOddFragments
Definition MRObjectMeshHolder.h:25
virtual void setSelectedFacesColor(const Color &color, ViewportId id={})
sets colors of selected triangles
void setSerializeFormat(const char *newFormat)
virtual void updateTextures(Vector< MeshTexture, TextureId > &updated)
Definition MRObjectMeshHolder.h:177
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
const Color & getEdgesColor(ViewportId id={}) const
Definition MRObjectMeshHolder.h:154
const FaceColors & getFacesColorMap() const
Definition MRObjectMeshHolder.h:145
virtual bool hasModel() const override
Definition MRObjectMeshHolder.h:50
std::optional< size_t > numSelectedFaces_
Definition MRObjectMeshHolder.h:294
virtual void setPointSize(float size)
SelectionChangedSignal edgeSelectionChangedSignal
Definition MRObjectMeshHolder.h:273
virtual bool getRedrawFlag(ViewportMask viewportMask) const override
returns true if the object must be redrawn (due to dirty flags) in one of specified viewports
MeshChangedSignal meshChangedSignal
Definition MRObjectMeshHolder.h:278
const VertUVCoords & getUVCoords() const
Definition MRObjectMeshHolder.h:186
virtual void setTexturePerFace(Vector< TextureId, FaceId > texturePerFace)
Definition MRObjectMeshHolder.h:181
Faces
Definition MRObjectMeshHolder.h:17
bool supportsVisualizeProperty(AnyVisualizeMaskEnum type) const override
Returns true if this class supports the property type. Otherwise passing it to the functions below is...
Expected< void > deserializeModel_(const std::filesystem::path &path, ProgressCallback progressCb={}) override
Reads model from file.
std::optional< size_t > numHoles_
Definition MRObjectMeshHolder.h:289
static constexpr const char * StaticTypeName() noexcept
Definition MRObjectMeshHolder.h:42
ViewportProperty< Color > edgeSelectionColor_
Definition MRObjectMeshHolder.h:343
virtual void swapSignals_(Object &other) override
virtual void addTexture(MeshTexture texture)
Definition MRObjectMeshHolder.h:183
ViewportMask flatShading_
toggle per-face or per-vertex properties
Definition MRObjectMeshHolder.h:332
SelectedFaces
Definition MRObjectMeshHolder.h:21
virtual std::shared_ptr< Object > clone() const override
Edges
Definition MRObjectMeshHolder.h:19
void resetColors() override
reset all object colors to their default values from the current theme
const Vector< MeshTexture, TextureId > & getTextures() const
Definition MRObjectMeshHolder.h:175
ViewportMask showEdges_
Definition MRObjectMeshHolder.h:326
EnableShading
Definition MRObjectMeshHolder.h:23
ObjectMeshHolder(ProtectedStruct, const ObjectMeshHolder &obj)
Definition MRObjectMeshHolder.h:167
const Color & getBordersColor(ViewportId id={}) const
Definition MRObjectMeshHolder.h:162
ImVec2 size(const ViewportRectangle &rect)
Definition MRViewport.h:32
ViewportProperty< XfBasedCache< Box3f > > worldBox_
Definition MRObjectMeshHolder.h:298
void setDefaultSerializeMeshFormat(std::string newFormat)
virtual void setEdgesColor(const Color &color, ViewportId id={})
Definition MRObjectMeshHolder.h:155
virtual void setVertsColorMap(VertColors vertsColorMap)
sets per-vertex colors of the object
Definition MRObjectMeshHolder.h:140
ViewportMask onlyOddFragments_
Definition MRObjectMeshHolder.h:338
virtual void updateVertsColorMap(VertColors &vertsColorMap)
swaps per-vertex colors of the object with given argument
Definition MRObjectMeshHolder.h:143
virtual void invalidateMetricsCache(uint32_t mask)
invalidates same caches with mesh metrics (area, volume, ...) as by setDirtyFlags( mask )
VertUVCoords ancillaryUVCoordinates_
vertices coordinates in ancillary texture
Definition MRObjectMeshHolder.h:287
const Color & getSelectedEdgesColor(ViewportId id={}) const
returns colors of selected edges
virtual void updateUVCoords(VertUVCoords &updated)
Definition MRObjectMeshHolder.h:188
virtual Expected< std::future< Expected< void > > > serializeModel_(const std::filesystem::path &path) const override
SelectionChangedSignal faceSelectionChangedSignal
Definition MRObjectMeshHolder.h:272
virtual Box3f getWorldBox(ViewportId={}) const override
ObjectMeshHolder(ObjectMeshHolder &&) noexcept=default
virtual bool sameModels(const Object &other) const override
return true if model of current object equals to model (the same) of other
void resetFrontColor() override
reset basic object colors to their default values from the current theme
ObjectMeshData data_
Definition MRObjectMeshHolder.h:281
virtual void setupRenderObject_() const override
ViewportMask showPoints_
Definition MRObjectMeshHolder.h:327
virtual size_t getModelHash() const override
return hash of model (or hash object pointer if object has no model)
Points
Definition MRObjectLinesHolder.h:13
void deserializeFields_(const Json::Value &root) override
std::optional< size_t > numSelectedEdges_
Definition MRObjectMeshHolder.h:294
virtual void setDirtyFlags(uint32_t mask, bool invalidateCaches=true) override
const MeshTexture & getTexture() const
returns first texture in the vector. If there is no textures, returns empty texture
std::optional< double > volume_
Definition MRObjectMeshHolder.h:296
double selectedArea() const
returns cached area of selected triangles
const ViewportProperty< Color > & getSelectedEdgesColorsForAllViewports() const
virtual void selectEdges(UndirectedEdgeBitSet newSelection)
virtual Box3f computeBoundingBox_() const override
const TexturePerFace & getTexturePerFace() const
Definition MRObjectMeshHolder.h:184
MeshPart meshPart() const
reinterpret_cast to avoid making a copy of shared_ptr
Definition MRObjectMeshHolder.h:63
const MeshTexture & getAncillaryTexture() const
ancillary texture can be used to have custom features visualization without affecting real one
Definition MRObjectMeshHolder.h:197
size_t numSelectedFaces() const
returns cached information about the number of selected faces in the mesh
size_t numHoles() const
returns cached information about the number of holes in the mesh
std::optional< size_t > numHandles_
Definition MRObjectMeshHolder.h:292
void updateAncillaryUVCoords(VertUVCoords &updated)
Definition MRObjectMeshHolder.h:202
float avgEdgeLen() const
returns cached average edge length
const FaceBitSet & getSelectedFaces() const
Definition MRObjectMeshHolder.h:78
_count
If true, show additional details on the name tag, such as point coordinates. Not all features use thi...
Definition MRFeatureObject.h:90
bool hasAncillaryTexture() const
Definition MRObjectMeshHolder.h:204
std::optional< size_t > numUndirectedEdges_
Definition MRObjectMeshHolder.h:291
ViewportProperty< Color > pointsColor_
Definition MRObjectMeshHolder.h:341
tl::expected< T, E > Expected
Definition MRExpected.h:31
const ViewportProperty< Color > & getPointsColorsForAllViewports() const
void setFlatShading(bool on)
sets flat (true) or smooth (false) shading
Definition MRObjectMeshHolder.h:115
virtual void setEdgeWidth(float edgeWidth)
size_t numCreaseEdges() const
returns cached information about the number of crease undirected edges in the mesh
const UndirectedEdgeBitSet & getSelectedEdges() const
Definition MRObjectMeshHolder.h:85
virtual void setCreases(UndirectedEdgeBitSet creases)
std::optional< float > avgEdgeLen_
Definition MRObjectMeshHolder.h:297
const ViewportProperty< Color > & getEdgesColorsForAllViewports() const
virtual void setPointsColor(const Color &color, ViewportId id={})
Definition MRObjectMeshHolder.h:159
virtual Expected< void > setSharedModel_(const Object &other) override
shares model from other object
virtual void serializeFields_(Json::Value &root) const override
ViewportMask showBordersHighlight_
Definition MRObjectMeshHolder.h:330
Signal< void()> SelectionChangedSignal
signal about face selection changing, triggered in selectFaces
Definition MRObjectMeshHolder.h:271
const ViewportProperty< Color > & getBordersColorsForAllViewports() const
virtual const char * typeName() const override
Definition MRObjectMeshHolder.h:43
ObjectMeshHolder(const ObjectMeshHolder &other)=default
const ViewportProperty< Color > & getSelectedFacesColorsForAllViewports() const
virtual void setSelectedEdgesColorsForAllViewports(ViewportProperty< Color > val)
PolygonOffsetFromCamera
Definition MRObjectMeshHolder.h:27
virtual std::shared_ptr< Object > shallowClone() const override
const ViewportMask & getVisualizePropertyMask(AnyVisualizeMaskEnum type) const override
returns mask of viewports where given property is set
virtual void swapBase_(Object &other) override
swaps this object with other
std::optional< size_t > numComponents_
Definition MRObjectMeshHolder.h:290
size_t numComponents() const
returns cached information about the number of components in the mesh
virtual void copyColors(const ObjectMeshHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
copies vertex colors from given source object
virtual void setEdgesColorsForAllViewports(ViewportProperty< Color > val)
virtual void setTextures(Vector< MeshTexture, TextureId > texture)
Definition MRObjectMeshHolder.h:176
void copyAllSolidColors(const ObjectMeshHolder &other)
set all object solid colors (front/back/etc.) from other object for all viewports
void setAllVisualizeProperties_(const AllVisualizeProperties &properties, std::size_t &pos) override
set all visualize properties masks
float edgeWidth_
Definition MRObjectMeshHolder.h:346
bool isMeshClosed() const
returns cached information whether the mesh is closed
const std::string & defaultSerializeMeshFormat()
const VertUVCoords & getAncillaryUVCoords() const
Definition MRObjectMeshHolder.h:200
virtual void setAncillaryUVCoords(VertUVCoords uvCoordinates)
Definition MRObjectMeshHolder.h:201
const char * actualSerializeFormat() const
returns overriden file extension used to serialize mesh inside this object if set,...
FlatShading
Definition MRObjectMeshHolder.h:24
SelectedEdges
Definition MRObjectMeshHolder.h:22
MeshTexture ancillaryTexture_
Definition MRObjectMeshHolder.h:286
bool flatShading() const
Definition MRObjectMeshHolder.h:117
ViewportMask showSelectedFaces_
Definition MRObjectMeshHolder.h:329
float pointSize_
Definition MRObjectMeshHolder.h:347
virtual void setSelectedFacesColorsForAllViewports(ViewportProperty< Color > val)
size_t numSelectedEdges() const
returns cached information about the number of selected undirected edges in the mesh
virtual float getPointSize() const
Definition MRObjectMeshHolder.h:152
const char * serializeFormat() const
returns overriden file extension used to serialize mesh inside this object, nullptr means defaultSeri...
Definition MRObjectMeshHolder.h:253
const UndirectedEdgeBitSet & creases() const
Edges on mesh, that will have sharp visualization even with smooth shading.
Definition MRObjectMeshHolder.h:111
virtual void setUVCoords(VertUVCoords uvCoordinates)
Definition MRObjectMeshHolder.h:187
Texture
Definition MRObjectMeshHolder.h:18
virtual void setBordersColor(const Color &color, ViewportId id={})
Definition MRObjectMeshHolder.h:163
virtual void updateData(ObjectMeshData &data)
swaps whole ObjectMeshData with given argument
Definition MRObjectMeshHolder.h:134
ViewportProperty< Color > bordersColor_
Definition MRObjectMeshHolder.h:342
virtual void applyScale(float scaleFactor) override
scale object size (all point positions)
size_t numHandles() const
returns cached information about the number of handles in the mesh
std::optional< double > totalArea_
Definition MRObjectMeshHolder.h:295
ViewportMask polygonOffset_
Definition MRObjectMeshHolder.h:331
AllVisualizeProperties getAllVisualizeProperties() const override
get all visualize properties masks
const Color & getSelectedFacesColor(ViewportId id={}) const
returns colors of selected triangles
virtual void setPointsColorsForAllViewports(ViewportProperty< Color > val)
Signal< void(uint32_t mask)> MeshChangedSignal
signal about mesh changing, triggered in setDirtyFlag
Definition MRObjectMeshHolder.h:277
virtual void selectFaces(FaceBitSet newSelection)
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:13
const Color & getPointsColor(ViewportId id={}) const
Definition MRObjectMeshHolder.h:158
std::optional< double > selectedArea_
Definition MRObjectMeshHolder.h:295
const VertColors & getVertsColorMap() const
returns per-vertex colors of the object
Definition MRObjectMeshHolder.h:137
virtual void setDirtyFlagsFast(uint32_t mask)
virtual void setFacesColorMap(FaceColors facesColorMap)
Definition MRObjectMeshHolder.h:146
virtual void setData(ObjectMeshData &&data)
sets whole new ObjectMeshData
Definition MRObjectMeshHolder.h:131
virtual void copyTextureAndColors(const ObjectMeshHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
copies texture, UV-coordinates and vertex colors from given source object
float getEdgeWidth() const
Definition MRObjectMeshHolder.h:150
ViewportMask showFaces_
Definition MRObjectMeshHolder.h:325
virtual MR_BIND_IGNORE void updateTexture(MeshTexture &updated)
ViewportMask showSelectedEdges_
Definition MRObjectMeshHolder.h:328
std::optional< bool > meshIsClosed_
Definition MRObjectMeshHolder.h:293
const ObjectMeshData & data() const
provides read-only access to whole ObjectMeshData
Definition MRObjectMeshHolder.h:128
double totalArea() const
returns cached summed area of mesh triangles
virtual void setBordersColorsForAllViewports(ViewportProperty< Color > val)
double volume() const
returns cached volume of space surrounded by the mesh, which is valid only if mesh is closed
ViewportMask shadingEnabled_
Definition MRObjectMeshHolder.h:336
virtual void setSelectedEdgesColor(const Color &color, ViewportId id={})
sets colors of selected edges
BordersHighlight
Definition MRObjectMeshHolder.h:26
std::optional< size_t > numCreaseEdges_
Definition MRObjectMeshHolder.h:294
void clearAncillaryTexture()
const std::shared_ptr< const Mesh > & mesh() const
Definition MRObjectMeshHolder.h:56
ViewportMask showTexture_
Definition MRObjectMeshHolder.h:324
SelectionChangedSignal creasesChangedSignal
Definition MRObjectMeshHolder.h:274
virtual void setAncillaryTexture(MeshTexture texture)
Definition MRObjectMeshHolder.h:198
virtual void updateFacesColorMap(FaceColors &updated)
Definition MRObjectMeshHolder.h:147
virtual bool hasVisualRepresentation() const override
mesh object can be seen if the mesh has at least one edge
ViewportProperty< Color > edgesColor_
Definition MRObjectMeshHolder.h:340
@ other
Angle, normally float. Measure in radians.
Definition MRFeatureObject.h:27
std::vector< ViewportMask > AllVisualizeProperties
Definition MRVisualObject.h:71
@ DIRTY_PRIMITIVE_COLORMAP
Definition MRVisualObject.h:86
@ DIRTY_TEXTURE
Definition MRVisualObject.h:82
@ DIRTY_TEXTURE_PER_FACE
Definition MRVisualObject.h:88
@ DIRTY_VERTS_COLORMAP
Definition MRVisualObject.h:85
@ DIRTY_ALL
Definition MRVisualObject.h:93
@ DIRTY_UV
Definition MRVisualObject.h:77
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRVisualObject.h:31
Definition MRMeshTexture.h:13
mesh and its per-element attributes for ObjectMeshHolder
Definition MRObjectMeshData.h:17
Definition MRObject.h:284