ETM 数据分析

来源:互联网 发布:mac的手绘软件 编辑:程序博客网 时间:2024/05/17 03:52
 
  1. class TerrainImpl                       //地图
  2. {
  3.     Ogre::SceneManager* mSceneMgr;     //new ET::TerrainManager(mSceneMgr);
  4.     Ogre::SceneNode* mTerrainNode;     //Tile的父节点  节点名默认为"ETTerrain/Terrain"  createTiles()
  5.     bool mTerrainLoaded;               //TerrainImpl::createTerrain()成功后 = true
  6.     IndexHandler* mIndexHandler;       //传给格子   createTerrain()中 mIndexHandler = new IndexHandler(mOpt.tileSize, mOpt.maxMipMapLevel);
  7.     TerrainInfo mInfo;                 //一个地图只存在一个地形,因为在createTerrain()中会调用destroyTerrain()  mTerrainMgr->createTerrain(terrainInfo);
  8.     Options mOpt;                      //格子配置项
  9.     std::string mInstanceName;         //不指定则为 "ETTerrain"
  10.     int mViewportHeight;               //初始化=0,其他地方没用到
  11.     Ogre::MaterialPtr mMaterial;       //mTerrainMgr->setMaterial(material);
  12.     
  13.     typedef std::vector<Tile*> TileCol;
  14.     typedef std::vector<TileCol> TileGrid;
  15.     /** Our terrain tile grid.*/
  16.     TileGrid mTiles;                    //格子Tile组成的网-->地形TerrainInfo   mTerrainMgr->createTerrain(terrainInfo);
  17.     
  18.     bool maxLODAtBorders;           //初始化false 其他地方没用到
  19. };
  20. /**
  21.    * This class stores all basic information about the terrain, i. e. its heightmap,
  22.    * its extents and the scaling.
  23.    */
  24. class _ETManagerExport TerrainInfo //地形:长、宽、高、位置、放大缩小率
  25. {
  26.     /** extents of the heightmap */
  27.     size_t mWidth, mHeight;
  28.     /** the heightmap */
  29.     std::vector<float> mHeightmap; // why does this NOT generate warnings?! it did with Brush //高由一格高度图描述  setHeightmap
  30.     
  31.     /** offset at which the (0, 0) point of the terrain is placed in Ogre */
  32.     Ogre::Vector3 mOffset;                     //初始化Vector3::ZERO   setExtents
  33.     /** scale of a terrain vertex */
  34.     Ogre::Vector3 mScale;                      //初始化Vector3::UNIT_SCALE   setExtents
  35. };
  36. /** A tile is the unit of terrain used for rendering. */
  37. /**对于同一个TerrainInfo下的所有Tile,
  38. 他们的mSceneMgr, mTerrainMgr, mIndexHandler, mInfo, mOpt 相同
  39. */
  40. class Tile : public Ogre::Renderable, public Ogre::MovableObject     //一个格子就是一个Tile,每个Tile对应一个SceneNode,一个TerrainInfo下的所有Tile共用一个父SceneNode
  41. {
  42.    Ogre::SceneManager* mSceneMgr;   //场景
  43.    TerrainImpl* mTerrainMgr;        //格子所在的地图
  44.    IndexHandler* mIndexHandler;     //LOD
  45.    TerrainInfo& mInfo;              //格子所在的地形
  46.    Options mOpt;                    //配置选项:格子大小、MipMap、Vertex、Morph
  47.    /** Info about this tile in regards to all tiles */
  48.    size_t mTileX, mTileZ;           //i*(mOpt.tileSize-1)  第i行
  49.    size_t mStartX, mStartZ;         //j*(mOpt.tileSize-1)  第j列
  50.    /** Current LOD */
  51.    unsigned int mLOD;              //初始化=0
  52.    /** LOD change distances */
  53.    std::vector<Ogre::Real> mLODChangeMinDistSqr;  //初始化= opts.maxMipMapLevel
  54.    Ogre::AxisAlignedBox mBounds;
  55.    Ogre::Real mBoundingRadius;
  56.    Ogre::Vector3 mCenter;
  57.    mutable bool mLightListDirty;    //初始化=true
  58.    mutable Ogre::LightList mLightList;
  59.    /** The tile's vertices */
  60.    Ogre::VertexData* mTerrain;     //初始化=0
  61.    Ogre::HardwareVertexBufferSharedPtr mMainBuffer;
  62.    std::vector<Ogre::HardwareVertexBufferSharedPtr> mDeltaBuffers;
  63.    Ogre::Real mLODMorphFactor;
  64.    unsigned int mLastNextLevel;    //初始化=0
  65. };
  66. /** Manages the vertex LOD index buffers shared among the tiles */
  67. class IndexHandler
  68. {
  69.     typedef std::map<unsigned int, Ogre::IndexData*> IndexMap;
  70.     typedef std::vector<IndexMap> LODArray;
  71.     LODArray mIndexes;
  72.     size_t mTileSize;
  73. };
  74. struct Options
  75. {
  76.     size_t tileSize;
  77.     
  78.     unsigned int maxMipMapLevel; //MipMap等级
  79.     unsigned int maxPixelError;
  80.     float factorC;
  81.     
  82.     bool vertexNormals;
  83.     bool vertexTangents;
  84.     
  85.     bool useLODMorph;   //morph(变形)
  86.     float lodMorphStart;
  87.     std::string lodMorphParam;
  88. };
  89. struct SplattingImpl  //表皮
  90.     String baseName;
  91.     String group;         //资源组
  92.     uint width, height;   //表皮宽、长
  93.     uint channels;
  94.     uint numTextures;     //初始化=0
  95.     uint numMaps;         //初始化=0
  96.     
  97.     typedef vector<Impl::CoverageMap*> MapList;
  98.     MapList maps;         //setNumMaps
  99. };