在 Ogre 3D 中导入 .mesh 文件时出错
Error importing .mesh file in Ogre 3D
我正在尝试在我的 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 at memory location
0x00b2f020
它来自上面显示的代码的最后一行(在 importMesh() 中)。
有人知道是什么原因造成的吗?
这不是有效的 Ogre3D 网格文件。我们的网格文件是二进制文件,因此您将无法在文本编辑器中破译其内容。
更多信息:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=-mesh
我正在尝试在我的 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 at memory location 0x00b2f020
它来自上面显示的代码的最后一行(在 importMesh() 中)。 有人知道是什么原因造成的吗?
这不是有效的 Ogre3D 网格文件。我们的网格文件是二进制文件,因此您将无法在文本编辑器中破译其内容。
更多信息:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=-mesh