Page 1 of 1

Error with OgreXMLConverter

Posted: Wed Jul 22, 2015 1:12 am
by MountainDrew
I want to use OgreXMLConverter to convert to cube.mesh and a couple others into an XML files so that I can study them and see what the format of an XML file for Ogre is but I am getting an error.

I'm running Windows7 and using Cygwin to execute OgreXMLConverter.exe, which I got from http://www.ogre3d.org/tikiwiki/OgreXmlConverter.

Here is the output I get when I run OgreXMLConverter (error in 3rd to last line):

Code: Select all

$ ./OgreXMLConverter cube.mesh cube.xml
-- OPTIONS --
source file      = cube.mesh
destination file = cube.xml
log file         = OgreXMLConverter.log
interactive mode = false
lod levels       = none (or use existing)
Generate edge lists  = 1
Generate tangents = 0
 semantic = TANGENT
 parity = 0
 split mirror = 0
 split rotated = 0
Reorganise vertex buffers = 1
Optimise animations = 1
-- END OPTIONS --

Creating resource group General
Creating resource group Internal
Creating resource group Autodetect
Registering ResourceManager for type Mesh
Registering ResourceManager for type Material
Registering ResourceManager for type Skeleton
[b]Exception caught: Cannot find serializer implementation for current version [MeshSerializer_v1.8]Unregistering ResourceManager for type Skeleton[/b]
Unregistering ResourceManager for type Material
Unregistering ResourceManager for type Mesh
Basically I have a set of point and vertex data that I would like to draw in a single color and I'm trying to figure out how to do it in Ogre. Does anyone know what this error means and when I can do to fix it? It looks like the Skeleton part is giving it an issue, but I'm not interested in the Skeleton, I'm just interested in working with inanimate meshes for now.

Thanks for your time!

Re: Error with OgreXMLConverter

Posted: Wed Jul 22, 2015 1:50 am
by Kojack
It looks like that's not actually the skeleton, that's just the last thing that was initialised before loading the mesh was attempted.
The problem looks like the cube mesh you tried to use was from Ogre 1.8 (the [MeshSerializer_v1.8] part of the error message) while the OgreXMLConverter link you followed was for Ogre 1.7.2.
You need a newer OgreXMLConverter that can handle 1.8 or above meshes.

Here's an ogrexmlconverter I built a while ago, it's a 64bit build and should be for Ogre 1.9 but I'm not 100% sure.
https://dl.dropboxusercontent.com/u/254 ... er64bit.7z
(The 32bit version has trouble with very large meshes, it uses TinyXML which is really bad at memory usage. I made that build for people who had trouble with huge meshes).

Re: Error with OgreXMLConverter

Posted: Thu Jul 23, 2015 3:29 am
by MountainDrew
Thanks so much!! It works perfectly now :)

The XML file looks more complicated than I expected, but I guess that's because these things are optimized for rendering speed above anything else. I think I have an understanding of what is going on, except for the texcoord tags. What does texcoord do?

Here is cube.xml:

Code: Select all

