- Normals animation in vertex morph / vertex pose animation. Software, SSE and hardware paths will be supported but the technique will be incompatible with stencil shadows; this is because of conflicting buffer layout requirements (animation wants the pos & normal buffers to be unified to keep the temp buffer binding the same, but stencil shadows needs the pos buffer to always be separate because of the vertex duplication for backface extrusion). I can't square that without making one or the other not work, or implement 2 paths which will be hideous in code and which I don't have time for. So the lesser of 2 evils is to not support stencil shadows and animated morph/pose normals at once.
- Versioned mesh writing. Currently the mesh serialisers already handle loading previous versions of a mesh format through a class hierarchy, but when you save meshes you always save in the latest version. So that developers of tools can support all versions of Ogre in one tool, I want to support saving as previous binary file versions more easily (you could do it by writing XML then pushing that through an old XMLConverter, but it's nasty). I'll also clean up the class naming - the mesh format version names have had a different naming convention to the main versions of Ogre which is confusing, I'll sort that out so that we use the mesh version internally but there's an Ogre version translation which makes things easier to map to Ogre versions.
My WIP
-
sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
My WIP
I'm currently bootstrapping a Cocoa project so I'm not hacking on Ogre so much, but this week I'm back on it thanks to a bit of customer work. I'll be implementing:
)
-
Praetor
- OGRE Retired Team Member

