Cortex  10.0.0-a4
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Friends | List of all members
IECoreHoudini::FromHoudiniGeometryConverter Class Referenceabstract

#include <FromHoudiniGeometryConverter.h>

+ Inheritance diagram for IECoreHoudini::FromHoudiniGeometryConverter:

Classes

class  Description
 
struct  RemapInfo
 

Public Types

enum  Convertability {
  Inapplicable = 0, Ideal, Suitable, Admissible,
  InvalidValue
}
 
- Public Types inherited from IECore::RunTimeTyped
typedef RefCounted BaseClass
 A typedef for the class this class derives from. All RunTimeTyped classes define this typedef.
 
- Public Types inherited from IECore::RefCounted
typedef size_t RefCount
 

Public Member Functions

 IE_CORE_DECLARERUNTIMETYPEDEXTENSION (FromHoudiniGeometryConverter, FromHoudiniGeometryConverterTypeId, IECore::ToCoreConverter)
 
- Public Member Functions inherited from IECoreHoudini::FromHoudiniConverter
 IE_CORE_DECLARERUNTIMETYPEDEXTENSION (FromHoudiniConverter, FromHoudiniConverterTypeId, IECore::ToCoreConverter)
 
- Public Member Functions inherited from IECore::ToCoreConverter
 IE_CORE_DECLARERUNTIMETYPED (ToCoreConverter, Converter)
 
IECore::ObjectPtr convert () const
 
- Public Member Functions inherited from IECore::Converter
 IE_CORE_DECLARERUNTIMETYPED (Converter, Parameterised)
 
- Public Member Functions inherited from IECore::Parameterised
 IE_CORE_DECLARERUNTIMETYPED (Parameterised, RunTimeTyped)
 
 Parameterised (const std::string &description)
 
 Parameterised (const std::string &description, CompoundParameterPtr compoundParameter)
 Another constructor added later on that gives defines the CompoundParameter object to be hold in this Parameterised instance.
 
const std::string & description () const
 Returns a description for this parameterised object.
 
CompoundParameterparameters () override
 
const CompoundParameterparameters () const override
 Returns the parameters for query.
 
CompoundObjectuserData ()
 Returns an object that anyone can use for storing anything.
 
const CompoundObjectuserData () const
 Read only version of the above.
 
- Public Member Functions inherited from IECore::RunTimeTyped
 IE_CORE_DECLAREMEMBERPTR (RunTimeTyped)
 
virtual TypeId typeId () const
 
virtual const char * typeName () const
 
virtual bool isInstanceOf (TypeId typeId) const
 
virtual bool isInstanceOf (const char *typeName) const
 
- Public Member Functions inherited from IECore::RefCounted
 IE_CORE_DECLAREMEMBERPTR (RefCounted)
 
void addRef () const
 Add a reference to the current object.
 
void removeRef () const
 Remove a reference from the current object.
 
RefCount refCount () const
 Returns the current reference count.
 

Static Public Member Functions

static void supportedTypes (std::set< IECore::TypeId > &types)
 
static GU_DetailHandle extract (const GU_Detail *geo, const UT_StringMMPattern &nameFilter)
 
Factory
static FromHoudiniGeometryConverterPtr create (const GU_DetailHandle &handle, IECore::TypeId resultType=IECore::InvalidTypeId)
 
static FromHoudiniGeometryConverterPtr create (const GU_DetailHandle &handle, const std::set< IECore::TypeId > &resultTypes)
 
- Static Public Member Functions inherited from IECore::RunTimeTyped
static TypeId staticTypeId ()
 Returns the TypeId for this class, without needing an instance.
 
static const char * staticTypeName ()
 Returns the type name for this class, without needing an instance.
 
static TypeId baseTypeId ()
 
static const char * baseTypeName ()
 
static bool inheritsFrom (TypeId typeId)
 Returns true if this class inherits from the specified type.
 
static bool inheritsFrom (const char *typeName)
 Returns true if this class inherits from the specified type.
 
static bool inheritsFrom (TypeId type, TypeId baseType)
 Returns true if type inherits from baseType.
 
static bool inheritsFrom (const char *typeName, const char *baseTypeName)
 Returns true if typeName inherits from baseTypeName.
 
static TypeId baseTypeId (TypeId typeId)
 Returns the base type of the given type, or InvalidTypeId if no such base exists.
 
static const std::vector< TypeId > & baseTypeIds (TypeId typeId)
 
static const std::set< TypeId > & derivedTypeIds (TypeId typeId)
 
static TypeId typeIdFromTypeName (const char *typeName)
 
static const char * typeNameFromTypeId (TypeId typeId)
 
static void registerType (TypeId derivedTypeId, const char *derivedTypeName, TypeId baseTypeId)
 Allows external modules to register their own type ids.
 

Protected Types

typedef FromHoudiniGeometryConverterPtr(* CreatorFn) (const GU_DetailHandle &handle)
 
typedef Convertability(* ConvertabilityFn) (const GU_DetailHandle &handle)
 
typedef std::map< std::string, std::vector< RemapInfo > > AttributeMap
 Attribute remapping.
 
- Protected Types inherited from IECore::RunTimeTyped
typedef std::map< TypeId, TypeIdBaseTypeRegistryMap
 
typedef std::map< TypeId, std::vector< TypeId > > BaseTypesRegistryMap
 
typedef std::map< TypeId, std::set< TypeId > > DerivedTypesRegistryMap
 
typedef tbb::spin_rw_mutex Mutex
 
typedef std::map< TypeId, std::string > TypeIdsToTypeNamesMap
 
typedef std::map< std::string, TypeIdTypeNamesToTypeIdsMap
 

