MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectMeshHolder.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRPch/MRBindingMacros.h"
4#include "MRVisualObject.h"
5#include "MRXfBasedCache.h"
6#include "MRMeshPart.h"
7#include "MRObjectMeshData.h"
8
9namespace MR
10{
13
14
15enum class MRMESH_CLASS MeshVisualizePropertyType
16{
28 _count [[maybe_unused]],
29};
30template <> struct IsVisualizeMaskEnum<MeshVisualizePropertyType> : std::true_type {};
31
34class MRMESH_CLASS ObjectMeshHolder : public VisualObject
35{
36public:
37 MRMESH_API ObjectMeshHolder();
38
39 ObjectMeshHolder( ObjectMeshHolder&& ) noexcept = default;
40 ObjectMeshHolder& operator = ( ObjectMeshHolder&& ) noexcept = default;
41
42 constexpr static const char* StaticTypeName() noexcept { return "MeshHolder"; }
43 virtual const char* typeName() const override { return StaticTypeName(); }
44
45 MRMESH_API virtual void applyScale( float scaleFactor ) override;
46
48 MRMESH_API virtual bool hasVisualRepresentation() const override;
49
50 [[nodiscard]] virtual bool hasModel() const override { return bool( data_.mesh ); }
51
52 #ifdef __GNUC__
53 #pragma GCC diagnostic push
54 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
55 #endif
56 const std::shared_ptr< const Mesh >& mesh() const
57 { return reinterpret_cast< const std::shared_ptr<const Mesh>& >( data_.mesh ); }
58 #ifdef __GNUC__
59 #pragma GCC diagnostic pop
60 #endif
61
63 MeshPart meshPart() const { return data_.selectedFaces.any() ? MeshPart{ *data_.mesh, &data_.selectedFaces } : *data_.mesh; }
64
65 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
66 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
67
68 MRMESH_API virtual void setDirtyFlags( uint32_t mask, bool invalidateCaches = true ) override;
69
73 MRMESH_API virtual void setDirtyFlagsFast( uint32_t mask );
74
76 MRMESH_API virtual void invalidateMetricsCache( uint32_t mask );
77
78 const FaceBitSet& getSelectedFaces() const { return data_.selectedFaces; }
79 MRMESH_API virtual void selectFaces( FaceBitSet newSelection );
81 MRMESH_API const Color& getSelectedFacesColor( ViewportId id = {} ) const;
83 MRMESH_API virtual void setSelectedFacesColor( const Color& color, ViewportId id = {} );
84
85 const UndirectedEdgeBitSet& getSelectedEdges() const { return data_.selectedEdges; }
86 MRMESH_API virtual void selectEdges( UndirectedEdgeBitSet newSelection );
88 MRMESH_API const Color& getSelectedEdgesColor( ViewportId id = {} ) const;
90 MRMESH_API virtual void setSelectedEdgesColor( const Color& color, ViewportId id = {} );
91
94
97
100
103
106
108 MRMESH_API void copyAllSolidColors( const ObjectMeshHolder& other );
109
111 const UndirectedEdgeBitSet& creases() const { return data_.creases; }
112 MRMESH_API virtual void setCreases( UndirectedEdgeBitSet creases );
113
115 void setFlatShading( bool on )
116 { return setVisualizeProperty( on, MeshVisualizePropertyType::FlatShading, ViewportMask::all() ); }
117 bool flatShading() const
118 { return getVisualizeProperty( MeshVisualizePropertyType::FlatShading, ViewportMask::any() ); }
119
120 [[nodiscard]] MRMESH_API bool supportsVisualizeProperty( AnyVisualizeMaskEnum type ) const override;
121
125 MRMESH_API const ViewportMask& getVisualizePropertyMask( AnyVisualizeMaskEnum type ) const override;
126
128 const ObjectMeshData& data() const { return data_; }
129
131 virtual void setData( ObjectMeshData && data ) { data_ = std::move( data ); setDirtyFlags( DIRTY_ALL ); }
132
134 virtual void updateData( ObjectMeshData& data ) { std::swap( data_, data ); setDirtyFlags( DIRTY_ALL ); }
135
137 const VertColors& getVertsColorMap() const { return data_.vertColors; }
138
140 virtual void setVertsColorMap( VertColors vertsColorMap ) { data_.vertColors = std::move( vertsColorMap ); setDirtyFlags( DIRTY_VERTS_COLORMAP ); }
141
143 virtual void updateVertsColorMap( VertColors& vertsColorMap ) { std::swap( data_.vertColors, vertsColorMap ); setDirtyFlags( DIRTY_VERTS_COLORMAP ); }
144
145 const FaceColors& getFacesColorMap() const { return data_.faceColors; }
146 virtual void setFacesColorMap( FaceColors facesColorMap ) { data_.faceColors = std::move( facesColorMap ); setDirtyFlags( DIRTY_PRIMITIVE_COLORMAP ); }
147 virtual void updateFacesColorMap( FaceColors& updated ) { std::swap( data_.faceColors, updated ); setDirtyFlags( DIRTY_PRIMITIVE_COLORMAP ); }
148
149 MRMESH_API virtual void setEdgeWidth( float edgeWidth );
150 float getEdgeWidth() const { return edgeWidth_; }
151 MRMESH_API virtual void setPointSize( float size );
152 virtual float getPointSize() const { return pointSize_; }
153
154 const Color& getEdgesColor( ViewportId id = {} ) const { return edgesColor_.get(id); }
155 virtual void setEdgesColor( const Color& color, ViewportId id = {} )
156 { edgesColor_.set( color, id ); needRedraw_ = true; }
157
158 const Color& getPointsColor( ViewportId id = {} ) const { return pointsColor_.get(id); }
159 virtual void setPointsColor( const Color& color, ViewportId id = {} )
160 { pointsColor_.set( color, id ); needRedraw_ = true; }
161
162 const Color& getBordersColor( ViewportId id = {} ) const { return bordersColor_.get( id ); }
163 virtual void setBordersColor( const Color& color, ViewportId id = {} )
164 { bordersColor_.set( color, id ); needRedraw_ = true; }
165
169
171 MRMESH_API const MeshTexture& getTexture() const;
173 [[deprecated]] MRMESH_API MR_BIND_IGNORE virtual void setTexture( MeshTexture texture );
174 [[deprecated]] MRMESH_API MR_BIND_IGNORE virtual void updateTexture( MeshTexture& updated );
175 const Vector<MeshTexture, TextureId>& getTextures() const { return textures_; }
176 virtual void setTextures( Vector<MeshTexture, TextureId> texture ) { textures_ = std::move( texture ); setDirtyFlags( DIRTY_TEXTURE ); }
177 virtual void updateTextures( Vector<MeshTexture, TextureId>& updated ) { std::swap( textures_, updated ); setDirtyFlags( DIRTY_TEXTURE ); }
178
181 virtual void setTexturePerFace( Vector<TextureId, FaceId> texturePerFace ) { data_.texturePerFace = std::move( texturePerFace ); setDirtyFlags( DIRTY_TEXTURE_PER_FACE ); }
182 virtual void updateTexturePerFace( Vector<TextureId, FaceId>& texturePerFace ) { std::swap( data_.texturePerFace, texturePerFace ); setDirtyFlags( DIRTY_TEXTURE_PER_FACE ); }
183 virtual void addTexture( MeshTexture texture ) { textures_.emplace_back( std::move( texture ) ); setDirtyFlags( DIRTY_TEXTURE_PER_FACE ); }
184 const TexturePerFace& getTexturePerFace() const { return data_.texturePerFace; }
185
186 const VertUVCoords& getUVCoords() const { return data_.uvCoordinates; }
187 virtual void setUVCoords( VertUVCoords uvCoordinates ) { data_.uvCoordinates = std::move( uvCoordinates ); setDirtyFlags( DIRTY_UV ); }
188 virtual void updateUVCoords( VertUVCoords& updated ) { std::swap( data_.uvCoordinates, updated ); setDirtyFlags( DIRTY_UV ); }
189
191 MRMESH_API virtual void copyTextureAndColors( const ObjectMeshHolder& src, const VertMap& thisToSrc, const FaceMap& thisToSrcFaces = {} );
192
194 MRMESH_API virtual void copyColors( const ObjectMeshHolder& src, const VertMap& thisToSrc, const FaceMap& thisToSrcFaces = {} );
195
197 const MeshTexture& getAncillaryTexture() const { return ancillaryTexture_; }
198 virtual void setAncillaryTexture( MeshTexture texture ) { ancillaryTexture_ = std::move( texture ); setDirtyFlags( DIRTY_TEXTURE ); }
199
200 const VertUVCoords& getAncillaryUVCoords() const { return ancillaryUVCoordinates_; }
201 virtual void setAncillaryUVCoords( VertUVCoords uvCoordinates ) { ancillaryUVCoordinates_ = std::move( uvCoordinates ); setDirtyFlags( DIRTY_UV ); }
202 void updateAncillaryUVCoords( VertUVCoords& updated ) { std::swap( ancillaryUVCoordinates_, updated ); setDirtyFlags( DIRTY_UV ); }
203
204 bool hasAncillaryTexture() const { return !ancillaryUVCoordinates_.empty() && !ancillaryTexture_.pixels.empty(); }
205 MRMESH_API void clearAncillaryTexture();
206
207 MRMESH_API virtual bool getRedrawFlag( ViewportMask viewportMask ) const override;
208
210 [[nodiscard]] MRMESH_API bool isMeshClosed() const;
211
214 [[nodiscard]] MRMESH_API virtual Box3f getWorldBox( ViewportId = {} ) const override;
215
217 [[nodiscard]] MRMESH_API size_t numSelectedFaces() const;
218
220 [[nodiscard]] MRMESH_API size_t numSelectedEdges() const;
221
223 [[nodiscard]] MRMESH_API size_t numCreaseEdges() const;
224
226 [[nodiscard]] MRMESH_API double totalArea() const;
227
229 [[nodiscard]] MRMESH_API double selectedArea() const;
230
232 [[nodiscard]] MRMESH_API double volume() const;
233
235 [[nodiscard]] MRMESH_API float avgEdgeLen() const;
236
238 [[nodiscard]] MRMESH_API size_t numUndirectedEdges() const;
239
241 [[nodiscard]] MRMESH_API size_t numHoles() const;
242
244 [[nodiscard]] MRMESH_API size_t numComponents() const;
245
247 [[nodiscard]] MRMESH_API size_t numHandles() const;
248
250 [[nodiscard]] MRMESH_API virtual size_t heapBytes() const override;
251
253 [[nodiscard]] const char * serializeFormat() const { return serializeFormat_; }
254
256 [[nodiscard]] MRMESH_API const char * actualSerializeFormat() const;
257
260 MRMESH_API void setSerializeFormat( const char * newFormat );
261
263 MRMESH_API void resetFrontColor() override;
265 MRMESH_API void resetColors() override;
266
267 MRMESH_API virtual size_t getModelHash() const override;
268 MRMESH_API virtual bool sameModels( const Object& other ) const override;
269
275
277 using MeshChangedSignal = Signal<void( uint32_t mask )>;
279
280protected:
282
285
288
289 mutable std::optional<size_t> numHoles_;
290 mutable std::optional<size_t> numComponents_;
291 mutable std::optional<size_t> numUndirectedEdges_;
292 mutable std::optional<size_t> numHandles_;
293 mutable std::optional<bool> meshIsClosed_;
294 mutable std::optional<size_t> numSelectedFaces_, numSelectedEdges_, numCreaseEdges_;
295 mutable std::optional<double> totalArea_, selectedArea_;
296 mutable std::optional<double> volume_;
297 mutable std::optional<float> avgEdgeLen_;
299
300 ObjectMeshHolder( const ObjectMeshHolder& other ) = default;
301
303 MRMESH_API virtual void swapBase_( Object& other ) override;
306 MRMESH_API virtual void swapSignals_( Object& other ) override;
307
308 MRMESH_API virtual Expected<std::future<Expected<void>>> serializeModel_( const std::filesystem::path& path ) const override;
309
310 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
311
312 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
313
314 MRMESH_API Expected<void> deserializeModel_( const std::filesystem::path& path, ProgressCallback progressCb = {} ) override;
315 MRMESH_API virtual Expected<void> setSharedModel_( const Object& other ) override;
316
318 MRMESH_API void setAllVisualizeProperties_( const AllVisualizeProperties& properties, std::size_t& pos ) override;
319
320 MRMESH_API virtual Box3f computeBoundingBox_() const override;
321
322 MRMESH_API virtual void setupRenderObject_() const override;
323
325 ViewportMask showFaces_ = ViewportMask::all();
328 ViewportMask showSelectedEdges_ = ViewportMask::all();
329 ViewportMask showSelectedFaces_ = ViewportMask::all();
333
336 ViewportMask shadingEnabled_ = ViewportMask::all();
337
339
345
346 float edgeWidth_{ 0.5f };
347 float pointSize_{ 5.f };
348
349private:
351 void setDefaultColors_();
352
354 void setDefaultSceneProperties_();
355
356 const char * serializeFormat_ = nullptr;
357};
358
361[[nodiscard]] MRMESH_API const std::string & defaultSerializeMeshFormat();
362
367MRMESH_API void setDefaultSerializeMeshFormat( std::string newFormat );
368
369}
Definition MRVisualObject.h:54
Definition MRObjectMeshHolder.h:35
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
Definition MRViewportProperty.h:17
Visual Object.
Definition MRVisualObject.h:116
Vector< MeshTexture, TextureId > textures_
Texture options.
Definition MRObjectMeshHolder.h:284
virtual MRMESH_API void copyColors(const ObjectMeshHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
copies vertex colors from given source object
virtual void updateTexturePerFace(Vector< TextureId, FaceId > &texturePerFace)
Definition MRObjectMeshHolder.h:182
MRMESH_API size_t numUndirectedEdges() const
returns cached information about the number of undirected edges in the mesh
MRMESH_API const Color & getSelectedFacesColor(ViewportId id={}) const
returns colors of selected triangles
ViewportProperty< Color > faceSelectionColor_
Definition MRObjectMeshHolder.h:344
OnlyOddFragments
Definition MRObjectMeshHolder.h:25
virtual void updateTextures(Vector< MeshTexture, TextureId > &updated)
Definition MRObjectMeshHolder.h:177
MRMESH_API AllVisualizeProperties getAllVisualizeProperties() const override
get all visualize properties masks
const Color & getEdgesColor(ViewportId id={}) const
Definition MRObjectMeshHolder.h:154
virtual MRMESH_API void setupRenderObject_() const override
const FaceColors & getFacesColorMap() const
Definition MRObjectMeshHolder.h:145
virtual bool hasModel() const override
Definition MRObjectMeshHolder.h:50
SelectionChangedSignal edgeSelectionChangedSignal
Definition MRObjectMeshHolder.h:273
MRMESH_API virtual MR_BIND_IGNORE void setTexture(MeshTexture texture)
for backward compatibility
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
virtual MRMESH_API void setEdgeWidth(float edgeWidth)
MRMESH_API void deserializeFields_(const Json::Value &root) override
std::optional< size_t > numHoles_
Definition MRObjectMeshHolder.h:289
virtual MRMESH_API void setPointsColorsForAllViewports(ViewportProperty< Color > val)
ViewportProperty< Color > edgeSelectionColor_
Definition MRObjectMeshHolder.h:343
virtual void addTexture(MeshTexture texture)
Definition MRObjectMeshHolder.h:183
ViewportMask flatShading_
toggle per-face or per-vertex properties
Definition MRObjectMeshHolder.h:332
virtual MRMESH_API void setDirtyFlags(uint32_t mask, bool invalidateCaches=true) override
SelectedFaces
Definition MRObjectMeshHolder.h:21
Edges
Definition MRObjectMeshHolder.h:19
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
virtual MRMESH_API Box3f getWorldBox(ViewportId={}) const override
MRMESH_API double totalArea() const
returns cached summed area of mesh triangles
ViewportProperty< XfBasedCache< Box3f > > worldBox_
Definition MRObjectMeshHolder.h:298
virtual MRMESH_API void setDirtyFlagsFast(uint32_t mask)
virtual MRMESH_API void setCreases(UndirectedEdgeBitSet creases)
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
VertUVCoords ancillaryUVCoordinates_
vertices coordinates in ancillary texture
Definition MRObjectMeshHolder.h:287
MRMESH_API void setAllVisualizeProperties_(const AllVisualizeProperties &properties, std::size_t &pos) override
set all visualize properties masks
MRMESH_API const ViewportProperty< Color > & getBordersColorsForAllViewports() const
virtual void updateUVCoords(VertUVCoords &updated)
Definition MRObjectMeshHolder.h:188
virtual MRMESH_API void setPointSize(float size)
SelectionChangedSignal faceSelectionChangedSignal
Definition MRObjectMeshHolder.h:272
ObjectMeshHolder(ObjectMeshHolder &&) noexcept=default
virtual MRMESH_API void setSelectedFacesColorsForAllViewports(ViewportProperty< Color > val)
ObjectMeshData data_
Definition MRObjectMeshHolder.h:281
ViewportMask showPoints_
Definition MRObjectMeshHolder.h:327
Points
Definition MRObjectLinesHolder.h:13
virtual MRMESH_API bool hasVisualRepresentation() const override
mesh object can be seen if the mesh has at least one edge
MRMESH_API const ViewportProperty< Color > & getSelectedEdgesColorsForAllViewports() const
virtual MRMESH_API void setSelectedEdgesColorsForAllViewports(ViewportProperty< Color > val)
std::optional< double > volume_
Definition MRObjectMeshHolder.h:296
MRMESH_API virtual MR_BIND_IGNORE void updateTexture(MeshTexture &updated)
virtual MRMESH_API std::shared_ptr< Object > shallowClone() const override
virtual MRMESH_API size_t heapBytes() const override
returns the amount of memory this object occupies on heap
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
virtual MRMESH_API size_t getModelHash() const override
return hash of model (or hash object pointer if object has no model)
std::optional< size_t > numHandles_
Definition MRObjectMeshHolder.h:292
MRMESH_API size_t numCreaseEdges() const
returns cached information about the number of crease undirected edges in the mesh
void updateAncillaryUVCoords(VertUVCoords &updated)
Definition MRObjectMeshHolder.h:202
const FaceBitSet & getSelectedFaces() const
Definition MRObjectMeshHolder.h:78
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
virtual MRMESH_API void selectEdges(UndirectedEdgeBitSet newSelection)
MRMESH_API const char * actualSerializeFormat() const
returns overriden file extension used to serialize mesh inside this object if set,...
void setFlatShading(bool on)
sets flat (true) or smooth (false) shading
Definition MRObjectMeshHolder.h:115
MRMESH_API void setDefaultSerializeMeshFormat(std::string newFormat)
MRMESH_API const MeshTexture & getTexture() const
returns first texture in the vector. If there is no textures, returns empty texture
const UndirectedEdgeBitSet & getSelectedEdges() const
Definition MRObjectMeshHolder.h:85
std::optional< float > avgEdgeLen_
Definition MRObjectMeshHolder.h:297
virtual void setPointsColor(const Color &color, ViewportId id={})
Definition MRObjectMeshHolder.h:159
ViewportMask showBordersHighlight_
Definition MRObjectMeshHolder.h:330
virtual const char * typeName() const override
Definition MRObjectMeshHolder.h:43
ObjectMeshHolder(const ObjectMeshHolder &other)=default
MRMESH_API double volume() const
returns cached volume of space surrounded by the mesh, which is valid only if mesh is closed
MRMESH_API void setSerializeFormat(const char *newFormat)
PolygonOffsetFromCamera
Definition MRObjectMeshHolder.h:27
virtual MRMESH_API void serializeFields_(Json::Value &root) const override
std::optional< size_t > numComponents_
Definition MRObjectMeshHolder.h:290
virtual MRMESH_API void setSelectedEdgesColor(const Color &color, ViewportId id={})
sets colors of selected edges
virtual MRMESH_API void selectFaces(FaceBitSet newSelection)
virtual void setTextures(Vector< MeshTexture, TextureId > texture)
Definition MRObjectMeshHolder.h:176
virtual MRMESH_API Expected< std::future< Expected< void > > > serializeModel_(const std::filesystem::path &path) const override
MRMESH_API const std::string & defaultSerializeMeshFormat()
virtual MRMESH_API Box3f computeBoundingBox_() const override
virtual MRMESH_API bool getRedrawFlag(ViewportMask viewportMask) const override
returns true if the object must be redrawn (due to dirty flags) in one of specified viewports
const VertUVCoords & getAncillaryUVCoords() const
Definition MRObjectMeshHolder.h:200
virtual MRMESH_API void setBordersColorsForAllViewports(ViewportProperty< Color > val)
virtual void setAncillaryUVCoords(VertUVCoords uvCoordinates)
Definition MRObjectMeshHolder.h:201
MRMESH_API const Color & getSelectedEdgesColor(ViewportId id={}) const
returns colors of selected edges
MRMESH_API float avgEdgeLen() const
returns cached average edge length
MRMESH_API size_t numHoles() const
returns cached information about the number of holes in the mesh
FlatShading
Definition MRObjectMeshHolder.h:24
SelectedEdges
Definition MRObjectMeshHolder.h:22
MeshTexture ancillaryTexture_
Definition MRObjectMeshHolder.h:286
bool flatShading() const
Definition MRObjectMeshHolder.h:117
MRMESH_API void clearAncillaryTexture()
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
MRMESH_API void resetColors() override
reset all object colors to their default values from the current theme
MRMESH_API void resetFrontColor() override
reset basic object colors to their default values from the current theme
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 MRMESH_API void swapBase_(Object &other) override
swaps this object with other
virtual void updateData(ObjectMeshData &data)
swaps whole ObjectMeshData with given argument
Definition MRObjectMeshHolder.h:134
ViewportProperty< Color > bordersColor_
Definition MRObjectMeshHolder.h:342
virtual MRMESH_API void setEdgesColorsForAllViewports(ViewportProperty< Color > val)
MRMESH_API void copyAllSolidColors(const ObjectMeshHolder &other)
set all object solid colors (front/back/etc.) from other object for all viewports
ViewportMask polygonOffset_
Definition MRObjectMeshHolder.h:331
MRMESH_API size_t numSelectedEdges() const
returns cached information about the number of selected undirected edges in the mesh
virtual MRMESH_API Expected< void > setSharedModel_(const Object &other) override
shares model from other object
virtual MRMESH_API void swapSignals_(Object &other) override
MRMESH_API size_t numSelectedFaces() const
returns cached information about the number of selected faces in the mesh
virtual MRMESH_API void invalidateMetricsCache(uint32_t mask)
invalidates same caches with mesh metrics (area, volume, ...) as by setDirtyFlags( mask )
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 MRMESH_API bool sameModels(const Object &other) const override
return true if model of current object equals to model (the same) of other
MRMESH_API const ViewportMask & getVisualizePropertyMask(AnyVisualizeMaskEnum type) const override
returns mask of viewports where given property is set
MRMESH_API const ViewportProperty< Color > & getEdgesColorsForAllViewports() const
virtual MRMESH_API void copyTextureAndColors(const ObjectMeshHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
copies texture, UV-coordinates and vertex colors from given source object
virtual void setFacesColorMap(FaceColors facesColorMap)
Definition MRObjectMeshHolder.h:146
virtual void setData(ObjectMeshData &&data)
sets whole new ObjectMeshData
Definition MRObjectMeshHolder.h:131
float getEdgeWidth() const
Definition MRObjectMeshHolder.h:150
std::optional< bool > meshIsClosed_
Definition MRObjectMeshHolder.h:293
MRMESH_API bool isMeshClosed() const
returns cached information whether the mesh is closed
MRMESH_API const ViewportProperty< Color > & getSelectedFacesColorsForAllViewports() const
const ObjectMeshData & data() const
provides read-only access to whole ObjectMeshData
Definition MRObjectMeshHolder.h:128
MRMESH_API size_t numHandles() const
returns cached information about the number of handles in the mesh
virtual MRMESH_API void setSelectedFacesColor(const Color &color, ViewportId id={})
sets colors of selected triangles
MRMESH_API size_t numComponents() const
returns cached information about the number of components in the mesh
virtual MRMESH_API std::shared_ptr< Object > clone() const override
MRMESH_API bool supportsVisualizeProperty(AnyVisualizeMaskEnum type) const override
Returns true if this class supports the property type. Otherwise passing it to the functions below is...
MRMESH_API const ViewportProperty< Color > & getPointsColorsForAllViewports() const
MRMESH_API Expected< void > deserializeModel_(const std::filesystem::path &path, ProgressCallback progressCb={}) override
Reads model from file.
BordersHighlight
Definition MRObjectMeshHolder.h:26
std::optional< size_t > numCreaseEdges_
Definition MRObjectMeshHolder.h:294
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
MRMESH_API double selectedArea() const
returns cached area of selected triangles
virtual void updateFacesColorMap(FaceColors &updated)
Definition MRObjectMeshHolder.h:147
ViewportProperty< Color > edgesColor_
Definition MRObjectMeshHolder.h:340
virtual MRMESH_API void applyScale(float scaleFactor) override
scale object size (all point positions)
MRMESH_API ObjectMeshHolder()
std::vector< ViewportMask > AllVisualizeProperties
Definition MRVisualObject.h:72
@ DIRTY_PRIMITIVE_COLORMAP
Definition MRVisualObject.h:87
@ DIRTY_TEXTURE
Definition MRVisualObject.h:83
@ DIRTY_TEXTURE_PER_FACE
Definition MRVisualObject.h:89
@ DIRTY_VERTS_COLORMAP
Definition MRVisualObject.h:86
@ DIRTY_ALL
Definition MRVisualObject.h:94
@ DIRTY_UV
Definition MRVisualObject.h:78
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12
Definition MRVisualObject.h:32
Definition MRMeshTexture.h:13
mesh and its per-element attributes for ObjectMeshHolder
Definition MRObjectMeshData.h:17
Definition MRObject.h:284