MeshLib Documentation
Loading...
Searching...
No Matches
MR::ObjectVoxels Class Reference

#include <MRObjectVoxels.h>

+ Inheritance diagram for MR::ObjectVoxels:

Classes

struct  VolumeRenderingParams
 

Public Types

using IsoSurfaceChangedSignal = Signal<void()>
 signal about Iso-surface changes (from updateIsoSurface)
 
- Public Types inherited from MR::ObjectMeshHolder
using SelectionChangedSignal = Signal<void()>
 signal about face selection changing, triggered in selectFaces
 
- Public Types inherited from MR::Object
using XfChangedSignal = Signal<void() >
 

Public Member Functions

MRVOXELS_API ObjectVoxels ()
 
ObjectVoxelsoperator= (ObjectVoxels &&) noexcept=default
 
 ObjectVoxels (ObjectVoxels &&) noexcept=default
 
virtual ~ObjectVoxels ()=default
 
virtual const char * typeName () const override
 
virtual MRVOXELS_API void applyScale (float scaleFactor) override
 scale object size (all point positions)
 
const std::shared_ptr< Mesh > & surface () const
 Returns iso surface, empty if iso value is not set.
 
const VdbVolume & vdbVolume () const
 Return VdbVolume.
 
VdbVolume & varVdbVolume ()
 
const FloatGridgrid () const
 Returns Float grid which contains voxels data, see more on openvdb::FloatGrid.
 
virtual bool hasModel () const override
 
const Vector3i & dimensions () const
 Returns dimensions of voxel objects.
 
float getIsoValue () const
 Returns current iso value.
 
const Histogramhistogram () const
 Returns histogram.
 
const Vector3f & voxelSize () const
 
virtual MRVOXELS_API std::vector< std::string > getInfoLines () const override
 return several info lines that can better describe the object in the UI
 
virtual std::string getClassName () const override
 return human readable name of subclass
 
MRVOXELS_API void construct (const SimpleVolume &simpleVolume, const std::optional< Vector2f > &minmax={}, ProgressCallback cb={}, bool normalPlusGrad=false)
 
MRVOXELS_API void construct (const SimpleVolumeMinMax &simpleVolumeMinMax, ProgressCallback cb={}, bool normalPlusGrad=false)
 
MRVOXELS_API void construct (const FloatGrid &grid, const Vector3f &voxelSize, const std::optional< Vector2f > &minmax={})
 
MRVOXELS_API void construct (const VdbVolume &vdbVolume)
 Clears all internal data and then creates grid and calculates histogram (surface is not built, call updateHistogramAndSurface)
 
MRVOXELS_API void updateHistogramAndSurface (ProgressCallback cb={})
 
virtual MRVOXELS_API Expected< bool > setIsoValue (float iso, ProgressCallback cb={}, bool updateSurface=true)
 
MRVOXELS_API std::shared_ptr< MeshupdateIsoSurface (std::shared_ptr< Mesh > mesh)
 
MRVOXELS_API VdbVolume updateVdbVolume (VdbVolume vdbVolume)
 
MRVOXELS_API Histogram updateHistogram (Histogram histogram)
 
MRVOXELS_API Expected< std::shared_ptr< Mesh > > recalculateIsoSurface (float iso, ProgressCallback cb={}) const
 Calculates and return new mesh or error message.
 
MRVOXELS_API Expected< std::shared_ptr< Mesh > > recalculateIsoSurface (const VdbVolume &volume, float iso, ProgressCallback cb={}) const
 Same as above, but takes external volume.
 
MRVOXELS_API Histogram recalculateHistogram (std::optional< Vector2f > minmax, ProgressCallback cb={}) const
 Calculates and returns new histogram.
 
bool getDualMarchingCubes () const
 returns true if the iso-surface is built using Dual Marching Cubes algorithm or false if using Standard Marching Cubes
 
virtual MRVOXELS_API void setDualMarchingCubes (bool on, bool updateSurface=true, ProgressCallback cb={})
 
virtual void setVoxelPointPositioner (VoxelPointPositioner positioner)
 set voxel point positioner for Marching Cubes (only for Standard Marching Cubes)
 
virtual MRVOXELS_API void setActiveBounds (const Box3i &activeBox, ProgressCallback cb={}, bool updateSurface=true)
 
MRVOXELS_API const Box3i & getActiveBounds () const
 
virtual MRVOXELS_API void invalidateActiveBoundsCaches ()
 Call this function in main thread post processing if you call setActiveBounds from progress bar thread.
 
const VoxelBitSet & getSelectedVoxels () const
 
void selectVoxels (const VoxelBitSet &selectedVoxels)
 
const VoxelBitSet & getVolumeRenderActiveVoxels () const
 get active (visible) voxels
 
MRVOXELS_API void setVolumeRenderActiveVoxels (const VoxelBitSet &activeVoxels)
 set active (visible) voxels (using only in Volume Rendering mode)
 
MRVOXELS_API VoxelId getVoxelIdByCoordinate (const Vector3i &coord) const
 
MRVOXELS_API VoxelId getVoxelIdByPoint (const Vector3f &point) const
 
MRVOXELS_API Vector3i getCoordinateByVoxelId (VoxelId id) const
 
const VolumeIndexergetVolumeIndexer () const
 Returns indexer with more options.
 
MRVOXELS_API bool prepareDataForVolumeRendering (ProgressCallback cb={}) const
 
bool isVolumeRenderingEnabled () const
 
MRVOXELS_API void enableVolumeRendering (bool on)
 
std::unique_ptr< SimpleVolume > getVolumeRenderingData () const
 
const VolumeRenderingParamsgetVolumeRenderingParams () const
 
MRVOXELS_API void setVolumeRenderingParams (const VolumeRenderingParams &params)
 
virtual MRVOXELS_API bool hasVisualRepresentation () const override
 mesh object can be seen if the mesh has at least one edge
 
MRVOXELS_API void setMaxSurfaceVertices (int maxVerts)
 sets top limit on the number of vertices in the iso-surface
 
int getMaxSurfaceVertices () const
 gets top limit on the number of vertices in the iso-surface
 