Protected Member Functions

 FromHoudiniGeometryConverter (const GU_DetailHandle &handle, const std::string &description)
 
 FromHoudiniGeometryConverter (const SOP_Node *sop, const std::string &description)
 
virtual IECore::ObjectPtr doConversion (IECore::ConstCompoundObjectPtr operands) const
 
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 GU_Detail.
 
const GU_DetailHandle & handle () const
 returns a reference to the GU_DetailHandle
 
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
 
void remapAttributes (const GU_Detail *geo, AttributeMap &pointAttributeMap, AttributeMap &primitiveAttributeMap) 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.
 
void transferElementAttribs (const GU_Detail *geo, const GA_Range &range, const GA_AttributeDict &attribs, const UT_StringMMPattern &attribFilter, AttributeMap &attributeMap, IECore::Primitive *result, IECore::PrimitiveVariable::Interpolation interpolation) const
 
void transferAttribData (IECore::Primitive *result, IECore::PrimitiveVariable::Interpolation interpolation, const GA_ROAttributeRef &attrRef, const GA_Range &range, const RemapInfo *remapInfo=0) const
 
template<typename T >
T::Ptr extractData (const GA_Attribute *attr, const GA_Range &range, int elementIndex=-1) const
 
template<typename T >
T::Ptr extractData (const GA_Attribute *attr) const
 
IECore::DataPtr extractStringVectorData (const GA_Attribute *attr, const GA_Range &range, IECore::IntVectorDataPtr &indexData) const
 
IECore::DataPtr extractStringData (const GU_Detail *geo, const GA_Attribute *attr) const
 
- Protected Member Functions inherited from IECoreHoudini::FromHoudiniConverter
 FromHoudiniConverter (const std::string &description)
 
- Protected Member Functions inherited from IECore::ToCoreConverter
 ToCoreConverter (const std::string &description)
 
- Protected Member Functions inherited from IECore::Converter
 Converter (const std::string &description)
 

Static Protected Member Functions

static void registerConverter (IECore::TypeId resultType, CreatorFn creator, ConvertabilityFn canConvert)
 
static const GU_DetailHandle handle (const SOP_Node *sop)
 extracts the GU_DetailHandle from a SOP_Node
 
- Static Protected Member Functions inherited from IECore::RunTimeTyped
static BaseTypeRegistryMap & baseTypeRegistry ()
 
static DerivedTypesRegistryMap & derivedTypesRegistry ()
 
static BaseTypesRegistryMap & completeBaseTypesRegistry ()
 
static DerivedTypesRegistryMap & completeDerivedTypesRegistry ()
 
static void derivedTypeIdsWalk (TypeId typeId, std::set< TypeId > &)
 
static TypeIdsToTypeNamesMap & typeIdsToTypeNames ()
 
static TypeNamesToTypeIdsMap & typeNamesToTypeIds ()
 

Friends

void bindFromHoudiniGeometryConverter ()
 

Additional Inherited Members

- Static Protected Attributes inherited from IECore::RunTimeTyped
static Mutex g_baseTypeIdsMutex
 
static Mutex g_derivedTypeIdsMutex
 

Detailed Description

The FromHoudiniGeometryConverter class forms a base class for all classes able to perform some kind of conversion from a Houdini GU_Detail to an IECore::Object. The most common use is conversion to an IECore::Primitive, but any Object could be supported.

Member Function Documentation

static FromHoudiniGeometryConverterPtr IECoreHoudini::FromHoudiniGeometryConverter::create ( const GU_DetailHandle &  handle,
IECore::TypeId  resultType = IECore::InvalidTypeId 
)
static

Creates a converter which will convert the given Houdini GU_Detail to an IECore::Primitive. If resultType is specified then only converters which create objects of that type will be returned - the default value allows any suitable converter to be created. If no matching converters exist then returns 0. If a null handle is provided, any suitable converter will be returned. This may be useful to access parameters of a derived converter before the geometry exists. See SOP_ParameterisedHolder for an example.

virtual IECore::ObjectPtr IECoreHoudini::FromHoudiniGeometryConverter::doConversion ( IECore::ConstCompoundObjectPtr  operands) const
protectedvirtual

Implemented to aquire the read lock on the GU_Detail held by the GU_DetailHandle, call doDetailConversion(), and finally unlock the GU_Detail. Derived classes need not reimplement this function, but should instead implement doDetailConversion().

Implements IECore::ToCoreConverter.

Reimplemented in IECoreHoudini::FromHoudiniGroupConverter.

static GU_DetailHandle IECoreHoudini::FromHoudiniGeometryConverter::extract ( const GU_Detail *  geo,
const UT_StringMMPattern &  nameFilter 
)
static

Convenience function to extract the named shapes from the given GU_Detail. This can be used before calling the factory create mechanism, when only the named portion of the detail is of interest.

template<typename T >
T::Ptr IECoreHoudini::FromHoudiniGeometryConverter::extractData ( const GA_Attribute *  attr,
const GA_Range &  range,
int  elementIndex = -1 
) const
protected

Utility functions for extracting attrib data from Houdini and storing it as a DataPtr of type T index allows a single component to be extracted from a larger container

static void IECoreHoudini::FromHoudiniGeometryConverter::supportedTypes ( std::set< IECore::TypeId > &  types)
static

Fills the passed vector with all the IECore::TypeIds for which a FromHoudiniGeometryConverter is available.

void IECoreHoudini::FromHoudiniGeometryConverter::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
protected

Extracts position and attribs from the GU_Detail and stores them as primitive variables on the IECore::Primitive provided. In most cases, this is the only transfer function that derived classes will need to use


The documentation for this class was generated from the following file: