在Ogre中,要构建一个较复杂场景,如果通过手工一个个设置坐标,将会十分麻烦,这时我们就可以利用场景文件直接导入场景。
简介
场景文件(.scene)其实就是一个标准的xml文件,包含了描述场景所需要的元素,场景文件内容示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<scene formatVersion=""> <nodes> <node name="Robot" id="3"> <position x="10.0" y="5" z="10.5" /> <scale x="1" y="1" z="1" /> <entity name="Robot" meshFile="robot.mesh" static="false" /> </node> <node name="Omni01" id="5"> <position x="-23" y="49" z="18" /> <rotation qx="0" qy="0" qz="0" qw="1" /> <scale x="1" y="1" z="1" /> <light name="Omni01" type="point" intensity="0.01" contrast="0"> <colourDiffuse r="0.4" g="0.4" b="0.5" /> <colourSpecular r="0.5" g="0.5" b="0.5" /> </light> </node> </nodes> </scene> |
Advanced Ogre Framework中带有3个与场景文件解析有关的类:DotSceneLoader.hpp,DotSceneLoader.cpp以及rapidxml.hpp,可以参考下该框架,了解下场景文件使用,同时该框架对Ogre学习也很有帮助。
工具
导出场景文件有很多工具,比如我开发的漫游系统用的是3Dsmax的OgreMax插件,在3Dsmax中建模好后使用OgreMax插件导出为场景文件。
由于场景复杂时,3Dsmax的渲染速度很慢,所以我才用分区域建模,地面与地面物体分开建模,地面导出为一个场景文件,地面物体导出为另一个场景文件,然后在程序中导入这两个场景文件即可(要注意各个场景文件中模型名称不能重复,即不能拥有相同模型名称,否则程序进入时报错)。
文章评论