diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 31e463ed8..c080f10f7 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -358,12 +358,14 @@ void ColladaLoader::BuildCamerasForNode( const ColladaParser& pParser, const Col if (srcCamera->mHorFov != 10e10f) { out->mHorizontalFOV = srcCamera->mHorFov; - if (srcCamera->mVerFov != 10e10f && srcCamera->mAspect != 10e10f) { - out->mAspect = srcCamera->mHorFov/srcCamera->mVerFov; + if (srcCamera->mVerFov != 10e10f && srcCamera->mAspect == 10e10f) { + out->mAspect = tan(AI_DEG_TO_RAD(srcCamera->mHorFov)) / + tan(AI_DEG_TO_RAD(srcCamera->mVerFov)); } } else if (srcCamera->mAspect != 10e10f && srcCamera->mVerFov != 10e10f) { - out->mHorizontalFOV = srcCamera->mAspect*srcCamera->mVerFov; + out->mHorizontalFOV = 2.0f * AI_RAD_TO_DEG(atan(srcCamera->mAspect * + tan(AI_DEG_TO_RAD(srcCamera->mVerFov) * 0.5f))); } // Collada uses degrees, we use radians