35 #ifndef IE_CORE_PRIMITIVEEVALUATOR_H
36 #define IE_CORE_PRIMITIVEEVALUATOR_H
40 #include "OpenEXR/ImathVec.h"
41 #include "OpenEXR/ImathColor.h"
43 #include "IECore/Export.h"
44 #include "IECore/RunTimeTyped.h"
45 #include "IECore/Primitive.h"
50 IE_CORE_FORWARDDECLARE( PrimitiveEvaluator );
61 typedef PrimitiveEvaluatorPtr ( *CreatorFn )( ConstPrimitivePtr );
72 IE_CORE_DECLAREMEMBERPTR(
Result );
77 virtual Imath::V3f point()
const =0;
81 virtual Imath::V3f normal()
const =0;
84 virtual Imath::V2f uv()
const =0;
87 virtual Imath::V3f uTangent()
const =0;
90 virtual Imath::V3f vTangent()
const =0;
100 virtual const std::string &stringPrimVar(
const PrimitiveVariable &pv )
const =0;
105 IE_CORE_DECLAREPTR(
Result );
109 static PrimitiveEvaluatorPtr create( ConstPrimitivePtr primitive );
114 virtual ResultPtr createResult()
const = 0;
117 virtual ConstPrimitivePtr primitive()
const = 0;
133 virtual bool signedDistance(
const Imath::V3f &p,
float &distance,
Result *result )
const;
136 virtual float surfaceArea()
const=0;
139 virtual float volume()
const=0;
142 virtual Imath::V3f centerOfGravity()
const=0;
146 virtual bool closestPoint(
const Imath::V3f &p,
Result *result )
const =0;
149 virtual bool pointAtUV(
const Imath::V2f &uv,
Result *result )
const =0;
153 virtual bool intersectionPoint(
const Imath::V3f &origin,
const Imath::V3f &direction,
154 Result *result,
float maxDistance = Imath::limits<float>::max() )
const =0;
158 virtual int intersectionPoints(
const Imath::V3f &origin,
const Imath::V3f &direction,
159 std::vector<ResultPtr> &results,
float maxDistance = Imath::limits<float>::max() )
const =0;
164 virtual void validateResult(
Result *result )
const =0;
168 template<
typename E,
typename P =
typename E::PrimitiveType >
173 registerCreator( P::staticTypeId(), & E::create );
179 static void registerCreator(
TypeId id, CreatorFn f );
181 typedef std::map< TypeId, CreatorFn > CreatorMap;
183 static CreatorMap &getCreateFns();
191 #endif // IE_CORE_PRIMITIVEEVALUATOR_H
Definition: PrimitiveVariable.h:47
Definition: PrimitiveEvaluator.h:57
Definition: PrimitiveEvaluator.h:169
TypeId
Definition: TypeIds.h:46
Definition: PrimitiveEvaluator.h:68
Definition: RefCounted.h:124
Definition: RunTimeTyped.h:211
This namespace contains all components of the core library.
Definition: AddSmoothSkinningInfluencesOp.h:43