HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GEO_Transform.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: GEO_Transform.h (GU Library, C++)
7  *
8  */
9 
10 // TODO should there be a class or namespace or anything, or just totally stand
11 // alone functions?
12 
13 #ifndef __GEO_Transform_h__
14 #define __GEO_Transform_h__
15 
16 #include "GEO_API.h"
17 
19 
21  UT_Array<GA_RWHandleV3> &attribs,
22  UT_Array<GA_RWHandleV3D> &doubleattribs,
23  UT_Array<GA_RWHandleM4> &m4attribs,
24  UT_Array<GA_RWHandleM4D> &m4dattribs,
25  const char *attribpattern);
26 
27 // Computes on which side of the symmetry plane a given position lies. The
28 // side in the direction of the normal is 1, the opposite side is -1, and,
29 // right on the plane is 0.
31  const GEO_Detail::SoftSymmetryParms &symmetry,
32  const UT_Vector3 pos);
33 
35  const GA_AttributeTransformer &attribs,
37  GA_AttributeOwner owner,
40  bool just_P,
41  int keep_length,
42  GEO_Delta *geodelta,
43  const char *attribpattern = NULL);
44 
45 // prepares matx
46 int GEO_API
47 GEOcomputeSoftXform(float dist2, const GEO_Detail::LocalXformContext *local,
48  const UT_XformOrder &order,
49  float tx, float ty, float tz,
50  float rx, float ry, float rz,
51  float sx, float sy, float sz,
52  float s_xy, float s_xz, float s_yz,
53  float px, float py, float pz,
54  float prx, float pry, float prz,
55  const GEO_Rolloff &rolloff,
56  UT_Matrix4 &matx, float *falloff);
57 
58 template<typename T>
60  static constexpr T value() { return 0; }
61 };
62 
63 template<>
65  static constexpr fpreal32 value() { return SYS_FTOLERANCE; }
66 };
67 
68 template<>
70  static constexpr fpreal64 value() { return 1e-14; }
71 };
72 
73 template<typename T>
74 inline T GEO_API
76 {
79  return f;
80 }
81 
83  GA_RWHandleV3D &doublep);
84 
86 #endif
void GEO_API GEOgetFloatOrDoubleP(GEO_Detail &detail, GA_RWHandleV3 &floatp, GA_RWHandleV3D &doublep)
void GEO_API GEOupdatePointNormals(GEO_Detail &gdp, GEO_Delta *geodelta)
Class to pass transforms to GA_AttributeTransformer.
static constexpr fpreal64 value()
Definition: GEO_Transform.h:70
3D Vector class.
A string map of attributes to ease backward compatibility In the GB/GEO/GU library code would often p...
void GEO_API GEOxformElement(const GA_AttributeTransformer &attribs, GA_Offset offset, GA_AttributeOwner owner, GA_AttributeTransformer::Transform< fpreal32 > &ctx32, GA_AttributeTransformer::Transform< fpreal64 > &ctx64, bool just_P, int keep_length, GEO_Delta *geodelta, const char *attribpattern=NULL)
GA_Size GA_Offset
Definition: GA_Types.h:617
GLfloat f
Definition: glcorearb.h:1925
int GEO_API GEOcomputeSymmetrySide(const GEO_Detail::SoftSymmetryParms &symmetry, const UT_Vector3 pos)
double fpreal64
Definition: SYS_Types.h:191
GLintptr offset
Definition: glcorearb.h:664
#define GEO_API
Definition: GEO_API.h:10
static constexpr fpreal32 value()
Definition: GEO_Transform.h:65
static constexpr T value()
Definition: GEO_Transform.h:60
T GEO_API GEOconditionScale(T f)
Definition: GEO_Transform.h:75
IFDmantra py
Definition: HDK_Image.dox:266
GA_AttributeOwner
Definition: GA_Types.h:33
int GEO_API GEOcomputeSoftXform(float dist2, const GEO_Detail::LocalXformContext *local, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, UT_Matrix4 &matx, float *falloff)
#define SYS_FTOLERANCE
Definition: SYS_Types.h:202
bool GEO_API GEOgetAttributeList(const GA_AttributeDict &dict, UT_Array< GA_RWHandleV3 > &attribs, UT_Array< GA_RWHandleV3D > &doubleattribs, UT_Array< GA_RWHandleM4 > &m4attribs, UT_Array< GA_RWHandleM4D > &m4dattribs, const char *attribpattern)
float fpreal32
Definition: SYS_Types.h:190
Class to efficiently transform multiple attributes.