Cortex
10.0.0-a4
|
#include <Primitive.h>
Public Member Functions | |
IE_CORE_DECLAREABSTRACTOBJECT (Primitive, VisibleRenderable) | |
template<typename T > | |
T * | variableData (const std::string &name, PrimitiveVariable::Interpolation requiredInterpolation=PrimitiveVariable::Invalid) |
template<typename T > | |
const T * | variableData (const std::string &name, PrimitiveVariable::Interpolation requiredInterpolation=PrimitiveVariable::Invalid) const |
template<typename T > | |
T::Ptr | expandedVariableData (const std::string &name, PrimitiveVariable::Interpolation requiredInterpolation=PrimitiveVariable::Invalid) const |
bool | isPrimitiveVariableValid (const PrimitiveVariable &pv) const |
Returns true if the given primitive variable has the correct size for its interpolation type. | |
bool | arePrimitiveVariablesValid () const |
Returns true if all primitive variables have the correct size for their interpolation type. | |
PrimitiveVariable::Interpolation | inferInterpolation (size_t numElements) const |
PrimitiveVariable::Interpolation | inferInterpolation (const Data *data) const |
Imath::Box3f | bound () const override |
virtual size_t | variableSize (PrimitiveVariable::Interpolation interpolation) const =0 |
virtual void | topologyHash (MurmurHash &h) const =0 |
Hash representing the topology only. | |
![]() | |
IE_CORE_DECLAREABSTRACTOBJECT (VisibleRenderable, Renderable) | |
![]() | |
IE_CORE_DECLAREABSTRACTOBJECT (Renderable, BlindDataHolder) | |
virtual void | render (Renderer *renderer) const =0 |
Render the object held by this instance via the given renderer. | |
![]() | |
BlindDataHolder (CompoundDataPtr data) | |
IE_CORE_DECLAREOBJECT (BlindDataHolder, Object) | |
CompoundData * | blindData () |
Return the blind data for modification. | |
const CompoundData * | blindData () const |
![]() | |
IE_CORE_DECLARERUNTIMETYPED (Object, RunTimeTyped) | |
ObjectPtr | copy () const |
void | copyFrom (const Object *other) |
void | save (IndexedIOPtr ioInterface, const IndexedIO::EntryID &name) const |
virtual bool | isEqualTo (const Object *other) const =0 |
virtual bool | isNotEqualTo (const Object *other) const |
bool | operator== (const Object &other) const |
Calls isEqualTo() for people who prefer to use the operator syntax. | |
bool | operator!= (const Object &other) const |
Calls isNotEqualTo() for people who prefer to use the operator syntax. | |
size_t | memoryUsage () const |
Returns the number of bytes this instance occupies in memory. | |
MurmurHash | hash () const |
virtual void | hash (MurmurHash &h) const =0 |
![]() | |
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 |
![]() | |
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 PrimitiveVariableMap | loadPrimitiveVariables (const IndexedIO *ioInterface, const IndexedIO::EntryID &name, const IndexedIO::EntryIDList &primVarNames) |
![]() | |
static void | registerType (TypeId typeId, const std::string &typeName, CreatorFn creator, void *data=nullptr) |
Register a new Object-derived type with the system. The specified void* data is passed into the creator function. | |
static bool | isType (TypeId typeId) |
Returns true if typeId is a valid registered Object type. | |
static bool | isType (const std::string &typeName) |
Returns true if typeName is a valid registered Object type. | |
static bool | isAbstractType (TypeId typeId) |
static bool | isAbstractType (const std::string &typeName) |
As above but taking a type name. | |
static ObjectPtr | create (TypeId typeId) |
static ObjectPtr | create (const std::string &typeName) |
static ObjectPtr | load (ConstIndexedIOPtr ioInterface, const IndexedIO::EntryID &name) |
![]() | |
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. | |
Public Attributes | |
PrimitiveVariableMap | variables |
Variables a stored as a public map for easy manipulation. | |
Additional Inherited Members | |
![]() | |
typedef ObjectPtr(* | CreatorFn) (void *data) |
![]() | |
typedef RefCounted | BaseClass |
A typedef for the class this class derives from. All RunTimeTyped classes define this typedef. | |
![]() | |
typedef size_t | RefCount |
![]() | |
typedef std::map< TypeId, TypeId > | BaseTypeRegistryMap |
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, TypeId > | TypeNamesToTypeIdsMap |
![]() | |
virtual void | copyFrom (const Object *other, CopyContext *context)=0 |
IE_CORE_DECLAREPTR (LoadContext) | |
virtual void | save (SaveContext *context) const =0 |
virtual void | load (LoadContextPtr context)=0 |
virtual void | memoryUsage (MemoryAccumulator &accumulator) const =0 |
![]() | |
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 () |
![]() | |
static Mutex | g_baseTypeIdsMutex |
static Mutex | g_derivedTypeIdsMutex |
The Primitive class defines an abstract base for Renderable primitives. Primitives are expected to be objects which are visible in final rendered images rather than Renderables which just change some part of the renderer state (such as an attribute). Primitives may hold "primitive variables" which are simply values which vary over the surface of the Primitive and can be used by the renderer to define various aspects of its appearance.
|
overridevirtual |
Implemented to return a box containing all the points in the variable "P" if it exists.
Implements IECore::VisibleRenderable.
Reimplemented in IECore::SpherePrimitive.
T::Ptr IECore::Primitive::expandedVariableData | ( | const std::string & | name, |
PrimitiveVariable::Interpolation | requiredInterpolation = PrimitiveVariable::Invalid |
||
) | const |
Use expandedVariableData() to find a named variable, expand indices if they exist, and cast to the requested data type. If the variable is not indexed, a direct copy will be returned. Note that the PrimitiveVariable itself remains unchanged. If requiredInterpolation is specified and does not match the interpolation of the variable, or if the type does not match the data, then nullptr is returned.
PrimitiveVariable::Interpolation IECore::Primitive::inferInterpolation | ( | size_t | numElements | ) | const |
Guesses a suitable interpolation type for a PrimitiveVariable containing the specified number of data elements. Returns PrimitiveVariable::Invalid if no such interpolation exists. Note that for a given size multiple interpolation types may well be valid, so this method may not always give the desired results. In the case of multiple suitable types, interpolations are given the following priority (highest first) :
Constant Uniform Vertex Varying FaceVarying
PrimitiveVariable::Interpolation IECore::Primitive::inferInterpolation | ( | const Data * | data | ) | const |
Convenience function which finds the size of data and calls the above method.
|
static |
Utility function that can be used in place of Object::load() to load only the primitive variables from a Primitive object stored in a IndexedIO file. The function tries to load the requested primitive variables and will ignore the ones that do not exist in the file.
T* IECore::Primitive::variableData | ( | const std::string & | name, |
PrimitiveVariable::Interpolation | requiredInterpolation = PrimitiveVariable::Invalid |
||
) |
Use variableData() to find a named variable and cast to the requested data type. If requiredInterpolation is specified and does not match the interpolation of the variable, or if the type does not match the data, then nullptr is returned. These methods throw if the PrimitiveVariable is indexed, as the returned data would not be sufficient for manipulating the PrimitiveVariable. To access indexed variables, either call expandedVariableData and take ownership of the copied data, or get them directly from the PrimitiveVariableMap to manipulate them in-place.
|
pure virtual |
Returns the number of values a piece of data must provide for the given interpolation type. Must be implemented in all derived classes.
Implemented in IECore::MeshPrimitive, IECore::PatchMeshPrimitive, IECore::SpherePrimitive, IECore::NURBSPrimitive, IECore::PointsPrimitive, IECore::CurvesPrimitive, and IECore::DiskPrimitive.