Go to the documentation of this file.00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSIPOLYGONMESH_H__
00018 #define __XSIPOLYGONMESH_H__
00019
00020 #include <xsi_geometry.h>
00021 #include <xsi_clusterproperty.h>
00022 #include <xsi_pointlocatordata.h>
00023
00024 namespace XSI {
00025
00026 class CVertexRefArray;
00027 class CEdgeRefArray;
00028 class CPolygonFaceRefArray;
00029 class CPolygonNodeRefArray;
00030 class CGeometryAccessor;
00031 class CMeshBuilder;
00032 class CClusterPropertyBuilder;
00033
00034
00064
00065
00066 class SICPPSDKDECL PolygonMesh : public Geometry
00067 {
00068 public:
00070 PolygonMesh();
00071
00073 ~PolygonMesh();
00074
00078 PolygonMesh(const CRef& in_ref);
00079
00083 PolygonMesh(const PolygonMesh& in_obj);
00084
00088 PolygonMesh(const Geometry& in_obj);
00089
00094 bool IsA( siClassID in_ClassID) const;
00095
00099 siClassID GetClassID() const;
00100
00106 PolygonMesh& operator=(const PolygonMesh& in_obj);
00107
00113 PolygonMesh& operator=(const Geometry& in_geom);
00114
00120 PolygonMesh& operator=(const CRef& in_ref);
00121
00125 CVertexRefArray GetVertices() const;
00126
00130 CEdgeRefArray GetEdges() const;
00131
00135 CPolygonFaceRefArray GetPolygons() const;
00136
00140 CPolygonNodeRefArray GetNodes() const;
00141
00192 CStatus Set( const MATH::CVector3Array& in_vertices,
00193 const CLongArray& in_polygonDescr );
00194
00209 CStatus Get( MATH::CVector3Array& io_vertices, CLongArray& io_polygonDescr ) const;
00210
00216 CStatus PutCurrentVertexColor( const ClusterProperty& = ClusterProperty());
00217
00228 ClusterProperty GetCurrentVertexColor( void ) const;
00229
00234 ClusterProperty AddVertexColor( const CString& name = CString() );
00235
00239 CRefArray GetVertexColors( void ) const;
00240
00283 CGeometryAccessor GetGeometryAccessor
00284 (
00285 siConstructionMode in_mode = siConstructionModeModeling,
00286 siSubdivisionRuleType in_type = siCatmullClark,
00287 LONG in_subdLevel = 0,
00288 bool in_bUseLoopForTriangles = false,
00289 bool in_bUseDiscontinuity = true,
00290 double in_discontinuityAngle = 60.0
00291 ) const;
00292
00297 CMeshBuilder GetMeshBuilder() const;
00298
00303 CClusterPropertyBuilder GetClusterPropertyBuilder() const;
00304
00389 CStatus GetPolygonIndexArray
00390 (
00391 const PointLocatorData& in_ptLocators,
00392 LONG in_nbPointLocatorsIndices,
00393 const LONG* in_pPointLocatorsIndices,
00394 LONG* out_pIndices
00395 ) const;
00396
00426 CStatus GetTriangleVertexIndexArray
00427 (
00428 const PointLocatorData& in_ptLocators,
00429 LONG in_nbPointLocatorsIndices,
00430 const LONG* in_pPointLocatorsIndices,
00431 LONG* out_pIndices
00432 ) const;
00433
00463 CStatus GetTriangleNodeIndexArray
00464 (
00465 const PointLocatorData& in_ptLocators,
00466 LONG in_nbPointLocatorsIndices,
00467 const LONG* in_pPointLocatorsIndices,
00468 LONG* out_pIndices
00469 ) const;
00470
00499 CStatus GetTriangleWeightArray
00500 (
00501 const PointLocatorData& in_ptLocators,
00502 LONG in_nbPointLocatorsIndices,
00503 const LONG* in_pPointLocatorsIndices,
00504 float* out_pWeights
00505 ) const;
00506
00627 PointLocatorData ConstructPointLocators
00628 (
00629 LONG in_nbPointLocators,
00630 const LONG* in_pPolygonIndices,
00631 const LONG* in_pSubTriangleVertexIndices,
00632 const float* in_pSubTriangleWeights
00633 ) const;
00634
00635 private:
00636 PolygonMesh * operator&() const;
00637 PolygonMesh * operator&();
00638 };
00639
00640 };
00641
00642 #endif // __XSIPOLYGONMESH_H__