[Bf-blender-cvs] [89dd233] multiview: Cleanup
Campbell Barton
noreply at git.blender.org
Fri Sep 19 06:36:14 CEST 2014
Commit: 89dd233d5ff67fa5d86406a117fa1aab90b7b383
Author: Campbell Barton
Date: Fri Sep 19 14:26:47 2014 +1000
Branches: multiview
https://developer.blender.org/rB89dd233d5ff67fa5d86406a117fa1aab90b7b383
Cleanup
===================================================================
M source/blender/blenkernel/intern/camera.c
===================================================================
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index 8fe47a5..d06ccdc 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -156,7 +156,7 @@ void BKE_camera_object_mode(RenderData *rd, Object *cam_ob)
/* get the camera's dof value, takes the dof object into account */
float BKE_camera_object_dof_distance(Object *ob)
{
- Camera *cam = (Camera *)ob->data;
+ Camera *cam = ob->data;
if (ob->type != OB_CAMERA)
return 0.0f;
if (cam->dof_ob) {
@@ -605,10 +605,10 @@ bool BKE_camera_view_frame_fit_to_scene(Scene *scene, struct View3D *v3d, Object
/* transforms the camera matrix to the correct stereo eye to be rendered */
void BKE_camera_multiview_basic(Object *camera, const bool is_left)
{
- Camera *data = (Camera *)camera->data;
+ Camera *data = camera->data;
float *r_shift = &data->shiftx;
float interocular_distance, convergence_distance;
- float angle = 0.0f;
+ float angle;
short convergence_mode, pivot;
float tmpmat[4][4];
@@ -623,7 +623,7 @@ void BKE_camera_multiview_basic(Object *camera, const bool is_left)
convergence_mode = data->stereo.convergence_mode;
pivot = data->stereo.pivot;
- if (((pivot == CAM_S3D_PIVOT_LEFT) && is_left) ||
+ if (((pivot == CAM_S3D_PIVOT_LEFT) && is_left) ||
((pivot == CAM_S3D_PIVOT_RIGHT) && !is_left))
{
return;
@@ -636,12 +636,19 @@ void BKE_camera_multiview_basic(Object *camera, const bool is_left)
/* rotation */
if (convergence_mode == CAM_S3D_TOE) {
+ float angle_sin, angle_cos;
angle = -atanf((interocular_distance * 0.5f) / convergence_distance);
- rotmat[0][0] = cosf(angle * 2.0f * fac_signed);
- rotmat[2][0] = -sinf(angle * 2.0f * fac_signed);
- rotmat[0][2] = sinf(angle * 2.0f * fac_signed);
- rotmat[2][2] = cosf(angle * 2.0f * fac_signed);
+ angle_cos = cosf(angle * 2.0f * fac_signed);
+ angle_sin = sinf(angle * 2.0f * fac_signed);
+
+ rotmat[0][0] = angle_cos;
+ rotmat[2][0] = -angle_sin;
+ rotmat[0][2] = angle_sin;
+ rotmat[2][2] = angle_cos;
+ }
+ else {
+ angle = 0.0f;
}
copy_m4_m4(tmpmat, camera->obmat);
@@ -662,9 +669,9 @@ void BKE_camera_multiview_basic(Object *camera, const bool is_left)
void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_shift, const bool is_left)
{
/* viewmat = MODELVIEW_MATRIX */
- Camera *data = (Camera *)camera->data;
+ Camera *data = camera->data;
float interocular_distance, convergence_distance;
- float angle = 0.0f;
+ float angle;
short convergence_mode, pivot;
float tmpviewmat[4][4];
float transmat[4][4];
@@ -680,7 +687,7 @@ void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_
invert_m4_m4(tmpviewmat, camera->obmat);
- if (((pivot == CAM_S3D_PIVOT_LEFT) && is_left) ||
+ if (((pivot == CAM_S3D_PIVOT_LEFT) && is_left) ||
((pivot == CAM_S3D_PIVOT_RIGHT) && !is_left))
{
copy_m4_m4(r_viewmat, tmpviewmat);
@@ -694,12 +701,19 @@ void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_
/* rotation */
if (convergence_mode == CAM_S3D_TOE) {
+ float angle_sin, angle_cos;
angle = atanf((interocular_distance * 0.5f) / convergence_distance);
- transmat[0][0] = cosf(angle * 2.0f * fac_signed);
- transmat[2][0] = -sinf(angle * 2.0f * fac_signed);
- transmat[0][2] = sinf(angle * 2.0f * fac_signed);
- transmat[2][2] = cosf(angle * 2.0f * fac_signed);
+ angle_cos = cosf(angle * 2.0f * fac_signed);
+ angle_sin = sinf(angle * 2.0f * fac_signed);
+
+ transmat[0][0] = angle_cos;
+ transmat[2][0] = -angle_sin;
+ transmat[0][2] = angle_sin;
+ transmat[2][2] = angle_cos;
+ }
+ else {
+ angle = 0.0f;
}
/* translation */
More information about the Bf-blender-cvs
mailing list