12 #ifndef __GU_RayPrimInfo_h__
13 #define __GU_RayPrimInfo_h__
42 #ifdef OPENVDB_ENABLED
72 float &
t,
float &u,
float &
v,
float &d2);
124 void bumpRefCount(
int dir);
125 static void getXYProjection(
const UT_Vector3 &nml,
int &
x,
int &
y);
141 virtual int64 getMemoryUsage(
bool inclusive)
const = 0;
187 int64 mem = inclusive ?
sizeof(*this) : 0;
226 template<
bool ISTET=false>
254 int64 mem = inclusive ?
sizeof(*this) : 0;
267 template<
bool ISTET=false>
295 int64 mem = inclusive ?
sizeof(*this) : 0;
324 float A[4]) noexcept;
331 const float A[4]) noexcept;
353 int64 mem = inclusive ?
sizeof(*this) : 0;
382 int64 mem = inclusive ?
sizeof(*this) : 0;
418 int64 mem = inclusive ?
sizeof(*this) : 0;
449 int64 mem = inclusive ?
sizeof(*this) : 0;
463 template<
bool ISHEX=false>
470 float ustart = 0.0F,
float ulength = 1.0F,
471 float vstart = 0.0F,
float vlength = 1.0F,
494 int64 mem = inclusive ?
sizeof(*this) : 0;
509 template<
bool ISHEX=false>
516 float ustart = 0.0
f,
float ulen = 1.0
f,
517 float vstart = 0.0
f,
float vlen = 1.0
f,
518 bool revnml =
false,
float w=0.0
f);
540 int64 mem = inclusive ?
sizeof(*this) : 0;
588 int64 mem = inclusive ?
sizeof(*this) : 0;
615 template<
typename ARRAY_TYPE>
634 int64 mem = inclusive ?
sizeof(*this) : 0;
636 mem += npts *
sizeof(xval[0]);
638 mem += npts *
sizeof(yval[0]);
702 #ifdef OPENVDB_ENABLED
724 template<
bool farthest,
bool rm_backface,
bool reverse,
bool b
idirectional,
typename FUNCTOR>
735 FUNCTOR &functor)
const;
764 int polyline,
int harden,
bool solidtet);
785 const int myPolyLine;
787 const int mySolidTet;
829 int64 mem = inclusive ?
sizeof(*this) : 0;
855 , myFirstSpanFlag(is_first_span)
856 , myLastSpanFlag(is_last_span)
878 int intersectEndPointZone(
889 bool myFirstSpanFlag : 1,
911 return knots.
size() - 1;
913 template<
typename FUNCTOR>
916 const int ord = bezcurve->
getOrder();
918 const int last = knots.
size() - 2;
921 for (
int j = last;
j >= 0; --
j)
923 const bool is_first = (
j == 0);
924 const bool is_last = (
j == last);
926 is_first, is_last,
j, s, ord));
957 int64 mem = inclusive ?
sizeof(*this) : 0;
959 mem += myCurve->getMemoryUsage(
true);
980 template<
typename FUNCTOR>
987 const bool rational = nurbcurve->
isRational();
990 for (pyramid.rewind(ub); !pyramid.atEnd(); pyramid.advance())
993 nurbcurve, (pinfonum ? *pinfonum : 0),
994 pyramid.getInterval(), pyramid.getResult(),
997 functor(nurbcurveinfo);
1028 int64 mem = inclusive ?
sizeof(*this) : 0;
1029 mem += myCurve.getMemoryUsage(
false);
1050 int u_span,
int v_span,
1051 int u_ord,
int v_ord,
1052 float u_start,
float u_length,
1053 float v_start,
float v_length,
1054 int u_beg,
int v_beg,
1055 int u_num,
int v_num,
1066 template<
typename FUNCTOR>
1077 for (
int r = vknots.
size()-2;
r >= 0;
r--)
1079 const int r1 = (vord-1)*
r;
1080 for (
int c = uknots.
size()-2; c >= 0; c--)
1082 const int c1 = (uord-1)*c;
1084 bezsurf, (pinfonum ? *pinfonum : 0),
1087 uknots(c), uknots(c+1)-uknots(c),
1088 vknots(
r), vknots(
r+1)-vknots(
r),
1125 int64 mem = inclusive ?
sizeof(*this) : 0;
1127 mem += mySurf->getMemoryUsage(
true);
1141 int u_ord,
int v_ord,
1147 template<
typename FUNCTOR>
1157 const bool rational = nurbsurf->
isRational();
1159 for (uPyramid.rewind(ub); !uPyramid.atEnd(); uPyramid.advance())
1162 for (vPyramid.rewind(vb); !vPyramid.atEnd(); vPyramid.advance())
1165 (pinfonum ? *pinfonum : 0),
1167 u, vPyramid.getInterval(),
1168 vPyramid.getResult(),
1199 int64 mem = inclusive ?
sizeof(*this) : 0;
1200 mem += mySurf.getMemoryUsage(
false);
1236 int64 mem = inclusive ?
sizeof(*this) : 0;
SYS_FORCE_INLINE GA_Detail & getDetail() const
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
static void build(const FUNCTOR &functor, const GEO_PrimNURBSurf *nurbsurf, int *pinfonum=nullptr)
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
UT_UniquePtr< float[]> FloatPtrArray
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
SYS_FORCE_INLINE GA_Size getVertexCount() const
Return the number of vertices used by this primitive.
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
const UT_Array< GA_Offset > pts
virtual int minimum(const GEO_Detail &geo, const UT_Vector3 &p, GU_MinInfo &mininfo)
UT_UniquePtr< GU_RayRBezCurve > myCurve
virtual void init(const GEO_Detail &geo)
UT_Vector3T< float > UT_Vector3
virtual int minimumPrim(const GEO_Detail &geo, const GEO_Detail &prim_geo, GU_RayPrimInfo *prim, GU_MinInfo &mininfo)
virtual int intersectPrim(const GEO_Detail &geo, const GEO_Detail &prim_geo, GU_RayPrimInfo *prim, GU_RayInfo &hitinfo)
GEO_PrimVolumeXform myXform
GU_RayCurveInfo(GEO_ConstPrimitiveP curve, int serialidx, bool is_first_span, bool is_last_span)
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
unsigned getVOrder() const
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
int GU_getBilinearQuadIntersection(const UT_Vector3 &org, const UT_Vector3 &dir, const UT_Vector3 &A, const UT_Vector3 &B, const UT_Vector3 &C, const UT_Vector3 &D, const UT_Vector3 &norm, float &t, float &u, float &v, float &d2)
float globalDist(float t) const
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
static void build(const FUNCTOR &functor, const GEO_PrimRBezSurf *bezsurf, int *pinfonum=nullptr)
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
UT_UniquePtr< GU_RayRBezSurf > mySurf
GU_API bool GUisPointInsideTet(const UT_Vector3 &query, const UT_Vector3 *ps, UT_Vector3 n[4], bool &negated, float dots[4], float A[4]) noexcept
static int count(const GEO_PrimRBezCurve *bezcurve)
const openvdb::GridBase * myGridRawPtr
virtual UT_Vector3 getNormal(const UT_Vector3 &uvw) const
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
UT_Vector3 getNormal(const UT_Vector3 &uvw) const override
static void build(const FUNCTOR &functor, const GEO_PrimRBezCurve *bezcurve, int *pinfonum=nullptr)
SYS_FORCE_INLINE int getNumRows() const
GEO_ConstPrimitiveP myPrim2
GA_PrimitiveP_T< const GEO_Primitive, const GEO_Detail > GEO_ConstPrimitiveP
NURBS basis classes which maintain knot vectors.
float localDist(float t) const
UT_Vector3 getNormal(const UT_Vector3 &uvw) const override
const UT_VoxelArrayF * mySamples
SYS_FORCE_INLINE GEO_ConstPrimitiveP primP(const GEO_Detail &geo) const
UT_Vector3 getNormal(const UT_Vector3 &uvw) const override
UT_Vector3 getNormal(const UT_Vector3 &uvw) const override
GEO_PrimVolumeXform myXform
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
const GA_Basis * getBasis() const
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
GLfloat GLfloat GLfloat GLfloat h
static void build(const FUNCTOR &functor, const GEO_PrimNURBCurve *nurbcurve, int *pinfonum=nullptr)
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
GU_API UT_Vector3 GUfindPointInsideTet(float dots[4], const float A[4]) noexcept
const GA_KnotVector & getVector() const
unsigned getOrder() const override
~GU_RayCurveInfo() override
virtual int64 getMemoryUsage(bool inclusive) const =0
Report approximate memory usage.
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
GLubyte GLubyte GLubyte GLubyte w
SYS_FORCE_INLINE int getNumCols() const
UT_ThreadSpecificValue< void * > myCache
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
static exint count(const GEO_PrimRBezSurf *bezsurf)
unsigned getUOrder() const
SYS_AtomicCounter refCount
GA_Basis * getUBasis() const
int64 getMemoryUsage(bool inclusive) const override
Report approximate memory usage.
int getOrder() const
Return the order of the basis.
virtual int intersect(const GEO_Detail &geo, const UT_Vector3 &org, const UT_Vector3 &dir, GU_RayInfo &hitinfo)
UT_Vector3 getNormal(const UT_Vector3 &uvw) const override
GA_Basis * getVBasis() const
UT_Vector3 getNormal(const UT_Vector3 &uvw) const override