MeshLib
 
Loading...
Searching...
No Matches
MRVDBFloatGrid.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRVector3.h"
5
6#ifndef MRMESH_NO_OPENVDB
7// this header includes the whole OpenVDB, so please include it from .cpp files only
8
9#include "MRPch/MROpenvdb.h"
10
11namespace MR
12{
13
21struct OpenVdbFloatGrid : openvdb::FloatGrid
22{
23 OpenVdbFloatGrid() noexcept = default;
24 OpenVdbFloatGrid( openvdb::FloatGrid && in ) : openvdb::FloatGrid( std::move( in ) ) {}
25 [[nodiscard]] size_t heapBytes() const { return memUsage(); }
26};
27
28inline openvdb::FloatGrid & ovdb( OpenVdbFloatGrid & v ) { return v; }
29inline const openvdb::FloatGrid & ovdb( const OpenVdbFloatGrid & v ) { return v; }
30
32inline FloatGrid MakeFloatGrid( openvdb::FloatGrid::Ptr&& p )
33{
34 if ( !p )
35 return {};
36 return std::make_shared<OpenVdbFloatGrid>( std::move( *p ) );
37}
38
39inline Vector3i fromVdb( const openvdb::Coord & v )
40{
41 return Vector3i( v.x(), v.y(), v.z() );
42}
43
44inline openvdb::Coord toVdb( const Vector3i & v )
45{
46 return openvdb::Coord( v.x, v.y, v.z );
47}
48
50
51}
52#endif
openvdb::FloatGrid & ovdb(OpenVdbFloatGrid &v)
Definition MRVDBFloatGrid.h:28
openvdb::Coord toVdb(const Vector3i &v)
Definition MRVDBFloatGrid.h:44
Vector3i fromVdb(const openvdb::Coord &v)
Definition MRVDBFloatGrid.h:39
FloatGrid MakeFloatGrid(openvdb::FloatGrid::Ptr &&p)
makes MR::FloatGrid shared pointer taking the contents of the input pointer
Definition MRVDBFloatGrid.h:32
Definition MRCameraOrientationPlugin.h:7
Vector3< int > Vector3i
Definition MRDotNet/MRMeshFwd.h:9
std::shared_ptr< OpenVdbFloatGrid > FloatGrid
Definition MRMesh/MRMeshFwd.h:537
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
T x
Definition MRMesh/MRVector3.h:25
T y
Definition MRMesh/MRVector3.h:25
T z
Definition MRMesh/MRVector3.h:25