关于.osm的导入
实际操作的时候发现,其实只需要利用TinyXML对其进行解析就行了,
而且只需要知道父子关系,位置,旋转,缩放,就足够了. 其他的摄象机,灯光之类就不需要管了.,
还是程序里面自己创建,进行控制好点.
下面都是从网上搜集的一些资料,.
第一个问题是,Max中东西与导出不一致的问题(位置偏差之类)
1.打开3dsmax,打开max文件
2.Edit -> Select All
3.Group -> Ungroup 重复此动作,直至Ungroup变成灰色
4.右边栏 -> Hierarchy -> Pivot -> Transform
5.右边栏 -> Utilities -> Reset XForm -> Reset Selected
1.打开max文件。<中文版>
2.编辑->全选。
3.组->解组。 重复些操作&#xff0c;直到“解组”变灰色。
4.右边栏->层->重置轴。
5.右边栏->层->变换。
6.保存
一般是没有 reset x form的问题&#xff0c;
另外在其他坛子看到的&#xff0c;Ofusion导出的时候材质有一些问题&#xff08;黑的或不显示什么的&#xff09;
一般都是没有使用Ofusion材质导致的&#xff0c;在导出的时候修改一下就可以了 &#xff1a;&#xff09;
其他应该还有一些问题&#xff0c;遇到再说。
(导出的后自己用LexiView查看一下&#xff0c;如果正确了一般问题就不大了)
第二个问题是&#xff0c;不知道怎么把导出的东西载入。
集中有以下几个问题&#xff0c;不知道怎么把mesh加载到程序里。
有笨办法&#xff1a;把mesh一个一个加到程序里&#xff08; 这个办法可真笨啊&#xff09;
好的办法&#xff1a;你注意以下Ofusion导出的文件中有一个OSM文件
打开他&#xff0c;开心了吧&#xff01;他其实是一个XML格式的文件&#xff0c;你可以用TinyXML试着去解析他&#xff08;不知道的看Ogre源代码或者Google&#xff09;
或者&#xff0c;去Ofusion官方下载一个osmload
好了&#xff0c;Ofusion官方还提供了一个demo教你如何使用那个库&#xff08;不是他是在Ogre1.2基础上做的&#xff0c;所以你检查一下你的版本
第三个问题&#xff0c;可能比较小众一点。
Ofusion导出库导出的东西就是一些静态模型&#xff0c;说的不太准确&#xff0c;意思就是你不能控制的。
如果你想去控制他&#xff0c;Ofusion也提供了一些方法&#xff0c;他提供了几个回调函数&#xff0c;可以让你控制实体&#xff0c;动画&#xff0c;摄像机&#xff0c;灯光等等。
你去实现这几个回调函数就可以控制了。如果你还想更方便一些&#xff0c;可以自己做编辑器或者买商业版本。
第四个问题&#xff0c;
Ofusion的这个库只提供load没提供unload&#xff0c;不过这个也并不难实现&#xff0c;你可以自己去写一个。
Ogre命令行工具包使用说明&#xff1a;
本文档由 自由骑士笃志 翻译整理,版权属于OgreTeam。转载请包含本行信息。 这个工具包包含了一些对Ogre资源文件进行操作的预处理命令行工具。 它包括OgreXMLConveter, OgreMeshUpgrade, OgreMaterialUpgrade和MeshMagick。 您可以在这里获得其WindowsV1.4.7版本的下载,或者在这里获取其MacOSXV1.4.0版本的下载。以上两个版本均是2008年3月6日的版本&#xff0c;即译者进行翻译的版本&#xff0c;若需要更多信息和更新的版本&#xff0c;可以访问Ogre官方。 .[OgreXMLConveter] OgreXML转换器能够将 .mesh 模型网格文件 和 .skeleton 骨骼文件 由XML格式转换为二进制格式&#xff0c;同时可以将其二进制格式转换回XML格式。它同时也允许你在将XML格式转换为二进制格式时设置LOD层级信息。 如果你的Ogre脚本资源中原本使用的就是XML格式文件的话&#xff0c;那么本工具则是Ogre运行时必须的。所以你能够在OgreSource包的Tools/XMLConverter中找到它。 使用方法&#xff1a; OgreXMLConverter 操作选项 源文件路径 目标文件路径 有用的操作选项包括&#xff1a; -i &#61; 控制与命令行。 -l nLODNum &#61; 指定总LOD层级 ( 该项仅在XML格式转换为Mesh格式时有效 ) -d nLODDis &#61; 指定LOD层级间的距离增幅 ( 该项仅在XML格式转换为Mesh格式时有效 ) -p nLODPer &#61; 指定每两级LOD层之间三角面减少百分比 ( 该项仅在XML格式转换为Mesh格式时有效 ) -f nLODNum &#61; 指定两级LOD层之间的固定顶点减少量 ( 该项仅在XML格式转换为Mesh格式时有效 ) -e &#61; 关闭模版阴影的edge表 ( 当使用模版阴影时该项才有效 ) -r &#61; 关闭Ogre推荐的顶点缓冲区格式。 -t &#61; 为法线贴图生成切线信息 ( 当使用法线贴图时该项才有效 ) -o &#61; 关闭冗余关键桢和运动轨迹的剔除 -d3d &#61; 优先使用D3D进行颜色格式的填充 ( 在Windows平台中默认该项开启 ) -gl &#61; 优先使用GL进行颜色格式的填充 ( 在非Windows平台中默认该项开启 ) -E endian &#61; 设置endian模式&#xff0c;可以选择big, little 或 native ( 默认为native ) -q &#61; 轻量模式&#xff0c;减少输出。 -log filename &#61; Log文件名称。&#xff08;默认为OgreXMLConverter.log&#xff09; .[OgreMeshUpgrade] 这个工具能够将你的任何老版本的 .mesh 文件更新到当前版本的 .mesh 文件。 你可以在Ogre.log文件中得到.mesh文件的版本信息。一般来说&#xff0c;Ogre可以运行老版本的.mesh文件&#xff0c;但是性能上会有一些差别。如果你更新了Ogre的其他部分&#xff0c;你尽量应当将.mesh文件更新为同样的版本。 使用方法&#xff1a; OgreMeshUpgrate 操作选项 源文件路径 目标文件路径 有用的操作选项包括&#xff1a; -i &#61; 控制与命令行。 -l nLODNum &#61; 指定总LOD层级 ( 该项仅在XML格式转换为Mesh格式时有效 ) -d nLODDis &#61; 指定LOD层级间的距离增幅 ( 该项仅在XML格式转换为Mesh格式时有效 ) -p nLODPer &#61; 指定每两级LOD层之间三角面减少百分比 ( 该项仅在XML格式转换为Mesh格式时有效 ) -f nLODNum &#61; 指定两级LOD层之间的固定顶点减少量 ( 该项仅在XML格式转换为Mesh格式时有效 ) -e &#61; 关闭模版阴影的edge表 -r &#61; 关闭Ogre推荐的顶点缓冲区格式。 -t &#61; 为法线贴图生成切线信息 -d3d &#61; 转换为D3D颜色格式 -gl &#61; 转换为GL颜色格式 -srcd3d &#61; 老版本的mesh文件为D3D颜色格式 -srcgl &#61; 老版本的mesh文件为GL颜色格式 -E endian &#61; 设置endian模式&#xff0c;可以选择big, little 或 native ( 默认为native ) 注意&#xff1a; 这个工具现在允许你自定义重组你的mesh网格文件的顶点格式。 如果你想更新0.15.0之前的任意一个版本的mesh&#xff0c;那么在该程序运行时会问你是否希望进行顶点格式的重组&#xff0c;你输入’y’就可以了。在0.15.0版本之后的mesh在更新时会允许你对该mesh做更多的操作&#xff1a;例如&#xff0c;你可以对每个独立模型节点的顶点指定不同的顶点结构&#xff0c;你既可以自定义顶点结构&#xff0c;也可以使用’automatic’自动模式。 .[OgreMaterialUpgrade] 这个工具能够将你的任何老版本的 .material 材质文件更新到当前版本的 .material 材质文件。 值得注意的是这个自动更新是不会加入一些新的脚本语法功能的&#xff0c;这么说你可能不好理解。&#xff08;例子&#xff1a; “scene_blend add”这句可能会被更新为”scene_blend one one”&#xff0c;因为”add”的底层实际上就是”scene_blend one one”&#xff0c;自动更新会将一些高级语法更新为比较直接底层的语法&#xff09; 另外&#xff0c;这个工具仅对0.13.0版本以下的材质脚本更新有效&#xff0c;对0.13.0版本以后的材质脚本是没有必要进行更新的。 使用方法&#xff1a; OgreMaterialUpgrade 源文件路径 目标文件路径 .[MeshMagick] Copyright 2007 by Daniel Wickert 这个工具是对mesh文件和skeleton文件进行一些处理的工具。 大致包括以下功能&#xff1a; Info &#61; 输出mesh的信息。 Meshmerge &#61; 将多个mesh合并为一个mesh文件 rename &#61; 重命名mesh和skeleton的不同元件 transform &#61; 旋转&#xff0c;缩放一个mesh 使用方式&#xff1a; MeshMagick –help&#61;工具名 可以获得更多相关信息。 .[译者笃志补充说明] 1&#xff1a;除MeshMagick该工具外&#xff0c;其他三种工具&#xff0c;使用方式都可以是&#xff1a;将源资源文件拖拽到工具的exe图标上。因为更新程序会将源文件覆盖&#xff0c;所以推荐做下备份后再更新。 2&#xff1a;您可以写批处理文件对其进行使用。格式即为上面的使用方式。 举例&#xff1a;新建一个文本文件test.txt 编辑内容为 OgreMeshUpgrate –d3d –l 4 –d 500 –p 30 E:\Ogre\Media\TestSrc.xml F:\Temp\TestDest.mesh 修改文本后缀名为test.bat 将该批处理文件与OgreMeshUpgrate.exe放置同一目录下&#xff0c;运行 则会自动将E:\Ogre\Media\TestSrc.xml文件转换为F:\Temp\TestDest.mesh文件&#xff0c;同时开启了4层Lod&#xff0c;Lod间距为500象素&#xff0c;每一级间面数差距为30% 3&#xff1a;OgreMeshUpgrate工具推荐使用automatic自动模式顶点格式&#xff0c;效率会比较高&#xff0c;并且省去不少麻烦。 4&#xff1a;MeshMagick工具不推荐使用。本身功能有限&#xff0c;而且长期无人维护&#xff0c;对新的mesh支持不好。 |