14 #ifndef __GEO_ImplicitSurface_h__
15 #define __GEO_ImplicitSurface_h__
43 template <VEX_Precision PREC>
123 xform = h_transform.
get(off);
140 dp.shape_dparms = h_shapedvals.
isValid() ?
Vec4(h_shapedvals.
get(off)) :
Vec4(0, 0, 0, 0);
166 myOps[i].scale(uniform_scale);
220 Float *attr_out)
const;
224 Vec3 *attr_out)
const;
284 template <
bool WantGrad,
bool WantDParm>
291 template <
bool WantGrad,
bool WantDParm,
bool WantInterp,
292 typename Val,
typename ValFn>
295 const ValFn &valFn, Val *interp_val)
const;
302 int evalGroupIntervalSphere(
int start,
const Vec3 ¢er,
Float radius,
306 #endif // __GEO_ImplicitSurface_h__
A class to manage an ordered array which has fixed offset handles.
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
UT_IntervalT< Float > IntervalF
Axis-aligned bounding box (AABB).
IntervalF evalInterval(const BBox3 &P, UT_Array< int > &relevant_ids) const
Evaluate SDF over an interval region, returning relevant shape IDs.
UT_BoundingBoxT< Float > BBox3
Vec4 op_dparms
Time derivative of operation parameters (e.g., change in smooth k)
SYS_FORCE_INLINE bool isValid() const
SYS_FORCE_INLINE const HOLDER & get(GA_Offset off, int comp=0) const
Get the string at the given offset.
Float operator()(const Vec3 &P) const
GEO_ImplicitSurface(const GEO_Detail &geo)
void getRotationMatrix(UT_Matrix3 &mat) const
typename VEX_PrecisionResolver< P >::vec3_type VEXvec3
void applyTransform(const Vec3 &translate, const Quat &rotate, Float uniform_scale)
#define utZoneScopedN(name)
const GA_IndexMap & getPointMap() const
GEO_ImplicitBasicSurface< PREC > Shape
Vec4 shape_dparms
Time derivative of shape parameters (e.g., change in box size)
IntervalF outputBoundAndPrune(const Vec3 ¢er, const Float radius, GEO_ImplicitSurface< PREC > &pruned) const
void evalBatchedAttr(int npts, const Vec3 *P, Float *sdf, int *shape_id, Vec3 *grad, Float *dparm, const GA_ROHandleF &h_attr, const GA_IndexMap &ptmap, Float *attr_out) const
typename VEX_PrecisionResolver< P >::float_type VEXfloat
void evalBatched(int npts, const Vec3 *P, Float *sdf) const
UT_ValArray< DParms > myDParms
void applyIndexSpaceTransform(const GA_PrimVolumeXform &index_xform)
SYS_FORCE_INLINE T get(GA_Offset off, int comp=0) const
ImageBuf OIIO_API rotate(const ImageBuf &src, float angle, string_view filtername=string_view(), float filterwidth=0.0f, bool recompute_roi=false, ROI roi={}, int nthreads=0)
SYS_FORCE_INLINE bool isValid() const
UT_Vector4T< Float > Vec4
void evalBatchedVel(int npts, const Vec3 *P, Float *sdf, int *shape_id, Vec3 *grad, Float *dparm, Vec3 *rigid_vel) const
SYS_FORCE_INLINE GA_Offset offsetFromIndex(GA_Index ordered_index) const
GEO_ImplicitSurfaceOp< PREC > Op
void applyOffset(const Float offset)
Apply offset to the surface.
GLubyte GLubyte GLubyte GLubyte w
Time derivatives of shape/operation parameters for computing dparm.
PUGI__FN char_t * translate(char_t *buffer, const char_t *from, const char_t *to, size_t to_length)
UT_ValArray< Shape > myShapes
SYS_NO_DISCARD_RESULT UT_Vector3T< T > rotate(const UT_Vector3T< T > &) const
GEO_ImplicitSurface()=default
typename VEX_PrecisionResolver< P >::mat3_type VEXmat3
void extractScalesT(UT_Vector3T< S > &scales, UT_Vector3T< S > *shears)
void updateFromRotationMatrix(const UT_Matrix3 &)
SYS_FORCE_INLINE GA_Size getNumPoints() const
Return the number of points.
constexpr SYS_FORCE_INLINE T & x() noexcept