forked from bartvdbraak/blender
fix:32348 Collada yfov to xfov conversion fo camera settings
This commit is contained in:
parent
a2515f3ca0
commit
192935eb04
@ -683,12 +683,11 @@ void AnimationImporter::Assign_lens_animations(const COLLADAFW::UniqueId& listid
|
||||
for (unsigned int i = 0; i < fcu->totvert; i++) {
|
||||
|
||||
double input_fov = fcu->bezt[i].vec[1][1];
|
||||
double xfov = (fov_type == CAMERA_YFOV) ? aspect * input_fov : input_fov;
|
||||
|
||||
// fov is in degrees, cam->lens is in millimiters
|
||||
double fov = fov_to_focallength(DEG2RADF(input_fov), cam->sensor_x);
|
||||
// NOTE: Needs more testing (As we curretnly have no official test data for this)
|
||||
double xfov = (fov_type == CAMERA_YFOV) ? (2.0f * atanf(aspect * tanf(DEG2RADF(input_fov) * 0.5f))) : DEG2RADF(input_fov);
|
||||
|
||||
fcu->bezt[i].vec[1][1] = fov;
|
||||
fcu->bezt[i].vec[1][1] = fov_to_focallength(xfov, cam->sensor_x);
|
||||
}
|
||||
|
||||
BLI_addtail(AnimCurves, fcu);
|
||||
|
@ -867,9 +867,11 @@ bool DocumentImporter::writeCamera(const COLLADAFW::Camera *camera)
|
||||
{
|
||||
double yfov = camera->getYFov().getValue();
|
||||
double aspect = camera->getAspectRatio().getValue();
|
||||
double xfov = aspect * yfov;
|
||||
// xfov is in degrees, cam->lens is in millimiters
|
||||
cam->lens = fov_to_focallength(DEG2RADF(xfov), cam->sensor_x);
|
||||
|
||||
// NOTE: Needs more testing (As we curretnly have no official test data for this)
|
||||
|
||||
double xfov = 2.0f * atanf(aspect * tanf(DEG2RADF(yfov) * 0.5f));
|
||||
cam->lens = fov_to_focallength(xfov, cam->sensor_x);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user