virtual MRVOXELS_API std::shared_ptr< Objectclone () const override
 
virtual MRVOXELS_API std::shared_ptr< ObjectshallowClone () const override
 
virtual MRVOXELS_API void setDirtyFlags (uint32_t mask, bool invalidateCaches=true) override
 
MRVOXELS_API size_t activeVoxels () const
 returns cached information about the number of active voxels
 
 ObjectVoxels (ProtectedStruct, const ObjectVoxels &obj)
 
virtual MRVOXELS_API size_t heapBytes () const override
 returns the amount of memory this object occupies on heap
 
const char * serializeFormat () const
 returns file extension used to serialize the voxels
 
MRVOXELS_API void setSerializeFormat (const char *newFormat)
 sets file extension used to serialize the voxels: must be not null and must start from '.'
 
- Public Member Functions inherited from MR::ObjectMeshHolder
MRMESH_API ObjectMeshHolder ()
 
 ObjectMeshHolder (ObjectMeshHolder &&) noexcept=default
 
ObjectMeshHolderoperator= (ObjectMeshHolder &&) noexcept=default
 
const std::shared_ptr< const Mesh > & mesh () const
 
MeshPart meshPart () const
 
const FaceBitSet & getSelectedFaces () const
 
virtual MRMESH_API void selectFaces (FaceBitSet newSelection)
 
MRMESH_API const ColorgetSelectedFacesColor (ViewportId id={}) const
 returns colors of selected triangles
 
virtual MRMESH_API void setSelectedFacesColor (const Color &color, ViewportId id={})
 sets colors of selected triangles
 
const UndirectedEdgeBitSet & getSelectedEdges () const
 
virtual MRMESH_API void selectEdges (UndirectedEdgeBitSet newSelection)
 
MRMESH_API const ColorgetSelectedEdgesColor (ViewportId id={}) const
 returns colors of selected edges
 
virtual MRMESH_API void setSelectedEdgesColor (const Color &color, ViewportId id={})
 sets colors of selected edges
 
MRMESH_API const ViewportProperty< Color > & getSelectedEdgesColorsForAllViewports () const
 
virtual MRMESH_API void setSelectedEdgesColorsForAllViewports (ViewportProperty< Color > val)
 
MRMESH_API const ViewportProperty< Color > & getSelectedFacesColorsForAllViewports () const
 
virtual MRMESH_API void setSelectedFacesColorsForAllViewports (ViewportProperty< Color > val)
 
MRMESH_API const ViewportProperty< Color > & getEdgesColorsForAllViewports () const
 
virtual MRMESH_API void setEdgesColorsForAllViewports (ViewportProperty< Color > val)
 
MRMESH_API const ViewportProperty< Color > & getBordersColorsForAllViewports () const
 
virtual MRMESH_API void setBordersColorsForAllViewports (ViewportProperty< Color > val)
 
const UndirectedEdgeBitSet & creases () const
 Edges on mesh, that will have sharp visualization even with smooth shading.
 
virtual MRMESH_API void setCreases (UndirectedEdgeBitSet creases)
 
void setFlatShading (bool on)
 sets flat (true) or smooth (false) shading
 
bool flatShading () const
 
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 illegal.
 
MRMESH_API AllVisualizeProperties getAllVisualizeProperties () const override
 get all visualize properties masks
 
MRMESH_API const ViewportMaskgetVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
 
const FaceColors & getFacesColorMap () const
 
virtual void setFacesColorMap (FaceColors facesColorMap)
 
virtual void updateFacesColorMap (FaceColors &updated)
 
virtual MRMESH_API void setEdgeWidth (float edgeWidth)
 
float getEdgeWidth () const
 
virtual MRMESH_API void setPointSize (float size)
 
virtual float getPointSize () const
 
const ColorgetEdgesColor (ViewportId id={}) const
 
virtual void setEdgesColor (const Color &color, ViewportId id={})
 
const ColorgetPointsColor (ViewportId id={}) const
 
virtual void setPointsColor (const Color &color, ViewportId id={})
 
const ColorgetBordersColor (ViewportId id={}) const
 
virtual void setBordersColor (const Color &color, ViewportId id={})
 
 ObjectMeshHolder (ProtectedStruct, const ObjectMeshHolder &obj)
 
MRMESH_API const MeshTexturegetTexture () const
 returns first texture in the vector. If there is no textures, returns empty texture
 
virtual MRMESH_API void setTexture (MeshTexture texture)
 
virtual MRMESH_API void updateTexture (MeshTexture &updated)
 
const Vector< MeshTexture, TextureId > & getTextures () const
 
virtual void setTextures (Vector< MeshTexture, TextureId > texture)
 
virtual void updateTextures (Vector< MeshTexture, TextureId > &updated)
 
virtual void setTexturePerFace (Vector< TextureId, FaceId > texturePerFace)
 
virtual void updateTexturePerFace (Vector< TextureId, FaceId > &texturePerFace)
 
virtual void addTexture (MeshTexture texture)
 
const TexturePerFace & getTexturePerFace () const
 
const VertUVCoords & getUVCoords () const
 
virtual void setUVCoords (VertUVCoords uvCoordinates)
 
virtual void updateUVCoords (VertUVCoords &updated)
 
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
 
MRMESH_API void copyColors (const VisualObject &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={}) override
 copies point colors from given source object
 
const MeshTexturegetAncillaryTexture () const
 
virtual void setAncillaryTexture (MeshTexture texture)
 
const VertUVCoords & getAncillaryUVCoords () const
 
virtual void setAncillaryUVCoords (VertUVCoords uvCoordinates)
 
void updateAncillaryUVCoords (VertUVCoords &updated)
 
bool hasAncillaryTexture () const
 
MRMESH_API void clearAncillaryTexture ()
 
MRMESH_API uint32_t getNeededNormalsRenderDirtyValue (ViewportMask viewportMask) const
 returns dirty flag of currently using normal type if they are dirty in render representation
 
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
 
virtual MRMESH_API void resetDirtyExeptMask (uint32_t mask) const
 reset dirty flags without some specific bits (useful for lazy normals update)
 
