BSP地图

来源:互联网 发布:位图变为矢量图软件 编辑:程序博客网 时间:2024/05/16 19:48

西昌.何雨锋 BSP地图

读取bsp地图文件:

//bsp地图只有地形,没纹理,纹理在PAK文件中。
ITVBSPTree bsp1;               //读取bsp文件的树,可能是文件中以树形结构写的吧
bsp1=CreateTVBSPTree();        //VC的范例中没有,都是边看VB例子自己再用SDK改写的,但是居然连TV帮助里面都没有CreateTVBSPTree这一东西,我完全是猜测出有这一条的,否则就非法操作!,太毒了吧这家公司也。
bsp1->SetCurvePrecision(TV_CURVE_LOW);
//设置读取地图的精度?可以选择TV_CURVE_LOW,TV_CURVE_NORMAL,TV_CURVE_HIGH,此句可有可无,好象是Quacke3中用的。

//如果只读bsp文件而不读pak文件,则只出建筑模型,而没有纹理,所以要用引擎来读PAK文件,但赋完纹理记得马上关掉。

    engine1->OpenPAKFile("..//..//..//Media//texture.pak");
    bsp1->Load("..//..//..//Media//TUT7B.BSP",tvtrue,tvtrue,-1,"",tvtrue,tvfalse);        //读取bsp地图文件,第2参数是是否启用灯,必须打开。第3参数是是否打开材质,打开了地图上才有纹理,其他参数意义不明。
    engine1->ClosePAKFile();
//循环中一样要对bsp树渲染
bsp1->Render();
//最后释放模块记得要释放bsp树
bsp1->release();
bsp1=NULL;

//其他:如果要得到bsp中的玩家开始位置,那么可以用一个D3DVECTER来=bsp1->GetStartPlayerPosition()得到玩家开始的位置。
//其中有必要说明的是BSPtree的一个成员函数:StayOnFloor(一个vector,最低允许,最高允许爬上,检测范围),其中检测范围太大了,那么在小东西上就站不住?


------------------------------------
如果是读取PAK文件就用engine1->OpenPAKFile(...)
如果是读取WAD文件就用BSP->openpackWAD(...)

原创粉丝点击