一直對魔獸世界的室內場景管理很感興趣。花了兩週的時間研究了一下WOW中相關的格式,寫了一個Portal實現的場景管理。
目前測試過的場景有奧格瑞瑪,暴風城,獸族營地,獸族大廳。在各個場景中,能夠做到場景模型各個三角形的精確碰撞。爲了減少碰撞的遍歷運算,碰撞利用了WOW文件中的Bsp數據。
基於Portal的場景剔除和Add使用的是WMO中的Portal數據。目前的場景管理還有些bug,有些地方會出現不合理的剔除以及一些莫名其妙的情況,只能算是基本跑起來。
除去場景管理,我對於場景單元三角形Buffer繪製經過了三次優化,奇妙的是,每個版本都能運行的很正常,不同的只有送入顯卡的頂點是否冗餘和FPS的遞增。我想知道,到底是我很聰明,還是暴雪的WMO數據格式做的很聰明。
關於魔獸的格式,來自互聯網資源。但是各種數據不全,很多數據的意義都是靠自己反覆揣測。程序基於自己的3D Engine。
這裏的所有WOW資源只用於學習。
給出幾張截圖:
奧格瑞瑪入口
奧格瑞瑪城中
暴風城中