MeshLib C++ Docs
Loading...
Searching...
No Matches
MRVDBFloatGrid.h
Go to the documentation of this file.
1#pragma once
2#include "MRVoxelsFwd.h"
3#include "MRFloatGrid.h"
4// this header includes the whole OpenVDB, so please include it from .cpp files only
5#include "MRMesh/MRVector3.h"
6#include "MRMesh/MRBox.h"
7
8#include "MROpenVDB.h"
9#include "MRPch/MRBindingMacros.h"
10
11namespace MR
12{
13
21struct MRVOXELS_CLASS OpenVdbFloatGrid : openvdb::FloatGrid
22{
23 OpenVdbFloatGrid() noexcept = default;
24 MR_BIND_IGNORE OpenVdbFloatGrid( openvdb::FloatGrid && in ) : openvdb::FloatGrid( std::move( in ) ) {}
25 [[nodiscard]] size_t heapBytes() const { return memUsage(); }
26};
27
28MR_BIND_IGNORE inline openvdb::FloatGrid & ovdb( OpenVdbFloatGrid & v ) { return v; }
29MR_BIND_IGNORE inline const openvdb::FloatGrid & ovdb( const OpenVdbFloatGrid & v ) { return v; }
30
33
35MR_BIND_IGNORE inline FloatGrid MakeFloatGrid( openvdb::FloatGrid::Ptr&& p )
36{
37 if ( !p )
38 return {};
39 return std::make_shared<OpenVdbFloatGrid>( std::move( *p ) );
40}
41
42MR_BIND_IGNORE inline Vector3i fromVdb( const openvdb::Coord & v )
43{
44 return Vector3i( v.x(), v.y(), v.z() );
45}
46
47MR_BIND_IGNORE inline openvdb::Coord toVdb( const Vector3i & v )
48{
49 return openvdb::Coord( v.x, v.y, v.z );
50}
51
52MR_BIND_IGNORE inline openvdb::CoordBBox toVdbBox( const Box3i& box )
53{
54 return openvdb::CoordBBox( toVdb( box.min ), toVdb( box.max ) );
55}
56
57MR_BIND_IGNORE inline openvdb::CoordBBox toVdbBox( const Vector3i& dims )
58{
59 return openvdb::CoordBBox( toVdb( Vector3i( 0, 0, 0 ) ),
60 toVdb( Vector3i( dims ) - Vector3i::diagonal(1) ) );
61}
62
64
65}
#define MRVOXELS_CLASS
Definition MRVoxels/MRVoxelsFwd.h:14
wrapper class that helps mrbind to avoid excess MRVDBFloatGrid.h includes
Definition MRVoxels/MRFloatGrid.h:21
MR_BIND_IGNORE FloatGrid MakeFloatGrid(const FloatGrid &)=delete
prohibit unnecessary conversion
MR_BIND_IGNORE openvdb::FloatGrid & ovdb(OpenVdbFloatGrid &v)
Definition MRVDBFloatGrid.h:28
MR_BIND_IGNORE Vector3i fromVdb(const openvdb::Coord &v)
Definition MRVDBFloatGrid.h:42
MR_BIND_IGNORE openvdb::Coord toVdb(const Vector3i &v)
Definition MRVDBFloatGrid.h:47
MR_BIND_IGNORE openvdb::CoordBBox toVdbBox(const Box3i &box)
Definition MRVDBFloatGrid.h:52
Definition MRCameraOrientationPlugin.h:8
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:10
this class just hides very complex type of typedef openvdb::FloatGrid
Definition MRVDBFloatGrid.h:22
OpenVdbFloatGrid() noexcept=default
size_t heapBytes() const
Definition MRVDBFloatGrid.h:25