MRMESH_API bool isMeshClosed () const
 returns cached information whether the mesh is closed
 
virtual MRMESH_API Box3f getWorldBox (ViewportId={}) const override
 
MRMESH_API size_t numSelectedFaces () const
 returns cached information about the number of selected faces in the mesh
 
MRMESH_API size_t numSelectedEdges () const
 returns cached information about the number of selected undirected edges in the mesh
 
MRMESH_API size_t numCreaseEdges () const
 returns cached information about the number of crease undirected edges in the mesh
 
MRMESH_API double totalArea () const
 returns cached summed area of mesh triangles
 
MRMESH_API double selectedArea () const
 returns cached area of selected triangles
 
MRMESH_API double volume () const
 returns cached volume of space surrounded by the mesh, which is valid only if mesh is closed
 
MRMESH_API float avgEdgeLen () const
 returns cached average edge length
 
MRMESH_API size_t numUndirectedEdges () const
 returns cached information about the number of undirected edges in the mesh
 
MRMESH_API size_t numHoles () const
 returns cached information about the number of holes in the mesh
 
MRMESH_API size_t numComponents () const
 returns cached information about the number of components in the mesh
 
MRMESH_API size_t numHandles () const
 returns cached information about the number of handles in the mesh
 
const char * saveMeshFormat () const
 returns file extension used to serialize the mesh
 
MRMESH_API void setSaveMeshFormat (const char *newFormat)
 sets file extension used to serialize the mesh: must be not null and must start from '.'
 
- Public Member Functions inherited from MR::VisualObject
MRMESH_API VisualObject ()
 
 VisualObject (VisualObject &&)=default
 
VisualObjectoperator= (VisualObject &&)=default
 
virtual ~VisualObject ()=default
 
MRMESH_API void setVisualizeProperty (bool value, AnyVisualizeMaskEnum type, ViewportMask viewportMask)
 set visual property in all viewports specified by the mask
 
virtual MRMESH_API void setVisualizePropertyMask (AnyVisualizeMaskEnum type, ViewportMask viewportMask)
 set visual property mask
 
MRMESH_API bool getVisualizeProperty (AnyVisualizeMaskEnum type, ViewportMask viewportMask) const
 returns true if the property is set at least in one viewport specified by the mask
 
MRMESH_API void toggleVisualizeProperty (AnyVisualizeMaskEnum type, ViewportMask viewportMask)
 toggle visual property in all viewports specified by the mask
 
void setAllVisualizeProperties (const AllVisualizeProperties &properties)
 set all visualize properties masks
 
void showLabels (bool on)
 shows/hides labels
 
bool showLabels () const
 
void showName (bool on)
 shows/hides object name in all viewports
 
bool showName () const
 returns whether object name is shown in any viewport
 
MRMESH_API const ColorgetFrontColor (bool selected=true, ViewportId viewportId={}) const
 returns color of object when it is selected/not-selected (depending on argument) in given viewport
 
virtual MRMESH_API void setFrontColor (const Color &color, bool selected, ViewportId viewportId={})
 sets color of object when it is selected/not-selected (depending on argument) in given viewport
 
virtual MRMESH_API const ViewportProperty< Color > & getFrontColorsForAllViewports (bool selected=true) const
 returns color of object when it is selected/not-selected (depending on argument) in all viewports
 
virtual MRMESH_API void setFrontColorsForAllViewports (ViewportProperty< Color > val, bool selected=true)
 sets color of object when it is selected/not-selected (depending on argument) in all viewports
 
virtual MRMESH_API const ViewportProperty< Color > & getBackColorsForAllViewports () const
 returns backward color of object in all viewports
 
virtual MRMESH_API void setBackColorsForAllViewports (ViewportProperty< Color > val)
 sets backward color of object in all viewports
 
MRMESH_API const ColorgetBackColor (ViewportId viewportId={}) const
 returns backward color of object in given viewport
 
virtual MRMESH_API void setBackColor (const Color &color, ViewportId viewportId={})
 sets backward color of object in given viewport
 
MRMESH_API const uint8_t & getGlobalAlpha (ViewportId viewportId={}) const
 returns global transparency alpha of object in given viewport
 
virtual MRMESH_API void setGlobalAlpha (uint8_t alpha, ViewportId viewportId={})
 sets global transparency alpha of object in given viewport
 
virtual MRMESH_API const ViewportProperty< uint8_t > & getGlobalAlphaForAllViewports () const
 returns global transparency alpha of object in all viewports
 
virtual MRMESH_API void setGlobalAlphaForAllViewports (ViewportProperty< uint8_t > val)
 sets global transparency alpha of object in all viewports
 
MRMESH_API const ColorgetLabelsColor (ViewportId viewportId={}) const
 
virtual MRMESH_API void setLabelsColor (const Color &color, ViewportId viewportId={})
 
MRMESH_API const ViewportProperty< Color > & getLabelsColorsForAllViewports () const
 
virtual MRMESH_API void setLabelsColorsForAllViewports (ViewportProperty< Color > val)
 
MRMESH_API uint32_t getDirtyFlags () const
 returns current dirty flags for the object
 
MRMESH_API void resetDirty () const
 resets all dirty flags (except for cache flags that will be reset automatically on cache update)
 
MRMESH_API Box3f getBoundingBox () const
 returns cached bounding box of this object in local coordinates
 
bool isPickable (ViewportMask viewportMask=ViewportMask::any()) const
 whether the object can be picked (by mouse) in any of given viewports
 
virtual MRMESH_API void setPickable (bool on, ViewportMask viewportMask=ViewportMask::all())
 sets the object as can/cannot be picked (by mouse) in all of given viewports
 
const VertColors & getVertsColorMap () const
 returns per-vertex colors of the object
 
virtual void setVertsColorMap (VertColors vertsColorMap)
 sets per-vertex colors of the object
 
virtual void updateVertsColorMap (VertColors &vertsColorMap)
 swaps per-vertex colors of the object with given argument
 
ColoringType getColoringType () const
 returns the current coloring mode of the object
 
