diff --git a/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp b/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp index c142d882b7..8d223d7b39 100644 --- a/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp +++ b/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp @@ -426,7 +426,7 @@ bool readPrimitiveVariables( const pxr::UsdSkelRoot &skelRoot, const pxr::UsdGeo pxr::GfMatrix4d inverseBind = skinningQuery.GetGeomBindTransform( time ).GetInverse(); for( auto &p : points ) { - p = inverseBind.Transform( p ); + p = pxr::GfVec3f( inverseBind.Transform( pxr::GfVec3d( p ) ) ); } Canceller::check( canceller ); diff --git a/contrib/IECoreUSD/src/IECoreUSD/bindings/IEUSDModule.cpp b/contrib/IECoreUSD/src/IECoreUSD/bindings/IEUSDModule.cpp index 168ed4a5d4..8336d3e6ea 100644 --- a/contrib/IECoreUSD/src/IECoreUSD/bindings/IEUSDModule.cpp +++ b/contrib/IECoreUSD/src/IECoreUSD/bindings/IEUSDModule.cpp @@ -39,6 +39,10 @@ #include "IECore/IndexedIO.h" +#if PXR_VERSION >= 2505 +#include "pxr/external/boost/python.hpp" +#endif + #include "boost/python.hpp" using namespace boost::python; @@ -86,10 +90,47 @@ static list fromInternalPath( list l ) return vectorToList( path ); } +#if PXR_VERSION >= 2505 + +// Registers `boost::python` converters for types +// wrapped using `pxr_boost::python`. +template +struct PxrBoostConverter +{ + + static void registerConverters() + { + boost::python::to_python_converter(); + /// \todo Add conversion from Python when we have + /// a use for it. See PyBindConverter for an example. + } + + private : + + struct ToPxrBoost + { + static PyObject *convert( const T &t ) + { + pxr::pxr_boost::python::object o( t ); + Py_INCREF( o.ptr() ); + return o.ptr(); + } + }; + +}; + +#endif // PXR_VERSION >= 2505 + } // namespace BOOST_PYTHON_MODULE( _IECoreUSD ) { +#if PXR_VERSION >= 2505 + PxrBoostConverter::registerConverters(); + PxrBoostConverter::registerConverters(); + PxrBoostConverter::registerConverters(); +#endif + { object dataAlgoModule( handle<>( borrowed( PyImport_AddModule( "IECoreUSD.DataAlgo" ) ) ) ); scope().attr( "DataAlgo" ) = dataAlgoModule;