38 #ifndef IECOREHOUDINI_FROMHOUDINIGEOMETRYCONVERTER_H
39 #define IECOREHOUDINI_FROMHOUDINIGEOMETRYCONVERTER_H
41 #include "GA/GA_AttributeRef.h"
42 #include "GU/GU_Detail.h"
43 #include "GU/GU_DetailHandle.h"
44 #include "SOP/SOP_Node.h"
45 #include "UT/UT_StringMMPattern.h"
47 #include "IECore/Primitive.h"
48 #include "IECore/SimpleTypedData.h"
49 #include "IECore/SimpleTypedParameter.h"
50 #include "IECore/VectorTypedData.h"
52 #include "IECoreHoudini/TypeIds.h"
53 #include "IECoreHoudini/FromHoudiniConverter.h"
55 #include "IECoreHoudini/bindings/FromHoudiniGeometryConverterBinding.h"
60 IE_CORE_FORWARDDECLARE( FromHoudiniGeometryConverter );
74 static FromHoudiniGeometryConverterPtr
create(
const GU_DetailHandle &
handle,
IECore::TypeId resultType=IECore::InvalidTypeId );
81 static FromHoudiniGeometryConverterPtr
create(
const GU_DetailHandle &handle,
const std::set<IECore::TypeId> &resultTypes );
90 static GU_DetailHandle
extract(
const GU_Detail *geo,
const UT_StringMMPattern &nameFilter );
111 virtual IECore::ObjectPtr
doConversion( IECore::ConstCompoundObjectPtr operands )
const;
115 typedef FromHoudiniGeometryConverterPtr (*CreatorFn)(
const GU_DetailHandle &
handle );
116 typedef Convertability (*ConvertabilityFn)(
const GU_DetailHandle &
handle );
118 static void registerConverter(
IECore::TypeId resultType, CreatorFn creator, ConvertabilityFn canConvert );
128 static FromHoudiniGeometryConverterPtr creator(
const GU_DetailHandle &handle );
129 static Convertability canConvert(
const GU_DetailHandle &handle );
133 const GU_DetailHandle &
handle()
const;
135 static const GU_DetailHandle
handle(
const SOP_Node *sop );
159 void remapAttributes(
const GU_Detail *geo, AttributeMap &pointAttributeMap, AttributeMap &primitiveAttributeMap )
const;
163 const GU_Detail *geo,
const UT_StringMMPattern &attribFilter,
166 void transferElementAttribs(
167 const GU_Detail *geo,
const GA_Range &range,
const GA_AttributeDict &attribs,
const UT_StringMMPattern &attribFilter,
171 void transferAttribData(
173 const GA_ROAttributeRef &attrRef,
const GA_Range &range,
const RemapInfo *remapInfo = 0
178 template <
typename T>
179 typename T::Ptr
extractData(
const GA_Attribute *attr,
const GA_Range &range,
int elementIndex = -1 )
const;
181 template <
typename T>
182 typename T::Ptr
extractData(
const GA_Attribute *attr )
const;
184 IECore::DataPtr extractStringVectorData(
const GA_Attribute *attr,
const GA_Range &range, IECore::IntVectorDataPtr &indexData )
const;
185 IECore::DataPtr extractStringData(
const GU_Detail *geo,
const GA_Attribute *attr )
const;
189 void constructCommon();
192 friend void bindFromHoudiniGeometryConverter();
193 static FromHoudiniGeometryConverterPtr
create(
const SOP_Node *sop,
const std::string &nameFilter =
"",
IECore::TypeId resultType=IECore::InvalidTypeId );
196 const std::string processPrimitiveVariableName(
const std::string &name )
const;
199 GU_DetailHandle m_geoHandle;
200 IECore::StringParameterPtr m_attributeFilterParameter;
201 IECore::BoolParameterPtr m_convertStandardAttributesParameter;
207 bool operator < (
const Types &other )
const;
210 typedef std::map<Types, std::pair<CreatorFn, ConvertabilityFn> > TypesToFnsMap;
211 static TypesToFnsMap *typesToFns();
216 #include "FromHoudiniGeometryConverter.inl"
218 #endif // IECOREHOUDINI_FROMHOUDINIGEOMETRYCONVERTER_H
static GU_DetailHandle extract(const GU_Detail *geo, const UT_StringMMPattern &nameFilter)
Definition: FromHoudiniGeometryConverter.h:149
virtual IECore::ObjectPtr doDetailConversion(const GU_Detail *geo, const IECore::CompoundObject *operands) const =0
Must be implemented by derived classes to return an IECore::Object created to represent the specified...
T::Ptr extractData(const GA_Attribute *attr, const GA_Range &range, int elementIndex=-1) const
void transferDetailAttribs(const GU_Detail *geo, const UT_StringMMPattern &attribFilter, IECore::Primitive *result, IECore::PrimitiveVariable::Interpolation interpolation) const
Utility functions for transfering each attrib type from Houdini onto the IECore::Primitive provided...
The IECoreHoudini namespace holds all the functionality of libIECoreHoudini.
Definition: CoreHoudini.h:51
const std::string & description() const
Returns a description for this parameterised object.
void transferAttribs(const GU_Detail *geo, IECore::Primitive *result, const IECore::CompoundObject *operands, IECore::PrimitiveVariable::Interpolation vertexInterpolation=IECore::PrimitiveVariable::FaceVarying, IECore::PrimitiveVariable::Interpolation primitiveInterpolation=IECore::PrimitiveVariable::Uniform, IECore::PrimitiveVariable::Interpolation pointInterpolation=IECore::PrimitiveVariable::Vertex, IECore::PrimitiveVariable::Interpolation detailInterpolation=IECore::PrimitiveVariable::Constant) const
Definition: FromHoudiniGeometryConverter.h:65
static FromHoudiniGeometryConverterPtr create(const GU_DetailHandle &handle, IECore::TypeId resultType=IECore::InvalidTypeId)
static void supportedTypes(std::set< IECore::TypeId > &types)
const GU_DetailHandle & handle() const
returns a reference to the GU_DetailHandle
TypeId
Definition: TypeIds.h:46
Definition: CompoundObject.h:46
Definition: FromHoudiniGeometryConverter.h:123
Interpolation
Definition: PrimitiveVariable.h:53
Definition: Primitive.h:54
virtual IECore::ObjectPtr doConversion(IECore::ConstCompoundObjectPtr operands) const
Definition: ToCoreConverter.h:49
Definition: FromHoudiniConverter.h:48
std::map< std::string, std::vector< RemapInfo > > AttributeMap
Attribute remapping.
Definition: FromHoudiniGeometryConverter.h:158