Вместе с impersonalis выяснили, что корень жука зарыт в недостаточной точности float.
Вектора задаются типом Ogre::Real. В моей версии OgreSDK 1.7 он определен(OgrePrerequisites.h) как float (точность всего 7 знаков). Real можно переопределить как double(15-16 знаков). Для этого необходимо прописать деф в проекте и при ручной сборке огра (OgreBuildSettings.h):
#define OGRE_DOUBLE_PRECISION 1
После этого Real - это double.