37#ifndef Alembic_AbcGeom_Foundation_h
38#define Alembic_AbcGeom_Foundation_h
40#include <Alembic/Abc/All.h>
42#include <Imath/ImathMatrixAlgo.h>
43#include <Imath/ImathEuler.h>
48namespace ALEMBIC_VERSION_NS {
50namespace Abc = ::Alembic::Abc::ALEMBIC_VERSION_NS;
58enum MeshTopologyVariance
60 kConstantTopology = 0,
61 kHomogenousTopology = 1,
62 kHomogeneousTopology = 1,
63 kHeterogenousTopology = 2,
64 kHeterogeneousTopology = 2
70enum XformOperationType
73 kTranslateOperation = 1,
76 kRotateXOperation = 4,
77 kRotateYOperation = 5,
85enum FilmBackXformOperationType
87 kScaleFilmBackOperation = 0,
88 kTranslateFilmBackOperation = 1,
89 kMatrixFilmBackOperation = 2
95template <
class PROP,
class SAMP>
96inline void SetPropUsePrevIfNull( PROP iProp, SAMP iSamp )
101 assert( iProp.isArray() );
103 if ( iSamp ) { iProp.set( iSamp ); }
104 else { iProp.setFromPrevious(); }
109inline void SetPropUsePrevIfNull<Abc::OStringProperty, std::string>(
110 Abc::OStringProperty iProp, std::string iSamp )
112 if ( ! iProp ) {
return; }
113 if ( iSamp !=
"" ) { iProp.set( iSamp ); }
114 else { iProp.setFromPrevious(); }
118inline void SetPropUsePrevIfNull<Abc::OWstringProperty, Alembic::Util::wstring>(
119 Abc::OWstringProperty iProp, Alembic::Util::wstring iSamp )
121 if ( ! iProp ) {
return; }
122 if ( iSamp != L
"" ) { iProp.set( iSamp ); }
123 else { iProp.setFromPrevious(); }
127inline void SetPropUsePrevIfNull<Abc::OBox3dProperty, Abc::Box3d>(
128 Abc::OBox3dProperty iProp, Abc::Box3d iSamp )
130 if ( ! iProp ) {
return; }
131 if ( iSamp.hasVolume() ) { iProp.set( iSamp ); }
132 else { iProp.setFromPrevious(); }
138template <
class ARRAYSAMP>
139static Abc::Box3d ComputeBoundsFromPositions(
const ARRAYSAMP &iSamp )
142 size_t size = iSamp.size();
143 for (
size_t i = 0 ; i < size ; ++i )
145 ret.extendBy( iSamp[i] );
153inline double DegreesToRadians(
double iDegrees )
155 return ( iDegrees * M_PI ) / 180.0;
158inline double RadiansToDegrees(
double iRadians )
160 return iRadians * ( 180.0 / M_PI );
166inline bool IsGeomParam(
const AbcA::PropertyHeader &iHeader )
168 return iHeader.isArray() || ( iHeader.isCompound() &&
169 iHeader.getMetaData().get(
"podName" ) !=
"" &&
170 iHeader.getMetaData().get(
"podExtent" ) !=
"" );
175using namespace ALEMBIC_VERSION_NS;
Alembic namespace ...
Definition ArchiveInfo.cpp:39