virtual MRMESH_API void setColoringType (ColoringType coloringType)
 sets coloring mode of the object with given argument
 
float getShininess () const
 returns the current shininess visual value
 
virtual void setShininess (float shininess)
 sets shininess visual value of the object with given argument
 
float getSpecularStrength () const
 returns intensity of reflections
 
virtual void setSpecularStrength (float specularStrength)
 sets intensity of reflections
 
float getAmbientStrength () const
 returns intensity of non-directional light
 
virtual void setAmbientStrength (float ambientStrength)
 sets intensity of non-directional light
 
const std::vector< PositionedText > & getLabels () const
 
virtual void setLabels (std::vector< PositionedText > labels)
 
virtual MRMESH_API bool render (const ModelRenderParams &) const
 
virtual MRMESH_API void renderForPicker (const ModelBaseRenderParams &, unsigned) const
 draws this object for picking
 
virtual MRMESH_API void renderUi (const UiRenderParams &params) const
 draws this object for 2d UI
 
 VisualObject (ProtectedStruct, const VisualObject &obj)
 this ctor is public only for std::make_shared used inside clone()
 
MRMESH_API bool useDefaultScenePropertiesOnDeserialization () const
 
MRMESH_API void setUseDefaultScenePropertiesOnDeserialization (bool useDefaultScenePropertiesOnDeserialization)
 
- Public Member Functions inherited from MR::Object
 Object ()=default
 
 Object (Object &&) noexcept=default
 
Objectoperator= (Object &&) noexcept=default
 
virtual ~Object ()=default
 
template<typename T >
T * asType ()
 
template<typename T >
const T * asType () const
 
const std::string & name () const
 
virtual void setName (std::string name)
 
MRMESH_API std::shared_ptr< const Objectfind (const std::string_view &name) const
 finds a direct child by name
 
std::shared_ptr< Objectfind (const std::string_view &name)
 
template<typename T >
std::shared_ptr< const T > find () const
 finds a direct child by type
 
template<typename T >
std::shared_ptr< T > find ()
 
template<typename T >
std::shared_ptr< const T > find (const std::string_view &name) const
 finds a direct child by name and type
 
template<typename T >
std::shared_ptr< T > find (const std::string_view &name)
 
const AffineXf3f & xf (ViewportId id={}, bool *isDef=nullptr) const
 
virtual MRMESH_API void setXf (const AffineXf3f &xf, ViewportId id={})
 
virtual MRMESH_API void resetXf (ViewportId id={})
 forgets specific transform in given viewport (or forgets all specific transforms for {} input)
 
const ViewportProperty< AffineXf3f > & xfsForAllViewports () const
 returns xfs for all viewports, combined into a single object
 
virtual void setXfsForAllViewports (ViewportProperty< AffineXf3f > xf)
 modifies xfs for all viewports at once
 
MRMESH_API AffineXf3f worldXf (ViewportId id={}, bool *isDef=nullptr) const
 
MRMESH_API void setWorldXf (const AffineXf3f &xf, ViewportId id={})
 
MRMESH_API ViewportMask globalVisibilityMask () const
 returns all viewports where this object is visible together with all its parents
 
bool globalVisibility (ViewportMask viewportMask=ViewportMask::any()) const
 returns true if this object is visible together with all its parents in any of given viewports
 
MRMESH_API void setGlobalVisibility (bool on, ViewportMask viewportMask=ViewportMask::any())
 if true sets all predecessors visible, otherwise sets this object invisible
 
bool isLocked () const
 object properties lock for UI
 
virtual void setLocked (bool on)
 
bool isParentLocked () const
 
virtual void setParentLocked (bool lock)
 
const Objectparent () const
 returns parent object in the tree
 
Objectparent ()
 
MRMESH_API bool isAncestor (const Object *ancestor) const
 return true if given object is ancestor of this one, false otherwise
 
MRMESH_API ObjectfindCommonAncestor (Object &other)
 
const ObjectfindCommonAncestor (const Object &other) const
 
virtual MRMESH_API bool detachFromParent ()
 
const std::vector< std::shared_ptr< Object > > & children ()
 an object can hold other sub-objects
 
const std::vector< std::shared_ptr< const Object > > & children () const
 
virtual MRMESH_API bool addChild (std::shared_ptr< Object > child, bool recognizedChild=true)
 
virtual MRMESH_API bool addChildBefore (std::shared_ptr< Object > newChild, const std::shared_ptr< Object > &existingChild)
 
bool removeChild (const std::shared_ptr< Object > &child)
 returns false if it was not child of this
 
virtual MRMESH_API bool removeChild (Object *child)
 
virtual MRMESH_API void removeAllChildren ()
 detaches all recognized children from this, keeping all unrecognized ones
 
MRMESH_API void sortChildren ()
 sort recognized children by name
 
virtual MRMESH_API bool select (bool on)
 selects the object, returns true if value changed, otherwise returns false
 
virtual bool isSelected () const
 
virtual MRMESH_API void setAncillary (bool ancillary)
 
bool isAncillary () const
 
MRMESH_API void setVisible (bool on, ViewportMask viewportMask=ViewportMask::all())
 sets the object visible in the viewports specified by the mask (by default in all viewports)
 
bool isVisible (ViewportMask viewportMask=ViewportMask::any()) const
 checks whether the object is visible in any of the viewports specified by the mask (by default in any viewport)
 
virtual MRMESH_API void setVisibilityMask (ViewportMask viewportMask)
 specifies object visibility as bitmask of viewports
 
virtual ViewportMask visibilityMask () const
 gets object visibility as bitmask of viewports
 
void resetRedrawFlag () const
 
MRMESH_API std::shared_ptr< ObjectcloneTree () const
 clones all tree of this object (except ancillary and unrecognized children)
 
MRMESH_API std::shared_ptr< ObjectshallowCloneTree () const
 
MRMESH_API Expected< std::vector< std::future< Expected< void > > > > serializeRecursive (const std::filesystem::path &path, Json::Value &root, int childId) const
 
MRMESH_API Expected< void > deserializeRecursive (const std::filesystem::path &path, const Json::Value &root, ProgressCallback progressCb={}, int *objCounter=nullptr)
 
