ON_SubDMesh is used to store a high density traditional quad mesh of a SubD surface or a mesh of a SubD control net. In general, is is better to use an ON_SubDMeshFragmentIterator(subd) that iterates the ON_MeshFragments cached on the ON_SubD.  
 More...
#include <opennurbs_subd.h>
|  | 
|  | ON_SubDMesh ()=default | 
|  | 
|  | ON_SubDMesh (const ON_SubDMesh &)=default | 
|  | 
|  | ~ON_SubDMesh ()=default | 
|  | 
| unsigned int | AbsoluteSubDDisplayDensity () const | 
|  | 
| ON_BoundingBox | BoundingBox () const | 
|  | 
| void | Clear () | 
|  | 
| void | ClearTree () | 
|  | 
| ON__UINT64 | ContentSerialNumber () const | 
|  | 
| ON_SubDMesh | Copy () const | 
|  | 
| ON_SubDMesh & | CopyFrom (const ON_SubDMesh &src) | 
|  | 
| unsigned int | DisplayDensity () const | 
|  | 
| ON_SubDDisplayParameters | DisplayParameters () const | 
|  | 
| const ON_SubDMeshFragment * | FaceFragment (const class ON_SubDFace *face) const | 
|  | 
| const ON_SubDMeshFragment * | FirstFragment () const | 
|  | linked list of mesh fragments  More... 
 | 
|  | 
| unsigned int | FragmentCount () const | 
|  | 
| const ON_RTree & | FragmentTree () const | 
|  | 
| bool | GetEdgeCenterPointAndNormal (const class ON_SubDEdge *edge, unsigned int edge_face_index, double *P, double *N) const | 
|  | 
| bool | GetFaceCenterPointAndNormal (const class ON_SubDFace *face, double *P, double *N) const | 
|  | 
| bool | GetTightBoundingBox (ON_BoundingBox &bbox, bool bGrowBox, const ON_Xform *xform) const | 
|  | 
| bool | IsEmpty () const | 
|  | 
| ON_SubDMesh & | operator= (const ON_SubDMesh &)=default | 
|  | 
| ON_SubD | SubD () const | 
|  | 
| ON_SubDRef | SubDRef () const | 
|  | 
| class ON_SubDMeshImpl * | SubLimple () const | 
|  | 
| unsigned int | SubLimpleUseCount () const | 
|  | 
| ON_Mesh * | ToMesh (ON_Mesh *destination_mesh) const | 
|  | 
| ON_Mesh * | ToMesh (unsigned int mesh_density, ON_Mesh *destination_mesh) const | 
|  | 
| bool | Transform (bool bKeepCurvatures, bool bKeepTextures, bool bKeepColors, const ON_Xform &xform, const ON_Xform &xformNormals, const ON_Xform &xformCurvatures, const ON_Xform &xformTextures, const ON_Xform &xformColors) | 
|  | 
| bool | Transform (const ON_Xform &xform) | 
|  | 
| bool | Update (bool bShareUpdate) | 
|  | 
ON_SubDMesh is used to store a high density traditional quad mesh of a SubD surface or a mesh of a SubD control net. In general, is is better to use an ON_SubDMeshFragmentIterator(subd) that iterates the ON_MeshFragments cached on the ON_SubD. 
ON_SubDMesh
◆ ON_SubDMesh() [1/2]
  
  | 
        
          | ON_SubDMesh::ON_SubDMesh | ( |  | ) |  |  | default | 
 
 
◆ ~ON_SubDMesh()
  
  | 
        
          | ON_SubDMesh::~ON_SubDMesh | ( |  | ) |  |  | default | 
 
 
◆ ON_SubDMesh() [2/2]
◆ AbsoluteSubDDisplayDensity()
      
        
          | unsigned int ON_SubDMesh::AbsoluteSubDDisplayDensity | ( |  | ) | const | 
      
 
Returns: The absolute subd display density used to create this display mesh. 
 
 
◆ BoundingBox()
◆ Clear()
      
        
          | void ON_SubDMesh::Clear | ( |  | ) |  | 
      
 
Description: Clears everything. 
 
 
◆ ClearTree()
      
        
          | void ON_SubDMesh::ClearTree | ( |  | ) |  | 
      
 
Description: If the tree is not needed and memory resources are tight, then call ClearTree() to remove the RTree. 
 
 
◆ ContentSerialNumber()
      
        
          | ON__UINT64 ON_SubDMesh::ContentSerialNumber | ( |  | ) | const | 
      
 
Returns: A runtime number that changes if the limit mesh content changes. 0: Empty limit mesh Remarks: This is a runtime number. It is not saved in archives and begins at 1 with each new runtime instance of the opennurbs library. 
 
 
◆ Copy()
◆ CopyFrom()
◆ Create() [1/2]
◆ Create() [2/2]
Description: This version is for expert users who want to take responsibility for managing the subd and limit mesh 
 
 
◆ DisplayDensity()
      
        
          | unsigned int ON_SubDMesh::DisplayDensity | ( |  | ) | const | 
      
 
 
◆ DisplayParameters()
◆ FaceFragment()
Parameters: face - [in] Returns: The first fragment for this face or nullptr if none is found. If the face is not a quad, then there will be multiple partial fragments for the face and this is the first on. The others follow using m_next_fragment. 
 
 
◆ FirstFragment()
linked list of mesh fragments 
 
 
◆ FragmentCount()
      
        
          | unsigned int ON_SubDMesh::FragmentCount | ( |  | ) | const | 
      
 
 
