在Ogre 3D中导入.mesh文件时出错

时间:2015-04-07 14:11:28

标签: opengl graphics mesh ogre

我正在尝试在我的Ogre 3D项目中导入.mesh文件,以便将其可视化。 该文件非常简单,只包含一个三角形。我只是为了看看一切是否正常而保持简单。

以下是加载.mesh的代码部分:

Ogre::String source;
source = "C:\\path\\tri.mesh";
FILE* pFile = fopen( source.c_str(), "rb" );
if (!pFile)
    OGRE_EXCEPT(Exception::ERR_FILE_NOT_FOUND,"File " + source + " not found.", "OgreMeshLoaded");
struct stat tagStat;
stat( source.c_str(), &tagStat );
Ogre::MemoryDataStream* memstream = new Ogre::MemoryDataStream(source, tagStat.st_size, true);
fread( (void*)memstream->getPtr(), tagStat.st_size, 1, pFile );
fclose( pFile );
Ogre::MeshPtr pMesh = Ogre::MeshManager::getSingleton().createManual("LocalMesh",Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
MeshSerializer meshSerializer;
DataStreamPtr stream(memstream);
meshSerializer.importMesh(stream, pMesh.getPointer());

这里是tri.mesh文件的内容:

%  tri.mesh
%
%  The first line lists the number of elements, and their type.
%
%  The type code is:
%    1: 2D triangular elements (vertices can be listed in any order)
%    2: 3D tetrahedral elements (vertices can be listed in any order)
%    3: 3D hexahedral (brick) elements 
%       (vertices must be listed in a particular order)
%    4: 2D quadrilateral elements. 
%       (vertices must be listed in a particular order)
%
5  1
%
%  The following lines list the vertices making up each element.
%
1  2  3
2  4  6
2  6  3
4  5  6
5  6  3

当我编译程序时,我没有任何错误,但是当我运行它时,我得到以下内容:

  

exception:内存位置的Ogre :: InvalidParametersException   0x00b2f020

它来自上面显示的代码的最后一行(在importMesh()中)。 有人知道是什么原因引起的吗?

1 个答案:

答案 0 :(得分:2)

这不是有效的Ogre3D网格文件。我们的网格文件是二进制文件,因此您无法在文本编辑器中解密其内容。

更多信息:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=-mesh