MRMESH_API void swap (Object &other)
 
MRMESH_API Box3f getWorldTreeBox (ViewportId={}) const
 returns bounding box of this object and all children visible in given (or default) viewport in world coordinates
 
 Object (ProtectedStruct, const Object &obj)
 
- Public Member Functions inherited from MR::ObjectChildrenHolder
 ObjectChildrenHolder ()=default
 
 ObjectChildrenHolder (const ObjectChildrenHolder &) noexcept
 
ObjectChildrenHolderoperator= (const ObjectChildrenHolder &) noexcept
 
MRMESH_API ObjectChildrenHolder (ObjectChildrenHolder &&) noexcept
 
MRMESH_API ObjectChildrenHolderoperator= (ObjectChildrenHolder &&) noexcept
 
MRMESH_API ~ObjectChildrenHolder ()
 
MRMESH_API std::shared_ptr< ObjectgetSharedPtr () const
 
MRMESH_API size_t heapBytes () const
 

Static Public Member Functions

static constexpr const char * TypeName () noexcept
 
- Static Public Member Functions inherited from MR::ObjectMeshHolder
static constexpr const char * TypeName () noexcept
 
- Static Public Member Functions inherited from MR::VisualObject
static constexpr const char * TypeName () noexcept
 
- Static Public Member Functions inherited from MR::Object
static constexpr const char * TypeName () noexcept
 

Public Attributes

IsoSurfaceChangedSignal isoSurfaceChangedSignal
 
- Public Attributes inherited from MR::ObjectMeshHolder
SelectionChangedSignal faceSelectionChangedSignal
 
SelectionChangedSignal edgeSelectionChangedSignal
 
SelectionChangedSignal creasesChangedSignal
 
- Public Attributes inherited from MR::Object
XfChangedSignal worldXfChangedSignal
 

Protected Member Functions

 ObjectVoxels (const ObjectVoxels &other)=default
 
virtual MRVOXELS_API void swapBase_ (Object &other) override
 swaps this object with other
 
virtual MRVOXELS_API void swapSignals_ (Object &other) override
 
virtual MRVOXELS_API void serializeFields_ (Json::Value &root) const override
 
MRVOXELS_API void deserializeFields_ (const Json::Value &root) override
 
MRVOXELS_API Expected< void > deserializeModel_ (const std::filesystem::path &path, ProgressCallback progressCb={}) override
 Reads model from file.
 
virtual MRVOXELS_API Expected< std::future< Expected< void > > > serializeModel_ (const std::filesystem::path &path) const override
 
- Protected Member Functions inherited from MR::ObjectMeshHolder
 ObjectMeshHolder (const ObjectMeshHolder &other)=default
 
MRMESH_API void setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
 set all visualize properties masks
 
virtual MRMESH_API Box3f computeBoundingBox_ () const override
 
virtual MRMESH_API void setupRenderObject_ () const override
 
- Protected Member Functions inherited from MR::VisualObject
 VisualObject (const VisualObject &obj)=default
 
MRMESH_API ViewportMaskgetVisualizePropertyMask_ (AnyVisualizeMaskEnum type)
 
MRMESH_API void deserializeFields_ (const Json::Value &root) override
 
MRMESH_API void boundingBoxToInfoLines_ (std::vector< std::string > &res) const
 adds information about bounding box in res
 
template<AnyVisualizeMaskEnumType T>
void setAllVisualizePropertiesForEnum (const AllVisualizeProperties &properties, std::size_t &pos)
 
template<AnyVisualizeMaskEnumType T>
void getAllVisualizePropertiesForEnum (AllVisualizeProperties &properties) const
 
- Protected Member Functions inherited from MR::Object
 Object (const Object &obj)=default
 user should not be able to call copy implicitly, use clone() function instead
 
virtual MRMESH_API void propagateWorldXfChangedSignal_ ()
 

Protected Attributes

VoxelBitSet selectedVoxels_
 
VoxelBitSet volumeRenderActiveVoxels_
 
bool volumeRendering_ { false }
 
- Protected Attributes inherited from MR::ObjectMeshHolder
FaceBitSet selectedTriangles_
 
UndirectedEdgeBitSet selectedEdges_
 
UndirectedEdgeBitSet creases_
 
Vector< MeshTexture, TextureId > textures_
 Texture options.
 
VertUVCoords uvCoordinates_
 vertices coordinates in texture
 
Vector< TextureId, FaceId > texturePerFace_
 
MeshTexture ancillaryTexture_
 
VertUVCoords ancillaryUVCoordinates_
 vertices coordinates in ancillary texture
 
std::optional< size_t > numHoles_
 
std::optional< size_t > numComponents_
 
std::optional< size_t > numUndirectedEdges_
 
std::optional< size_t > numHandles_
 
std::optional< bool > meshIsClosed_
 
std::optional< size_t > numSelectedFaces_
 
std::optional< size_t > numSelectedEdges_
 
std::optional< size_t > numCreaseEdges_
 
std::optional< double > totalArea_
 
std::optional< double > selectedArea_
 
std::optional< double > volume_
 
std::optional< float > avgEdgeLen_
 
ViewportProperty< XfBasedCache< Box3f > > worldBox_
 
ViewportMask showTexture_
 
ViewportMask showFaces_ = ViewportMask::all()
 
ViewportMask showEdges_
 
ViewportMask showPoints_
 
ViewportMask showSelectedEdges_ = ViewportMask::all()
 
ViewportMask showSelectedFaces_ = ViewportMask::all()
 
ViewportMask showBordersHighlight_
 
ViewportMask polygonOffset_
 
ViewportMask flatShading_
 toggle per-face or per-vertex properties
 
ViewportMask shadingEnabled_ = ViewportMask::all()
 
ViewportMask onlyOddFragments_
 
ViewportProperty< ColoredgesColor_
 
ViewportProperty< ColorpointsColor_
 
ViewportProperty< ColorbordersColor_
 
ViewportProperty< ColoredgeSelectionColor_
 
ViewportProperty< ColorfaceSelectionColor_
 
FaceColors facesColorMap_
 
