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
35{
36public:
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 );
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 );
90 MRMESH_API virtual void setSelectedEdgesColor( const Color& color, ViewportId id = {} );
91
94
97
100
103
106
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
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
173 [[deprecated]] MRMESH_API MR_BIND_IGNORE virtual void setTexture( MeshTexture texture );
174 [[deprecated]] MRMESH_API MR_BIND_IGNORE virtual void updateTexture( MeshTexture& updated );
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
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(); }
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
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
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;
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
333
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}
#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
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 MRColor.h:12
Definition MRVisualObject.h:31
Definition MRMeshTexture.h:13
mesh and its per-element attributes for ObjectMeshHolder
Definition MRObjectMeshData.h:17
Definition MRObject.h:284
Definition MRSignal.h:27