看了一下gamebryo的地形相关例子。没有详细研究他内部怎么分的。但是确定的是他地形是支持LOD的。并且已经实时应用了。
不过顶点数目。我的天啊也太多了吧。
地形可以用gsa文件。或者地编导出的数据来加载
有2个流
NiEntityStreaming 一半数据
NiEntityStreamingAscii Acsii格式的数据
使用对应的load就可以加载一个磁盘文件。
然后得到第一个叶子一定是
NiScene
GB是用NIScene::Update()来初始化地形。
注意到这里只是加载了数据和一些基本配置。还有很多和地形相关的东西是不会建立的。比如上面的物件啥的。
需要NiTerrainComponent::LoadTerrain去完全管理器地形的几何数据。NiTerrainComponent是挂接在NiEntity上的。NiEntity是一个系统能够在写一篇。
NiTerrainComponent是管理多块地形的。2.5只有1块但是3.0可以是多块
如果要对地形做一些操作比如拾取地形等等需要用
NiTListIterator kIter = NiTerrainComponent::GetTerrainComponents()->GetHeadPos()
NiTerrainComponent* pkToCheck = NiTerrainComponent::GetTerrainComponents()->GetNext(kIter)
pkToCheck->GetPropertyData("Interactor", pvInteractor, stSize);
来真正和地形沟通
NiTerrainInteractor就是沟通器
然后做你需要的逻辑吧。。