- Posts: 3335
- Joined: Tue Jun 21, 2005 8:26 pm
- Location: Rochester, New York, US
- x 3
Re: My WIP
Normals animation in vertex morph / vertex pose animation: sounds like it could be useful to certain people...
Game Development, Engine Development, Porting
http://www.darkwindmedia.com
http://www.darkwindmedia.com
-
nedelman
- Gnome
- Posts: 315
- Joined: Wed Feb 21, 2007 6:03 am
- Location: San Francisco, California
- x 6
Re: My WIP
These will be great additions. (Insert thumbs up smilie here)
http://www.ogremax.com - Ogre3D Scene Exporter for 3DS Max, Maya, and Softimage
http://www.linkedin.com/in/dereknedelman - My LinkedIn Profile
http://www.linkedin.com/in/dereknedelman - My LinkedIn Profile
-
ekt
- Gremlin
- Posts: 150
- Joined: Thu Apr 01, 2004 5:55 pm
- x 5
Re: My WIP
you already answered in the past
but animating the vertex color buffer in morph would also be nice.
imagine an objects which blows up. pieces fly around and start to fade when near the ground.
having a precanned morph animation with alpha vertex color for the fade effect makes this possible on low end hw
imagine an objects which blows up. pieces fly around and start to fade when near the ground.
having a precanned morph animation with alpha vertex color for the fade effect makes this possible on low end hw
-
sparkprime
- Ogre Magi
- Posts: 1137
- Joined: Mon May 07, 2007 3:43 am
- Location: Ossining, New York
- x 13
Re: My WIP
At some point you hvae to switch it to a material that has alpha blending set, though.
-
nosignal
- Gnoblar
- Posts: 10
- Joined: Thu Aug 18, 2005 1:52 am
- Location: Christchurch, New Zealand
Re: My WIP: Versioned mesh writing - Hallelujah !!
Versioned mesh writing - that has made my day. Funny that I had just asked for help on this matter at http://www.ogre3d.org/forums/viewtopic.php?f=2&t=58635. Thanks xavier for connecting the dots.
But I have a couple of questions:
And does this mean that new versions of all plugins will have to be released? Not to be impatient, but how long does this process usually take? We have a July 14th deadline - is that too soon?
Many thanks.
But I have a couple of questions:
as I mentioned in my forum post, I tried this, and it did not work when a skeleton was involved.(you could do it by writing XML then pushing that through an old XMLConverter, but it's nasty).
And does this mean that new versions of all plugins will have to be released? Not to be impatient, but how long does this process usually take? We have a July 14th deadline - is that too soon?
Many thanks.
-
sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
Re: My WIP: Versioned mesh writing - Hallelujah !!
I'm not quite sure what you mean - if you mean Ogre plugins like the scene managers et al, this won't impact on them particularly, just the serialisers.nosignal wrote:And does this mean that new versions of all plugins will have to be released? Not to be impatient, but how long does this process usually take? We have a July 14th deadline - is that too soon?
Everything here will be a 1.8 feature, and 1.8 is the unstable version and will be for quite a while yet (1.7 was only released early this year). However, what this will allow is that tool developers can use the 1.8 unstable version to build their tools if they want, but still export data that will work with 1.7 and before by choosing the appropriate compatibility version. Obviously you lose some features in the process such as the animated normals if you go to 1.7 or earlier, and the new mesh LOD options if you go to 1.6 or earlier, etc.
-
sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
Re: My WIP
Bullet point 1 (vertex animation on normals) is in the repository now.
When doing the SSE implementation I deleted all the manual intrinsics for gcc that genva added some years ago, because I think they're all obsolete now and relate to some ancient version of gcc on cygwin. I've been testing heavily on the Mac with gcc 4.2 and all the standard intrinsics in xmmintrin.h work fine.
When doing the SSE implementation I deleted all the manual intrinsics for gcc that genva added some years ago, because I think they're all obsolete now and relate to some ancient version of gcc on cygwin. I've been testing heavily on the Mac with gcc 4.2 and all the standard intrinsics in xmmintrin.h work fine.
-
xavier
- OGRE Retired Moderator

- Posts: 9481
- Joined: Fri Feb 18, 2005 2:03 am
- Location: Dublin, CA, US
- x 22
Re: My WIP
On a side note -- when was the last time anyone did a pass through all of that "OptimizedUtil" code to see if it's all still current? Or was that what you were talking about?
-
nosignal
- Gnoblar
- Posts: 10
- Joined: Thu Aug 18, 2005 1:52 am
- Location: Christchurch, New Zealand
Re: My WIP: Versioned mesh writing - Hallelujah !!
Sorry for being vague - I was referring to, for example, Maya Exporter Plugins. So it sounds like Ogre 1.8 Maya Exporter Plugins will have the ability to export older mesh formats. And these won't be available and stable for a few months. Ok, that is what I need to know.sinbad wrote:I'm not quite sure what you mean - if you mean Ogre plugins like the scene managers et al, this won't impact on them particularly, just the serialisers.nosignal wrote:And does this mean that new versions of all plugins will have to be released? Not to be impatient, but how long does this process usually take? We have a July 14th deadline - is that too soon?
Everything here will be a 1.8 feature, and 1.8 is the unstable version and will be for quite a while yet (1.7 was only released early this year). However, what this will allow is that tool developers can use the 1.8 unstable version to build their tools if they want, but still export data that will work with 1.7 and before by choosing the appropriate compatibility version. Obviously you lose some features in the process such as the animated normals if you go to 1.7 or earlier, and the new mesh LOD options if you go to 1.6 or earlier, etc.
I understand now that the
does work, so as I've mentioned in http://www.ogre3d.org/forums/viewtopic. ... 64#p394564 I think am having a problem with an older port of Ogre, not with Ogre mesh formats themselves. I can import Ogre 1.0.x meshes with skeletons from 3DSMax, but not Ogre 1.0.x meshes with skeletons from Maya.sinbad wrote:you could do it by writing XML then pushing that through an old XMLConverter, but it's nasty
Thanks again, and if you could shed some light on 'submesh names' in my other post, I'd love to hear it. I would be willing to pay for a custom OgreXMLConverter that does not use 'submesh names' (assuming that is even possible, and assuming that is the problem).
-
sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
Re: My WIP
Well, I hacked out the manual intrinsics and just used xmmintrin.h now for gcc. I needed to do that because I needed to use SSE instructions that weren't in the manual definitions, but were in xmmintrin.h. I haven't done any more auditing than I needed to, but the rest seemed to be just helper stuff & still relevant.xavier wrote:On a side note -- when was the last time anyone did a pass through all of that "OptimizedUtil" code to see if it's all still current? Or was that what you were talking about?
-
sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
Re: My WIP
The second bullet (Versioned Mesh Writing) is now complete too.
The MeshSerializer interface has been expanded so there are now variants of the exportMesh() method that take a MeshVersion parameter, which is defined thus:
As you can see, you identify the version you want by the OGRE version rather than the Mesh version you see in the mesh files, that due to historical issues and external contributions has not been in sync with the actual OGRE version all the time so is more confusing. Internally the mesh strings are the same, although I've made the effort to bring them back in sync in 1.8 at least.
OgreMeshUpgrader now has an additional '-V' parameter which lets you specify the version of mesh you want to write, and also lets you downgrade meshes as well as upgrade them, which is what I've tested with.
I've only tested back to 1.6, I don't have any apps built for 1.4 or earlier anymore and don't have the time to build any (not least because I have to go outside of Mercurial to do that). However the code to write the parts of the data that changed was lifted directly from the old versions of OGRE so all should be well.
The MeshSerializer interface has been expanded so there are now variants of the exportMesh() method that take a MeshVersion parameter, which is defined thus:
Code: Select all
/// Mesh compatibility versions
enum MeshVersion
{
/// Latest version available
MESH_VERSION_LATEST,
/// OGRE version v1.8+
MESH_VERSION_1_8,
/// OGRE version v1.7+
MESH_VERSION_1_7,
/// OGRE version v1.4+
MESH_VERSION_1_4,
/// OGRE version v1.0+
MESH_VERSION_1_0,
/// Legacy versions, DO NOT USE for writing
MESH_VERSION_LEGACY
};
OgreMeshUpgrader now has an additional '-V' parameter which lets you specify the version of mesh you want to write, and also lets you downgrade meshes as well as upgrade them, which is what I've tested with.
I've only tested back to 1.6, I don't have any apps built for 1.4 or earlier anymore and don't have the time to build any (not least because I have to go outside of Mercurial to do that). However the code to write the parts of the data that changed was lifted directly from the old versions of OGRE so all should be well.
-
nosignal
- Gnoblar
- Posts: 10
- Joined: Thu Aug 18, 2005 1:52 am
- Location: Christchurch, New Zealand
Re: My WIP: Versioned mesh writing - Hallelujah !!
After about 30 tests, I have a solution. The really critical things are that in the Maya Exporter Plugin, Mesh settings, it needs "Include vertex bone assignments" and "Include vertex normals" (for bone animations anyway), but it must NOT have "Use shared geometry".nosignal wrote:I think am having a problem with an older port of Ogre, not with Ogre mesh formats themselves. I can import Ogre 1.0.x meshes with skeletons from 3DSMax, but not Ogre 1.0.x meshes with skeletons from Maya.
Thanks again, and if you could shed some light on 'submesh names' in my other post, I'd love to hear it.
I suspect where the Axiom developer who the changelog said that it does not support 'submesh names', I think he actually meant it does not support 'shared geometry'. Well, I'm very glad that is sorted, because as long as the model was exported without shared geometry, it should now be successfully convertible back to Ogre 1.0.4 format.
-
nosignal
- Gnoblar
- Posts: 10
- Joined: Thu Aug 18, 2005 1:52 am
- Location: Christchurch, New Zealand
Re: My WIP
The Ogre CEGUI MeshViewer binary is available at http://sourceforge.net/projects/ogre/files/ogre-tools/ for many different versions, including 1.0.6.sinbad wrote:I've only tested back to 1.6, I don't have any apps built for 1.4 or earlier anymore and don't have the time to build any (not least because I have to go outside of Mercurial to do that). However the code to write the parts of the data that changed was lifted directly from the old versions of OGRE so all should be well.
It is great to have that feature done - thankyou so much.
-
nosignal
- Gnoblar
- Posts: 10
- Joined: Thu Aug 18, 2005 1:52 am
- Location: Christchurch, New Zealand
Re: My WIP
Hi again sinbad,
It would be nice to see a completed table like this on the wiki (I've filled in as much as I know):
Ogre Version ? to ? (including 0.13) uses MeshSerializer v1.2
Ogre Version <=1.0.x to 1.2.x uses MeshSerializer v1.3 < This is most relevant to us.
Ogre Version 1.4.x to 1.6.x uses MeshSerializer v1.4
Ogre Version 1.7.x uses MeshSerializer v1.?
Ogre Version 1.8.x uses MeshSerializer v1.?
It would be nice to see a completed table like this on the wiki (I've filled in as much as I know):
Ogre Version ? to ? (including 0.13) uses MeshSerializer v1.2
Ogre Version <=1.0.x to 1.2.x uses MeshSerializer v1.3 < This is most relevant to us.
Ogre Version 1.4.x to 1.6.x uses MeshSerializer v1.4
Ogre Version 1.7.x uses MeshSerializer v1.?
Ogre Version 1.8.x uses MeshSerializer v1.?
-
sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
Re: My WIP
I've made it so that you don't need to know the internal serializer version numbers, that's why the exportMesh parameter is in Ogre versions. If you need to know the mapping, it's in the constructor of OgreMeshSerializer.cpp.