◆ FragmentTree()
      
        
          | const ON_RTree& ON_SubDMesh::FragmentTree | ( |  | ) | const | 
      
 
Description: The ON__INT_PTRs in the tree are const ON_SubDMeshFragment* pointers. 
 
 
◆ GetEdgeCenterPointAndNormal()
      
        
          | bool ON_SubDMesh::GetEdgeCenterPointAndNormal | ( | const class ON_SubDEdge * | edge, | 
        
          |  |  | unsigned int | edge_face_index, | 
        
          |  |  | double * | P, | 
        
          |  |  | double * | N | 
        
          |  | ) |  | const | 
      
 
Description: Get the limit surface point location and normal for the edge's midpoint from the limit mesh grid. Parameters: edge - [in] edge_face_index - [in] Index of the face to use for the normal. If the edge is a crease, then each attached face may have a different normal. Pass 0 when in doubt. P - [out] P = limit surface location or ON_3dPoint::NanPoint if not available. N - [out] N = limit surface unit normal or ON_3dVector::NanVector if not available. Returns: True if the point and normal were set from the limit mesh fragment. False if the limit mesh fragment was not found and nan values were returned. 
 
 
◆ GetFaceCenterPointAndNormal()
      
        
          | bool ON_SubDMesh::GetFaceCenterPointAndNormal | ( | const class ON_SubDFace * | face, | 
        
          |  |  | double * | P, | 
        
          |  |  | double * | N | 
        
          |  | ) |  | const | 
      
 
Description: Get the limit surface point location and normal for the face's center from the limit mesh grid. Parameters: face - [in] P - [out] P = limit surface location or ON_3dPoint::NanPoint if not available. N - [out] N = limit surface unit normal or ON_3dVector::NanVector if not available. Returns: True if the point and normal were set from the limit mesh fragment. False if the limit mesh fragment was not found and nan values were returned. 
 
 
◆ GetTightBoundingBox()
◆ IsEmpty()
      
        
          | bool ON_SubDMesh::IsEmpty | ( |  | ) | const | 
      
 
 
◆ operator=()
◆ SubD()
      
        
          | ON_SubD ON_SubDMesh::SubD | ( |  | ) | const | 
      
 
 
◆ SubDRef()
◆ SubLimple()
Description: Pretend this function and ON_SubDMeshImpl do not exist. Returns: Something that you are pretending does not exist. Remarks: It is intentional that the definition of ON_SubDMeshImpl class is not available in the opennurbs library interface (not in a header file). The size and design of ON_SubDMeshImpl will change constantly. If you choose to hack and whack so you can dereference an ON_SubDMeshImpl* pointer, then your code will crash unpredictably. 
 
 
◆ SubLimpleUseCount()
      
        
          | unsigned int ON_SubDMesh::SubLimpleUseCount | ( |  | ) | const | 
      
 
 
◆ Swap()
◆ ToMesh() [1/3]
Description: Parameters: frit - [in] A fragment iterator from an ON_SubDMesh or ON_SubD. mesh_density - [in] Larger numbers return denser meshes. MinimumMeshDensity() <= mesh_density <= MaximumMeshDensity() destination_mesh - [in] If destination_mesh is not nullptr, then the returned mesh will be store here. Otherwise the returned mesh will be allocated with a call to new ON_Mesh(). Returns: If this limit mesh is not empty, an ON_Mesh representation of this limit mesh. Otherwise, nullptr. 
 
 
◆ ToMesh() [2/3]
Description: Parameters: destination_mesh - [in] If destination_mesh is not nullptr, then the returned mesh will be store here. Otherwise the returned mesh will be allocated with a call to new ON_Mesh(). Returns: If this limit mesh is not empty, an ON_Mesh representation of this limit mesh. Otherwise, nullptr. 
 
 
◆ ToMesh() [3/3]
      
        
          | ON_Mesh* ON_SubDMesh::ToMesh | ( | unsigned int | mesh_density, | 
        
          |  |  | ON_Mesh * | destination_mesh | 
        
          |  | ) |  | const | 
      
 
Description: Parameters: mesh_density - [in] Larger numbers return denser meshes. destination_mesh - [in] If destination_mesh is not nullptr, then the returned mesh will be store here. Otherwise the returned mesh will be allocated with a call to new ON_Mesh(). Returns: If this limit mesh is not empty, an ON_Mesh representation of this limit mesh. Otherwise, nullptr. 
 
 
◆ Transform() [1/2]
      
        
          | bool ON_SubDMesh::Transform | ( | bool | bKeepCurvatures, | 
        
          |  |  | bool | bKeepTextures, | 
        
          |  |  | bool | bKeepColors, | 
        
          |  |  | const ON_Xform & | xform, | 
        
          |  |  | const ON_Xform & | xformNormals, | 
        
          |  |  | const ON_Xform & | xformCurvatures, | 
        
          |  |  | const ON_Xform & | xformTextures, | 
        
          |  |  | const ON_Xform & | xformColors | 
        
          |  | ) |  |  | 
      
 
 
◆ Transform() [2/2]
      
        
          | bool ON_SubDMesh::Transform | ( | const ON_Xform & | xform | ) |  | 
      
 
 
◆ Update()
      
        
          | bool ON_SubDMesh::Update | ( | bool | bShareUpdate | ) |  | 
      
 
Description: If the subd referenced by m_subd_ref changes, then call Update to update the limit mesh. 
 
 
◆ ON_SubDMeshImpl
  
  | 
        
          | friend class ON_SubDMeshImpl |  | friend | 
 
 
◆ Empty