float edgeWidth_ { 0.5f }
 
float pointSize_ { 5.f }
 
std::shared_ptr< Meshmesh_
 
- Protected Attributes inherited from MR::VisualObject
UniquePtr< IRenderObjectrenderObj_
 
Dirty dirty_
 
ViewportMask clipByPlane_
 
ViewportMask showLabels_
 
ViewportMask showName_
 
ViewportMask cropLabels_ = ViewportMask::all()
 
ViewportMask pickable_ = ViewportMask::all()
 enable picking by gl
 
ViewportMask invertNormals_
 invert mesh normals
 
ViewportMask depthTest_ = ViewportMask::all()
 
ViewportProperty< ColorlabelsColor_ = {}
 
float shininess_ {35.0f}
 specular exponent
 
float specularStrength_ { 0.5f }
 
float ambientStrength_ { 0.1f }
 
ColoringType coloringType_ {ColoringType::SolidColor}
 Main coloring options.
 
VertColors vertsColorMap_
 
ViewportProperty< ColorselectedColor_
 
ViewportProperty< ColorunselectedColor_
 
ViewportProperty< ColorbackFacesColor_
 
ViewportProperty< uint8_t > globalAlpha_ { 255 }
 
std::vector< PositionedTextlabels_
 
bool useDefaultScenePropertiesOnDeserialization_ { false }
 
- Protected Attributes inherited from MR::Object
std::string name_
 
ViewportProperty< AffineXf3f > xf_
 
ViewportMask visibilityMask_ = ViewportMask::all()
 
bool locked_ = false
 
bool parentLocked_ = false
 
bool selected_ { false }
 
bool ancillary_ { false }
 
bool needRedraw_ {false}
 
- Protected Attributes inherited from MR::ObjectChildrenHolder
ObjectChildrenHolderparent_ = nullptr
 
std::vector< std::shared_ptr< Object > > children_
 
std::vector< std::weak_ptr< Object > > bastards_
 recognized ones
 

Detailed Description

This class stores information about voxels object

Member Typedef Documentation

◆ IsoSurfaceChangedSignal

signal about Iso-surface changes (from updateIsoSurface)

Constructor & Destructor Documentation

◆ ObjectVoxels() [1/4]

MRVOXELS_API MR::ObjectVoxels::ObjectVoxels ( )

◆ ObjectVoxels() [2/4]

MR::ObjectVoxels::ObjectVoxels ( ObjectVoxels && )
defaultnoexcept

◆ ~ObjectVoxels()

virtual MR::ObjectVoxels::~ObjectVoxels ( )
virtualdefault

◆ ObjectVoxels() [3/4]

MR::ObjectVoxels::ObjectVoxels ( ProtectedStruct ,
const ObjectVoxels & obj )
inline
Note
this ctor is public only for std::make_shared used inside clone()

◆ ObjectVoxels() [4/4]

MR::ObjectVoxels::ObjectVoxels ( const ObjectVoxels & other)
protecteddefault

Member Function Documentation

◆ activeVoxels()

MRVOXELS_API size_t MR::ObjectVoxels::activeVoxels ( ) const
nodiscard

returns cached information about the number of active voxels

◆ applyScale()

virtual MRVOXELS_API void MR::ObjectVoxels::applyScale ( float scaleFactor)
overridevirtual

scale object size (all point positions)

Reimplemented from MR::ObjectMeshHolder.

◆ clone()

virtual MRVOXELS_API std::shared_ptr< Object > MR::ObjectVoxels::clone ( ) const
overridevirtual

clones this object only, without its children, making new object the owner of all copied resources

Reimplemented from MR::ObjectMeshHolder.

◆ construct() [1/4]

MRVOXELS_API void MR::ObjectVoxels::construct ( const FloatGrid & grid,
const Vector3f & voxelSize,
const std::optional< Vector2f > & minmax = {} )

Clears all internal data and then remembers grid and calculates histogram (surface is not built, call updateHistogramAndSurface)

Parameters
minmaxoptional data about known min and max values

◆ construct() [2/4]

MRVOXELS_API void MR::ObjectVoxels::construct ( const SimpleVolume & simpleVolume,
const std::optional< Vector2f > & minmax = {},
ProgressCallback cb = {},
bool normalPlusGrad = false )

Clears all internal data and then creates grid and calculates histogram (surface is not built, call updateHistogramAndSurface)

Parameters
normalPlusGradtrue means that iso-surface normals will be along gradient, false means opposite direction
minmaxoptional data about known min and max values set a new background for the VdbVolume, if normalPlusGrad = true, use the maximum value, otherwise the minimum value

◆ construct() [3/4]

MRVOXELS_API void MR::ObjectVoxels::construct ( const SimpleVolumeMinMax & simpleVolumeMinMax,
ProgressCallback cb = {},
bool normalPlusGrad = false )

Clears all internal data and then creates grid and calculates histogram (surface is not built, call updateHistogramAndSurface)

Parameters
normalPlusGradtrue means that iso-surface normals will be along gradient, false means opposite direction set a new background for the VdbVolume, if normalPlusGrad = true, use the maximum value, otherwise the minimum value

◆ construct() [4/4]

MRVOXELS_API void MR::ObjectVoxels::construct ( const VdbVolume & vdbVolume)

Clears all internal data and then creates grid and calculates histogram (surface is not built, call updateHistogramAndSurface)

◆ deserializeFields_()

MRVOXELS_API void MR::ObjectVoxels::deserializeFields_ ( const Json::Value & root)
overrideprotectedvirtual

Reads parameters from json value

Note
if you override this method, please call Base::deserializeFields_(root) in the beginning

Reimplemented from MR::ObjectMeshHolder.

◆ deserializeModel_()

MRVOXELS_API Expected< void > MR::ObjectVoxels::deserializeModel_ ( const std::filesystem::path & path,
ProgressCallback progressCb = {} )
overrideprotectedvirtual

Reads model from file.

Reimplemented from MR::ObjectMeshHolder.

◆ dimensions()

const Vector3i & MR::ObjectVoxels::dimensions ( ) const
inline

