[Bf-blender-cvs] [2055cce] multiview: From review: Normalize the result of RE_GetCameraModelMatrix()

Dalai Felinto noreply at git.blender.org
Mon Mar 23 19:33:01 CET 2015


Commit: 2055cced499384b5fa98fbeafa9854331146e450
Author: Dalai Felinto
Date:   Mon Mar 23 18:22:38 2015 +0100
Branches: multiview
https://developer.blender.org/rB2055cced499384b5fa98fbeafa9854331146e450

>From review: Normalize the result of RE_GetCameraModelMatrix()

(and change Cycles accordingly)

===================================================================

M	intern/cycles/blender/blender_camera.cpp
M	source/blender/blenkernel/intern/camera.c
M	source/blender/makesrna/intern/rna_render.c
M	source/blender/render/intern/source/convertblender.c

===================================================================

diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp
index 6e822d6..cd5acfc 100644
--- a/intern/cycles/blender/blender_camera.cpp
+++ b/intern/cycles/blender/blender_camera.cpp
@@ -105,7 +105,7 @@ static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object
 	/* for dof object, return distance along camera Z direction */
 	BL::Array<float, 16> b_ob_matrix;
 	b_engine.camera_model_matrix(b_ob, b_ob_matrix);
-	Transform obmat = transform_clear_scale(get_transform(b_ob_matrix));
+	Transform obmat = get_transform(b_ob_matrix);
 	Transform dofmat = get_transform(b_dof_object.matrix_world());
 	Transform mat = transform_inverse(obmat) * dofmat;
 
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index 51f40e8..9cf5643 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -810,7 +810,6 @@ static void camera_stereo3d_model_matrix(Object *camera, const bool is_left, flo
 void BKE_camera_multiview_view_matrix(RenderData *rd, Object *camera, const bool is_left, float r_viewmat[4][4])
 {
 	BKE_camera_multiview_model_matrix(rd, camera, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME, r_viewmat);
-	normalize_m4(r_viewmat);
 	invert_m4(r_viewmat);
 }
 
@@ -828,15 +827,16 @@ void BKE_camera_multiview_model_matrix(RenderData *rd, Object *camera, const cha
 	const bool is_multiview = (rd && rd->scemode & R_MULTIVIEW) != 0;
 
 	if (!is_multiview) {
-		return camera_model_matrix(camera, r_modelmat);
+		camera_model_matrix(camera, r_modelmat);
 	}
 	else if (rd->views_format == SCE_VIEWS_FORMAT_MULTIVIEW) {
-		return camera_model_matrix(camera, r_modelmat);
+		camera_model_matrix(camera, r_modelmat);
 	}
 	else { /* SCE_VIEWS_SETUP_BASIC */
 		const bool is_left = camera_is_left(viewname);
-		return camera_stereo3d_model_matrix(camera, is_left, r_modelmat);
+		camera_stereo3d_model_matrix(camera, is_left, r_modelmat);
 	}
+	normalize_m4(r_modelmat);
 }
 
 static Object *camera_multiview_advanced(Scene *scene, Object *camera, const char *suffix)
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 20e23b0..94fabb8 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -511,7 +511,7 @@ static void rna_def_render_engine(BlenderRNA *brna)
 	func = RNA_def_function(srna, "camera_model_matrix", "RE_engine_get_camera_model_matrix");
 	prop = RNA_def_pointer(func, "camera", "Object", "", "");
 	RNA_def_property_flag(prop, PROP_REQUIRED);
-	prop = RNA_def_float_matrix(func, "r_model_matrix", 4, 4, NULL, 0.0f, 0.0f, "", "Model Matrix", 0.0f, 0.0f);
+	prop = RNA_def_float_matrix(func, "r_model_matrix", 4, 4, NULL, 0.0f, 0.0f, "Model Matrix", "Normalized camera model matrix", 0.0f, 0.0f);
 	RNA_def_property_flag(prop, PROP_REQUIRED);
 
 	func = RNA_def_function(srna, "update_stats", "RE_engine_update_stats");
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 20c2b9f..2bb52c9 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -5160,7 +5160,6 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l
 		 * following calls don't depend on 'RE_SetCamera' */
 		RE_SetCamera(re, camera);
 		RE_GetCameraModelMatrix(re, camera, mat);
-		normalize_m4(mat);
 		invert_m4(mat);
 		RE_SetView(re, mat);




More information about the Bf-blender-cvs mailing list