fbxsdk/scene/geometry/fbxgeometrybase.h Source File
 
 
 
fbxsdk/scene/geometry/fbxgeometrybase.h
Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_SCENE_GEOMETRY_BASE_H_
00014 #define _FBXSDK_SCENE_GEOMETRY_BASE_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/base/fbxarray.h>
00019 #include <fbxsdk/core/math/fbxvector4.h>
00020 #include <fbxsdk/scene/geometry/fbxlayercontainer.h>
00021 
00022 #include <fbxsdk/fbxsdk_nsbegin.h>
00023 
00041 class FBXSDK_DLL FbxGeometryBase : public FbxLayerContainer
00042 {
00043     FBXSDK_OBJECT_DECLARE(FbxGeometryBase, FbxLayerContainer);
00044 public:
00045 
00050 
00055     virtual void InitControlPoints(int pCount);
00056 
00064     void InitNormals(int pCount = 0 );
00065 
00071     void InitNormals(FbxGeometryBase* pSrc);
00072 
00081     void InitTangents(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" );
00082 
00088     void InitTangents(FbxGeometryBase* pSrc, const int pLayerIndex = 0);
00089 
00098     void InitBinormals(int pCount = 0, const int pLayerIndex = 0, const char* pName = "" );
00099 
00105     void InitBinormals(FbxGeometryBase* pSrc, const int pLayerIndex = 0);
00106 
00118     virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , const FbxVector4 &pNormal , int pIndex, bool pI2DSearch = false);
00119 
00120 
00128     virtual void SetControlPointAt(const FbxVector4 &pCtrlPoint , int pIndex);
00129 
00136     virtual FbxVector4 GetControlPointAt(int pIndex) const;
00137 
00148     virtual void SetControlPointNormalAt(const FbxVector4 &pNormal, int pIndex, bool pI2DSearch=false);
00149 
00153     virtual int GetControlPointsCount() const;
00154 
00155 
00160     virtual FbxVector4* GetControlPoints() const;
00161 
00166         virtual void SetControlPointCount(int pCount);
00167 
00169 
00170 
00175 
00176                 FbxPropertyT<FbxBool> PrimaryVisibility;
00177 
00179                 FbxPropertyT<FbxBool> CastShadow;
00180 
00182                 FbxPropertyT<FbxBool> ReceiveShadow;
00183 
00185         FbxPropertyT<FbxDouble3> BBoxMin;
00186 
00188         FbxPropertyT<FbxDouble3> BBoxMax;
00189 
00192         void ComputeBBox();
00194 
00195 
00204 
00209     FbxGeometryElementNormal* CreateElementNormal();
00210 
00215     bool RemoveElementNormal(FbxGeometryElementNormal* pElementNormal);
00216 
00221     FbxGeometryElementNormal* GetElementNormal(int pIndex = 0);
00222 
00227     const FbxGeometryElementNormal* GetElementNormal(int pIndex = 0) const;
00228 
00232     int GetElementNormalCount() const;
00233 
00238     FbxGeometryElementBinormal* CreateElementBinormal();
00239 
00244     bool RemoveElementBinormal(FbxGeometryElementBinormal* pElementBinormal);
00245 
00250     FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0);
00251 
00256     const FbxGeometryElementBinormal* GetElementBinormal(int pIndex = 0) const;
00257 
00261     int GetElementBinormalCount() const;
00262 
00267     FbxGeometryElementTangent* CreateElementTangent();
00268 
00273     bool RemoveElementTangent(FbxGeometryElementTangent* pElementTangent);
00274 
00279     FbxGeometryElementTangent* GetElementTangent(int pIndex = 0);
00280 
00285     const FbxGeometryElementTangent* GetElementTangent(int pIndex = 0) const;
00286 
00290     int GetElementTangentCount() const;
00291 
00296     FbxGeometryElementMaterial* CreateElementMaterial();
00297 
00302     bool RemoveElementMaterial(FbxGeometryElementMaterial* pElementMaterial);
00303 
00308     FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0);
00309 
00314     const FbxGeometryElementMaterial* GetElementMaterial(int pIndex = 0) const;
00315 
00319     int GetElementMaterialCount() const;
00320 
00325     FbxGeometryElementPolygonGroup* CreateElementPolygonGroup();
00326 
00331     bool RemoveElementPolygonGroup(FbxGeometryElementPolygonGroup* pElementPolygonGroup);
00332 
00337     FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0);
00338 
00343     const FbxGeometryElementPolygonGroup* GetElementPolygonGroup(int pIndex = 0) const;
00344 
00348     int GetElementPolygonGroupCount() const;
00349 
00354     FbxGeometryElementVertexColor* CreateElementVertexColor();
00355 
00360     bool RemoveElementVertexColor(FbxGeometryElementVertexColor* pElementVertexColor);
00361 
00366     FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0);
00367 
00372     const FbxGeometryElementVertexColor* GetElementVertexColor(int pIndex = 0) const;
00373 
00377     int GetElementVertexColorCount() const;
00378 
00383     FbxGeometryElementSmoothing* CreateElementSmoothing();
00384 
00389     bool RemoveElementSmoothing(FbxGeometryElementSmoothing* pElementSmoothing);
00390 
00395     FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0);
00396 
00401     const FbxGeometryElementSmoothing* GetElementSmoothing(int pIndex = 0) const;
00402 
00406     int GetElementSmoothingCount() const;
00407 
00412     FbxGeometryElementCrease* CreateElementVertexCrease();
00413 
00418     bool RemoveElementVertexCrease(FbxGeometryElementCrease* pElementCrease);
00419 
00424     FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0);
00425 
00430     const FbxGeometryElementCrease* GetElementVertexCrease(int pIndex = 0) const;
00431 
00435     int GetElementVertexCreaseCount() const;
00436 
00441     FbxGeometryElementCrease* CreateElementEdgeCrease();
00442 
00447     bool RemoveElementEdgeCrease(FbxGeometryElementCrease* pElementCrease);
00448 
00453     FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0);
00454 
00459     const FbxGeometryElementCrease* GetElementEdgeCrease(int pIndex = 0) const;
00460 
00464     int GetElementEdgeCreaseCount() const;
00465 
00470     FbxGeometryElementHole* CreateElementHole();
00471 
00476     bool RemoveElementHole(FbxGeometryElementHole* pElementHole);
00477 
00482     FbxGeometryElementHole* GetElementHole(int pIndex = 0);
00483 
00488     const FbxGeometryElementHole* GetElementHole(int pIndex = 0) const;
00489 
00493     int GetElementHoleCount() const;
00494 
00499     FbxGeometryElementUserData* CreateElementUserData();
00500 
00505     bool RemoveElementUserData(FbxGeometryElementUserData* pElementUserData);
00506 
00511     FbxGeometryElementUserData* GetElementUserData(int pIndex = 0);
00512 
00517     const FbxGeometryElementUserData* GetElementUserData(int pIndex = 0) const;
00518 
00522     int GetElementUserDataCount() const;
00523 
00528     FbxGeometryElementVisibility* CreateElementVisibility();
00529 
00534     bool RemoveElementVisibility(FbxGeometryElementVisibility* pElementVisibility);
00535 
00540     FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0);
00541 
00546     const FbxGeometryElementVisibility* GetElementVisibility(int pIndex = 0) const;
00547 
00551     int GetElementVisibilityCount() const;
00552 
00557     FbxGeometryElementUV* CreateElementUV(const char* pUVSetName);
00558 
00563     bool RemoveElementUV(FbxGeometryElementUV* pElementUV);
00564 
00569     FbxGeometryElementUV* GetElementUV(int pIndex = 0);
00570 
00575     const FbxGeometryElementUV* GetElementUV(int pIndex = 0) const;
00576 
00580     int GetElementUVCount() const;
00581 
00586     FbxGeometryElementUV* GetElementUV(const char* pUVSetName);
00587 
00592     const FbxGeometryElementUV* GetElementUV(const char* pUVSetName) const;
00593 
00597     void GetUVSetNames(FbxStringList& pUVSetNameList) const;
00598 
00600 
00601 
00616         virtual bool ContentWriteTo(FbxStream& pStream) const;
00617 
00623         virtual bool ContentReadFrom(const FbxStream& pStream);
00625 
00629         virtual int MemoryUsage() const;
00630 
00631 /*****************************************************************************************************************************
00632 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00633 *****************************************************************************************************************************/
00634 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00635         virtual FbxObject& Copy(const FbxObject& pObject);
00636 
00637     FbxArray<FbxVector4> mControlPoints;
00638 
00639     bool GetNormals(FbxLayerElementArrayTemplate<FbxVector4>** pLockableArray) const;
00640     bool GetNormalsIndices(FbxLayerElementArrayTemplate<int>** pLockableArray) const;
00641     bool GetTangents(FbxLayerElementArrayTemplate<FbxVector4>** pLockableArray, const int pLayerIndex = 0) const;
00642     bool GetTangentsIndices(FbxLayerElementArrayTemplate<int>** pLockableArray, const int pLayerIndex = 0) const;
00643     bool GetBinormals(FbxLayerElementArrayTemplate<FbxVector4>** pLockableArray, const int pLayerIndex = 0) const;
00644     bool GetBinormalsIndices(FbxLayerElementArrayTemplate<int>** pLockableArray, const int pLayerIndex = 0) const;
00645 
00646 protected:
00647     virtual void ConstructProperties(bool pForceSet);
00648     virtual void ContentClear();
00649 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00650 };
00651 
00652 #include <fbxsdk/fbxsdk_nsend.h>
00653 
00654 #endif /* _FBXSDK_SCENE_GEOMETRY_BASE_H_ */