Returns dimensions of voxel objects.

◆ enableVolumeRendering()

MRVOXELS_API void MR::ObjectVoxels::enableVolumeRendering ( bool on)

◆ getActiveBounds()

MRVOXELS_API const Box3i & MR::ObjectVoxels::getActiveBounds ( ) const

Returns active bounds (max excluded) active bounds is box in voxel coordinates, note that voxels under (0,0,0) and voxels over (dimensions) are empty

◆ getClassName()

virtual std::string MR::ObjectVoxels::getClassName ( ) const
inlineoverridevirtual

return human readable name of subclass

Reimplemented from MR::VisualObject.

◆ getCoordinateByVoxelId()

MRVOXELS_API Vector3i MR::ObjectVoxels::getCoordinateByVoxelId ( VoxelId id) const

◆ getDualMarchingCubes()

bool MR::ObjectVoxels::getDualMarchingCubes ( ) const
inline

returns true if the iso-surface is built using Dual Marching Cubes algorithm or false if using Standard Marching Cubes

◆ getInfoLines()

virtual MRVOXELS_API std::vector< std::string > MR::ObjectVoxels::getInfoLines ( ) const
overridevirtual

return several info lines that can better describe the object in the UI

Reimplemented from MR::VisualObject.

◆ getIsoValue()

float MR::ObjectVoxels::getIsoValue ( ) const
inline

Returns current iso value.

◆ getMaxSurfaceVertices()

int MR::ObjectVoxels::getMaxSurfaceVertices ( ) const
inline

gets top limit on the number of vertices in the iso-surface

◆ getSelectedVoxels()

const VoxelBitSet & MR::ObjectVoxels::getSelectedVoxels ( ) const
inline

◆ getVolumeIndexer()

const VolumeIndexer & MR::ObjectVoxels::getVolumeIndexer ( ) const
inline

Returns indexer with more options.

◆ getVolumeRenderActiveVoxels()

const VoxelBitSet & MR::ObjectVoxels::getVolumeRenderActiveVoxels ( ) const
inline

get active (visible) voxels

◆ getVolumeRenderingData()

std::unique_ptr< SimpleVolume > MR::ObjectVoxels::getVolumeRenderingData ( ) const
inlinenodiscard

◆ getVolumeRenderingParams()

const VolumeRenderingParams & MR::ObjectVoxels::getVolumeRenderingParams ( ) const
inline

◆ getVoxelIdByCoordinate()

MRVOXELS_API VoxelId MR::ObjectVoxels::getVoxelIdByCoordinate ( const Vector3i & coord) const

VoxelId is numerical representation of voxel Coordinate is {x,y,z} indices of voxels in box (base dimensions space, NOT active dimensions) Point is local space coordinate of point in scene

◆ getVoxelIdByPoint()

MRVOXELS_API VoxelId MR::ObjectVoxels::getVoxelIdByPoint ( const Vector3f & point) const

◆ grid()

const FloatGrid & MR::ObjectVoxels::grid ( ) const
inline

Returns Float grid which contains voxels data, see more on openvdb::FloatGrid.

◆ hasModel()

virtual bool MR::ObjectVoxels::hasModel ( ) const
inlinenodiscardoverridevirtual

does the object have any model available (but possibly empty), e.g. ObjectMesh has valid mesh() or ObjectPoints has valid pointCloud()

Reimplemented from MR::ObjectMeshHolder.

◆ hasVisualRepresentation()

virtual MRVOXELS_API bool MR::ObjectVoxels::hasVisualRepresentation ( ) const
overridevirtual

mesh object can be seen if the mesh has at least one edge

Reimplemented from MR::ObjectMeshHolder.

◆ heapBytes()

virtual MRVOXELS_API size_t MR::ObjectVoxels::heapBytes ( ) const
nodiscardoverridevirtual

returns the amount of memory this object occupies on heap

Reimplemented from MR::ObjectMeshHolder.

◆ histogram()

const Histogram & MR::ObjectVoxels::histogram ( ) const
inline

Returns histogram.

◆ invalidateActiveBoundsCaches()

virtual MRVOXELS_API void MR::ObjectVoxels::invalidateActiveBoundsCaches ( )
virtual

Call this function in main thread post processing if you call setActiveBounds from progress bar thread.

◆ isVolumeRenderingEnabled()

bool MR::ObjectVoxels::isVolumeRenderingEnabled ( ) const
inline

◆ operator=()

ObjectVoxels & MR::ObjectVoxels::operator= ( ObjectVoxels && )
defaultnoexcept

◆ prepareDataForVolumeRendering()

MRVOXELS_API bool MR::ObjectVoxels::prepareDataForVolumeRendering ( ProgressCallback cb = {}) const

◆ recalculateHistogram()

MRVOXELS_API Histogram MR::ObjectVoxels::recalculateHistogram ( std::optional< Vector2f > minmax,
ProgressCallback cb = {} ) const

Calculates and returns new histogram.

◆ recalculateIsoSurface() [1/2]

MRVOXELS_API Expected< std::shared_ptr< Mesh > > MR::ObjectVoxels::recalculateIsoSurface ( const VdbVolume & volume,
float iso,
ProgressCallback cb = {} ) const

Same as above, but takes external volume.

◆ recalculateIsoSurface() [2/2]

MRVOXELS_API Expected< std::shared_ptr< Mesh > > MR::ObjectVoxels::recalculateIsoSurface ( float iso,
ProgressCallback cb = {} ) const

Calculates and return new mesh or error message.

◆ selectVoxels()

void MR::ObjectVoxels::selectVoxels ( const VoxelBitSet & selectedVoxels)
inline

◆ serializeFields_()

virtual MRVOXELS_API void MR::ObjectVoxels::serializeFields_ ( Json::Value & root) const
overrideprotectedvirtual

Write parameters to given Json::Value,

Note
if you override this method, please call Base::serializeFields_(root) in the beginning

Reimplemented from MR::ObjectMeshHolder.

◆ serializeFormat()

const char * MR::ObjectVoxels::serializeFormat ( ) const
inlinenodiscard

returns file extension used to serialize the voxels