<mesh>
    <submeshes>
        <submesh material="BaseWhite" usesharedvertices="false" use32bitindexes="false" operationtype="triangle_list">
            <faces count="12">
                <face v1="0" v2="1" v3="2" />
                <face v1="2" v2="3" v3="0" />
                <face v1="4" v2="5" v3="6" />
                <face v1="6" v2="7" v3="4" />
                <face v1="8" v2="9" v3="10" />
                <face v1="10" v2="11" v3="8" />
                <face v1="12" v2="13" v3="14" />
                <face v1="14" v2="15" v3="12" />
                <face v1="16" v2="17" v3="18" />
                <face v1="18" v2="19" v3="16" />
                <face v1="20" v2="21" v3="22" />
                <face v1="22" v2="23" v3="20" />
            </faces>
            <geometry vertexcount="24">
                <vertexbuffer positions="true" normals="true" texture_coord_dimensions_0="float2" texture_coords="1">
                    <vertex>
                        <position x="-50" y="-50" z="50" />
                        <normal x="0" y="-1" z="0" />
                        <texcoord u="1" v="1" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="-50" z="-50" />
                        <normal x="0" y="-1" z="0" />
                        <texcoord u="1" v="0" />
                    </vertex>
                    <vertex>
                        <position x="50" y="-50" z="-50" />
                        <normal x="0" y="-1" z="0" />
                        <texcoord u="0" v="0" />
                    </vertex>
                    <vertex>
                        <position x="50" y="-50" z="50" />
                        <normal x="0" y="-1" z="0" />
                        <texcoord u="0" v="1" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="50" z="50" />
                        <normal x="0" y="1" z="0" />
                        <texcoord u="0" v="1" />
                    </vertex>
                    <vertex>
                        <position x="50" y="50" z="50" />
                        <normal x="0" y="1" z="0" />
                        <texcoord u="1" v="1" />
                    </vertex>
                    <vertex>
                        <position x="50" y="50" z="-50" />
                        <normal x="0" y="1" z="0" />
                        <texcoord u="1" v="0" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="50" z="-50" />
                        <normal x="0" y="1" z="0" />
                        <texcoord u="0" v="0" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="-50" z="50" />
                        <normal x="0" y="0" z="1" />
                        <texcoord u="0" v="1" />
                    </vertex>
                    <vertex>
                        <position x="50" y="-50" z="50" />
                        <normal x="0" y="0" z="1" />
                        <texcoord u="1" v="1" />
                    </vertex>
                    <vertex>
                        <position x="50" y="50" z="50" />
                        <normal x="0" y="0" z="1" />
                        <texcoord u="1" v="0" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="50" z="50" />
                        <normal x="0" y="0" z="1" />
                        <texcoord u="0" v="0" />
                    </vertex>
                    <vertex>
                        <position x="50" y="-50" z="50" />
                        <normal x="1" y="0" z="0" />
                        <texcoord u="0" v="1" />
                    </vertex>
                    <vertex>
                        <position x="50" y="-50" z="-50" />
                        <normal x="1" y="0" z="0" />
                        <texcoord u="1" v="1" />
                    </vertex>
                    <vertex>
                        <position x="50" y="50" z="-50" />
                        <normal x="1" y="0" z="0" />
                        <texcoord u="1" v="0" />
                    </vertex>
                    <vertex>
                        <position x="50" y="50" z="50" />
                        <normal x="1" y="0" z="0" />
                        <texcoord u="0" v="0" />
                    </vertex>
                    <vertex>
                        <position x="50" y="-50" z="-50" />
                        <normal x="0" y="0" z="-1" />
                        <texcoord u="0" v="1" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="-50" z="-50" />
                        <normal x="0" y="0" z="-1" />
                        <texcoord u="1" v="1" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="50" z="-50" />
                        <normal x="0" y="0" z="-1" />
                        <texcoord u="1" v="0" />
                    </vertex>
                    <vertex>
                        <position x="50" y="50" z="-50" />
                        <normal x="0" y="0" z="-1" />
                        <texcoord u="0" v="0" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="-50" z="-50" />
                        <normal x="-1" y="0" z="0" />
                        <texcoord u="0" v="1" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="-50" z="50" />
                        <normal x="-1" y="0" z="0" />
                        <texcoord u="1" v="1" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="50" z="50" />
                        <normal x="-1" y="0" z="0" />
                        <texcoord u="1" v="0" />
                    </vertex>
                    <vertex>
                        <position x="-50" y="50" z="-50" />
                        <normal x="-1" y="0" z="0" />
                        <texcoord u="0" v="0" />
                    </vertex>
                </vertexbuffer>
            </geometry>
        </submesh>
    </submeshes>
    <submeshnames>
        <submeshname name="submesh0" index="0" />
    </submeshnames>
</mesh>
Thanks again for your help Kojack and for making this available!

Re: Error with OgreXMLConverter

Posted: Thu Jul 23, 2015 4:59 am
by Kojack
texcoords are the UV texture coordinates of each vertex. They define how the textures are stretched onto the surface. They use 0-1 to represent the width and height of a texture.
So if a vertex has a texcoord of 0.5,0.5, that means the middle of the texture is placed on the vertex.