OpenVDB 12.0.0
 
Loading...
Searching...
No Matches
openvdb.h
Go to the documentation of this file.
1// Copyright Contributors to the OpenVDB Project
2// SPDX-License-Identifier: Apache-2.0
3
4#ifndef OPENVDB_OPENVDB_HAS_BEEN_INCLUDED
5#define OPENVDB_OPENVDB_HAS_BEEN_INCLUDED
6
7#include "Platform.h"
8#include "Types.h"
9#include "TypeList.h"
10#include "Metadata.h"
11#include "math/Maps.h"
12#include "math/Transform.h"
13#include "Grid.h"
14#include "tree/Tree.h"
16#include "io/File.h"
17
18
19namespace openvdb {
21namespace OPENVDB_VERSION_NAME {
22
23/// @brief Global registration of native Grid, Transform, Metadata and Point
24/// attribute types. Also initializes blosc (if enabled).
25/// @details Calling this methods registers factory callbacks for the set of
26/// native grid, transform, metadata and point attribute types that OpenVDB
27/// supports by default. For most types, calling openvdb::initialize is only
28/// required for serialization support. However, openvdb::initialize must be
29/// called for PointDataGrid attribute usage as these callbacks are used in
30/// various tools.
31/// @note This method is thread safe - it can be concurrently called multiple
32/// times, early exiting if it has already been called so long as
33/// openvdb::uninitialize() has not been called.
35
36/// @brief Global deregistration of native Grid, Transform, Metadata and Point
37/// attribute types.
38/// @details Clears all registered factory callbacks. This includes everything
39/// registered by openvdb::initialize() but will also include any manually
40/// registered types.
41/// @note This method is thread safe - it can be concurrently called multiple
42/// times.
43/// @warning This method does *not* uninitialize blosc. This is to avoid
44/// changing program states should another library also be using blosc. If
45/// blosc is enabled, consider calling blosc_destroy() in your application.
47
48
49// foward declare some default types
50namespace io { class DelayedLoadMetadata; }
51
52/// Common tree types
71
72/// Common grid types
87
88/// @name Lists of native Grid Types
89/// @{
90/// The floating point Grid types which OpenVDB will register by default.
92/// The integer Grid types which OpenVDB will register by default.
94/// The scalar Grid types which OpenVDB will register by default. This is a
95/// combination of native floating point and integer grid types. Note that
96/// this list does not include Bool or Mask Grids.
98/// The Vec3 Grid types which OpenVDB will register by default.
100
101/// The Grid types which OpenVDB will register by default.
103 NumericGridTypes::
104 Append<Vec3GridTypes>::
105 Append<tools::PointIndexGrid>::
106 // #define unfortunately required for one of the tests that removes this alias
107#ifndef OPENVDB_DISABLE_POINT_DATA_TREE_ALIAS
108 Append<points::PointDataGrid>::
109#endif
110 Append<BoolGrid, MaskGrid>;
111/// @}
112
113
114namespace internal {
115template <typename T> using ToTreeType = typename T::TreeType;
116}
117/// @name Lists of native Tree Types
118/// @{
121using NumericTreeTypes = NumericGridTypes::Transform<internal::ToTreeType>;
123using TreeTypes = GridTypes::Transform<internal::ToTreeType>;
124/// @}
125
126
127/// @name Lists of native TypedAttributeArray Types (for PointDataGrids)
128/// @{
129/// The floating point attribute array types which OpenVDB will register by default.
136 >;
137/// The integer attribute array types which OpenVDB will register by default.
143 >;
144/// The scalar attribute array types which OpenVDB will register by default.
145/// This is a combination of native floating point and integer array types.
146/// Note that this list does not include bool arrays.
149/// The Vec3 attribute array types which OpenVDB will register by default.
160 >;
161/// The Mat3 attribute array types which OpenVDB will register by default.
165 >;
166/// The Mat4 attribute array types which OpenVDB will register by default.
170 >;
171/// The Quat attribute array types which OpenVDB will register by default.
175 >;
176
177/// The attribute array types which OpenVDB will register by default.
179 NumericAttributeTypes::
180 Append<Vec3AttributeTypes>::
181 Append<Mat3AttributeTypes>::
182 Append<Mat4AttributeTypes>::
183 Append<QuatAttributeTypes>::
184 Append<points::GroupAttributeArray>::
185 Append<points::StringAttributeArray>::
186 Append<points::TypedAttributeArray<bool>>;
187/// @}
188
189
190/// The Map types which OpenVDB will register by default.
200
201
202/// The Metadata types which OpenVDB will register by default.
222
223
224} // namespace OPENVDB_VERSION_NAME
225} // namespace openvdb
226
227#endif // OPENVDB_OPENVDB_HAS_BEEN_INCLUDED
#define OPENVDB_API
Definition Platform.h:268
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
A TypeList provides a compile time sequence of heterogeneous types which can be accessed,...
Container class that associates a tree with a transform and metadata.
Definition Grid.h:571
Store a buffer of data that can be optionally used during reading for faster delayed-load I/O perform...
Definition DelayedLoadMetadata.h:22
A general linear transform using homogeneous coordinates to perform rotation, scaling,...
Definition Maps.h:296
This map is composed of three steps. First it will take a box of size (Lx X Ly X Lz) defined by a mem...
Definition Maps.h:1892
A specialized Affine transform that scales along the principal axis the scaling need not be uniform i...
Definition Maps.h:656
A specialized Affine transform that scales along the principal axis the scaling need not be uniform i...
Definition Maps.h:1163
A specialized linear transform that performs a translation.
Definition Maps.h:978
A specialized Affine transform that scales along the principal axis the scaling is uniform in the thr...
Definition Maps.h:906
A specialized Affine transform that uniformaly scales along the principal axis and then translates th...
Definition Maps.h:1479
A specialized linear transform that performs a unitary maping i.e. rotation and or reflection.
Definition Maps.h:1621
Typed class for storing attribute data.
Definition AttributeArray.h:512
Definition openvdb.h:114
typename T::TreeType ToTreeType
Definition openvdb.h:115
Definition openvdb.h:50
tree::Tree4< Vec2d, 5, 4, 3 >::Type Vec2DTree
Definition openvdb.h:60
TypeList< math::AffineMap, math::UnitaryMap, math::ScaleMap, math::UniformScaleMap, math::TranslationMap, math::ScaleTranslateMap, math::UniformScaleTranslateMap, math::NonlinearFrustumMap > MapTypes
The Map types which OpenVDB will register by default.
Definition openvdb.h:191
tree::Tree4< Vec3d, 5, 4, 3 >::Type Vec3DTree
Definition openvdb.h:63
TypedMetadata< Vec4d > Vec4DMetadata
Definition Metadata.h:371
Vec3DGrid Vec3dGrid
Definition openvdb.h:84
TypeList< FloatGrid, DoubleGrid > RealGridTypes
The integer Grid types which OpenVDB will register by default.
Definition openvdb.h:91
TypedMetadata< float > FloatMetadata
Definition Metadata.h:361
tree::Tree4< Vec3i, 5, 4, 3 >::Type Vec3ITree
Definition openvdb.h:64
Grid< FloatTree > FloatGrid
Definition openvdb.h:75
tree::Tree4< float, 5, 4, 3 >::Type FloatTree
Definition openvdb.h:55
Vec3fGrid VectorGrid
Definition openvdb.h:86
tree::Tree4< bool, 5, 4, 3 >::Type BoolTree
Common tree types.
Definition openvdb.h:53
TypeList< BoolMetadata, DoubleMetadata, FloatMetadata, Int32Metadata, Int64Metadata, StringMetadata, Vec2IMetadata, Vec2SMetadata, Vec2DMetadata, Vec3IMetadata, Vec3SMetadata, Vec3DMetadata, Vec4IMetadata, Vec4SMetadata, Vec4DMetadata, Mat4SMetadata, Mat4DMetadata, io::DelayedLoadMetadata > MetaTypes
The Metadata types which OpenVDB will register by default.
Definition openvdb.h:203
GridTypes::Transform< internal::ToTreeType > TreeTypes
Definition openvdb.h:123
TypedMetadata< Vec2d > Vec2DMetadata
Definition Metadata.h:365
Grid< Vec3DTree > Vec3DGrid
Definition openvdb.h:79
Grid< BoolTree > BoolGrid
Common grid types.
Definition openvdb.h:73
TypeList< Int32Grid, Int64Grid > IntegerGridTypes
The integer Grid types which OpenVDB will register by default.
Definition openvdb.h:93
tree::Tree4< ValueMask, 5, 4, 3 >::Type MaskTree
Definition openvdb.h:58
TypeList< points::TypedAttributeArray< math::Mat4< float > >, points::TypedAttributeArray< math::Mat4< double > > > Mat4AttributeTypes
The Mat4 attribute array types which OpenVDB will register by default.
Definition openvdb.h:167
IntegerGridTypes::Transform< internal::ToTreeType > IntegerTreeTypes
Definition openvdb.h:120
RealGridTypes::Transform< internal::ToTreeType > RealTreeTypes
Definition openvdb.h:119
TypedMetadata< Vec3d > Vec3DMetadata
Definition Metadata.h:368
RealGridTypes::Append< IntegerGridTypes > NumericGridTypes
Definition openvdb.h:97
FloatGrid ScalarGrid
Definition openvdb.h:82
Vec3SGrid Vec3fGrid
Definition openvdb.h:85
TypeList< points::TypedAttributeArray< math::Quat< float > >, points::TypedAttributeArray< math::Quat< double > > > QuatAttributeTypes
The Quat attribute array types which OpenVDB will register by default.
Definition openvdb.h:172
TypedMetadata< int32_t > Int32Metadata
Definition Metadata.h:362
tree::Tree4< Vec2s, 5, 4, 3 >::Type Vec2STree
Definition openvdb.h:62
OPENVDB_IMPORT void initialize()
Global registration of native Grid, Transform, Metadata and Point attribute types....
Vec3GridTypes::Transform< internal::ToTreeType > Vec3TreeTypes
Definition openvdb.h:122
TypedMetadata< Mat4d > Mat4DMetadata
Definition Metadata.h:375
NumericGridTypes:: Append< Vec3GridTypes >:: Append< tools::PointIndexGrid >:: Append< points::PointDataGrid >:: Append< BoolGrid, MaskGrid > GridTypes
The Grid types which OpenVDB will register by default.
Definition openvdb.h:102
Grid< Vec3ITree > Vec3IGrid
Definition openvdb.h:80
tree::Tree4< int32_t, 5, 4, 3 >::Type Int32Tree
Definition openvdb.h:56
tree::Tree4< int64_t, 5, 4, 3 >::Type Int64Tree
Definition openvdb.h:57
Grid< Int64Tree > Int64Grid
Definition openvdb.h:77
OPENVDB_IMPORT void uninitialize()
Global deregistration of native Grid, Transform, Metadata and Point attribute types.
NumericAttributeTypes:: Append< Vec3AttributeTypes >:: Append< Mat3AttributeTypes >:: Append< Mat4AttributeTypes >:: Append< QuatAttributeTypes >:: Append< points::GroupAttributeArray >:: Append< points::StringAttributeArray >:: Append< points::TypedAttributeArray< bool > > AttributeTypes
The attribute array types which OpenVDB will register by default.
Definition openvdb.h:178
Grid< Vec3STree > Vec3SGrid
Definition openvdb.h:81
MaskTree TopologyTree
Definition openvdb.h:67
tree::Tree4< Vec3f, 5, 4, 3 >::Type Vec3STree
Definition openvdb.h:65
TypedMetadata< Vec2i > Vec2IMetadata
Definition Metadata.h:366
Vec3fTree VectorTree
Definition openvdb.h:70
MaskGrid TopologyGrid
Definition openvdb.h:83
tree::Tree4< uint32_t, 5, 4, 3 >::Type UInt32Tree
Definition openvdb.h:59
FloatTree ScalarTree
Definition openvdb.h:66
TypeList< points::TypedAttributeArray< int8_t >, points::TypedAttributeArray< int16_t >, points::TypedAttributeArray< int32_t >, points::TypedAttributeArray< int64_t > > IntegerAttributeTypes
The integer attribute array types which OpenVDB will register by default.
Definition openvdb.h:138
tree::Tree4< Vec2i, 5, 4, 3 >::Type Vec2ITree
Definition openvdb.h:61
TypeList< Vec3IGrid, Vec3SGrid, Vec3DGrid > Vec3GridTypes
The Vec3 Grid types which OpenVDB will register by default.
Definition openvdb.h:99
TypedMetadata< std::string > StringMetadata
Definition Metadata.h:364
TypeList< points::TypedAttributeArray< math::Vec3< int32_t > >, points::TypedAttributeArray< math::Vec3< float > >, points::TypedAttributeArray< math::Vec3< double > >, points::TypedAttributeArray< math::Vec3< float >, points::TruncateCodec >, points::TypedAttributeArray< math::Vec3< float >, points::FixedPointCodec< true, points::PositionRange > >, points::TypedAttributeArray< math::Vec3< float >, points::FixedPointCodec< false, points::PositionRange > >, points::TypedAttributeArray< math::Vec3< float >, points::FixedPointCodec< true, points::UnitRange > >, points::TypedAttributeArray< math::Vec3< float >, points::FixedPointCodec< false, points::UnitRange > >, points::TypedAttributeArray< math::Vec3< float >, points::UnitVecCodec > > Vec3AttributeTypes
The Vec3 attribute array types which OpenVDB will register by default.
Definition openvdb.h:150
Grid< MaskTree > MaskGrid
Definition openvdb.h:78
TypedMetadata< Vec4s > Vec4SMetadata
Definition Metadata.h:373
NumericGridTypes::Transform< internal::ToTreeType > NumericTreeTypes
Definition openvdb.h:121
TypeList< points::TypedAttributeArray< math::Mat3< float > >, points::TypedAttributeArray< math::Mat3< double > > > Mat3AttributeTypes
The Mat3 attribute array types which OpenVDB will register by default.
Definition openvdb.h:162
TypedMetadata< Vec3s > Vec3SMetadata
Definition Metadata.h:370
Vec3STree Vec3fTree
Definition openvdb.h:69
tree::Tree4< double, 5, 4, 3 >::Type DoubleTree
Definition openvdb.h:54
Grid< Int32Tree > Int32Grid
Definition openvdb.h:76
TypedMetadata< Vec2s > Vec2SMetadata
Definition Metadata.h:367
RealAttributeTypes::Append< IntegerAttributeTypes > NumericAttributeTypes
Definition openvdb.h:147
TypedMetadata< Vec4i > Vec4IMetadata
Definition Metadata.h:372
TypedMetadata< Mat4s > Mat4SMetadata
Definition Metadata.h:374
Grid< DoubleTree > DoubleGrid
Definition openvdb.h:74
TypedMetadata< Vec3i > Vec3IMetadata
Definition Metadata.h:369
TypeList< points::TypedAttributeArray< float >, points::TypedAttributeArray< double >, points::TypedAttributeArray< float, points::TruncateCodec >, points::TypedAttributeArray< float, points::FixedPointCodec< true, points::UnitRange > >, points::TypedAttributeArray< float, points::FixedPointCodec< false, points::UnitRange > > > RealAttributeTypes
The integer attribute array types which OpenVDB will register by default.
Definition openvdb.h:130
TypedMetadata< bool > BoolMetadata
Definition Metadata.h:359
TypedMetadata< int64_t > Int64Metadata
Definition Metadata.h:363
Vec3DTree Vec3dTree
Definition openvdb.h:68
TypedMetadata< double > DoubleMetadata
Definition Metadata.h:360
Definition Exceptions.h:13
A list of types (not necessarily unique)
Definition TypeList.h:578
typename typelist_internal::TSTranformImpl< OpT, Ts... >::type Transform
Definition TypeList.h:736
typename typelist_internal::TSAppendImpl< Self, TypesToAppend... >::type Append
Definition TypeList.h:656
Definition AttributeArray.h:478
Definition AttributeArray.h:448
Definition AttributeArray.h:493
Tree< RootNode< InternalNode< InternalNode< LeafNode< T, N3 >, N2 >, N1 > > > Type
Definition Tree.h:1130
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218