◆ serializeModel_()

virtual MRVOXELS_API Expected< std::future< Expected< void > > > MR::ObjectVoxels::serializeModel_ ( const std::filesystem::path & path) const
overrideprotectedvirtual

Creates future to save object model (e.g. mesh) in given file path is full filename without extension

Reimplemented from MR::ObjectMeshHolder.

◆ setActiveBounds()

virtual MRVOXELS_API void MR::ObjectVoxels::setActiveBounds ( const Box3i & activeBox,
ProgressCallback cb = {},
bool updateSurface = true )
virtual

Sets active bounds for some simplifications (max excluded) active bounds is box in voxel coordinates, note that voxels under (0,0,0) and voxels over (dimensions) are empty NOTE: don't forget to call invalidateActiveBoundsCaches if you call this function from progress bar thread

◆ setDirtyFlags()

virtual MRVOXELS_API void MR::ObjectVoxels::setDirtyFlags ( uint32_t mask,
bool invalidateCaches = true )
overridevirtual

sets some dirty flags for the object (to force its visual update)

Parameters
maskis a union of DirtyFlags flags
invalidateCacheswhether to automatically invalidate model caches (pass false here if you manually update the caches)

Reimplemented from MR::ObjectMeshHolder.

◆ setDualMarchingCubes()

virtual MRVOXELS_API void MR::ObjectVoxels::setDualMarchingCubes ( bool on,
bool updateSurface = true,
ProgressCallback cb = {} )
virtual

sets whether to use Dual Marching Cubes algorithm for visualization (true) or Standard Marching Cubes (false);

Parameters
updateSurfaceforces immediate update

◆ setIsoValue()

virtual MRVOXELS_API Expected< bool > MR::ObjectVoxels::setIsoValue ( float iso,
ProgressCallback cb = {},
bool updateSurface = true )
virtual

Sets iso value and updates iso-surfaces if needed: Returns true if iso-value was updated, false - otherwise

◆ setMaxSurfaceVertices()

MRVOXELS_API void MR::ObjectVoxels::setMaxSurfaceVertices ( int maxVerts)

sets top limit on the number of vertices in the iso-surface

◆ setSerializeFormat()

MRVOXELS_API void MR::ObjectVoxels::setSerializeFormat ( const char * newFormat)

sets file extension used to serialize the voxels: must be not null and must start from '.'

◆ setVolumeRenderActiveVoxels()

MRVOXELS_API void MR::ObjectVoxels::setVolumeRenderActiveVoxels ( const VoxelBitSet & activeVoxels)

set active (visible) voxels (using only in Volume Rendering mode)

◆ setVolumeRenderingParams()

MRVOXELS_API void MR::ObjectVoxels::setVolumeRenderingParams ( const VolumeRenderingParams & params)

◆ setVoxelPointPositioner()

virtual void MR::ObjectVoxels::setVoxelPointPositioner ( VoxelPointPositioner positioner)
inlinevirtual

set voxel point positioner for Marching Cubes (only for Standard Marching Cubes)

◆ shallowClone()

virtual MRVOXELS_API std::shared_ptr< Object > MR::ObjectVoxels::shallowClone ( ) const
overridevirtual

clones this object only, without its children, making new object to share resources with this object

Reimplemented from MR::ObjectMeshHolder.

◆ surface()

const std::shared_ptr< Mesh > & MR::ObjectVoxels::surface ( ) const
inline

Returns iso surface, empty if iso value is not set.

◆ swapBase_()

virtual MRVOXELS_API void MR::ObjectVoxels::swapBase_ ( Object & other)
overrideprotectedvirtual

swaps this object with other

Reimplemented from MR::ObjectMeshHolder.

◆ swapSignals_()

virtual MRVOXELS_API void MR::ObjectVoxels::swapSignals_ ( Object & other)
overrideprotectedvirtual

swaps signals, used in swap function to return back signals after swapBase_ pls call Parent::swapSignals_ first when overriding this function

Reimplemented from MR::ObjectMeshHolder.

◆ TypeName()

static constexpr const char * MR::ObjectVoxels::TypeName ( )
inlinestaticconstexprnoexcept

◆ typeName()

virtual const char * MR::ObjectVoxels::typeName ( ) const
inlineoverridevirtual

Reimplemented from MR::ObjectMeshHolder.

◆ updateHistogram()

MRVOXELS_API Histogram MR::ObjectVoxels::updateHistogram ( Histogram histogram)

Sets external histogram for this object and returns back previous histogram of this

◆ updateHistogramAndSurface()

MRVOXELS_API void MR::ObjectVoxels::updateHistogramAndSurface ( ProgressCallback cb = {})

Updates histogram, by stored grid (evals min and max values from grid) rebuild iso surface if it is present

◆ updateIsoSurface()

MRVOXELS_API std::shared_ptr< Mesh > MR::ObjectVoxels::updateIsoSurface ( std::shared_ptr< Mesh > mesh)

Sets external surface mesh for this object and returns back previous mesh of this

◆ updateVdbVolume()

MRVOXELS_API VdbVolume MR::ObjectVoxels::updateVdbVolume ( VdbVolume vdbVolume)

Sets external vdb volume for this object and returns back previous vdb volume of this

◆ varVdbVolume()

VdbVolume & MR::ObjectVoxels::varVdbVolume ( )
inline

◆ vdbVolume()

const VdbVolume & MR::ObjectVoxels::vdbVolume ( ) const
inline

Return VdbVolume.

◆ voxelSize()

const Vector3f & MR::ObjectVoxels::voxelSize ( ) const
inline

Member Data Documentation

◆ isoSurfaceChangedSignal

IsoSurfaceChangedSignal MR::ObjectVoxels::isoSurfaceChangedSignal

◆ selectedVoxels_

VoxelBitSet MR::ObjectVoxels::selectedVoxels_
protected

◆ volumeRenderActiveVoxels_

VoxelBitSet MR::ObjectVoxels::volumeRenderActiveVoxels_
protected

◆ volumeRendering_

bool MR::ObjectVoxels::volumeRendering_ { false }
protected

The documentation for this class was generated from the following file: